布阵相关(包括英雄更换,装备、宝物等穿戴/卸下)

This commit is contained in:
sk 2025-06-06 18:49:30 +08:00
parent f0d52a95bb
commit 29a28a20bf
5 changed files with 94 additions and 120 deletions

View File

@ -172,9 +172,7 @@ enum EquipType {
} }
enum TreasureType { enum TreasureType {
TreasureTypeNone = 0; WarBook = 0;
WarBook = 1;
WarToken = 2; WarToken = 2;
} }

View File

@ -90,7 +90,7 @@ message MoneyListAck {
} }
message BattleHero { message BattleHero {
uint32 Position = 1; //0 uint32 Position = 1; //0, 0-7
uint64 HeroUid = 2; uint64 HeroUid = 2;
uint64 Capacity = 3; uint64 Capacity = 3;
repeated uint64 Equip = 4; repeated uint64 Equip = 4;
@ -122,16 +122,16 @@ message BattleHeroChangeReq {
// //
message BattleHeroEquipReq { message BattleHeroEquipReq {
uint32 Position = 1; uint32 Position = 1;
EquipType EquipType = 2; EquipType EquipType = 2; // Uid为0时不知道是什么类型的装备
uint64 EquipUid = 3; uint64 EquipUid = 3; // 0
} }
// ModRoleBattleHeroTreasure: 2010 // ModRoleBattleHeroTreasure: 2010
// //
message BattleHeroTreasureReq { message BattleHeroTreasureReq {
uint32 Position = 1; uint32 Position = 1;
TreasureType TreasureType = 2; TreasureType TreasureType = 2; // Uid为0时不知道是什么类型的宝物
uint64 TreasureUid = 3; uint64 TreasureUid = 3; // 0
} }
// ModRoleBattleHeroArtifact: 2011 // ModRoleBattleHeroArtifact: 2011

View File

@ -174,12 +174,6 @@ func (this *PlayerHandler) BattleHeroEquip(player *logic.Player, msg *net.Messag
return return
} }
if req.EquipUid == 0 {
this.logger.Error("Parameter error, req.EquipUid: ", req.EquipUid)
_ = player.TipNotice(proto.TipParameterError)
return
}
if !player.CheckFunctionOpen(int(pb.ModId_ModuleRole), 1, int(req.Position)) { if !player.CheckFunctionOpen(int(pb.ModId_ModuleRole), 1, int(req.Position)) {
_ = player.TipNotice(proto.TipFunctionNotUnlocked) _ = player.TipNotice(proto.TipFunctionNotUnlocked)
return return
@ -197,7 +191,9 @@ func (this *PlayerHandler) BattleHeroEquip(player *logic.Player, msg *net.Messag
return return
} }
var equip = player.Equip[req.EquipUid] var equip *logic.PlayerEquip
if req.EquipUid != 0 {
equip = player.Equip[req.EquipUid]
if equip == nil { if equip == nil {
_ = player.TipNotice(proto.TipEquipNotFound) _ = player.TipNotice(proto.TipEquipNotFound)
return return
@ -213,49 +209,38 @@ func (this *PlayerHandler) BattleHeroEquip(player *logic.Player, msg *net.Messag
_ = player.TipNotice(proto.TipParameterError) _ = player.TipNotice(proto.TipParameterError)
return return
} }
var equipIndex = 0
switch pb.EquipType(equipTable.Type) {
case pb.EquipType_Weapon:
equipIndex = 0
case pb.EquipType_Hat:
equipIndex = 1
case pb.EquipType_Cloth:
equipIndex = 2
case pb.EquipType_Shoe:
equipIndex = 3
default:
_ = player.TipNotice(proto.TipDataTablesError)
return
} }
var equipIndex = int(req.EquipType)
var battleHeroList []*pb.BattleHero var battleHeroList []*pb.BattleHero
var equipChangeList []*pb.EquipChange var equipChangeList []*pb.EquipChange
if battleHero.Equip[equipIndex] != 0 { if battleHero.Equip[equipIndex] != 0 {
var setup = player.Equip[battleHero.Equip[equipIndex]] var preEquip = player.Equip[battleHero.Equip[equipIndex]]
if setup != nil && setup.HeroUid != 0 { if preEquip != nil && preEquip.HeroUid != 0 {
setup.Id = 0 preEquip.HeroUid = 0
player.SaveModel(setup) player.SaveModel(preEquip)
equipChangeList = append(equipChangeList, &pb.EquipChange{ equipChangeList = append(equipChangeList, &pb.EquipChange{
ChangeType: pb.ChangeType_Changed, ChangeType: pb.ChangeType_Changed,
Equip: setup.BuildMsgEquip(), Equip: preEquip.BuildMsgEquip(),
}) })
} }
} }
battleHero.Equip[equipIndex] = equip.Uid battleHero.Equip[equipIndex] = req.EquipUid
player.SaveArray("battle_heroes", int(req.Position), battleHero) player.SaveArray("battle_heroes", int(req.Position), battleHero)
battleHeroList = append(battleHeroList, battleHero.BuildMsgBattleHero(int(req.Position))) battleHeroList = append(battleHeroList, battleHero.BuildMsgBattleHero(int(req.Position)))
if equip != nil {
if equip.HeroUid != 0 { if equip.HeroUid != 0 {
for i := range player.BattleHeroes { for i := range player.BattleHeroes {
if player.BattleHeroes[i].HeroUid == equip.HeroUid { if player.BattleHeroes[i].HeroUid == equip.HeroUid {
var setup = player.BattleHeroes[i] var preBattleHero = player.BattleHeroes[i]
if setup.Equip[equipIndex] != 0 { if preBattleHero.Equip[equipIndex] != 0 {
setup.Equip[equipIndex] = 0 preBattleHero.Equip[equipIndex] = 0
player.SaveArray("battle_heroes", i, setup) player.SaveArray("battle_heroes", i, preBattleHero)
battleHeroList = append(battleHeroList, setup.BuildMsgBattleHero(i)) battleHeroList = append(battleHeroList, preBattleHero.BuildMsgBattleHero(i))
} }
} }
} }
@ -267,6 +252,7 @@ func (this *PlayerHandler) BattleHeroEquip(player *logic.Player, msg *net.Messag
ChangeType: pb.ChangeType_Changed, ChangeType: pb.ChangeType_Changed,
Equip: equip.BuildMsgEquip(), Equip: equip.BuildMsgEquip(),
}) })
}
_ = player.Send(uint16(pb.ModId_ModuleRole), uint16(pb.MsgId_ModRoleBattleHeroChange), &pb.BattleHeroListAck{HeroList: battleHeroList}) _ = player.Send(uint16(pb.ModId_ModuleRole), uint16(pb.MsgId_ModRoleBattleHeroChange), &pb.BattleHeroListAck{HeroList: battleHeroList})
_ = player.Send(uint16(pb.ModId_ModuleItem), uint16(pb.MsgId_ModItemEquipChange), &pb.EquipChangeListAck{ChangeList: equipChangeList}) _ = player.Send(uint16(pb.ModId_ModuleItem), uint16(pb.MsgId_ModItemEquipChange), &pb.EquipChangeListAck{ChangeList: equipChangeList})
@ -294,12 +280,6 @@ func (this *PlayerHandler) BattleHeroTreasure(player *logic.Player, msg *net.Mes
return return
} }
if req.TreasureUid == 0 {
this.logger.Error("Parameter error, req.TreasureUid: ", req.TreasureUid)
_ = player.TipNotice(proto.TipParameterError)
return
}
if !player.CheckFunctionOpen(int(pb.ModId_ModuleRole), 1, int(req.Position)) { if !player.CheckFunctionOpen(int(pb.ModId_ModuleRole), 1, int(req.Position)) {
_ = player.TipNotice(proto.TipFunctionNotUnlocked) _ = player.TipNotice(proto.TipFunctionNotUnlocked)
return return
@ -317,7 +297,9 @@ func (this *PlayerHandler) BattleHeroTreasure(player *logic.Player, msg *net.Mes
return return
} }
var treasure = player.Treasure[req.TreasureUid] var treasure *logic.PlayerTreasure
if req.TreasureUid != 0 {
treasure = player.Treasure[req.TreasureUid]
if treasure == nil { if treasure == nil {
_ = player.TipNotice(proto.TipTreasureNotFound) _ = player.TipNotice(proto.TipTreasureNotFound)
return return
@ -333,45 +315,38 @@ func (this *PlayerHandler) BattleHeroTreasure(player *logic.Player, msg *net.Mes
_ = player.TipNotice(proto.TipParameterError) _ = player.TipNotice(proto.TipParameterError)
return return
} }
var treasureIndex = 0
switch pb.TreasureType(treasureTable.Type) {
case pb.TreasureType_WarBook:
treasureIndex = 0
case pb.TreasureType_WarToken:
treasureIndex = 1
default:
_ = player.TipNotice(proto.TipDataTablesError)
return
} }
var treasureIndex = int(req.TreasureType)
var battleHeroList []*pb.BattleHero var battleHeroList []*pb.BattleHero
var treasureChangeList []*pb.TreasureChange var treasureChangeList []*pb.TreasureChange
if battleHero.Treasure[treasureIndex] != 0 { if battleHero.Treasure[treasureIndex] != 0 {
var setup = player.Treasure[battleHero.Treasure[treasureIndex]] var preTreasure = player.Treasure[battleHero.Treasure[treasureIndex]]
if setup != nil && setup.HeroUid != 0 { if preTreasure != nil && preTreasure.HeroUid != 0 {
setup.Id = 0 preTreasure.HeroUid = 0
player.SaveModel(setup) player.SaveModel(preTreasure)
treasureChangeList = append(treasureChangeList, &pb.TreasureChange{ treasureChangeList = append(treasureChangeList, &pb.TreasureChange{
ChangeType: pb.ChangeType_Changed, ChangeType: pb.ChangeType_Changed,
Treasure: setup.BuildMsgTreasure(), Treasure: preTreasure.BuildMsgTreasure(),
}) })
} }
} }
battleHero.Treasure[treasureIndex] = treasure.Uid battleHero.Treasure[treasureIndex] = req.TreasureUid
player.SaveArray("battle_heroes", int(req.Position), battleHero) player.SaveArray("battle_heroes", int(req.Position), battleHero)
battleHeroList = append(battleHeroList, battleHero.BuildMsgBattleHero(int(req.Position))) battleHeroList = append(battleHeroList, battleHero.BuildMsgBattleHero(int(req.Position)))
if treasure != nil {
if treasure.HeroUid != 0 { if treasure.HeroUid != 0 {
for i := range player.BattleHeroes { for i := range player.BattleHeroes {
if player.BattleHeroes[i].HeroUid == treasure.HeroUid { if player.BattleHeroes[i].HeroUid == treasure.HeroUid {
var setup = player.BattleHeroes[i] var preBattleHero = player.BattleHeroes[i]
if setup.Treasure[treasureIndex] != 0 { if preBattleHero.Treasure[treasureIndex] != 0 {
setup.Treasure[treasureIndex] = 0 preBattleHero.Treasure[treasureIndex] = 0
player.SaveArray("battle_heroes", i, setup) player.SaveArray("battle_heroes", i, preBattleHero)
battleHeroList = append(battleHeroList, setup.BuildMsgBattleHero(i)) battleHeroList = append(battleHeroList, preBattleHero.BuildMsgBattleHero(i))
} }
} }
} }
@ -383,6 +358,7 @@ func (this *PlayerHandler) BattleHeroTreasure(player *logic.Player, msg *net.Mes
ChangeType: pb.ChangeType_Changed, ChangeType: pb.ChangeType_Changed,
Treasure: treasure.BuildMsgTreasure(), Treasure: treasure.BuildMsgTreasure(),
}) })
}
_ = player.Send(uint16(pb.ModId_ModuleRole), uint16(pb.MsgId_ModRoleBattleHeroChange), &pb.BattleHeroListAck{HeroList: battleHeroList}) _ = player.Send(uint16(pb.ModId_ModuleRole), uint16(pb.MsgId_ModRoleBattleHeroChange), &pb.BattleHeroListAck{HeroList: battleHeroList})
_ = player.Send(uint16(pb.ModId_ModuleItem), uint16(pb.MsgId_ModItemTreasureChange), &pb.TreasureChangeListAck{ChangeList: treasureChangeList}) _ = player.Send(uint16(pb.ModId_ModuleItem), uint16(pb.MsgId_ModItemTreasureChange), &pb.TreasureChangeListAck{ChangeList: treasureChangeList})

View File

@ -162,10 +162,10 @@ func (this *Player) enter(conn *net.Conn) {
//Role module //Role module
_ = this.Send(uint16(pb.ModId_ModuleRole), uint16(pb.MsgId_ModRoleProperty), this.BuildMsgRolePropertyAck()) _ = this.Send(uint16(pb.ModId_ModuleRole), uint16(pb.MsgId_ModRoleProperty), this.BuildMsgRolePropertyAck())
_ = this.Send(uint16(pb.ModId_ModuleRole), uint16(pb.MsgId_ModRoleMoneyList), this.BuildMsgMoneyListAck()) _ = this.Send(uint16(pb.ModId_ModuleRole), uint16(pb.MsgId_ModRoleMoneyList), this.BuildMsgMoneyListAck())
_ = this.Send(uint16(pb.ModId_ModuleRole), uint16(pb.MsgId_ModRoleBattleHeroList), this.BuildMsgBattleHeroListAck())
// //Level module
////Level module _ = this.Send(uint16(pb.ModId_ModuleLevel), uint16(pb.MsgId_ModLevelCopyStatusList), this.BuildMsgCopyStatusListAck())
//_ = this.Send(proto.ModIdLevel, proto.MsgIdCopyStatusList, this.BuildMsgCopyStatusListAck())
//_ = this.Send(proto.ModIdLevel, proto.MsgIdCopySpeedStatusList, this.BuildMsgCopySpeedStatusListAck()) //_ = this.Send(proto.ModIdLevel, proto.MsgIdCopySpeedStatusList, this.BuildMsgCopySpeedStatusListAck())
//_ = this.Send(proto.ModIdLevel, proto.MsgIdPlanetList, this.BuildMsgPlanetListAck()) //_ = this.Send(proto.ModIdLevel, proto.MsgIdPlanetList, this.BuildMsgPlanetListAck())
//_ = this.Send(proto.ModIdLevel, proto.MsgIdPlanetRawStoneStatus, this.BuildMsgPlanetRawStoneStatusListAck()) //_ = this.Send(proto.ModIdLevel, proto.MsgIdPlanetRawStoneStatus, this.BuildMsgPlanetRawStoneStatusListAck())

View File

@ -25,7 +25,7 @@ func (this *PlayerBattleHero) BuildMsgBattleHero(position int) *pb.BattleHero {
Capacity: this.Capacity, Capacity: this.Capacity,
} }
if this.HeroUid != 0 { if this.HeroUid != 0 {
msg.Equips = this.Equip[:] msg.Equip = this.Equip[:]
msg.Treasure = this.Treasure[:] msg.Treasure = this.Treasure[:]
msg.Artifact = this.Artifact[:] msg.Artifact = this.Artifact[:]
msg.Mounts = this.Mounts[:] msg.Mounts = this.Mounts[:]