道具记录增加消耗道具数量

This commit is contained in:
sk 2024-07-09 15:20:44 +08:00
parent e9b80f805e
commit 7a0500c5eb
4 changed files with 81 additions and 16 deletions

View File

@ -24,6 +24,7 @@ type ItemLog struct {
TypeId int32 // 变化类型 TypeId int32 // 变化类型
GameId int32 // 游戏id,游戏中获得时有值 GameId int32 // 游戏id,游戏中获得时有值
GameFreeId int32 // 场次id,游戏中获得时有值 GameFreeId int32 // 场次id,游戏中获得时有值
Cost []*ItemInfo // 消耗的道具
} }
func NewItemLog() *ItemLog { func NewItemLog() *ItemLog {
@ -42,6 +43,7 @@ type ItemParam struct {
TypeId int32 // 变化类型 TypeId int32 // 变化类型
GameId int64 // 游戏id,游戏中获得时有值 GameId int64 // 游戏id,游戏中获得时有值
GameFreeId int64 // 场次id,游戏中获得时有值 GameFreeId int64 // 场次id,游戏中获得时有值
Cost []*ItemInfo // 消耗的道具
} }
func NewItemLogEx(param ItemParam) *ItemLog { func NewItemLogEx(param ItemParam) *ItemLog {
@ -57,5 +59,6 @@ func NewItemLogEx(param ItemParam) *ItemLog {
itemLog.TypeId = param.TypeId itemLog.TypeId = param.TypeId
itemLog.GameId = int32(param.GameId) itemLog.GameId = int32(param.GameId)
itemLog.GameFreeId = int32(param.GameFreeId) itemLog.GameFreeId = int32(param.GameFreeId)
itemLog.Cost = param.Cost
return itemLog return itemLog
} }

View File

@ -1029,6 +1029,7 @@ func CSPermitExchange(s *netlib.Session, packetid int, data interface{}, sid int
var items []*Item var items []*Item
var costItems []*Item var costItems []*Item
var cost, gain []model.AwardItem var cost, gain []model.AwardItem
var cost1 []*model.ItemInfo
for _, v := range exchangeConfig.GetCost() { for _, v := range exchangeConfig.GetCost() {
item := BagMgrSingleton.GetItem(p.SnId, v.GetItemId()) item := BagMgrSingleton.GetItem(p.SnId, v.GetItemId())
if item == nil || item.ItemNum < v.GetItemNum() { if item == nil || item.ItemNum < v.GetItemNum() {
@ -1046,6 +1047,10 @@ func CSPermitExchange(s *netlib.Session, packetid int, data interface{}, sid int
Id: v.GetItemId(), Id: v.GetItemId(),
Num: v.GetItemNum(), Num: v.GetItemNum(),
}) })
cost1 = append(cost1, &model.ItemInfo{
ItemId: v.GetItemId(),
ItemNum: v.GetItemNum(),
})
} }
} }
for _, v := range exchangeConfig.GetGain() { for _, v := range exchangeConfig.GetGain() {
@ -1064,10 +1069,22 @@ func CSPermitExchange(s *netlib.Session, packetid int, data interface{}, sid int
} }
// 扣除背包物品 // 扣除背包物品
for _, item := range costItems { for _, item := range costItems {
BagMgrSingleton.AddItem(p, int64(item.ItemId), -item.ItemNum, 0, common.GainWayPermitExchangeCost, "system", "赛季通行证兑换消耗", 0, 0, false) BagMgrSingleton.AddItem(p, int64(item.ItemId), -item.ItemNum, 0,
common.GainWayPermitExchangeCost, "system", "赛季通行证兑换消耗", 0, 0, false)
} }
// 增加背包物品 // 增加背包物品
BagMgrSingleton.AddItems(p, items, 0, common.GainWayPermitExchangeGain, "system", "赛季通行证兑换获得", 0, 0, false) BagMgrSingleton.AddItemsV2(&ItemParam{
P: p,
Change: items,
Cost: cost1,
Add: 0,
GainWay: common.GainWayPermitExchangeGain,
Operator: "system",
Remark: "赛季通行证兑换获得",
gameId: 0,
gameFreeId: 0,
noLog: false,
})
p.WelfData.PermitExchange[msg.GetId()] = append(p.WelfData.PermitExchange[msg.GetId()], now.Unix()) p.WelfData.PermitExchange[msg.GetId()] = append(p.WelfData.PermitExchange[msg.GetId()], now.Unix())
// 兑换记录 // 兑换记录
LogChannelSingleton.WriteLog(&model.BackendPermitExchange{ LogChannelSingleton.WriteLog(&model.BackendPermitExchange{

View File

@ -139,6 +139,27 @@ func (this *BagMgr) GetItem(snid, itemId int32) *Item {
return item return item
} }
type ItemParam struct {
P *Player
Change []*Item // 道具变化数量
Cost []*model.ItemInfo // 获得道具时消耗的道具数量
Add int64 // 加成数量
GainWay int32 // 记录类型
Operator, Remark string // 操作人,备注
gameId, gameFreeId int64 // 游戏id,场次id
noLog bool // 是否不记录日志
}
type AddItemParam struct {
Cost []*model.ItemInfo // 获得道具时消耗的道具数量
}
func (this *BagMgr) AddItemsV2(args *ItemParam) (*BagInfo, bag.OpResultCode, bool) {
return this.AddItems(args.P, args.Change, args.Add, args.GainWay, args.Operator, args.Remark, args.gameId, args.gameFreeId, args.noLog, AddItemParam{
Cost: args.Cost,
})
}
// AddItems 给玩家背包添加道具 // AddItems 给玩家背包添加道具
// add 加成数量 // add 加成数量
// gainWay 记录类型 // gainWay 记录类型
@ -147,8 +168,14 @@ func (this *BagMgr) GetItem(snid, itemId int32) *Item {
// gameId 游戏id // gameId 游戏id
// gameFreeId 场次id // gameFreeId 场次id
// noLog 是否不记录日志 // noLog 是否不记录日志
// Deprecated: use [ AddItemsV2 ] instead
func (this *BagMgr) AddItems(p *Player, addItems []*Item, add int64, gainWay int32, operator, remark string, func (this *BagMgr) AddItems(p *Player, addItems []*Item, add int64, gainWay int32, operator, remark string,
gameId, gameFreeId int64, noLog bool) (*BagInfo, bag.OpResultCode, bool) { gameId, gameFreeId int64, noLog bool, params ...AddItemParam) (*BagInfo, bag.OpResultCode, bool) {
var cost []*model.ItemInfo
if len(params) > 0 {
cost = params[0].Cost
}
longItem := this.GetItem(p.SnId, common.ItemIDPermit) longItem := this.GetItem(p.SnId, common.ItemIDPermit)
var items []*Item var items []*Item
for _, v := range addItems { for _, v := range addItems {
@ -278,6 +305,7 @@ func (this *BagMgr) AddItems(p *Player, addItems []*Item, add int64, gainWay int
TypeId: gainWay, TypeId: gainWay,
GameId: gameId, GameId: gameId,
GameFreeId: gameFreeId, GameFreeId: gameFreeId,
Cost: cost,
}) })
if log != nil { if log != nil {
LogChannelSingleton.WriteLog(log) LogChannelSingleton.WriteLog(log)
@ -340,9 +368,10 @@ func (this *BagMgr) AddItems(p *Player, addItems []*Item, add int64, gainWay int
} }
// Deprecated: use [ AddItemsV2 ] instead
func (this *BagMgr) AddItem(p *Player, itemId, itemNum int64, add int64, gainWay int32, operator, remark string, func (this *BagMgr) AddItem(p *Player, itemId, itemNum int64, add int64, gainWay int32, operator, remark string,
gameId, gameFreeId int64, noLog bool) (*BagInfo, bag.OpResultCode, bool) { gameId, gameFreeId int64, noLog bool, params ...AddItemParam) (*BagInfo, bag.OpResultCode, bool) {
return this.AddItems(p, []*Item{{ItemId: int32(itemId), ItemNum: itemNum}}, add, gainWay, operator, remark, gameId, gameFreeId, noLog) return this.AddItems(p, []*Item{{ItemId: int32(itemId), ItemNum: itemNum}}, add, gainWay, operator, remark, gameId, gameFreeId, noLog, params...)
} }
func (this *BagMgr) AddItemsOffline(platform string, snid int32, addItems []*Item, gainWay int32, operator, remark string, func (this *BagMgr) AddItemsOffline(platform string, snid int32, addItems []*Item, gainWay int32, operator, remark string,

View File

@ -840,6 +840,7 @@ func (this *WelfareMgr) GetAddUp2Award(p *Player, day int32) {
} }
typeId := addUpDate2Type[0].Id typeId := addUpDate2Type[0].Id
addUpDate2Num := addUpDate2Type[0].Num addUpDate2Num := addUpDate2Type[0].Num
var cost []*model.ItemInfo
if typeId == 1 { if typeId == 1 {
Num += 1 Num += 1
//看广告任务 //看广告任务
@ -855,6 +856,10 @@ func (this *WelfareMgr) GetAddUp2Award(p *Player, day int32) {
p.AddDiamond(int64(-addUpDate2Num), 0, common.GainWaySign7Con, "system", "累计签到进阶奖励钻石消耗") p.AddDiamond(int64(-addUpDate2Num), 0, common.GainWaySign7Con, "system", "累计签到进阶奖励钻石消耗")
logger.Logger.Trace("累计签到进阶奖励扣除钻石uid = ", p.SnId) logger.Logger.Trace("累计签到进阶奖励扣除钻石uid = ", p.SnId)
EndTime = -1 EndTime = -1
cost = append(cost, &model.ItemInfo{
ItemId: common.ItemIDDiamond,
ItemNum: int64(addUpDate2Num),
})
} }
p.WelfData.Sign7.Addup2Data[day] = make(map[int32]int64) p.WelfData.Sign7.Addup2Data[day] = make(map[int32]int64)
p.WelfData.Sign7.Addup2Data[day][Num+1] = EndTime p.WelfData.Sign7.Addup2Data[day][Num+1] = EndTime
@ -873,7 +878,18 @@ func (this *WelfareMgr) GetAddUp2Award(p *Player, day int32) {
items = append(items, item) items = append(items, item)
} }
} }
BagMgrSingleton.AddItems(p, items, 0, common.GainWaySign7Add, "system", "累计签到进阶奖励获得", 0, 0, false) BagMgrSingleton.AddItemsV2(&ItemParam{
P: p,
Change: items,
Cost: cost,
Add: 0,
GainWay: common.GainWaySign7Add,
Operator: "system",
Remark: "累计签到进阶奖励获得",
gameId: 0,
gameFreeId: 0,
noLog: false,
})
} }
//通知客户端 //通知客户端
this.UpdateAddUp2Date(p, Num, day, EndTime) this.UpdateAddUp2Date(p, Num, day, EndTime)