diff --git a/gamesrv/base/player.go b/gamesrv/base/player.go index 149fc7c..4c49bc3 100644 --- a/gamesrv/base/player.go +++ b/gamesrv/base/player.go @@ -1248,7 +1248,8 @@ func (this *Player) UpdatePigBankCoin(gainTexCoin int64) { } fGetPropValue := func(propName string) int64 { - pool := srvdata.PBDB_Pigbank_PropMgr.Datas.GetArr() + //pool := srvdata.PBDB_Pigbank_PropMgr.Datas.GetArr() + pool := ConfigMgrInst.GetConfig(this.Platform).GamePigBankPropConfig.PropInfo for _, PropItem := range pool { if PropItem.PorpName == propName { return int64(PropItem.PropValue) @@ -1257,7 +1258,9 @@ func (this *Player) UpdatePigBankCoin(gainTexCoin int64) { return 0 } BankCoinMax := int64(0) - for _, data := range srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr() { + // pool := srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr() + pool := ConfigMgrInst.GetConfig(this.Platform).GamePigBankDiamondConfig.DiamondInfo + for _, data := range pool { if this.WelfData.PigBank.DayBuyTimes+1 >= data.BuyCountMin && this.WelfData.PigBank.DayBuyTimes+1 <= data.BuyCountMax { BankCoinMax = int64(data.MaxGold) break diff --git a/model/config.go b/model/config.go index 046cc37..6c40140 100644 --- a/model/config.go +++ b/model/config.go @@ -540,3 +540,21 @@ func (cm *ConfigMgr) CustomIsOn(plt string, configId int32) bool { return true } + +func (cm *ConfigMgr) GetPigBankDiamondArr(plt string) []*webapi.PigBankDiamondInfo { + cfg := cm.GetConfig(plt).GamePigBankDiamondConfig + if cfg == nil { + return nil + } + + return cfg.DiamondInfo +} + +func (cm *ConfigMgr) GetPigBankPropArr(plt string) []*webapi.PigBankPropInfo { + cfg := cm.GetConfig(plt).GamePigBankPropConfig + if cfg == nil { + return nil + } + + return cfg.PropInfo +} diff --git a/worldsrv/action_shop.go b/worldsrv/action_shop.go index 8ed972e..f31bcbf 100644 --- a/worldsrv/action_shop.go +++ b/worldsrv/action_shop.go @@ -12,7 +12,6 @@ import ( "mongo.games.com/game/model" "mongo.games.com/game/proto" "mongo.games.com/game/protocol/shop" - "mongo.games.com/game/srvdata" ) type CSShopInfoPacketFactory struct { @@ -426,7 +425,8 @@ func (this *CSPayInfoHandler) Process(s *netlib.Session, packetid int, data inte if shopInfo.Page == ShopPageDiamondBank { // 检查每日领取次数 fGetPropValue := func(propName string) int32 { - pool := srvdata.PBDB_Pigbank_PropMgr.Datas.GetArr() + //pool := srvdata.PBDB_Pigbank_PropMgr.Datas.GetArr() + pool := PlatformMgrSingleton.GetPigBankPropArr(p.Platform) for _, PropItem := range pool { if PropItem.PorpName == propName { return PropItem.PropValue diff --git a/worldsrv/player.go b/worldsrv/player.go index ab4289d..7839929 100644 --- a/worldsrv/player.go +++ b/worldsrv/player.go @@ -2892,7 +2892,14 @@ func (this *Player) DoShopInfo(info *model.DbShop, isLogin bool) { //钻石存储罐 if info.PageId == ShopPageDiamondBank { - WelfareMgrSington.DiamondBankTakeCoin(this) + + arrItems := WelfareMgrSington.DiamondBankTakeCoin(this) + for _, v := range arrItems { + itemInfo = append(itemInfo, &playerproto.PayItem{ + ItemId: v.ItemId, + ItemNum: v.ItemNum, + }) + } } // 通行证 diff --git a/worldsrv/welfmgr.go b/worldsrv/welfmgr.go index 97fe775..4c351a6 100644 --- a/worldsrv/welfmgr.go +++ b/worldsrv/welfmgr.go @@ -1691,7 +1691,8 @@ func (this *WelfareMgr) PigbankGetInfo(p *Player) { } fGetPropValue := func(propName string) int32 { - pool := srvdata.PBDB_Pigbank_PropMgr.Datas.GetArr() + //pool := srvdata.PBDB_Pigbank_PropMgr.Datas.GetArr() + pool := PlatformMgrSingleton.GetPigBankPropArr(p.Platform) for _, PropItem := range pool { if PropItem.PorpName == propName { return PropItem.PropValue @@ -1734,7 +1735,8 @@ func (this *WelfareMgr) PigbankGetInfo(p *Player) { //} DayBuyMaxCnt := fGetPropValue("DayBuyMaxCnt") - for _, data := range srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr() { + pool := PlatformMgrSingleton.GetPigBankDiamondArr(p.Platform) + for _, data := range pool { if data == nil { continue } @@ -1748,7 +1750,10 @@ func (this *WelfareMgr) PigbankGetInfo(p *Player) { bankInfo.DayBuyMaxCnt = DayBuyMaxCnt bankInfo.Price = int64(data.CoinPrice) bankInfo.BankMaxCoin = int64(data.MaxGold) - bankInfo.GoldExc = data.GoldExc + + for _, v := range data.GoldExc { + bankInfo.GoldExc[int64(v.ItemId)] = v.ItemNum + } if takeRecorcd, exist := p.WelfData.PigBank.TakeRecord[data.Id]; exist { bankInfo.TakeCoin = takeRecorcd @@ -1775,7 +1780,8 @@ func (this *WelfareMgr) PigbankTakeCoin(p *Player) { } fGetPropValue := func(propName string) int32 { - pool := srvdata.PBDB_Pigbank_PropMgr.Datas.GetArr() + //pool := srvdata.PBDB_Pigbank_PropMgr.Datas.GetArr() + pool := PlatformMgrSingleton.GetPigBankPropArr(p.Platform) for _, PropItem := range pool { if PropItem.PorpName == propName { return PropItem.PropValue @@ -1804,7 +1810,8 @@ func (this *WelfareMgr) PigbankTakeCoin(p *Player) { p.WelfData.PigBank.TakeRecord = make(map[int32]int64, 8) } - pool := srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr() + //pool := srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr() + pool := PlatformMgrSingleton.GetPigBankDiamondArr(p.Platform) infoData := pool[0] for _, data := range pool { if data == nil { @@ -1817,7 +1824,7 @@ func (this *WelfareMgr) PigbankTakeCoin(p *Player) { } BankMaxCoin := int64(0) - for _, data := range srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr() { + for _, data := range pool { if data == nil { continue } @@ -1871,13 +1878,17 @@ func (this *WelfareMgr) PigbankTakeCoin(p *Player) { p.AddCoin(p.WelfData.PigBank.BankCoin, 0, common.GainWay_PigrankGainCoin, "sys", "存钱罐领取金币") + if p.WelfData.PigBank.TakeRecord != nil { + p.WelfData.PigBank.TakeRecord[infoData.Id] = p.WelfData.PigBank.BankCoin + } + if infoData.GoldExc != nil { // 发放奖励道具 var items []*model.Item - for k, v := range infoData.GoldExc { + for _, v := range infoData.GoldExc { items = append(items, &model.Item{ - ItemId: int32(k), - ItemNum: v, + ItemId: int32(v.ItemId), + ItemNum: v.ItemNum, }) } BagMgrSingleton.AddItems(&model.AddItemParam{ @@ -1898,11 +1909,8 @@ func (this *WelfareMgr) PigbankTakeCoin(p *Player) { p.WelfData.PigBank.TakeTimes++ p.WelfData.PigBank.DayBuyTimes++ - if p.WelfData.PigBank.TakeRecord != nil { - p.WelfData.PigBank.TakeRecord[infoData.Id] = p.WelfData.PigBank.BankCoin - } - pack.TakeTimes = p.WelfData.PigBank.DayBuyTimes + logger.Logger.Tracef("PigbankTakeCoin snid: %v pack: %v", p.SnId, pack) p.SendToClient(int(welfare.SPacketID_PACKET_SCPigbankTakeCoin), pack) mq.Write(model.GenerateActivityLog(p.SnId, p.Platform, model.ActivityLog_CoinPigBank, 1)) @@ -1930,7 +1938,8 @@ func (this *WelfareMgr) DiamondBankGetInfo(p *Player) { OpRetCode: welfare.OpResultCode_OPRC_Error, } fGetPropValue := func(propName string) int32 { - pool := srvdata.PBDB_Pigbank_PropMgr.Datas.GetArr() + //pool := srvdata.PBDB_Pigbank_PropMgr.Datas.GetArr() + pool := PlatformMgrSingleton.GetPigBankPropArr(p.Platform) for _, PropItem := range pool { if PropItem.PorpName == propName { return PropItem.PropValue @@ -1939,7 +1948,8 @@ func (this *WelfareMgr) DiamondBankGetInfo(p *Player) { return 0 } - pool := srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr() + //pool := srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr() + pool := PlatformMgrSingleton.GetPigBankDiamondArr(p.Platform) //infoData := pool[0] if p.WelfData.DiamondBank == nil { p.WelfData.DiamondBank = &model.DiamondBankData{ @@ -1967,7 +1977,9 @@ func (this *WelfareMgr) DiamondBankGetInfo(p *Player) { bankInfo.Price = int64(data.DiamondPrice) bankInfo.NowPrice = int64(data.DiamondNowPrice) bankInfo.ShopId = data.DiamondId - bankInfo.DiamondExc = data.DiamondExc + for _, v := range data.GoldExc { + bankInfo.DiamondExc[int64(v.ItemId)] = v.ItemNum + } if takeRecorcd, exist := p.WelfData.DiamondBank.TakeRecord[data.Id]; exist { bankInfo.TakeDiamond = float64(takeRecorcd) @@ -1988,12 +2000,13 @@ func (this *WelfareMgr) DiamondBankGetInfo(p *Player) { } // DiamondBankTakeCoin 钻石存钱罐领取钻石 -func (this *WelfareMgr) DiamondBankTakeCoin(p *Player) { +func (this *WelfareMgr) DiamondBankTakeCoin(p *Player) (retItemArr []*model.Item) { pack := &welfare.SCDiamondBankTakeDiamond{ OpRetCode: welfare.OpResultCode_OPRC_Error, } - pool := srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr() + //pool := srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr() + pool := PlatformMgrSingleton.GetPigBankDiamondArr(p.Platform) infoData := pool[0] for _, data := range pool { if p.WelfData.DiamondBank.DayBuyTimes+1 >= data.BuyCountMin && p.WelfData.DiamondBank.DayBuyTimes+1 <= data.BuyCountMax { @@ -2029,12 +2042,18 @@ func (this *WelfareMgr) DiamondBankTakeCoin(p *Player) { // 发放奖励道具 if infoData.DiamondExc != nil { var items []*model.Item - for k, v := range infoData.DiamondExc { + for _, v := range infoData.DiamondExc { items = append(items, &model.Item{ - ItemId: int32(k), - ItemNum: v, + ItemId: v.ItemId, + ItemNum: v.ItemNum, + }) + + retItemArr = append(retItemArr, &model.Item{ + ItemId: v.ItemId, + ItemNum: v.ItemNum, }) } + BagMgrSingleton.AddItems(&model.AddItemParam{ Platform: p.Platform, SnId: p.SnId, @@ -2069,6 +2088,8 @@ func (this *WelfareMgr) DiamondBankTakeCoin(p *Player) { logger.Logger.Tracef("DiamondBankTakeCoin snid: %v pack: %v", p.SnId, pack) p.SendToClient(int(welfare.SPacketID_PACKET_SCDiamondBankTakeDiamond), pack) } + + return retItemArr } // 更新钻石存储罐数据 @@ -2078,7 +2099,8 @@ func (this *WelfareMgr) UpdateDiamondBankData(p *Player, coinNum int64, isWin bo p.WelfData.DiamondBank = &model.DiamondBankData{} } fGetPropValue := func(propName string) int32 { - pool := srvdata.PBDB_Pigbank_PropMgr.Datas.GetArr() + //pool := srvdata.PBDB_Pigbank_PropMgr.Datas.GetArr() + pool := PlatformMgrSingleton.GetPigBankPropArr(p.Platform) for _, PropItem := range pool { if PropItem.PorpName == propName { return PropItem.PropValue @@ -2101,7 +2123,8 @@ func (this *WelfareMgr) UpdateDiamondBankData(p *Player, coinNum int64, isWin bo //保留小数点后4位 addDiamond = math.Round(addDiamond*10000) / 10000 p.WelfData.DiamondBank.BankDiamond += addDiamond - pool := srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr() + //pool := srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr() + pool := PlatformMgrSingleton.GetPigBankDiamondArr(p.Platform) infoData := pool[0] for _, data := range pool { if p.WelfData.DiamondBank.DayBuyTimes+1 >= data.BuyCountMin && p.WelfData.DiamondBank.DayBuyTimes+1 <= data.BuyCountMax {