xdh
2019-04-16 2a41f04515a5cc91e285cf00e9330dc035e26765
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCostRebate.py
@@ -73,7 +73,8 @@
    if costRebateID == playerCostRebateID:
        #GameWorld.DebugLog("消费返利活动ID不变,不处理!", curPlayer.GetPlayerID())
        return
    actWorldLV = actCostRebateInfo.get(ShareDefine.ActKey_WorldLV, 0)
    playerWorldLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CostRebateWorldLV)
    templateID = GetTemplateID(actCostRebateInfo.get(ShareDefine.ActKey_CfgID, 0), actCostRebateInfo.get(ShareDefine.ActKey_DayIndex, 0))
    playerTemplateID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CostRebateTemplateID)
    
@@ -81,10 +82,11 @@
                       % (costRebateID, playerCostRebateID, state, templateID, playerTemplateID), playerID)
    
    # 未领取的奖励邮件发放
    __SendCostRebateMail(curPlayer, playerTemplateID)
    __SendCostRebateMail(curPlayer, playerTemplateID, playerWorldLV)
    
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CostRebateID, costRebateID)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CostRebateTemplateID, templateID)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CostRebateWorldLV, actWorldLV)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CostRebateGold, 0)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CostRebateAwardRecord, 0)
    
@@ -92,7 +94,7 @@
    Sync_CostRebateInfo(curPlayer)
    return True
def __SendCostRebateMail(curPlayer, playerTemplateID):
def __SendCostRebateMail(curPlayer, playerTemplateID, playerWorldLV):
    # 未领取的奖励邮件发放
    
    if not playerTemplateID:
@@ -105,7 +107,7 @@
    ipyDataList = IpyGameDataPY.GetIpyGameDataList("CostRebateTemplate", playerTemplateID)
    if not ipyDataList:
        return
    job = curPlayer.GetJob()
    playerID = curPlayer.GetPlayerID()
    batchPlayerIDList, batchAddItemList, batchParamList = [], [], []
    awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CostRebateAwardRecord)
@@ -120,7 +122,7 @@
            continue
        awardRecord |= pow(2, awardIndex) 
        
        awardItemList = ipyData.GetAwardItemList()
        awardItemList = __GetItemList(ipyData.GetAwardItemList(), job, playerWorldLV)
        batchPlayerIDList.append([playerID])
        batchAddItemList.append(awardItemList)
        batchParamList.append([needCostGold])
@@ -130,6 +132,23 @@
        PlayerControl.SendMailBatch("ConsumptionRebateMail", batchPlayerIDList, batchAddItemList, batchParamList)
        
    return
def __GetItemList(itemDict, job, worldLV):
    #{世界等级范围:[(物品ID,个数,是否绑定), ...]},若物品ID要区分职业则配{世界等级范围:[({职业:物品ID,..},个数,是否绑定), ...]}
    itemList = []
    itemInfoList = GameWorld.GetDictValueByRangeKey(itemDict, worldLV, [])
    for itemInfo in itemInfoList:
        if type(itemInfo[0]) == dict:
            itemID = itemInfo[0].get(job)
            if not itemID:
                GameWorld.ErrLog('累计充值奖励未配置该职业itemDict=%s,job=%s'%(itemDict, job))
                continue
        else:
            itemID = itemInfo[0]
        itemList.append([itemID, itemInfo[1], itemInfo[2]])
    return itemList
def AddCostRebateGold(curPlayer, costType, costGold, infoDict):
    if costGold <= 0:
@@ -196,7 +215,8 @@
        return
    
    needCostGold = awardIpyData.GetNeedCostGold()
    awardItemList = awardIpyData.GetAwardItemList()
    actWorldLV = actCostRebateInfo.get(ShareDefine.ActKey_WorldLV, 0)
    awardItemList = __GetItemList(awardIpyData.GetAwardItemList(), curPlayer.GetJob(), actWorldLV)
    
    curCostGold = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CostRebateGold)
    if curCostGold < needCostGold:
@@ -218,7 +238,7 @@
        PlayerControl.WorldNotify(0, notifyKey, [curPlayer.GetPlayerName(), needCostGold])
        
    for itemID, itemCount, isBind in awardItemList:
        ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isBind, [IPY_GameWorld.rptItem])
        ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem])
        
    addDataDict = {"TemplateID":templateID, "NeedCostGold":needCostGold, "AwardIndex":awardIndex,
                   "ItemList":str(awardItemList)}
@@ -250,7 +270,8 @@
    templateIDList = ipyData.GetTemplateIDList()
    if not templateIDList:
        return
    job = curPlayer.GetJob()
    actWorldLV = actCostRebateInfo.get(ShareDefine.ActKey_WorldLV, 0)
    openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
    actInfo = ChPyNetSendPack.tagMCCostRebateInfo()
    actInfo.StartDate = GameWorld.GetOperationActionDateStr(ipyData.GetStartDate(), openServerDay)
@@ -270,7 +291,7 @@
            awardInfo.AwardIndex = ipyData.GetAwardIndex()
            awardInfo.NeedGold = ipyData.GetNeedCostGold()
            awardInfo.AwardItem = []
            for itemID, itemCount, isBind in ipyData.GetAwardItemList():
            for itemID, itemCount, isBind in __GetItemList(ipyData.GetAwardItemList(), job, actWorldLV):
                awardItem = ChPyNetSendPack.tagMCCostRebateAwardItem()
                awardItem.ItemID = itemID
                awardItem.ItemCount = itemCount