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

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 {
TreasureTypeNone = 0;
WarBook = 1;
WarBook = 0;
WarToken = 2;
}

View File

@ -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

View File

@ -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,7 +191,9 @@ func (this *PlayerHandler) BattleHeroEquip(player *logic.Player, msg *net.Messag
return
}
var equip = player.Equip[req.EquipUid]
var equip *logic.PlayerEquip
if req.EquipUid != 0 {
equip = player.Equip[req.EquipUid]
if equip == nil {
_ = player.TipNotice(proto.TipEquipNotFound)
return
@ -213,49 +209,38 @@ func (this *PlayerHandler) BattleHeroEquip(player *logic.Player, msg *net.Messag
_ = 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 != nil {
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))
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))
}
}
}
@ -267,6 +252,7 @@ func (this *PlayerHandler) BattleHeroEquip(player *logic.Player, msg *net.Messag
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,7 +297,9 @@ func (this *PlayerHandler) BattleHeroTreasure(player *logic.Player, msg *net.Mes
return
}
var treasure = player.Treasure[req.TreasureUid]
var treasure *logic.PlayerTreasure
if req.TreasureUid != 0 {
treasure = player.Treasure[req.TreasureUid]
if treasure == nil {
_ = player.TipNotice(proto.TipTreasureNotFound)
return
@ -333,45 +315,38 @@ func (this *PlayerHandler) BattleHeroTreasure(player *logic.Player, msg *net.Mes
_ = 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 != nil {
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))
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))
}
}
}
@ -383,6 +358,7 @@ func (this *PlayerHandler) BattleHeroTreasure(player *logic.Player, msg *net.Mes
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})

View File

@ -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())

View File

@ -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[:]