| | |
| | | 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() # 首次充值赠送的仙玉
|
| | |
| | | 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()
|