diff --git a/logic/controller/room_info.go b/logic/controller/room_info.go index 02c023cc..514b1fc9 100644 --- a/logic/controller/room_info.go +++ b/logic/controller/room_info.go @@ -36,7 +36,9 @@ func (h Controller) OnGetRoomPetShowInfo(data *room.PetRoomListInboundInfo, c *p } var pet1 pet.PetShortInfo copier.Copy(&pet1, &pet12.Data) - result.Pets = append(result.Pets, pet1) + if pet12.ID != 0 { + result.Pets = append(result.Pets, pet1) + } } @@ -57,3 +59,12 @@ func (h Controller) OnGetFitmentAll(data *room.FitmentAllInboundEmpty, c *player return } +func (h Controller) RoomPetInfo(data *room.C2S_RoomPetInfo, c *player.Player) (result *pet.RoomPetInfo, err errorcode.ErrorCode) { + r := c.Service.Pet.PetInfo_One_ohter(data.UserID, data.CatchTime) + + result = &pet.RoomPetInfo{} + copier.CopyWithOption(result, &r.Data, copier.Option{DeepCopy: true}) + result.OwnerId = data.UserID + + return +} diff --git a/logic/controller/room_set.go b/logic/controller/room_set.go index d1b6b192..0252244f 100644 --- a/logic/controller/room_set.go +++ b/logic/controller/room_set.go @@ -20,7 +20,9 @@ func (h Controller) SET_FITMENT(data *room.SET_FITMENT, c *player.Player) (resul func (h Controller) SET_Pet(data *room.C2S_PET_ROOM_SHOW, c *player.Player) (result *room.S2C_PET_ROOM_SHOW, err errorcode.ErrorCode) { var showpet []uint32 for _, v := range data.PetShowList { - showpet = append(showpet, v.CatchTime) + if v.CatchTime != 0 { + showpet = append(showpet, v.CatchTime) + } } c.Service.Room.Show(showpet) diff --git a/logic/service/pet/list.go b/logic/service/pet/list.go index 3ce565fb..d860bc11 100644 --- a/logic/service/pet/list.go +++ b/logic/service/pet/list.go @@ -1,6 +1,9 @@ package pet -import "blazing/logic/service/common" +import ( + "blazing/logic/service/common" + "blazing/modules/blazing/model" +) type GetPetListInboundEmpty struct { Head common.TomeeHeader `cmd:"2303" struc:"skip"` @@ -40,3 +43,25 @@ type PetFusionInfo struct { StarterCpTm uint32 `json:"starterCpTm" msgpack:"starterCpTm"` // 融合失败为0 CostItemFlag uint32 `json:"costItemFlag" msgpack:"costItemFlag"` // 是不是消耗掉了金豆道具 1代表消耗道具 } +type RoomPetInfo struct { + OwnerId uint32 + CatchTime uint32 + ID uint32 `fieldDesc:"精灵编号" ` + Nature uint32 `fieldDesc:"性格" ` + + // 等级(@UInt long → uint32) + Level uint32 `fieldDesc:"等级" ` + // 当前生命(@UInt long → uint32) + Hp uint32 + // * battle_lv: atk(0), def(1), sp_atk(2), sp_def(3), spd(4), accuracy(5) + Prop [5]uint32 `fieldDesc:"属性" ` + SkillListLen uint32 `struc:"sizeof=SkillList"` + + // 技能信息:固定4条,空则赋值0(固定长度List → [4]SkillInfo,零值即符合“赋值0”) + SkillList []model.SkillInfo + // * ev:生命学习力,攻击学习力,防御学习力,特攻学习力,特防学习力,速度学习力 + Ev [6]uint32 `fieldDesc:"属性" ` + EffectInfoLen uint16 `struc:"sizeof=EffectInfo"` + // 特性列表:长度用UShort存储(变长List → []PetEffectInfo + 长度前缀规则) 第一个一定是特性 + EffectInfo []model.PetEffectInfo `fieldDesc:"特性列表, 长度在头部以UShort存储" serialize:"lengthFirst,lengthType=uint16,type=structArray"` +} diff --git a/logic/service/room/pet.go b/logic/service/room/pet.go index 90bc7403..510fd32c 100644 --- a/logic/service/room/pet.go +++ b/logic/service/room/pet.go @@ -32,3 +32,10 @@ type S2C_PET_ROOM_SHOW struct { // 数组内每个元素为 S2C_PetShowList(字段顺序:petID → catchTime) PetShowList []pet.PetShortInfo `json:"PetShowList"` } +type C2S_RoomPetInfo struct { + Head common.TomeeHeader `cmd:"2325" struc:"skip"` //玩家登录 + // UserID 跟随精灵的主人用户ID + UserID uint32 `json:"userID"` // C# uint → Go uint32,严格匹配32位无符号整数 + // CatchTime 精灵的捕获时间(Unix时间戳/前端自定义时间格式) + CatchTime uint32 `json:"catchTime"` +}