#!/usr/bin/python  
 | 
# -*- coding: GBK -*-  
 | 
#-------------------------------------------------------------------------------  
 | 
#  
 | 
##@package Player.PlayerActSingleRecharge  
 | 
#  
 | 
# @todo:µ¥±ÊÀÛ³ä»î¶¯  
 | 
# @author hxp  
 | 
# @date 2021-04-07  
 | 
# @version 1.0  
 | 
#  
 | 
# ÏêϸÃèÊö: µ¥±ÊÀÛ³ä»î¶¯  
 | 
#  
 | 
#-------------------------------------------------------------------------------  
 | 
#"""Version = 2021-04-07 17:30"""  
 | 
#-------------------------------------------------------------------------------  
 | 
  
 | 
import PyGameData  
 | 
import ShareDefine  
 | 
import PlayerControl  
 | 
import IpyGameDataPY  
 | 
import ItemControler  
 | 
import ChPyNetSendPack  
 | 
import IPY_GameWorld  
 | 
import NetPackCommon  
 | 
import GameWorld  
 | 
import ChConfig  
 | 
import CommFunc  
 | 
  
 | 
def GetTemplateID(cfgID, dayIndex):  
 | 
    if not cfgID or dayIndex == None:  
 | 
        return 0  
 | 
    ipyData = IpyGameDataPY.GetIpyGameData("ActSingleRecharge", cfgID)     
 | 
    if not ipyData:  
 | 
        return 0  
 | 
    templateIDList = ipyData.GetTemplateIDList()  
 | 
    templateID = templateIDList[-1] if dayIndex >= len(templateIDList) else templateIDList[dayIndex]  
 | 
    return templateID  
 | 
  
 | 
def OnPlayerLogin(curPlayer):  
 | 
      
 | 
    for actInfo in PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_SingleRecharge, {}).values():  
 | 
        actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0)  
 | 
        isReset = __CheckPlayerSingleRechargeAction(curPlayer, actNum)  
 | 
        if not isReset:  
 | 
            # »î¶¯ÖÐͬ²½»î¶¯ÐÅÏ¢  
 | 
            if actInfo.get(ShareDefine.ActKey_State):  
 | 
                Sync_SingleRechargeActionInfo(curPlayer, actNum)  
 | 
                Sync_SingleRechargePlayerInfo(curPlayer, actNum)  
 | 
                  
 | 
    return  
 | 
  
 | 
def RefreshSingleRechargeActionInfo(actNum):  
 | 
    ## ÊÕµ½GameServerͬ²½µÄ»î¶¯ÐÅÏ¢£¬Ë¢Ð»ÐÅÏ¢  
 | 
    playerManager = GameWorld.GetPlayerManager()  
 | 
    for index in xrange(playerManager.GetPlayerCount()):  
 | 
        curPlayer = playerManager.GetPlayerByIndex(index)  
 | 
        if curPlayer.GetID() == 0:  
 | 
            continue  
 | 
        __CheckPlayerSingleRechargeAction(curPlayer, actNum)  
 | 
    return  
 | 
  
 | 
def __CheckPlayerSingleRechargeAction(curPlayer, actNum):  
 | 
    ## ¼ì²éÍæ¼Ò»î¶¯Êý¾ÝÐÅÏ¢  
 | 
      
 | 
    playerID = curPlayer.GetPlayerID()  
 | 
    actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_SingleRecharge, actNum)  
 | 
    actID = actInfo.get(ShareDefine.ActKey_ID, 0)  
 | 
    state = actInfo.get(ShareDefine.ActKey_State, 0)  
 | 
      
 | 
    playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SingleRechargeID % actNum) # Íæ¼ÒÉíÉϵĻID  
 | 
    playerTemplateID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SingleRechargeTemplateID % actNum)  
 | 
      
 | 
    templateID = GetTemplateID(actInfo.get(ShareDefine.ActKey_CfgID, 0), actInfo.get(ShareDefine.ActKey_DayIndex, 0))  
 | 
      
 | 
    # »î¶¯ID ÏàͬµÄ»°²»´¦Àí  
 | 
    if actID == playerActID:  
 | 
        GameWorld.DebugLog("µ¥±ÊÀÛ³ä»î¶¯ID²»±ä£¬²»´¦Àí£¡actNum=%s,actID=%s" % (actNum, actID), playerID)  
 | 
        if state and templateID and templateID != playerTemplateID:  
 | 
            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SingleRechargeTemplateID % actNum, templateID)  
 | 
            Sync_SingleRechargeActionInfo(curPlayer, actNum)  
 | 
            Sync_SingleRechargePlayerInfo(curPlayer, actNum)  
 | 
            GameWorld.DebugLog("    »î¶¯ÖиüÐÂÄ£°åID: templateID=%s" % templateID, playerID)  
 | 
              
 | 
        return  
 | 
      
 | 
    actWorldLV = actInfo.get(ShareDefine.ActKey_WorldLV, 0)  
 | 
    playerWorldLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SingleRechargeWorldLV % actNum)  
 | 
      
 | 
    GameWorld.DebugLog("µ¥±ÊÀÛ³äÖØÖÃ! actNum=%s,actID=%s,playerActID=%s,state=%s,templateID=%s,playerTemplateID=%s"   
 | 
                       % (actNum, actID, playerActID, state, templateID, playerTemplateID), playerID)  
 | 
      
 | 
    # Î´ÁìÈ¡µÄ½±ÀøÓʼþ·¢·Å  
 | 
    __SendSingleRechargeMail(curPlayer, playerTemplateID, playerWorldLV, actNum)  
 | 
      
 | 
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SingleRechargeID % actNum, actID)  
 | 
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SingleRechargeTemplateID % actNum, templateID)  
 | 
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SingleRechargeWorldLV % actNum, actWorldLV)  
 | 
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SingleRechargeValue % actNum, 0)  
 | 
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SingleRechargeAward % actNum, 0)  
 | 
      
 | 
    Sync_SingleRechargeActionInfo(curPlayer, actNum)  
 | 
    Sync_SingleRechargePlayerInfo(curPlayer, actNum)  
 | 
    return True  
 | 
  
 | 
def __SendSingleRechargeMail(curPlayer, playerTemplateID, playerWorldLV, actNum):  
 | 
    # Î´ÁìÈ¡µÄ½±ÀøÓʼþ·¢·Å  
 | 
      
 | 
    if not playerTemplateID:  
 | 
        return  
 | 
      
 | 
    canAwardValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SingleRechargeValue % actNum)  
 | 
    if not canAwardValue:  
 | 
        return  
 | 
      
 | 
    ipyDataList = IpyGameDataPY.GetIpyGameDataList("ActSingleRechargeAward", playerTemplateID)  
 | 
    if not ipyDataList:  
 | 
        return  
 | 
      
 | 
    playerID = curPlayer.GetPlayerID()  
 | 
    batchPlayerIDList, batchAddItemList, batchParamList = [], [], []  
 | 
    awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SingleRechargeAward % actNum)  
 | 
      
 | 
    for ipyData in ipyDataList:  
 | 
        awardIndex = ipyData.GetAwardIndex()  
 | 
        if awardRecord & pow(2, awardIndex):  
 | 
            #GameWorld.DebugLog("µ¥±ÊÀÛ³äÒÑ·¢·Å¹ý½±Àø£¡awardIndex=%s" % awardIndex)  
 | 
            continue  
 | 
          
 | 
        singleValue = ipyData.GetSingleRechargeValue()  
 | 
        if not canAwardValue & pow(2, awardIndex):  
 | 
            #GameWorld.DebugLog("µ¥±ÊÀ۳䲻ÄÜÁì½±£¡awardIndex=%s" % awardIndex)  
 | 
            continue  
 | 
        awardRecord |= pow(2, awardIndex)   
 | 
          
 | 
        awardItemList = GameWorld.GetDictValueByRangeKey(ipyData.GetAwardItem(), playerWorldLV, [])  
 | 
        batchPlayerIDList.append([playerID])  
 | 
        batchAddItemList.append(awardItemList)  
 | 
        batchParamList.append([singleValue])  
 | 
          
 | 
    if batchPlayerIDList:  
 | 
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SingleRechargeAward % actNum, awardRecord)  
 | 
        PlayerControl.SendMailBatch("SingleRechargeMail%s" % actNum, batchPlayerIDList, batchAddItemList, batchParamList)  
 | 
          
 | 
    return  
 | 
  
 | 
def UpdSingleRechargeValue(curPlayer, curRechargeValue, coinType):  
 | 
    if curRechargeValue <= 0:  
 | 
        return  
 | 
      
 | 
    for actInfo in PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_SingleRecharge, {}).values():  
 | 
        actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0)  
 | 
        if not actInfo.get(ShareDefine.ActKey_State):  
 | 
            GameWorld.DebugLog("µ¥±ÊÀÛ³ä»î¶¯µ±Ç°Î´¿ªÆô! actNum=%s" % actNum)  
 | 
            continue  
 | 
          
 | 
        cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)  
 | 
        if not cfgID:  
 | 
            continue  
 | 
          
 | 
        ipyData = IpyGameDataPY.GetIpyGameData("ActSingleRecharge", cfgID)  
 | 
        if not ipyData:  
 | 
            continue  
 | 
          
 | 
        ctgTypeEffValue = ipyData.GetCTGTypeEffValue()  
 | 
        if not ctgTypeEffValue & pow(2, coinType):  
 | 
            GameWorld.DebugLog("µ¥±ÊÀÛ³ä³äÖµ»î¶¯£¬³äÖµÀàÐͶԸûÎÞЧ! actNum=%s,coinType=%s,ctgTypeEffValue=%s"   
 | 
                               % (actNum, coinType, ctgTypeEffValue), curPlayer.GetPlayerID())  
 | 
            continue  
 | 
          
 | 
        templateID = GetTemplateID(actInfo.get(ShareDefine.ActKey_CfgID, 0), actInfo.get(ShareDefine.ActKey_DayIndex, 0))  
 | 
        if not templateID:  
 | 
            GameWorld.ErrLog("µ¥±ÊÀÛ³ä³äÖµ»î¶¯Êý¾ÝÒì³£!cfgID=%s,templateID=%s" % (cfgID, templateID), curPlayer.GetPlayerID())  
 | 
            continue  
 | 
          
 | 
        awardIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActSingleRechargeAward", templateID)  
 | 
        if not awardIpyDataList:  
 | 
            continue  
 | 
          
 | 
        canAwardChange = False  
 | 
        canAwardValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SingleRechargeValue % actNum)  
 | 
        awardRuleType = ipyData.GetAwardRuleType()  
 | 
        GameWorld.DebugLog("µ¥±ÊÀÛ³ä³äÖµ»î¶¯£¬actNum=%s,awardRuleType=%s,canAwardValue=%s,curRechargeValue=%s"   
 | 
                           % (actNum, awardRuleType, canAwardValue, curRechargeValue))  
 | 
        # ÏòϼæÈÝËùÓеµ´Î  
 | 
        if awardRuleType == 0:  
 | 
            for awardIpyData in awardIpyDataList:  
 | 
                awardIndex = awardIpyData.GetAwardIndex()  
 | 
                singleValue = CommFunc.RMBToCoin(awardIpyData.GetSingleRechargeValue())  
 | 
                if canAwardValue & pow(2, awardIndex):  
 | 
                    #GameWorld.DebugLog("    ÒѾ¿ÉÁì½±£¬²»´¦Àí£¡awardRuleType=%s,awardIndex=%s" % (awardRuleType, awardIndex))  
 | 
                    continue  
 | 
                if curRechargeValue < singleValue:  
 | 
                    #GameWorld.DebugLog("    Î´´ïµ½µµ´Î¶î¶È£¬²»´¦Àí£¡awardRuleType=%s,awardIndex=%s,singleValue=%s"   
 | 
                    #                   % (awardRuleType, awardIndex, singleValue))  
 | 
                    continue  
 | 
                  
 | 
                canAwardChange = True  
 | 
                canAwardValue |= pow(2, awardIndex)  
 | 
                PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SingleRechargeValue % actNum, canAwardValue)  
 | 
                GameWorld.DebugLog("    ÉèÖõµ´Î¿ÉÁìÈ¡£¡awardRuleType=%s,awardIndex=%s,singleValue=%s,canAwardValue=%s"   
 | 
                                   % (awardRuleType, awardIndex, singleValue, canAwardValue))  
 | 
                  
 | 
        # Æ¥Åä×î¸ßµµ´Î  
 | 
        elif awardRuleType == 1:  
 | 
            for awardIpyData in awardIpyDataList[::-1]:  
 | 
                awardIndex = awardIpyData.GetAwardIndex()  
 | 
                singleValue = CommFunc.RMBToCoin(awardIpyData.GetSingleRechargeValue())  
 | 
                if canAwardValue & pow(2, awardIndex):  
 | 
                    #GameWorld.DebugLog("    ÒѾ¿ÉÁì½±£¬²»´¦Àí£¡awardRuleType=%s,awardIndex=%s" % (awardRuleType, awardIndex))  
 | 
                    continue  
 | 
                if curRechargeValue < singleValue:  
 | 
                    #GameWorld.DebugLog("    Î´´ïµ½µµ´Î¶î¶È£¬²»´¦Àí£¡awardRuleType=%s,awardIndex=%s,singleValue=%s"   
 | 
                    #                   % (awardRuleType, awardIndex, singleValue))  
 | 
                    continue  
 | 
                  
 | 
                canAwardChange = True  
 | 
                canAwardValue |= pow(2, awardIndex)  
 | 
                PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SingleRechargeValue % actNum, canAwardValue)  
 | 
                GameWorld.DebugLog("    ÉèÖÃ×î¸ßµµ´Î¿ÉÁìÈ¡£¡awardRuleType=%s,awardIndex=%s,singleValue=%s,canAwardValue=%s"   
 | 
                                   % (awardRuleType, awardIndex, singleValue, canAwardValue))  
 | 
                break  
 | 
          
 | 
        # ¾«È·Æ¥Åä¶ÔÓ¦µµ´Î  
 | 
        elif awardRuleType == 2:  
 | 
            for awardIpyData in awardIpyDataList:  
 | 
                awardIndex = awardIpyData.GetAwardIndex()  
 | 
                singleValue = CommFunc.RMBToCoin(awardIpyData.GetSingleRechargeValue())  
 | 
                if curRechargeValue != singleValue:  
 | 
                    #GameWorld.DebugLog("    ²»µÈÓÚµµ´Î¶î¶È£¬²»´¦Àí£¡awardRuleType=%s,awardIndex=%s,singleValue=%s"   
 | 
                    #                   % (awardRuleType, awardIndex, singleValue))  
 | 
                    continue  
 | 
                if canAwardValue & pow(2, awardIndex):  
 | 
                    #GameWorld.DebugLog("    ÒѾ¿ÉÁì½±£¬²»´¦Àí£¡awardRuleType=%s,awardIndex=%s" % (awardRuleType, awardIndex))  
 | 
                    break  
 | 
                  
 | 
                canAwardChange = True  
 | 
                canAwardValue |= pow(2, awardIndex)  
 | 
                PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SingleRechargeValue % actNum, canAwardValue)  
 | 
                GameWorld.DebugLog("    ÉèÖþ«È·µµ´Î¿ÉÁìÈ¡£¡awardRuleType=%s,awardIndex=%s,singleValue=%s,canAwardValue=%s"   
 | 
                                   % (awardRuleType, awardIndex, singleValue, canAwardValue))  
 | 
                break  
 | 
              
 | 
        else:  
 | 
            continue  
 | 
          
 | 
        if not canAwardChange:  
 | 
            continue  
 | 
          
 | 
        Sync_SingleRechargePlayerInfo(curPlayer, actNum)  
 | 
          
 | 
        # ÏßÏ»£¬¼ì²é·¢·Å½±Àø  
 | 
        if ipyData.GetIsOfflineAct():  
 | 
            playerWorldLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SingleRechargeWorldLV % actNum)  
 | 
            __SendSingleRechargeMail(curPlayer, templateID, playerWorldLV, actNum)  
 | 
              
 | 
    return  
 | 
  
 | 
def OnGetSingleRechargeAward(curPlayer, awardIndex, actNum):  
 | 
    '''ÁìÈ¡½±Àø  
 | 
    @param awardIndex: ½±ÀøË÷Òý  
 | 
    @param actNum: »î¶¯±àºÅ£¬Èç11 »ò  12 ´ú±í²»Í¬µÄ»î¶¯  
 | 
    '''  
 | 
    actNum = GameWorld.ToIntDef(actNum, 0)  
 | 
    if actNum <= 0:  
 | 
        GameWorld.DebugLog("ûÓÐÖ¸¶¨ÁìÈ¡µÄ»î¶¯±àºÅ! actNum=%s" % actNum)  
 | 
        return  
 | 
      
 | 
    playerID = curPlayer.GetPlayerID()  
 | 
    actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_SingleRecharge, actNum)  
 | 
      
 | 
    state = actInfo.get(ShareDefine.ActKey_State, 0)  
 | 
    templateID = GetTemplateID(actInfo.get(ShareDefine.ActKey_CfgID, 0), actInfo.get(ShareDefine.ActKey_DayIndex, 0))  
 | 
    if not state or not templateID:  
 | 
        GameWorld.DebugLog("¸Ãµ¥±ÊÀÛ³ä»î¶¯·Ç»î¶¯ÖУ¬ÎÞ·¨Áì½±£¡actNum=%s,state=%s,templateID=%s" % (actNum, state, templateID), playerID)  
 | 
        return  
 | 
      
 | 
    awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SingleRechargeAward % actNum)  
 | 
    if awardRecord & pow(2, awardIndex):  
 | 
        GameWorld.DebugLog("ÒѾÁìÈ¡¹ý¸Ãµ¥±ÊÀÛ³ä»î¶¯½±Àø! actNum=%s,awardIndex=%s" % (actNum, awardIndex), playerID)  
 | 
        return  
 | 
      
 | 
    ipyDataList = IpyGameDataPY.GetIpyGameDataList("ActSingleRechargeAward", templateID)  
 | 
    if not ipyDataList:  
 | 
        return  
 | 
      
 | 
    awardIpyData = None  
 | 
    for ipyData in ipyDataList:  
 | 
        if ipyData.GetAwardIndex() == awardIndex:  
 | 
            awardIpyData = ipyData  
 | 
            break  
 | 
          
 | 
    if not awardIpyData:  
 | 
        GameWorld.DebugLog("ÕÒ²»µ½¸Ãµ¥±ÊÀÛ³ä»î¶¯µµÎ»Ë÷Òý½±Àø!actNum=%s,templateID=%s,awardIndex=%s" % (actNum, templateID, awardIndex), playerID)  
 | 
        return  
 | 
      
 | 
    singleValue = awardIpyData.GetSingleRechargeValue()  
 | 
    canAwardValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SingleRechargeValue % actNum)  
 | 
      
 | 
    if not canAwardValue & pow(2, awardIndex):  
 | 
        GameWorld.DebugLog("¸Ãµµ´Î½±ÀøÎÞ·¨ÁìÈ¡! templateID=%s,awardIndex=%s,singleValue=%s,canAwardValue%s"   
 | 
                           % (templateID, awardIndex, singleValue, canAwardValue), playerID)  
 | 
        return  
 | 
      
 | 
    actWorldLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SingleRechargeWorldLV % actNum)  
 | 
    awardItemList = GameWorld.GetDictValueByRangeKey(ipyData.GetAwardItem(), actWorldLV, [])  
 | 
      
 | 
    if not ItemControler.CheckPackSpaceEnough(curPlayer, awardItemList):  
 | 
        return  
 | 
      
 | 
    awardRecord |= pow(2, awardIndex)  
 | 
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SingleRechargeAward % actNum, awardRecord)  
 | 
    Sync_SingleRechargePlayerInfo(curPlayer, actNum)  
 | 
      
 | 
    GameWorld.DebugLog("    ÁìÈ¡³É¹¦! actNum=%s,templateID=%s,awardIndex=%s,singleValue=%s,awardRecord=%s"   
 | 
                       % (actNum, templateID, awardIndex, singleValue, awardRecord))  
 | 
      
 | 
    notifyKey = awardIpyData.GetNotifyKey()  
 | 
    if notifyKey:  
 | 
        PlayerControl.WorldNotify(0, notifyKey, [curPlayer.GetPlayerName(), str(awardIpyData.GetSingleRechargeValue())])  
 | 
          
 | 
    for itemID, itemCount, isAuctionItem in awardItemList:  
 | 
        ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isAuctionItem, [IPY_GameWorld.rptItem], event=["SingleRechargeAward", False, {}])  
 | 
          
 | 
    return  
 | 
  
 | 
def Sync_SingleRechargePlayerInfo(curPlayer, actNum):  
 | 
    ## Í¨ÖªÍæ¼ÒÊý¾ÝÐÅÏ¢  
 | 
      
 | 
    actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_SingleRecharge, actNum)  
 | 
    if not actInfo.get(ShareDefine.ActKey_State):  
 | 
        return  
 | 
      
 | 
    cfgID = actInfo.get(ShareDefine.ActKey_CfgID)  
 | 
    if not cfgID:  
 | 
        return  
 | 
      
 | 
    ipyData = IpyGameDataPY.GetIpyGameData("ActSingleRecharge", cfgID)  
 | 
    if not ipyData:  
 | 
        return  
 | 
      
 | 
    if ipyData.GetIsOfflineAct():  
 | 
        #ÏßÏ»²»Ï·¢  
 | 
        return  
 | 
      
 | 
    playerActInfo = ChPyNetSendPack.tagMCActSingleRechargePlayerInfo()  
 | 
    playerActInfo.ActNum = actNum  
 | 
    playerActInfo.CanAwardValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SingleRechargeValue % actNum)  
 | 
    playerActInfo.AwardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SingleRechargeAward % actNum)  
 | 
    NetPackCommon.SendFakePack(curPlayer, playerActInfo)  
 | 
    return  
 | 
  
 | 
def Sync_SingleRechargeActionInfo(curPlayer, actNum):  
 | 
    ## Í¨Öª»î¶¯ÐÅÏ¢  
 | 
      
 | 
    actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_SingleRecharge, actNum)  
 | 
    if not actInfo.get(ShareDefine.ActKey_State):  
 | 
        return  
 | 
      
 | 
    cfgID = actInfo.get(ShareDefine.ActKey_CfgID)  
 | 
    if not cfgID:  
 | 
        return  
 | 
      
 | 
    ipyData = IpyGameDataPY.GetIpyGameData("ActSingleRecharge", cfgID)  
 | 
    if not ipyData:  
 | 
        return  
 | 
      
 | 
    if ipyData.GetIsOfflineAct():  
 | 
        #ÏßÏ»²»Ï·¢  
 | 
        return  
 | 
      
 | 
    templateID = GetTemplateID(actInfo.get(ShareDefine.ActKey_CfgID, 0), actInfo.get(ShareDefine.ActKey_DayIndex, 0))  
 | 
    if not templateID:  
 | 
        return  
 | 
      
 | 
    actWorldLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SingleRechargeWorldLV % actNum)  
 | 
    startDateStr, endDateStr = GameWorld.GetOperationActionDateStr(ipyData)  
 | 
      
 | 
    clientPack = ChPyNetSendPack.tagMCActSingleRechargeInfo()  
 | 
    clientPack.ActNum = actNum  
 | 
    clientPack.StartDate = startDateStr  
 | 
    clientPack.EndtDate = endDateStr  
 | 
    clientPack.IsDayReset = ipyData.GetIsDayReset()  
 | 
    clientPack.LimitLV = ipyData.GetLVLimit()  
 | 
    clientPack.AwardRuleType = ipyData.GetAwardRuleType()  
 | 
    clientPack.AwardInfo = []  
 | 
      
 | 
    ipyDataList = IpyGameDataPY.GetIpyGameDataList("ActSingleRechargeAward", templateID)  
 | 
    if ipyDataList:  
 | 
        for awardIpyData in ipyDataList:  
 | 
            awardInfo = ChPyNetSendPack.tagMCActSingleRechargeAward()  
 | 
            awardInfo.AwardIndex = awardIpyData.GetAwardIndex()  
 | 
            awardInfo.SingleRechargeValue = CommFunc.RMBToCoin(awardIpyData.GetSingleRechargeValue())  
 | 
            awardInfo.AwardItem = []  
 | 
            awardItemList = GameWorld.GetDictValueByRangeKey(awardIpyData.GetAwardItem(), actWorldLV, [])  
 | 
            for itemID, itemCount, isBind in awardItemList:  
 | 
                awardItem = ChPyNetSendPack.tagMCActSingleRechargeAwardItem()  
 | 
                awardItem.ItemID = itemID  
 | 
                awardItem.ItemCount = itemCount  
 | 
                awardItem.IsBind = isBind  
 | 
                awardInfo.AwardItem.append(awardItem)  
 | 
            awardInfo.AwardItemCount = len(awardInfo.AwardItem)  
 | 
              
 | 
            clientPack.AwardInfo.append(awardInfo)  
 | 
              
 | 
    clientPack.AwardCount = len(clientPack.AwardInfo)  
 | 
    NetPackCommon.SendFakePack(curPlayer, clientPack)  
 | 
    return  
 | 
  
 |