From ff48a24b8da42998da61b4ff4000e758d8d1b041 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期三, 27 一月 2021 11:18:52 +0800 Subject: [PATCH] 8710 【开发】【主干】【BT2】根据世界等级配置奖励(成长必买改为通知对应不同世界等级的物品信息); --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py | 56 ++++++++++++++++++++++++++++++-------------------------- 1 files changed, 30 insertions(+), 26 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 1104ce6..8680623 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py @@ -333,32 +333,7 @@ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TodayCTGCount % recordID, todayBuyCount + 1) addDRDict.update({"todayBuyCountUpd":(todayBuyCount + 1)}) - 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 - + giveItemList = GetCTGGiveItemList(ipyData) addGold = ipyData.GetGainGold() # 获得仙玉数 gainGoldPrize = ipyData.GetGainGoldPrize() # 赠送仙玉数,首次充值赠送仙玉时,此仙玉不给 firstGoldPrize = ipyData.GetFirstGoldPrize() # 首次充值赠送的仙玉 @@ -371,6 +346,35 @@ Sync_CoinToGoldCountInfo(curPlayer, [recordID]) return addGold, prizeGold, giveItemList, ipyData +def GetCTGGiveItemList(ipyData): + ## 获取充值ID对应给物品列表 + if not ipyData: + return [] + + 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, {}) # 注:相关状态在前置逻辑已经判断过,这里不再判断 + 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 + return giveItemList + def DoCTGLogic(curPlayer, coinType, orderCoin, addGold, prizeGold, giveItemList, isAddBourseMoney, eventName, addDRDict, ctgIpyData=None, coinExp=0): notifyMark = ctgIpyData.GetNotifyMark() if ctgIpyData else "" goldBefore = curPlayer.GetGold() -- Gitblit v1.8.0