- 使用 sync.Map 替代 map+锁,提升并发读写性能 - 预加载所有元素组合,避免运行时重复创建 - 攻击系数计算结果加入缓存,提高查询效率 - 完善缓存键命名与错误处理机制 - 调整元素组合字符串展示格式,增强可读性 fix(item): 修复购买物品时价格为0仍扣除金币的问题 - 在购买逻辑中增加对物品价格是否为0的判断 - 防止免费物品被误扣金币
46 lines
1.2 KiB
Go
46 lines
1.2 KiB
Go
package item
|
||
|
||
import (
|
||
"blazing/logic/service/player"
|
||
"blazing/modules/blazing/model"
|
||
)
|
||
|
||
// 实现了入站消息接口(Go中通过方法集隐式实现)
|
||
type ItemListInboundInfo struct {
|
||
Head player.TomeeHeader `cmd:"2605" struc:"[0]pad"`
|
||
// 查询物品id的开始,
|
||
Param1 uint32
|
||
// 查询物品id的结尾
|
||
Param2 uint32
|
||
// 默认值2
|
||
Param3 uint32
|
||
}
|
||
|
||
type ItemListOutboundInfo struct {
|
||
// 物品列表,
|
||
ItemListLen uint32 `struc:"sizeof=ItemList"`
|
||
ItemList []model.SingleItemInfo
|
||
}
|
||
|
||
type GoldOnlineRemainInboundInfo struct {
|
||
Head player.TomeeHeader `cmd:"1105|1106" struc:"[0]pad"`
|
||
}
|
||
|
||
type GoldOnlineRemainOutboundInfo struct {
|
||
// GoldNumber 金豆数量(后端返回实际数量需要*100)
|
||
GoldNumber uint32 `json:"goldNumber" `
|
||
Coin uint32
|
||
}
|
||
|
||
// ExpTotalRemainInboundInfo 累计经验相关的入站信息
|
||
type ExpTotalRemainInboundInfo struct {
|
||
// Head 消息头部信息,cmd保持原标识(如需调整可根据实际需求修改)
|
||
Head player.TomeeHeader `cmd:"2319" struc:"[0]pad"`
|
||
}
|
||
|
||
// ExpTotalRemainOutboundInfo 累计经验相关的出站信息
|
||
type ExpTotalRemainOutboundInfo struct {
|
||
// TotalExp 累计经验值(根据实际业务需求确定是否需要倍率转换)
|
||
TotalExp uint32 `json:"totalExp" `
|
||
}
|