2025-09-02 00:45:29 +08:00
|
|
|
|
package info
|
|
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
|
"blazing/modules/blazing/model"
|
|
|
|
|
|
"fmt"
|
2025-09-21 14:56:37 +00:00
|
|
|
|
|
|
|
|
|
|
"github.com/tnnmigga/enum"
|
2025-09-02 00:45:29 +08:00
|
|
|
|
)
|
|
|
|
|
|
|
2025-09-07 00:23:28 +08:00
|
|
|
|
type ChangePetInfo struct {
|
|
|
|
|
|
// UserId 米米号,野怪为0
|
|
|
|
|
|
UserId uint32 `json:"userId"`
|
|
|
|
|
|
// PetId 切换上场的精灵编号
|
|
|
|
|
|
ID uint32 `fieldDesc:"当前对战精灵ID" `
|
|
|
|
|
|
// PetName 精灵名字,固定16字节长度
|
|
|
|
|
|
Name string `struc:"[16]byte"`
|
|
|
|
|
|
// Level 切换上场的精灵等级
|
|
|
|
|
|
Level uint32 `json:"level"`
|
|
|
|
|
|
// Hp 切换上场的精灵当前生命值
|
|
|
|
|
|
Hp uint32 `json:"hp"`
|
|
|
|
|
|
// MaxHp 切换上场的精灵最大生命值
|
|
|
|
|
|
MaxHp uint32 `json:"maxHp"`
|
|
|
|
|
|
CatchTime uint32 `fieldDesc:"捕捉时间" `
|
|
|
|
|
|
}
|
2025-09-20 00:17:29 +08:00
|
|
|
|
type NoteInviteToFightOutboundInfo struct {
|
|
|
|
|
|
UserID uint32 `codec:"true"`
|
2025-09-21 07:22:42 +00:00
|
|
|
|
Nick string `struc:"[16]byte" default:"seer" json:"nick"` // 16字节昵称
|
2025-09-20 00:17:29 +08:00
|
|
|
|
// Mode 战斗模式 1 = 1v1 2 = 6v6
|
2025-09-21 07:22:42 +00:00
|
|
|
|
|
2025-11-19 16:11:02 +08:00
|
|
|
|
Mode uint32 `codec:"true"`
|
2025-09-20 00:17:29 +08:00
|
|
|
|
}
|
2025-09-21 07:22:42 +00:00
|
|
|
|
|
2025-09-20 00:17:29 +08:00
|
|
|
|
type S2C_NOTE_HANDLE_FIGHT_INVITE struct {
|
|
|
|
|
|
// UserID 对方的userid
|
|
|
|
|
|
UserID uint32
|
2025-09-21 07:22:42 +00:00
|
|
|
|
|
2025-09-20 00:17:29 +08:00
|
|
|
|
Nick string `struc:"[16]byte" default:"seer" json:"nick"` // 16字节昵称
|
|
|
|
|
|
// Result 处理结果
|
|
|
|
|
|
// 0=对方拒绝了对战
|
|
|
|
|
|
// 1=对方同意了对战
|
|
|
|
|
|
// 2=对方在线时长超过6小时
|
|
|
|
|
|
// 3=对方没有可出战的精灵
|
|
|
|
|
|
// 4=对方不在线
|
|
|
|
|
|
Result uint32
|
|
|
|
|
|
}
|
2025-11-18 22:16:55 +00:00
|
|
|
|
type Fightinfo struct {
|
2025-11-20 15:19:13 +08:00
|
|
|
|
///PlayerID uint32
|
2025-11-21 02:40:27 +08:00
|
|
|
|
// 战斗模式 1 = 1v1 2 = 6v6 3大乱斗 0 什么都不做
|
2025-11-19 16:11:02 +08:00
|
|
|
|
Mode uint32
|
2025-11-21 02:40:27 +08:00
|
|
|
|
//Type uint32 //战斗类型
|
2025-11-18 23:41:31 +00:00
|
|
|
|
|
|
|
|
|
|
Status uint32
|
2025-09-21 07:22:42 +00:00
|
|
|
|
}
|
2025-09-07 00:23:28 +08:00
|
|
|
|
|
2025-09-02 00:45:29 +08:00
|
|
|
|
// FightPetInfo 战斗精灵信息结构体,FightPetInfo类
|
|
|
|
|
|
type FightPetInfo struct {
|
|
|
|
|
|
// 用户ID(野怪为0),@UInt long
|
|
|
|
|
|
UserID uint32 `fieldDesc:"用户ID 野怪为0" `
|
|
|
|
|
|
|
|
|
|
|
|
// 当前对战精灵ID,@UInt long
|
|
|
|
|
|
ID uint32 `fieldDesc:"当前对战精灵ID" `
|
|
|
|
|
|
|
|
|
|
|
|
Name string `struc:"[16]byte"`
|
|
|
|
|
|
// 精灵的捕获时间,@UInt long
|
|
|
|
|
|
CatchTime uint32 `fieldDesc:"精灵的捕获时间" `
|
|
|
|
|
|
|
|
|
|
|
|
// 当前HP,@UInt long
|
|
|
|
|
|
Hp uint32 `fieldDesc:"当前HP" `
|
|
|
|
|
|
|
|
|
|
|
|
// 最大HP,@UInt long
|
|
|
|
|
|
MaxHp uint32 `fieldDesc:"最大HP" `
|
|
|
|
|
|
|
|
|
|
|
|
// 当前等级,@UInt long
|
|
|
|
|
|
Level uint32 `fieldDesc:"当前等级" `
|
|
|
|
|
|
|
2025-09-04 19:37:28 +08:00
|
|
|
|
// 精灵是否能捕捉(1为能捕捉,0为不能捕捉),
|
2025-09-02 00:45:29 +08:00
|
|
|
|
Catchable uint32 `fieldDesc:"精灵是否能捕捉. 1为能捕捉 0为不能捕捉" `
|
2025-09-04 19:37:28 +08:00
|
|
|
|
//能力提升属性
|
2025-11-26 15:25:10 +08:00
|
|
|
|
Prop [6]int8
|
2025-09-02 00:45:29 +08:00
|
|
|
|
}
|
2025-09-06 01:47:08 +08:00
|
|
|
|
type AttackValueS struct {
|
|
|
|
|
|
FAttack AttackValue
|
|
|
|
|
|
SAttack AttackValue
|
|
|
|
|
|
}
|
2025-09-02 00:45:29 +08:00
|
|
|
|
|
2025-09-08 01:23:12 +08:00
|
|
|
|
func NewAttackValue(userid uint32) *AttackValue {
|
|
|
|
|
|
return &AttackValue{
|
|
|
|
|
|
userid,
|
|
|
|
|
|
0,
|
|
|
|
|
|
0,
|
|
|
|
|
|
0,
|
|
|
|
|
|
0,
|
|
|
|
|
|
0,
|
|
|
|
|
|
0,
|
|
|
|
|
|
0,
|
|
|
|
|
|
0,
|
|
|
|
|
|
[]model.SkillInfo{},
|
|
|
|
|
|
0,
|
2025-09-17 00:38:15 +08:00
|
|
|
|
[20]int8{},
|
|
|
|
|
|
[6]int8{},
|
2025-09-08 01:23:12 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-09-02 00:45:29 +08:00
|
|
|
|
// AttackValue 战斗中的攻击数值信息
|
|
|
|
|
|
type AttackValue struct {
|
2025-10-31 02:24:49 +00:00
|
|
|
|
UserID uint32 `json:"userId" fieldDescription:"玩家的米米号 与野怪对战userid = 0"`
|
|
|
|
|
|
SkillID uint32 `json:"skillId" fieldDescription:"使用技能的id"`
|
|
|
|
|
|
AttackTime uint32 `json:"attackTime" fieldDescription:"是否击中 如果为0 则miss 如果为1 则击中,2为必中"`
|
|
|
|
|
|
LostHp uint32 `json:"lostHp" fieldDescription:"我方造成的伤害"`
|
|
|
|
|
|
GainHp int32 `json:"gainHp" fieldDescription:"我方获得血量"`
|
|
|
|
|
|
RemainHp int32 `json:"remainHp" fieldDescription:"我方剩余血量"`
|
|
|
|
|
|
MaxHp uint32 `json:"maxHp" fieldDescription:"我方最大血量"`
|
|
|
|
|
|
//颜色
|
|
|
|
|
|
State uint32 `json:"state" `
|
2025-09-06 01:47:08 +08:00
|
|
|
|
SkillListLen uint32 `struc:"sizeof=SkillList"`
|
|
|
|
|
|
SkillList []model.SkillInfo `json:"skillList" fieldDescription:"根据精灵的数据插入技能 最多4条 不定长"`
|
|
|
|
|
|
IsCritical uint32 `json:"isCritical" fieldDescription:"是否暴击"`
|
2025-09-17 00:38:15 +08:00
|
|
|
|
Status [20]int8 //精灵的状态
|
2025-11-03 04:16:30 +08:00
|
|
|
|
// 攻击,防御,特供,特防,速度,命中
|
2025-09-17 00:38:15 +08:00
|
|
|
|
Prop [6]int8
|
2025-09-02 00:45:29 +08:00
|
|
|
|
// OwnerMaxShield uint32 `json:"ownerMaxShield" fieldDescription:"我方最大护盾"`
|
|
|
|
|
|
// OwnerCurrentShield uint32 `json:"ownerCurrentShield" fieldDescription:"我方当前护盾"`
|
|
|
|
|
|
}
|
2025-09-10 04:17:06 +00:00
|
|
|
|
|
|
|
|
|
|
type WeakenedS struct {
|
2025-09-12 00:27:49 +08:00
|
|
|
|
Stack int8 `struc:"skip"`
|
|
|
|
|
|
Round int8
|
2025-09-10 04:17:06 +00:00
|
|
|
|
}
|
2025-09-21 14:56:37 +00:00
|
|
|
|
|
|
|
|
|
|
// 定义战斗状态枚举
|
2025-09-25 14:51:11 +00:00
|
|
|
|
var PetStatus = enum.New[struct {
|
2025-11-14 06:14:49 +08:00
|
|
|
|
NULL EnumPetStatus `enum:"255"`
|
2025-11-14 00:26:34 +08:00
|
|
|
|
Paralysis EnumPetStatus `enum:"0"` // 麻痹
|
|
|
|
|
|
Poisoned EnumPetStatus `enum:"1"` // 中毒
|
|
|
|
|
|
Burned EnumPetStatus `enum:"2"` // 烧伤
|
|
|
|
|
|
DrainHP EnumPetStatus `enum:"3"` // 吸取对方的体力
|
|
|
|
|
|
DrainedHP EnumPetStatus `enum:"4"` // 被对方吸取体力
|
|
|
|
|
|
Frozen EnumPetStatus `enum:"5"` // 冻伤
|
|
|
|
|
|
Fear EnumPetStatus `enum:"6"` // 害怕
|
|
|
|
|
|
Tired EnumPetStatus `enum:"7"` // 疲惫
|
|
|
|
|
|
Sleep EnumPetStatus `enum:"8"` // 睡眠
|
|
|
|
|
|
Petrified EnumPetStatus `enum:"9"` // 石化
|
|
|
|
|
|
Confused EnumPetStatus `enum:"10"` // 混乱
|
|
|
|
|
|
Weakened EnumPetStatus `enum:"11"` // 衰弱
|
|
|
|
|
|
MountainGodGuard EnumPetStatus `enum:"12"` // 山神守护
|
|
|
|
|
|
Flammable EnumPetStatus `enum:"13"` // 易燃
|
|
|
|
|
|
Berserk EnumPetStatus `enum:"14"` // 狂暴
|
|
|
|
|
|
IceBound EnumPetStatus `enum:"15"` // 冰封
|
|
|
|
|
|
Bleeding EnumPetStatus `enum:"16"` // 流血
|
|
|
|
|
|
ImmuneToStatDrop EnumPetStatus `enum:"17"` // 免疫能力下降
|
|
|
|
|
|
ImmuneToAbnormal EnumPetStatus `enum:"18"` // 免疫异常状态
|
|
|
|
|
|
Paralyzed EnumPetStatus `enum:"19"` // 瘫痪
|
2025-09-21 14:56:37 +00:00
|
|
|
|
// Blind EnumBattleStatus `enum:"20"` // 失明(预留)
|
|
|
|
|
|
}]()
|
|
|
|
|
|
|
|
|
|
|
|
// 枚举类型别名(根据实际枚举库要求定义)
|
2025-11-14 00:26:34 +08:00
|
|
|
|
type EnumPetStatus = byte
|
2025-09-04 19:37:28 +08:00
|
|
|
|
|
|
|
|
|
|
// 精灵的能力提升
|
|
|
|
|
|
type PropDict struct {
|
|
|
|
|
|
// 攻击(@UInt long → uint32)
|
2025-09-12 00:27:49 +08:00
|
|
|
|
Attack int8
|
2025-09-04 19:37:28 +08:00
|
|
|
|
// 防御(@UInt long → uint32)
|
2025-09-12 00:27:49 +08:00
|
|
|
|
Defence int8
|
2025-09-04 19:37:28 +08:00
|
|
|
|
// 特攻(@UInt long → uint32)
|
2025-09-12 00:27:49 +08:00
|
|
|
|
SpecialAttack int8
|
2025-09-04 19:37:28 +08:00
|
|
|
|
// 特防(@UInt long → uint32)
|
2025-09-12 00:27:49 +08:00
|
|
|
|
SpecialDefence int8
|
2025-09-04 19:37:28 +08:00
|
|
|
|
|
|
|
|
|
|
// 速度(@UInt long → uint32)
|
2025-09-12 00:27:49 +08:00
|
|
|
|
Speed int8
|
2025-09-04 19:37:28 +08:00
|
|
|
|
// 命中(@UInt long → uint32)
|
2025-09-12 00:27:49 +08:00
|
|
|
|
Accuracy int8
|
2025-09-04 19:37:28 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// BattleLevels 战斗属性等级结构体,对应原6字节数组
|
2025-09-02 00:45:29 +08:00
|
|
|
|
|
|
|
|
|
|
// NoteUseSkillOutboundInfo 战斗技能使用通知的出站信息结构体
|
|
|
|
|
|
type NoteUseSkillOutboundInfo struct {
|
|
|
|
|
|
FirstAttackInfo AttackValue // 本轮先手的精灵在释放技能结束后的状态
|
|
|
|
|
|
SecondAttackInfo AttackValue // 本轮后手的精灵在释放技能结束后的状态
|
|
|
|
|
|
}
|
2025-11-18 23:41:31 +00:00
|
|
|
|
|
2025-09-04 02:00:57 +08:00
|
|
|
|
type FightStartOutboundInfo struct {
|
|
|
|
|
|
// @UInt long类型
|
|
|
|
|
|
IsCanAuto uint32 `fieldDesc:"是否自动 默认给0 怀疑是自动战斗器使用的" `
|
2025-09-02 00:45:29 +08:00
|
|
|
|
|
2025-09-04 02:00:57 +08:00
|
|
|
|
// 当前战斗精灵信息1(前端通过userid判断是否为我方)
|
|
|
|
|
|
Info1 FightPetInfo `fieldDesc:"当前战斗精灵的信息 可能不准.看前端代码是以userid来判断哪个结构体是我方的" serialize:"struct"`
|
2025-09-02 00:45:29 +08:00
|
|
|
|
|
2025-09-04 02:00:57 +08:00
|
|
|
|
// 当前战斗精灵信息2(前端通过userid判断是否为我方)
|
|
|
|
|
|
Info2 FightPetInfo `fieldDesc:"当前战斗精灵的信息 可能不准.看前端代码是以userid来判断哪个结构体是我方的" serialize:"struct"`
|
2025-09-02 00:45:29 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
type FightUserInfo struct {
|
|
|
|
|
|
// 用户ID(野怪为0),@UInt long
|
|
|
|
|
|
UserID uint32 `fieldDesc:"userID 如果为野怪则为0" `
|
|
|
|
|
|
|
|
|
|
|
|
// 玩家名称(野怪为UTF-8的'-',固定16字节)
|
|
|
|
|
|
// 使用[16]byte存储固定长度的字节数组
|
|
|
|
|
|
Nick string `struc:"[16]byte"`
|
|
|
|
|
|
}
|
2025-11-30 01:54:46 +08:00
|
|
|
|
type S2C_2404 struct {
|
|
|
|
|
|
// 用户ID(野怪为0),@UInt long
|
|
|
|
|
|
UserID uint32 `fieldDesc:"userID 如果为野怪则为0" `
|
|
|
|
|
|
}
|
2025-09-02 00:45:29 +08:00
|
|
|
|
|
|
|
|
|
|
// NoteReadyToFightInfo 战斗准备就绪消息结构体,NoteReadyToFightInfo
|
|
|
|
|
|
type NoteReadyToFightInfo struct {
|
2025-10-31 02:24:49 +00:00
|
|
|
|
//MAXPET uint32 `struc:"skip"` // 最大精灵数 struc:"skip"`
|
2025-09-02 00:45:29 +08:00
|
|
|
|
// 战斗类型ID(与野怪战斗为3,与人战斗为1,前端似乎未使用)
|
|
|
|
|
|
// @UInt long
|
2025-11-19 16:11:02 +08:00
|
|
|
|
Status uint32 `fieldDesc:"战斗类型ID 但前端好像没有用到 与野怪战斗为3,与人战斗似乎是1" `
|
|
|
|
|
|
//Mode uint32 `struc:"skip"`
|
2025-09-02 00:45:29 +08:00
|
|
|
|
// 我方信息
|
2025-09-04 02:00:57 +08:00
|
|
|
|
OurInfo FightUserInfo `fieldDesc:"我方信息" serialize:"struct"`
|
|
|
|
|
|
// Our *socket.Player `struc:"skip"`
|
|
|
|
|
|
OurPetListLen uint32 `struc:"sizeof=OurPetList"`
|
2025-09-02 00:45:29 +08:00
|
|
|
|
// 我方携带精灵的信息
|
|
|
|
|
|
// ArrayList<ReadyFightPetInfo>,使用切片模拟动态列表
|
|
|
|
|
|
OurPetList []ReadyFightPetInfo `fieldDesc:"我方携带精灵的信息" serialize:"lengthFirst,lengthType=uint16,type=structArray"`
|
|
|
|
|
|
|
|
|
|
|
|
// 对方信息
|
2025-09-04 02:00:57 +08:00
|
|
|
|
OpponentInfo FightUserInfo `fieldDesc:"对方信息" serialize:"struct"`
|
|
|
|
|
|
//Opp *socket.Player `struc:"skip"`
|
|
|
|
|
|
OpponentPetListLen uint32 `struc:"sizeof=OpponentPetList"`
|
2025-09-02 00:45:29 +08:00
|
|
|
|
// 敌方的精灵信息
|
|
|
|
|
|
// 野怪战斗时:客户端接收此包前已生成精灵PetInfo,将部分信息写入该列表
|
|
|
|
|
|
OpponentPetList []ReadyFightPetInfo `fieldDesc:"敌方的精灵信息 如果是野怪 那么再给客户端发送这个包体时就提前生成好了这只精灵的PetInfo,然后把从PetInfo中把部分信息写入到这个敌方的精灵信息中再发送这个包结构体" serialize:"lengthFirst,lengthType=uint16,type=structArray"`
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 当A和B都 这时候给双方回复开始战斗包
|
|
|
|
|
|
func (t *NoteReadyToFightInfo) onBothFinished() {
|
|
|
|
|
|
fmt.Println("A和B都已完成,触发onBothFinished")
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// ReadyFightPetInfo 准备战斗的精灵信息结构体,ReadyFightPetInfo类
|
|
|
|
|
|
type ReadyFightPetInfo struct {
|
|
|
|
|
|
// 精灵ID,@UInt long
|
2025-09-14 01:35:16 +08:00
|
|
|
|
ID uint32 `fieldDesc:"精灵ID" `
|
2025-09-02 00:45:29 +08:00
|
|
|
|
|
|
|
|
|
|
// 精灵等级,@UInt long
|
|
|
|
|
|
Level uint32 `fieldDesc:"精灵等级" `
|
|
|
|
|
|
|
|
|
|
|
|
// 精灵当前HP,@UInt long
|
|
|
|
|
|
Hp uint32 `fieldDesc:"精灵HP" `
|
|
|
|
|
|
|
|
|
|
|
|
// 精灵最大HP,@UInt long
|
|
|
|
|
|
MaxHp uint32 `fieldDesc:"最大HP" `
|
2025-10-26 20:56:03 +08:00
|
|
|
|
SkillListLen uint32 `struc:"sizeof=SkillList"`
|
2025-09-02 00:45:29 +08:00
|
|
|
|
// 技能信息列表(固定4个元素,技能ID和剩余PP,无技能则为0)
|
|
|
|
|
|
// List<SkillInfo>,初始化容量为4
|
2025-10-26 20:56:03 +08:00
|
|
|
|
SkillList []model.SkillInfo `fieldDesc:"技能信息 技能ID跟剩余PP 固定32字节 没有给0" serialize:"fixedLength=4,type=structArray"`
|
2025-09-02 00:45:29 +08:00
|
|
|
|
|
|
|
|
|
|
// 精灵捕获时间,@UInt long
|
|
|
|
|
|
CatchTime uint32 `fieldDesc:"精灵捕获时间" `
|
|
|
|
|
|
|
|
|
|
|
|
// 捕捉地图(固定给0),@UInt long
|
|
|
|
|
|
CatchMap uint32 `fieldDesc:"捕捉地图 给0" `
|
|
|
|
|
|
|
|
|
|
|
|
// 固定给0,@UInt long
|
|
|
|
|
|
CatchRect uint32 `fieldDesc:"给0" `
|
|
|
|
|
|
|
|
|
|
|
|
// 固定给0,@UInt long
|
|
|
|
|
|
CatchLevel uint32 `fieldDesc:"给0" `
|
|
|
|
|
|
SkinID uint32 `fieldDesc:"精灵皮肤ID" `
|
|
|
|
|
|
Shiny uint32 `fieldDesc:"精灵是否闪" `
|
|
|
|
|
|
}
|
2025-09-05 22:40:36 +08:00
|
|
|
|
|
|
|
|
|
|
// FightOverInfo 战斗结束信息结构体 2506
|
|
|
|
|
|
type FightOverInfo struct {
|
2025-11-07 22:50:34 +08:00
|
|
|
|
//0 正常结束
|
2025-09-11 02:44:21 +08:00
|
|
|
|
//1=isPlayerLost 对方玩家退出
|
2025-11-07 22:50:34 +08:00
|
|
|
|
// 2=isOvertime 超时
|
2025-09-11 02:44:21 +08:00
|
|
|
|
// 3=isDraw 双方平手
|
|
|
|
|
|
// 4=isSysError 系统错误
|
|
|
|
|
|
// 5=isNpcEscape 精灵主动逃跑
|
2025-12-09 16:52:53 +08:00
|
|
|
|
Winpet *model.PetInfo `struc:"skip"`
|
|
|
|
|
|
Round uint32 `struc:"skip"`
|
|
|
|
|
|
LastAttavue AttackValue `struc:"skip"`
|
2025-11-07 22:50:34 +08:00
|
|
|
|
//7 切磋结束
|
2025-10-10 01:31:02 +08:00
|
|
|
|
Reason EnumBattleOverReason // 固定值0
|
|
|
|
|
|
WinnerId uint32 // 胜者的米米号 野怪为0
|
|
|
|
|
|
TwoTimes uint32 // 双倍经验剩余次数
|
|
|
|
|
|
ThreeTimes uint32 // 三倍经验剩余次数
|
|
|
|
|
|
AutoFightTimes uint32 // 自动战斗剩余次数
|
|
|
|
|
|
EnergyTimes uint32 // 能量吸收器剩余次数
|
|
|
|
|
|
LearnTimes uint32 // 双倍学习器剩余次数
|
2025-09-05 22:40:36 +08:00
|
|
|
|
}
|
2025-09-11 02:44:21 +08:00
|
|
|
|
|
|
|
|
|
|
type CatchMonsterOutboundInfo struct {
|
|
|
|
|
|
// CatchTime 捕捉时间
|
2025-09-21 08:07:17 +00:00
|
|
|
|
|
|
|
|
|
|
CatchTime uint32 `json:"catchTime" `
|
2025-09-11 02:44:21 +08:00
|
|
|
|
// PetId 宠物编号
|
2025-09-21 08:07:17 +00:00
|
|
|
|
|
|
|
|
|
|
PetId uint32 `json:"petId" `
|
2025-09-11 02:44:21 +08:00
|
|
|
|
}
|
2025-09-25 14:51:11 +00:00
|
|
|
|
type LoadPercentOutboundInfo struct {
|
|
|
|
|
|
// 玩家userId,使用结构体标签模拟注解
|
|
|
|
|
|
Id uint32 `fieldDescription:"玩家userId" autoCodec:"true"`
|
|
|
|
|
|
// 加载百分比,使用结构体标签模拟注解
|
|
|
|
|
|
Percent uint32 `fieldDescription:"加载百分比" autoCodec:"true"`
|
|
|
|
|
|
}
|