#!/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