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
87
88
89
90
91
92
93
94
¸òÁgc@s€ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ej ƒZd„Zddd„ƒYZddd„ƒYZd„Zd„Zd    „Zd
„Zd „Zdd „Zd „Zddd„Zd„Zd„Zd„Zd„Zd„Zdd„Z d„Z!d„Z"d„Z#dS(iÿÿÿÿNcCs-tjƒ|r)tjtj|ƒƒntS(N(t TempDBPlayertcleartreadDatatbase64t    b64decode(tpackData((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pytGetDBPlayerByPackData0s
tPlayerPackDataObjcBs>eZd„Zd„Zd„Zd„Zd„Zd„ZRS(cCsgd|_d|_d|_d|_d|_d|_d|_d|_d|_    d|_
d|_ dS(Nit( tNonetdbPlayerPackDatatplayerIDt
playerNametaccIDtlvtjobtrealmLVtfacetfacePict
fightPowertserverID(tself((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pyt__init__9s                                            cCsTi|jd6|jd6|jd6|jd6|jd6|jd6|jd6|jd6S(    NR R RRRRRR(R R RRRRRR(R((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pyt GetBaseDictGs+cCs~|s
dS|js%tjƒ|_n|j|j_||j_t|jjƒ|j_tt    j    ƒƒ|j_
|j ƒdS(N( R
tPyGameDataStructttagDBPlayerPackDataR tPlayerIDtPackDatatlent PackDataSizetintttimetUpdTimetUnpack(RR((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pyt UpdPackDataKs     
cCs²|js dSt|jjƒ}|j|_|j|_|j|_|j    |_
|j |_ |j |_|j|_|j|_|jtj|j|_tj|jƒ|_dS(N(R
RRRR tAccIDR t
PlayerNameR tLVRtJobRt OfficialRankRtFaceRtFacePicRt FightPowerExtChConfigtDef_PerPointValuet
FightPowerRt    GameWorldtGetAccIDServerIDR(RtdbPlayer((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pyR!Ws            cCs|jr|jjSdS(NR(R
R(R((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pyt GetPackDatagscCs|jr|jjSdS(Ni(R
R (R((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pyt
GetUpdTimehs(t__name__t
__module__RRR"R!R1R2(((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pyR7s                      tDBPlayerPackDataManagercBs€eZd„Zd„Zed„Zd„Zd„Zd„Zd„Z    d„Z
d„Z d    „Z d
„Z d „Zd „ZRS( cCs|jƒdS(N(tClear(R((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pyRms
cCs(g|_i|_t|_i|_dS(N(t&_DBPlayerPackDataManager__packDataListt%_DBPlayerPackDataManager__idIndexDicttFalset"_DBPlayerPackDataManager__needSortt3_DBPlayerPackDataManager__serverIDRangePlayerIDDict(R((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pyR6qs
                cCs­d}|jƒ||jkrT|j|}|t|jƒkrT|j|}qTn| r©|r©tƒ}||_|jj|ƒt|jƒd|j|<t|_    n|S(Ni(
R    t(_DBPlayerPackDataManager__refreshIDIndexR8RR7RR tappendtTrueR:(RR tisAddNewt packDataObjtindex((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pytGetPlayerPackObjxs
           c Cs|jƒt|ƒ}||jkrg}x³|jD]¨}|j}|j}x|D]…}t|tƒru||ksÉt|tƒs“t|tƒrTt    |ƒdkrT|d|koÄ|dknrT|j
|ƒqTqTWq5Wt j d|t    |ƒ|fƒ||j|<n|j|S(Niiis&ÖØÐ¼ÓÔØÇø·þ´ò°üÍæ¼ÒIDÁбí: %s, %s, %s( tSortttupleR;R7R Rt
isinstanceRtlistRR=R.tDebugLog(Rt serverIDListtkeyt playerIDListtdataObjR RtidInfo((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pytGetPlayerIDListByServerIDInfo‰s
          6 cCs|jƒ||jkS(N(R<R8(RR ((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pyt
IsPlayerIn›s
cCsL|jsEi|_x0t|jƒD]\}}||j|j<q"Wn|jS(N(R8t    enumerateR7R (RRARK((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pyt__refreshIDIndexŸs
        cCs6|s
dS|j|tƒ}|j|ƒt|_|S(N(RBR>R"R:(RR RtpackObj((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pytUpdPlayerPackData¦s      cCsŸ|jƒ|jj|dƒ}|dkrS|t|jƒkrS|jj|ƒnx3|jjƒD]"}||krc|j|ƒqcqcWi|_i|_dS(Niÿÿÿÿi(R<R8tpopRR7R;tvaluestremove(RR RARJ((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pytDelPlayerPackData®s
!         cCs t|jƒS(N(RR7(R((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pytGetCount¼scCs*|j|}| r&tr&tƒ}n|S(N(R7R9R(RRARK((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pytAt½s   cCsR|js dSt|_|jjdd„dtƒi|_i|_|jƒdS(NRIcSs|jS(N(R(td((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pyt<lambda>Èstreverse(R:R9R7tsortR>R8R;R<(R((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pyRCÃs                
cCs«d}d}d}xet|jƒƒD]Q}|j|ƒ}|jsIq%n|d7}||jjƒ7}|dkr%Pq%q%Wtjd|t|ƒfƒtj    ||ƒ|S(NRiii
s&Save DBPlayerPackData count :%s len=%s(
txrangeRWRXR
t    getBufferR.tLogRtCommFunct
WriteDWORD(RtsavaDatatcntDatatcntRARK((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pyt GetSaveDataÏs    
 c    Cs«tj||ƒ\}}tjd|ƒ|jƒxgt|ƒD]Y}tjƒ}||j|||ƒ7}|j    }|j
|t ƒ}||_ |j ƒq@W|jƒ|S(NsLoad DBPlayerPackData count :%s(R`t    ReadDWORDR.R_R6R]RRRRRBR>R
R!RC(    RtdatastpostdataslenRdt_tdbDataR RQ((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pytLoadPyGameDataás
         
(R3R4RR6R9RBRMRNR<RRRVRWRXRCReRl(((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pyR5js                                              c Csð|s
tS|j}tj|ƒr&tStjƒr¦tjƒ}xet    j
D]W}|j |ƒ}x?|D]7\}}}|j |||ƒ}|j |ƒrdtSqdWqHWnd}|dd}    ttjƒƒ}
|
|jƒ} | |    krìtStS(Niii(R9R tCrossChampionshiptIsChampionshipPlayerR>R.t IsCrossServert PyDataManagertGetCrossBillboardManagert ShareDefinetCrossBillboardTypeListtGetBillboardGroupListtGetCrossBillboardtFindByIDRRR2( R@R t billboardMgrt billboardTypet    groupListt groupValue1t groupValue2t billboardObjtmaxDaystMaxTimetcurTimetpassTime((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pytIsSaveDBós(       cCsktjƒ}xXt|jƒƒddd…D]7}|j|ƒ}t|ƒrSq,n|j|jƒq,WdS(Niÿÿÿÿ(RptGetDBPlayerPackDataManagertrangeRWRXRRVR (t packDataMgrRAR@((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pytDelOutofTimePackDatas & cCstjƒj|ƒS(N(RpR‚RN(R ((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pytIsPackDataPlayer*scCsE|jƒ}tjƒ}|j|ƒrAt|didd6ƒndS(NtPackDataSyncStateiR(t GetPlayerIDRpR‚RNtQueryPlayerResult_PlayerMirror(t    curPlayerR R„((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pyt OnPlayerLogin-s
  cCsg|s
dSg}tjƒ}x0|D](}|j|ƒr>q#n|j|ƒq#W|sYdSt|ƒdS(N(RpR‚RNR=tOnPullPlayerPackData(RJtpullPlayerIDListR„R ((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pytSetNeedPackData5s  
cCsó|dkri}ntjd||fƒtjƒrld|d<i|d6|d6}tjtj|ƒnƒtjƒ|d<g}x:|D]2}t    j
|ƒr®t ||ƒq‰|j |ƒq‰W|rïi|d6|d6}tj tj|ƒndS(sÇëÇóÀ­È¡Íæ¼ÒÊý¾Ý£¬¸Ãº¯Êý½öÔÚ´ò°üÊý¾Ý±íÖв»´æÔÚÍæ¼ÒÊý¾Ýʱ²ÅÐèÒªµ÷Ó㬿ç·þ±¾·þͨÓÃ
    1. ¿ç·þÀ­×Ó·þÍæ¼ÒÊý¾Ý: Ö±½ÓÍÆË͸ø×Ó·þÀ­¶ÔÓ¦Íæ¼ÒÊý¾Ý£¬À­È¡µ½Êý¾Ýºóͬʱ´æÈë´ò°üÊý¾Ý±íÖÐ
    2. ×Ó·þÀ­ÆäËû×Ó·þÍæ¼ÒÊý¾Ý£ºÖ±½ÓÍÆË͸ø¿ç·þ·þÎñÆ÷À­È¡
    3. ×Ó·þÀ­±¾·þÍæ¼ÒÊý¾Ý
        a.Èç¹ûÊÇ¿ç·þ·þÎñÆ÷ÇëÇóµÄ£¬ÓÅÏÈÈ¡´ò°üÊý¾Ý±íÖÐÊý¾Ý£¬ÓÐÔò·µ»Ø£¬Ã»ÓÐÔò¼ÌÐøÍùÏÂ×ß
        b.Íæ¼ÒÔÚÏßʱ´ÓµØÍ¼À­È¡£¬À­È¡µ½Êý¾Ýºóͬʱ´æÈë´ò°üÊý¾Ý±íÖÐ
        c.Íæ¼ÒÀëÏßʱ´ÓdbÀ­È¡£¬À­È¡µ½Êý¾Ýºóͬʱ´æÈë´ò°üÊý¾Ý±íÖÐ
    @param msgInfo: ¹¦ÄÜÀ­È¡Íæ¼ÒÊý¾Ýʱ×Ô¶¨ÒåµÄ¹¦ÄÜÐÅÏ¢£¬Í¸´«²ÎÊý
    sÀ­È¡Íæ¼Ò´ò°üÊý¾Ý: %s, %sitpullFromRtmsgInfoN(R    R.RGRot CrossRealmMsgtSendMsgToClientServerRrt!CrossServerMsg_PullPlayerPackDatatGetServerGroupIDt PlayerControltGetDBPlayerAccIDByIDtDoPullPlayerPackDataR=tSendMsgToCrossServert'ClientServerMsg_PullOtherPlayerPackData(RRtdataMsgtotherServerPlayerIDListR ((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pyRŒGs"
     
 cCsŸtj|ƒsdStjƒj|ƒ}|swtjd||ƒt|ƒ}tjƒjt    j
||t |ƒƒdStjd||ƒt |d|ƒdS(Ns'Íæ¼Ò²»ÔÚÏߵĵ÷Óôò°üdbÊý¾Ý! playerID=%ss'Íæ¼ÒÔÚÏߵķ¢¸øµØÍ¼´ò°üÊý¾Ý! playerID=%stPullPlayerPackData( R•R–R.tGetPlayerManagertFindPlayerByIDRGtstrt GetGameWorldt SendDBLogicR+tgstDBLogic_PlayerPackDataRR‰(R RRŠtdata((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pyR—ls %iRc    Csè|jdƒ}|tjkr<tjd|||fƒdStj|}|jdiƒ}|jdiƒ}|jdƒ|jdƒkrdS|d}|rË||kr¯dS||krË|||<qËnxA|D]9}||krÒtjd||||jƒfƒdSqÒWtjd    |||fƒtjj|dƒ|jd
ƒ}    |    d krä|jd d ƒ}
|jdd ƒ} d} t||gƒ} tjd|
t    | ƒf| ƒtj
ƒj d d | |
d| t    | ƒ| ƒndS(sqÇëÇóÍæ¼Ò´ò°üÊý¾Ý»ã×Ü£¬ÈçͬʱÇëÇó¶à¸öµÄ»°»áÖðÒ»½øÐлã×ÜÕûºÏ£¬Ö±µ½ËùÓÐÇëÇóµÄÍæ¼ÒÊý¾Ý¾ùÓкóÔÙͳһִÐÐÖ®ºóµÄÂß¼­
    t    requestIDs;²»´æÔÚ¸Ã[Íæ¼Ò´ò°üÊý¾Ý]ÇëÇó! requestID=%s,packMirrorID=%s,%sNRt packDataDictt requestTimet mirrorIDListsX»¹ÓÐÄ¿±êÍæ¼ÒûÓÐÊý¾Ý£¬ÉԵȺó´¦Àí! requestID=%s,mirrorID=%s,mirrorIDList=%s,packIDList=%ss6»ã×ÜÍæ¼Ò´ò°üÊý¾ÝÍê±Ï: requestID=%s,packMirrorID=%s, %stmsgTypet MirrorBattlet
sceneMapIDiR iÿÿÿÿs*MapServer_QueryPlayer sceneMapID=%s,len=%st PlayerMirror( tgett
PyGameDatatg_requestPlayerPackDataInfoR.RGtkeysRSR    RŸRRtMapServer_QueryPlayer(Rt packMirrorIDRR¤trecInfot
recMsgInfoR¥R§tmirrorIDR¨RªR t
routeIndextsendMsg((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pytReuestPlayerPackDataRet}s> 
           1c    Csì|d}|d}|jdiƒ}|r?tj||ƒntjƒj||ƒ|jdiƒ}|sqdS|jdƒ}|dkrŸt|||ƒnI|dkrè|}i|d6|d6|d6}tjt    j
||gƒndS(NR Rt    cacheBaseRRi( R¬tPlayerViewCachetUpdCrossCacheBaseRpR‚RRR·R‘R’Rrt!CrossServerMsg_PushPlayerPackData(    t serverGroupIDtmsgDataR RR¸RRttagServerGroupIDRš((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pytClientServerMsg_PlayerPackData¹s"
 
  c    CsÛ|d}|d}g}tjƒ}x~|D]v}|j|ƒ}|r–tjd|ƒi|d6|jƒd6|d6}tjtj    ||gƒq-|j
|ƒq-W|r×i|d6|d6}tjtj |ƒndS(NRRs1¿ç·þÓлº´æÍæ¼Ò´ò°üÊý¾Ý£¬Ö±½ÓÍÆ¸ø×Ó·þ! playerID=%sR R( RpR‚RBR.RGR1R‘R’RrR»R=R“(    R¼R½RRR›R„R RQRš((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pyR™Ós
 
  !cCs=|d}tjƒj|ƒ}|s)dSt|d|ƒdS(NR R‡(R.RRžR‰(R½R RŠ((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pyt"CrossServerMsg_PlayerPackDataStateîs 
cCsŸ|d}|d}tjƒ}xx|D]p}|j|ƒ}|rŠtjd|ƒi|d6|jƒd6|d6}tjtj    |ƒq't
||ƒq'WdS(NRRs1±¾·þÓлº´æÍæ¼Ò´ò°üÊý¾Ý£¬Ö±½ÓÍÆ¸ø¿ç·þ! playerID=%sR R( RpR‚RBR.RGR1R‘R˜RrR¿R—(R½RRR„R RQRš((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pyR“÷s
 
  !cCs2|d}|d}|d}t|||ƒdS(NR RR(R·(R½R RR((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pyR»    s
 
 
 
cCs5t||gƒ}|jddd|t|ƒƒdS(NiR«(RŸtMapServer_QueryPlayerResultR(RŠR¨R½tsysMsg((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pyR‰sc    CstjƒrdS|j}|j}|j}| s9| r=dS|tddƒ@ritjƒj||ƒn|tddƒ@rÏ|r‘t    j
|ƒni}i|d6|d6|d6|d6}t j t j|ƒn|jdƒ}|dkr|tjƒkrt|||ƒndS(    NiiiR RR¸RR(R.RoRR‡RtpowRpR‚RRR¹tGetSyncCrossCacheBaseR‘R˜RrR¿R¬R”R·(    RŠt curPackDataRR tpackDataSyncStateRR¸RšR((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pytOnMGUpdatePlayerPackDatas"             "cCs¬tjd||fƒ|jdƒ}|dksP|dkr‚|tjƒkr‚i|d6|d6|d6}tjtj|ƒdStj    ƒj
||ƒt |||ƒdS(Ns'ÊÕµ½db´ò°üÍæ¼ÒÊý¾Ý»Øµ÷: playerID=%s, %sRiR RR( R.RGR¬R”R‘R˜RrR¿RpR‚RRR·(R RRRRš((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pytOnDBPlayerPackData1s*cCsµi}g}tjƒ}|d}|d}xF|D]>}|j|ƒ}|rd|jƒ||<q3n|j|ƒq3Wi|d6|d6tj|<|r§t||ƒdSt|ƒdS(NR¤R§RR¥(    RpR‚RBR1R=R­R®RŒR·(RR¥RR„R¤R§R´RQ((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pytOnMGReuestPlayerPackDataAs" 
 
 
((($R`R.RpR¹RRmR‘R•RrR­R+RRt tagDBPlayerRRRR5RR…R†R‹RŽR    RŒR—R·R¿R™RÀR“R»R‰RÇRÈRÉ(((sYE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerPackData.pyt<module>sB                  3‰    +                  %    <