| #!/usr/bin/python  | 
| # -*- coding: GBK -*-  | 
| #-------------------------------------------------------------------------------  | 
| #  | 
| ##@package Player.CrossActAllRecharge  | 
| #  | 
| # @todo:¿ç·þÈ«Ãñ³äÖµ  | 
| # @author hxp  | 
| # @date 2022-10-11  | 
| # @version 1.0  | 
| #  | 
| # ÏêϸÃèÊö: ¿ç·þÈ«Ãñ³äÖµ  | 
| #  | 
| #-------------------------------------------------------------------------------  | 
| #"""Version = 2022-10-11 19:00"""  | 
| #-------------------------------------------------------------------------------  | 
|   | 
| import ChConfig  | 
| import ShareDefine  | 
| import PlayerControl  | 
| import NetPackCommon  | 
| import CrossRealmPlayer  | 
| import ChPyNetSendPack  | 
| import ItemControler  | 
| import IPY_GameWorld  | 
| import GameWorld  | 
|   | 
| def OnPlayerLogin(curPlayer):  | 
|     isReset = __CheckPlayerCrossActAllRecharge(curPlayer)  | 
|     if not isReset:  | 
|         actInfo = CrossRealmPlayer.GetPlayerCrossActInfo(curPlayer, ShareDefine.CrossActName_AllRecharge)  | 
|         # »î¶¯ÖÐͬ²½»î¶¯ÐÅÏ¢  | 
|         if actInfo.get(ShareDefine.ActKey_State):  | 
|             Sync_CrossActAllRechargePlayerInfo(curPlayer)  | 
|             if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CA_AllRechargeRMB):  | 
|                 SendGameServerActRechargeRMB(curPlayer, actInfo)  | 
|     return  | 
|   | 
| def RefreshCrossActAllRechargeInfo():  | 
|     ## ÊÕµ½GameServerͬ²½µÄ»î¶¯ÐÅÏ¢£¬Ë¢Ð»ÐÅÏ¢  | 
|     playerManager = GameWorld.GetPlayerManager()  | 
|     for index in xrange(playerManager.GetPlayerCount()):  | 
|         curPlayer = playerManager.GetPlayerByIndex(index)  | 
|         if curPlayer.GetID() == 0:  | 
|             continue  | 
|         __CheckPlayerCrossActAllRecharge(curPlayer)  | 
|           | 
|     return  | 
|   | 
| def __CheckPlayerCrossActAllRecharge(curPlayer):  | 
|       | 
|     playerID = curPlayer.GetPlayerID()  | 
|       | 
|     actInfo = CrossRealmPlayer.GetPlayerCrossActInfo(curPlayer, ShareDefine.CrossActName_AllRecharge)  | 
|     cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)  | 
|     actID = actInfo.get(ShareDefine.ActKey_ID, 0)  | 
|     state = actInfo.get(ShareDefine.ActKey_State, 0)  | 
|     dayIndex = actInfo.get(ShareDefine.ActKey_DayIndex, 0)  | 
|       | 
|     playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CA_AllRechargeID) # Íæ¼ÒÉíÉϵĻID  | 
|       | 
|     # »î¶¯ID ÏàͬµÄ»°²»´¦Àí  | 
|     if actID == playerActID:  | 
|         GameWorld.DebugLog("¿ç·þÈ«Ãñ³äÖµ»î¶¯ID²»±ä£¬²»´¦Àí£¡cfgID=%s,dayIndex=%s,actID=%s" % (cfgID, dayIndex, actID), playerID)     | 
|         return  | 
|       | 
|     GameWorld.DebugLog("¿ç·þÈ«Ãñ³äÖµ»î¶¯ÖØÖÃ! cfgID=%s,actID=%s,playerActID=%s,state=%s" % (cfgID, actID, playerActID, state), playerID)  | 
|       | 
|     if not state:  | 
|         CrossRealmPlayer.NotifyCrossActEnd(curPlayer, ShareDefine.CrossActName_AllRecharge)  | 
|           | 
|     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CA_AllRechargeID, actID)  | 
|     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CA_AllRechargeRMB, 0)  | 
|     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CA_AllRechargeAward, 0)  | 
|       | 
|     Sync_CrossActAllRechargePlayerInfo(curPlayer)  | 
|     return True  | 
|   | 
| def GetCrossActAllRechargeAward(curPlayer, awardIndex):  | 
|     ## Áì½±  | 
|       | 
|     actInfo = CrossRealmPlayer.GetPlayerCrossActInfo(curPlayer, ShareDefine.CrossActName_AllRecharge)  | 
|     state = actInfo.get(ShareDefine.ActKey_State, 0)  | 
|     if not state:  | 
|         GameWorld.DebugLog("·Ç»î¶¯ÖÐ")  | 
|         return  | 
|       | 
|     cfgID = actInfo.get(ShareDefine.ActKey_CfgID)  | 
|     ipyDataDict = actInfo.get(ShareDefine.ActKey_IpyDataInfo, {})  | 
|     if not ipyDataDict:  | 
|         return  | 
|     zoneID = ipyDataDict.get("ZoneID", 0)  | 
|     if not zoneID:  | 
|         return  | 
|       | 
|     awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CA_AllRechargeAward)  | 
|     if awardRecord & pow(2, awardIndex):  | 
|         GameWorld.DebugLog("ÒÑÁìÈ¡¹ý¸Ã½±Àø! awardIndex=%s" % awardIndex, curPlayer.GetPlayerID())  | 
|         return  | 
|       | 
|     sendMsg = str(["AllRechargeAward", [cfgID, zoneID, awardIndex]])  | 
|     GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, "CrossActAllRecharge", sendMsg, len(sendMsg))  | 
|     return  | 
|   | 
| def GameServer_CrossActAllRecharge(curPlayer, msgList):  | 
|       | 
|     msgType = msgList[0]  | 
|       | 
|     if msgType == "AllRechargeAward":  | 
|         awardIndex, awardItemList = msgList[1:]  | 
|           | 
|         awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CA_AllRechargeAward)  | 
|         if awardRecord & pow(2, awardIndex):  | 
|             GameWorld.DebugLog("ÒÑÁìÈ¡¹ý¸Ã½±Àø! awardIndex=%s" % awardIndex, curPlayer.GetPlayerID())  | 
|             return  | 
|           | 
|         if not ItemControler.CheckPackSpaceEnough(curPlayer, awardItemList):  | 
|             return  | 
|           | 
|         updAwardRecord = awardRecord | pow(2, awardIndex)  | 
|         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CA_AllRechargeAward, updAwardRecord)  | 
|         GameWorld.Log("ÁìȡȫÃñ³äÖµ½±Àø: awardIndex=%s" % (awardIndex), curPlayer.GetPlayerID())  | 
|           | 
|         Sync_CrossActAllRechargePlayerInfo(curPlayer)  | 
|           | 
|         for itemID, itemCount, isAuctionItem in awardItemList:  | 
|             ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isAuctionItem, [IPY_GameWorld.rptItem],   | 
|                                          event=["CrossActAllRecharge", False, {}])  | 
|     return  | 
|   | 
| def AddCTGRMB(curPlayer, addRMB):  | 
|     ## Ôö¼Ó»î¶¯ÒÑÀۼƳäÖµRMB  | 
|       | 
|     actInfo = CrossRealmPlayer.GetPlayerCrossActInfo(curPlayer, ShareDefine.CrossActName_AllRecharge)   | 
|     if not actInfo:  | 
|         return  | 
|       | 
|     if not actInfo.get(ShareDefine.ActKey_State):  | 
|         GameWorld.DebugLog("¿ç·þÈ«Ãñ³äÖµ·Ç»î¶¯ÖÐ! playerServerID=%s" % GameWorld.GetPlayerServerID(curPlayer), curPlayer.GetPlayerID())  | 
|         return  | 
|       | 
|     totalRMB = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CA_AllRechargeRMB) + addRMB  | 
|     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CA_AllRechargeRMB, totalRMB)  | 
|       | 
|     GameWorld.DebugLog("¿ç·þÈ«Ãñ³äÖµ»î¶¯Ôö¼ÓÍæ¼ÒÀۼƳäÖµRMB: addRMB=%s,totalRMB=%s" % (addRMB, totalRMB), curPlayer.GetPlayerID())  | 
|     Sync_CrossActAllRechargePlayerInfo(curPlayer)  | 
|     SendGameServerActRechargeRMB(curPlayer, actInfo)  | 
|     return  | 
|   | 
| def SendGameServerActRechargeRMB(curPlayer, actInfo):  | 
|     cfgID = actInfo.get(ShareDefine.ActKey_CfgID)  | 
|     ipyDataDict = actInfo.get(ShareDefine.ActKey_IpyDataInfo, {})  | 
|     if not ipyDataDict:  | 
|         return  | 
|     zoneID = ipyDataDict.get("ZoneID", 0)  | 
|     if not zoneID:  | 
|         return  | 
|     totalRMB = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CA_AllRechargeRMB)  | 
|     sendMsg = str(["AllRechargeRMB", [cfgID, zoneID, totalRMB]])  | 
|     GameWorld.Log("SendGameServerActRechargeRMB: %s" % sendMsg, curPlayer.GetPlayerID())  | 
|     GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, "CrossActAllRecharge", sendMsg, len(sendMsg))  | 
|     return  | 
|   | 
| def Sync_CrossActAllRechargePlayerInfo(curPlayer):  | 
|     ## Í¨Öª»î¶¯Íæ¼ÒÊý¾ÝÐÅÏ¢  | 
|     clientPack = ChPyNetSendPack.tagMCCrossActAllRechargePlayerInfo()  | 
|     clientPack.CTGRMBTotal = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CA_AllRechargeRMB)  | 
|     clientPack.AwardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CA_AllRechargeAward)  | 
|     NetPackCommon.SendFakePack(curPlayer, clientPack)  | 
|     return  | 
|   |