| #!/usr/bin/python  | 
| # -*- coding: GBK -*-  | 
| #-------------------------------------------------------------------------------  | 
| #  | 
| ##@package PlayerSealDemon  | 
| #  | 
| # @todo:·âħ̳  | 
| # @author xdh  | 
| # @date 2017-12-28 16:30  | 
| # @version 1.0  | 
| #  | 
| # ÏêϸÃèÊö: ·âħ̳  | 
| #-------------------------------------------------------------------------------  | 
| #"""Version = 2017-12-28 16:30"""  | 
| #-------------------------------------------------------------------------------  | 
|   | 
| import GameWorld  | 
| import PyDataManager  | 
| import CommFunc  | 
| import PyGameDataStruct  | 
|   | 
| ## ÉÏÏß  | 
| #  @param None  | 
| #  @return None  | 
| def OnPlayerLogin(curPlayer):  | 
|     PyDataManager.GetSealDemonRecordManager().CheckSealDemonAward(curPlayer)  | 
|     return  | 
|   | 
|   | 
|   | 
|   | 
| # ·âħ̳½á¹û¹ÜÀí  | 
| class SealDemonManager(object):  | 
|          | 
|     def __init__(self):  | 
|         self.SealDemonDict = {}     # {playerid:price, ...} PyGameDataStruct.tagDBPySealDemonRecord  | 
|         return  | 
|   | 
|     def UpdateSealDemonRecord(self, playerID, lineid, rank):  | 
|         sealDemonRecord = PyGameDataStruct.tagDBPySealDemonRecord()  | 
|         sealDemonRecord.clear()  | 
|         sealDemonRecord.PlayerID = playerID  | 
|         sealDemonRecord.LineID = lineid  | 
|         sealDemonRecord.Rank = rank  | 
|         self.SealDemonDict[playerID] = sealDemonRecord  | 
|           | 
|         GameWorld.DebugLog("¸üзâħ̳¼Ç¼ PlayerID=%s,lineid=%s,rank=%s" % (playerID, lineid, rank))  | 
|         return  | 
|       | 
|     def CheckSealDemonAward(self, curPlayer):  | 
|         playerID = curPlayer.GetPlayerID()  | 
|         if playerID not in self.SealDemonDict:  | 
|             return  | 
|         sealDemonRecord = self.SealDemonDict.pop(playerID)  | 
|         result = str([sealDemonRecord.LineID, sealDemonRecord.Rank])  | 
|         curPlayer.MapServer_QueryPlayerResult(0, 0, "SealDemonAward", result, len(result))  | 
|         return  | 
|       | 
|       | 
|     # ±£´æÊý¾Ý ´æÊý¾Ý¿âºÍrealtimebackup  | 
|     def GetSaveData(self):  | 
|         savaData = ""  | 
|         cntData = ""  | 
|         cnt = 0  | 
|         for sealDemonRecord in self.SealDemonDict.values():  | 
|             cnt += 1  | 
|             savaData += sealDemonRecord.getBuffer()  | 
|                   | 
|         GameWorld.Log("SaveSealDemonRecord cnt :%s len=%s" % (cnt, len(savaData)))  | 
|         return CommFunc.WriteDWORD(cntData, cnt) + savaData  | 
|       | 
|     # ´ÓÊý¾Ý¿âÔØÈëºÃÓÑÊý¾Ý  | 
|     def LoadPyGameData(self, datas, pos, dataslen):  | 
|         cnt, pos = CommFunc.ReadDWORD(datas, pos)  | 
|         GameWorld.Log("LoadSealDemonRecord cnt :%s" % cnt)  | 
|           | 
|         self.SealDemonDict = {}  | 
|           | 
|         for _ in xrange(cnt):  | 
|             data = PyGameDataStruct.tagDBPySealDemonRecord()  | 
|             data.clear()  | 
|             pos += data.readData(datas, pos, dataslen)  | 
|             playerID = data.PlayerID  | 
|             self.SealDemonDict[playerID] = data  | 
|               | 
|         return pos  |