From 29a28a20bfc060cfaa0f330356d08fe5e5c2de7b Mon Sep 17 00:00:00 2001 From: sk Date: Fri, 6 Jun 2025 18:49:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B8=83=E9=98=B5=E7=9B=B8=E5=85=B3=EF=BC=88?= =?UTF-8?q?=E5=8C=85=E6=8B=AC=E8=8B=B1=E9=9B=84=E6=9B=B4=E6=8D=A2=EF=BC=8C?= =?UTF-8?q?=E8=A3=85=E5=A4=87=E3=80=81=E5=AE=9D=E7=89=A9=E7=AD=89=E7=A9=BF?= =?UTF-8?q?=E6=88=B4/=E5=8D=B8=E4=B8=8B=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- proto/idl/enums.proto | 4 +- proto/idl/mod_role.proto | 10 +- servers/game/handler/player_role.go | 192 ++++++++++------------- servers/game/logic/player.go | 6 +- servers/game/logic/player_battle_hero.go | 2 +- 5 files changed, 94 insertions(+), 120 deletions(-) diff --git a/proto/idl/enums.proto b/proto/idl/enums.proto index e4bc091..a49ed45 100644 --- a/proto/idl/enums.proto +++ b/proto/idl/enums.proto @@ -172,9 +172,7 @@ enum EquipType { } enum TreasureType { - TreasureTypeNone = 0; - - WarBook = 1; + WarBook = 0; WarToken = 2; } diff --git a/proto/idl/mod_role.proto b/proto/idl/mod_role.proto index 4642eef..1fcdbdf 100644 --- a/proto/idl/mod_role.proto +++ b/proto/idl/mod_role.proto @@ -90,7 +90,7 @@ message MoneyListAck { } message BattleHero { - uint32 Position = 1; //位置0开始 + uint32 Position = 1; //布阵位置,从0开始, 范围0-7 uint64 HeroUid = 2; uint64 Capacity = 3; repeated uint64 Equip = 4; @@ -122,16 +122,16 @@ message BattleHeroChangeReq { // 布阵英雄装备变更请求 message BattleHeroEquipReq { uint32 Position = 1; - EquipType EquipType = 2; - uint64 EquipUid = 3; + EquipType EquipType = 2; // 要传,不然Uid为0时不知道是什么类型的装备 + uint64 EquipUid = 3; // 传0为卸下装备 } // ModRoleBattleHeroTreasure: 2010 // 布阵英雄宝物变更请求 message BattleHeroTreasureReq { uint32 Position = 1; - TreasureType TreasureType = 2; - uint64 TreasureUid = 3; + TreasureType TreasureType = 2; // 要传,不然Uid为0时不知道是什么类型的宝物 + uint64 TreasureUid = 3; // 传0为卸下宝物 } // ModRoleBattleHeroArtifact: 2011 diff --git a/servers/game/handler/player_role.go b/servers/game/handler/player_role.go index d8bc290..77fb771 100644 --- a/servers/game/handler/player_role.go +++ b/servers/game/handler/player_role.go @@ -174,12 +174,6 @@ func (this *PlayerHandler) BattleHeroEquip(player *logic.Player, msg *net.Messag 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)) { _ = player.TipNotice(proto.TipFunctionNotUnlocked) return @@ -197,76 +191,68 @@ func (this *PlayerHandler) BattleHeroEquip(player *logic.Player, msg *net.Messag return } - var equip = player.Equip[req.EquipUid] - if equip == nil { - _ = player.TipNotice(proto.TipEquipNotFound) - return + var equip *logic.PlayerEquip + if req.EquipUid != 0 { + equip = player.Equip[req.EquipUid] + if equip == nil { + _ = player.TipNotice(proto.TipEquipNotFound) + return + } + + var equipTable = this.tables.Equip.Find(int(equip.Id)) + if equipTable == nil { + _ = player.TipNotice(proto.TipDataTablesError) + return + } + + if req.EquipType != pb.EquipType(equipTable.Type) { + _ = player.TipNotice(proto.TipParameterError) + return + } } - var equipTable = this.tables.Equip.Find(int(equip.Id)) - if equipTable == nil { - _ = player.TipNotice(proto.TipDataTablesError) - return - } - - if req.EquipType != pb.EquipType(equipTable.Type) { - _ = player.TipNotice(proto.TipParameterError) - 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 equipChangeList []*pb.EquipChange if battleHero.Equip[equipIndex] != 0 { - var setup = player.Equip[battleHero.Equip[equipIndex]] - if setup != nil && setup.HeroUid != 0 { - setup.Id = 0 - player.SaveModel(setup) + var preEquip = player.Equip[battleHero.Equip[equipIndex]] + if preEquip != nil && preEquip.HeroUid != 0 { + preEquip.HeroUid = 0 + player.SaveModel(preEquip) equipChangeList = append(equipChangeList, &pb.EquipChange{ 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) battleHeroList = append(battleHeroList, battleHero.BuildMsgBattleHero(int(req.Position))) - if equip.HeroUid != 0 { - for i := range player.BattleHeroes { - if player.BattleHeroes[i].HeroUid == equip.HeroUid { - var setup = player.BattleHeroes[i] - if setup.Equip[equipIndex] != 0 { - setup.Equip[equipIndex] = 0 - player.SaveArray("battle_heroes", i, setup) - battleHeroList = append(battleHeroList, setup.BuildMsgBattleHero(i)) + if equip != nil { + if equip.HeroUid != 0 { + for i := range player.BattleHeroes { + if player.BattleHeroes[i].HeroUid == equip.HeroUid { + var preBattleHero = player.BattleHeroes[i] + if preBattleHero.Equip[equipIndex] != 0 { + preBattleHero.Equip[equipIndex] = 0 + player.SaveArray("battle_heroes", i, preBattleHero) + battleHeroList = append(battleHeroList, preBattleHero.BuildMsgBattleHero(i)) + } } } } - } - equip.HeroUid = battleHero.HeroUid - player.SaveModel(equip) - equipChangeList = append(equipChangeList, &pb.EquipChange{ - ChangeType: pb.ChangeType_Changed, - Equip: equip.BuildMsgEquip(), - }) + equip.HeroUid = battleHero.HeroUid + player.SaveModel(equip) + equipChangeList = append(equipChangeList, &pb.EquipChange{ + ChangeType: pb.ChangeType_Changed, + Equip: equip.BuildMsgEquip(), + }) + } _ = 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}) @@ -294,12 +280,6 @@ func (this *PlayerHandler) BattleHeroTreasure(player *logic.Player, msg *net.Mes 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)) { _ = player.TipNotice(proto.TipFunctionNotUnlocked) return @@ -317,72 +297,68 @@ func (this *PlayerHandler) BattleHeroTreasure(player *logic.Player, msg *net.Mes return } - var treasure = player.Treasure[req.TreasureUid] - if treasure == nil { - _ = player.TipNotice(proto.TipTreasureNotFound) - return + var treasure *logic.PlayerTreasure + if req.TreasureUid != 0 { + treasure = player.Treasure[req.TreasureUid] + if treasure == nil { + _ = player.TipNotice(proto.TipTreasureNotFound) + return + } + + var treasureTable = this.tables.Treasure.Find(int(treasure.Id)) + if treasureTable == nil { + _ = player.TipNotice(proto.TipDataTablesError) + return + } + + if req.TreasureType != pb.TreasureType(treasureTable.Type) { + _ = player.TipNotice(proto.TipParameterError) + return + } } - var treasureTable = this.tables.Treasure.Find(int(treasure.Id)) - if treasureTable == nil { - _ = player.TipNotice(proto.TipDataTablesError) - return - } - - if req.TreasureType != pb.TreasureType(treasureTable.Type) { - _ = player.TipNotice(proto.TipParameterError) - 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 treasureChangeList []*pb.TreasureChange if battleHero.Treasure[treasureIndex] != 0 { - var setup = player.Treasure[battleHero.Treasure[treasureIndex]] - if setup != nil && setup.HeroUid != 0 { - setup.Id = 0 - player.SaveModel(setup) + var preTreasure = player.Treasure[battleHero.Treasure[treasureIndex]] + if preTreasure != nil && preTreasure.HeroUid != 0 { + preTreasure.HeroUid = 0 + player.SaveModel(preTreasure) treasureChangeList = append(treasureChangeList, &pb.TreasureChange{ 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) battleHeroList = append(battleHeroList, battleHero.BuildMsgBattleHero(int(req.Position))) - if treasure.HeroUid != 0 { - for i := range player.BattleHeroes { - if player.BattleHeroes[i].HeroUid == treasure.HeroUid { - var setup = player.BattleHeroes[i] - if setup.Treasure[treasureIndex] != 0 { - setup.Treasure[treasureIndex] = 0 - player.SaveArray("battle_heroes", i, setup) - battleHeroList = append(battleHeroList, setup.BuildMsgBattleHero(i)) + if treasure != nil { + if treasure.HeroUid != 0 { + for i := range player.BattleHeroes { + if player.BattleHeroes[i].HeroUid == treasure.HeroUid { + var preBattleHero = player.BattleHeroes[i] + if preBattleHero.Treasure[treasureIndex] != 0 { + preBattleHero.Treasure[treasureIndex] = 0 + player.SaveArray("battle_heroes", i, preBattleHero) + battleHeroList = append(battleHeroList, preBattleHero.BuildMsgBattleHero(i)) + } } } } - } - treasure.HeroUid = battleHero.HeroUid - player.SaveModel(treasure) - treasureChangeList = append(treasureChangeList, &pb.TreasureChange{ - ChangeType: pb.ChangeType_Changed, - Treasure: treasure.BuildMsgTreasure(), - }) + treasure.HeroUid = battleHero.HeroUid + player.SaveModel(treasure) + treasureChangeList = append(treasureChangeList, &pb.TreasureChange{ + ChangeType: pb.ChangeType_Changed, + Treasure: treasure.BuildMsgTreasure(), + }) + } _ = 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}) diff --git a/servers/game/logic/player.go b/servers/game/logic/player.go index feaf83d..7efe886 100644 --- a/servers/game/logic/player.go +++ b/servers/game/logic/player.go @@ -162,10 +162,10 @@ func (this *Player) enter(conn *net.Conn) { //Role module _ = 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_ModRoleBattleHeroList), this.BuildMsgBattleHeroListAck()) - // - ////Level module - //_ = this.Send(proto.ModIdLevel, proto.MsgIdCopyStatusList, this.BuildMsgCopyStatusListAck()) + //Level module + _ = this.Send(uint16(pb.ModId_ModuleLevel), uint16(pb.MsgId_ModLevelCopyStatusList), this.BuildMsgCopyStatusListAck()) //_ = this.Send(proto.ModIdLevel, proto.MsgIdCopySpeedStatusList, this.BuildMsgCopySpeedStatusListAck()) //_ = this.Send(proto.ModIdLevel, proto.MsgIdPlanetList, this.BuildMsgPlanetListAck()) //_ = this.Send(proto.ModIdLevel, proto.MsgIdPlanetRawStoneStatus, this.BuildMsgPlanetRawStoneStatusListAck()) diff --git a/servers/game/logic/player_battle_hero.go b/servers/game/logic/player_battle_hero.go index 708aba2..6a23b32 100644 --- a/servers/game/logic/player_battle_hero.go +++ b/servers/game/logic/player_battle_hero.go @@ -25,7 +25,7 @@ func (this *PlayerBattleHero) BuildMsgBattleHero(position int) *pb.BattleHero { Capacity: this.Capacity, } if this.HeroUid != 0 { - msg.Equips = this.Equip[:] + msg.Equip = this.Equip[:] msg.Treasure = this.Treasure[:] msg.Artifact = this.Artifact[:] msg.Mounts = this.Mounts[:]