在玩家断开连接时,使用 sync.Once 确保只保存一次玩家数据, 防止因并发或多次触发导致的数据异常。 feat(fight): 增加战斗资格判断与邀请取消功能 - 新增 Player.CanFight() 方法用于统一判断是否可以参与战斗 - 在多个战斗相关接口中加入 CanFight 检查 - 添加“取消战斗邀请”指令及处理逻辑(cmd: 2402) - 修复部分错误码不准确的问题,提升提示一致性 refactor(login): 优化登录流程并增强健壮性 - 提前校验 session 合法性 - 增强获取玩家信息后的空指针检查 - 调整挖矿数据重置方式为 defer 执行 - 优化日志输出内容,便于调试追踪 docs(model): 更新部门、菜单等模型字段命名规范 将 orderNum 字段改为 ordernum,保持数据库列名风格一致, 同时更新了 base_sys_role 中 userId 为 userid。 perf(rate-limit): 提高登录接口的限流 Burst 容量 调整限流器配置,将请求 burst 容量从 2 提升至 5, 以应对短时间高频访问场景,改善用户体验。 chore(build): 忽略新增编译产物和临时文件 在 .gitignore 中添加 logic/logic2、login/login 等新生成文件路径, 避免误提交二进制文件到版本控制。
83 lines
2.4 KiB
Go
83 lines
2.4 KiB
Go
package fight
|
||
|
||
import (
|
||
_ "blazing/logic/service/fight/effect"
|
||
"blazing/logic/service/fight/info"
|
||
"blazing/logic/service/player"
|
||
)
|
||
|
||
// 野怪对战包
|
||
type FightNpcMonsterInboundInfo struct {
|
||
Head player.TomeeHeader `cmd:"2408" struc:"[0]pad"`
|
||
// Number 地图刷新怪物结构体对应的序号(1-9的位置序号)
|
||
|
||
Number uint32 `fieldDesc:"地图刷新怪物结构体对应的序号 1 - 9 的位置序号" `
|
||
}
|
||
type ChallengeBossInboundInfo struct {
|
||
Head player.TomeeHeader `cmd:"2411" struc:"[0]pad"`
|
||
BossId uint32 `json:"bossId"`
|
||
}
|
||
type NullOutboundInfo struct {
|
||
}
|
||
|
||
// 准备战斗包
|
||
type ReadyToFightInboundInfo struct {
|
||
Head player.TomeeHeader `cmd:"2404" struc:"[0]pad"`
|
||
}
|
||
|
||
// 战斗逃跑
|
||
type EscapeFightInboundInfo struct {
|
||
Head player.TomeeHeader `cmd:"2410" struc:"[0]pad"`
|
||
}
|
||
|
||
// HandleFightInviteInboundInfo 处理战斗邀请的入站消息
|
||
|
||
type HandleFightInviteInboundInfo struct {
|
||
Head player.TomeeHeader `cmd:"2403" struc:"[0]pad"`
|
||
UserID uint32 `json:"userId" codec:"userId,uint"` // 邀请我对战人的userid
|
||
Flag uint32 `json:"flag" codec:"flag,uint"` // 1为同意对战 0为取消对战
|
||
Mode info.EnumBattleMode `json:"mode" codec:"mode,uint"` // 战斗类型 1 = 1v1 2 = 6v6
|
||
}
|
||
|
||
type InviteToFightInboundInfo struct {
|
||
Head player.TomeeHeader `cmd:"2401" struc:"[0]pad"`
|
||
|
||
UserID uint32 `codec:"true"`
|
||
|
||
// Mode 战斗类型 1 = 1v1 2 = 6v6
|
||
|
||
Mode info.EnumBattleMode `codec:"true"`
|
||
}
|
||
type InviteFightCancelInboundInfo struct {
|
||
Head player.TomeeHeader `cmd:"2402" struc:"[0]pad"`
|
||
}
|
||
|
||
// 2502的回复包 PVP邀请消息
|
||
type NoteHandleFightInviteOutboundInfo struct {
|
||
UserID uint32
|
||
Nickname string `struc:"[16]byte"` // 固定长度16字节
|
||
Result uint32 // 0=拒绝 1=同意 2=在线超6小时 3=无出战精灵 4=不在线
|
||
}
|
||
|
||
type UseSkillInInfo struct {
|
||
Head player.TomeeHeader `cmd:"2405" struc:"[0]pad"`
|
||
// 技能id,
|
||
SkillId uint32
|
||
}
|
||
type ChangePetInboundInfo struct {
|
||
Head player.TomeeHeader `cmd:"2407" struc:"[0]pad"`
|
||
// CatchTime 捕捉时间
|
||
CatchTime uint32 `json:"catchTime"`
|
||
}
|
||
type CatchMonsterInboundInfo struct {
|
||
Head player.TomeeHeader `cmd:"2409" struc:"[0]pad"`
|
||
// CapsuleId 胶囊id
|
||
|
||
CapsuleId uint32 `json:"capsuleId" fieldDescription:"胶囊id" uint:"true"`
|
||
}
|
||
|
||
type LoadPercentInboundInfo struct {
|
||
Head player.TomeeHeader `cmd:"2441" struc:"[0]pad"`
|
||
Percent uint32 `fieldDescription:"加载百分比"`
|
||
}
|