1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#!/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