From c6f8af298a5ad72345b31c6fab754d62dabc3030 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 26 一月 2021 16:07:35 +0800 Subject: [PATCH] 8710 【开发】【主干】【BT2】根据世界等级配置奖励(成长必买世界等级不同奖励配置改为放在充值表;补同步主干冲突); --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py | 37 ++++++++++++++++++++++++++++++++++--- 1 files changed, 34 insertions(+), 3 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py index 2004165..1104ce6 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py @@ -55,6 +55,7 @@ import PlayerWeekParty import PlayerGoldInvest import ItemCommon +import PyGameData import CommFunc import time @@ -66,6 +67,11 @@ CoinType_Buy, # 直购,非直接充仙玉的,如RMB直接购买某个物品或激活某个功能 CoinType_Item, # 使用物品,类充值仙玉效果,但是有某些功能上的限制,一般是bt版本赠送 ) = range(3) + +# 充值类型定义 +PayType_Gold = 2 # 常规仙玉充值 +PayType_GoldPlus = 3 # 至尊仙玉充值 +PayType_GrowupBuy = 16 # 成长必买 #--------------------------------------------------------------------- #注意: GetChangeCoinPointTotal 充值点和赠送点总和 @@ -277,7 +283,7 @@ return coinExp = ipyData.GetCoinExp() - coinType = CoinType_Gold if (ctgIpyData and ctgIpyData.GetPayType() in [2, 3]) else CoinType_Buy # 规定2为直充,其他为直购 + coinType = CoinType_Gold if (ctgIpyData and ctgIpyData.GetPayType() in [PayType_Gold, PayType_GoldPlus]) else CoinType_Buy # 规定2为直充,其他为直购 DoCTGLogic(curPlayer, coinType, orderCoin, addGold, prizeGold, giveItemList, isAddBourseMoney, eventName, addDRDict, ctgIpyData, coinExp) #充值成功主动查询一次,无充值数量就不会继续查询 @@ -300,7 +306,7 @@ addDRDict.update({"recordID":recordID}) # 成长必买类型 - if ipyData.GetPayType() == 16: + if ipyData.GetPayType() == PayType_GrowupBuy: canBuy, errInfo = PlayerActGrowupBuy.CheckGrowupBuyState(curPlayer, recordID) if not canBuy: DataRecordPack.DR_CTGError(curPlayer, errInfo, addDRDict) @@ -327,7 +333,32 @@ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TodayCTGCount % recordID, todayBuyCount + 1) addDRDict.update({"todayBuyCountUpd":(todayBuyCount + 1)}) - giveItemList = ipyData.GetGainItemList() + gainItemList = ipyData.GetGainItemList() + actWorldLVGainItemInfo = ipyData.GetActWorldLVGainItemInfo() + giveItemList = [] + # 活动世界等级对应物品信息,如果有对应活动支持 且 该配置有配,则默认走该配置,否则使用常规的默认物品配置 + payTypeActNameDict = {PayType_GrowupBuy:ShareDefine.OperationActionName_GrowupBuy, + + # ... 有新增的活动需要支持,则在此新增配置上即可,后面取物品的逻辑都是一样的 + } + if actWorldLVGainItemInfo and ipyData.GetPayType() in payTypeActNameDict: + actName = payTypeActNameDict[ipyData.GetPayType()] + actInfo = PyGameData.g_operationActionDict.get(actName, {}) + if not actInfo or not actInfo.get(ShareDefine.ActKey_State): + DataRecordPack.DR_CTGError(curPlayer, "Can not find act info actName=%s" % actName, addDRDict) + return + actWorldLV = actInfo.get(ShareDefine.ActKey_WorldLV, 0) + actWorldLVList = [int(strWorldLV) for strWorldLV in actWorldLVGainItemInfo.keys()] + actWorldLVList.sort() # 使用 int 的值排,否则可能引起排序错误 + for worldLV in actWorldLVList: + if actWorldLV <= worldLV: + giveItemList = actWorldLVGainItemInfo[str(worldLV)] + break + if not giveItemList: + giveItemList = actWorldLVGainItemInfo[str(actWorldLVList[-1])] # 没有匹配到的话默认取最后一个等级配置 + else: + giveItemList = gainItemList + addGold = ipyData.GetGainGold() # 获得仙玉数 gainGoldPrize = ipyData.GetGainGoldPrize() # 赠送仙玉数,首次充值赠送仙玉时,此仙玉不给 firstGoldPrize = ipyData.GetFirstGoldPrize() # 首次充值赠送的仙玉 -- Gitblit v1.8.0