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()