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
£;Æic@s3ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z dZ e dZ ddd„ƒYZddd„ƒYZd„Zd    „Zd
„Zd „Zd „Zdejd d„Zd„Zd„Zd„Zdd„ZdS(iÿÿÿÿNi
itSSServercBs_eZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z    d„Z
d    „Z RS(
s4 ÆäËû·þÎñÆ÷¶ÔÏ󣬿ÉÒÔÊÇ¿ç·þ·þÎñÆ÷¡¢ÆäËûÓÎÏ··þµÈ
    cCs(||_d|_d|_d|_dS(Ni(t    _serverIDt _serverTypet
_connStatet _heartCurTime(tselftserverID((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt__init__Js
                cCs|jS(N(R(R((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt GetServerIDQscCs|jS(N(R(R((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt GetServerTypeRscCs ||_dS(N(R(Rt
serverType((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt SetServerTypeSscCs|jS(N(R(R((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt GetConnStateTscCs ||_dS(N(R(Rt    connState((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt SetConnStateUscCs|jS(N(R(R((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pytGetHeartCurTimeVscCs ||_dS(N(R(RtcurTime((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pytSetHeartCurTimeWscCs|jtjkrtStS(N(Rt ShareDefinet ssConn_NormaltFalsetTrue(R((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt IsServerOpenXs( t__name__t
__module__t__doc__RRR    R R RRRR(((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyRFs                                t SSServerMgrcBs\eZd„Zd„Zd„Zd„Zd„Zdd„Zd„Zd„Z    d    „Z
RS(
cCsCi|_d|_d|_g|_d|_d|_d|_dS(Ni(t _ssServerDictt
_heartTimet_disconnectedCheckTimet_crossServerIDListt_crossCenterIDt
_crossTimet_crossTimeCurTime(R((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyRfs                            cCs<||jkr|j|}nt|ƒ}||j|<|S(N(RR(RRtssServer((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt GetSSServerrs
  cCs¹tjƒsdS|jr?||jkr?||jtkr?dS|jsNdnd}||_tjƒ}tjƒjƒ|_tj    ƒ|_
||_ ||_ t j|dtjƒdS(NiitdirType(t    GameWorldt IsCrossServerRt
HeartBreattChServerToServerPyPackt
tagSSHeartt GetGameWorldRtServerIDR    t
ServerTypet
ServerTimetIsResartt NetPackCommontSendCrossServerToServerPackRtdirType_MainAndCross(RRtisResarttpack((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt DoHeartbeatzs +             c Csttjƒƒ}|j|ƒ}|j|ƒ|j|ƒ|jƒ}|tjkrþ|jsk||_n|}|j    ƒ}    |j
||ƒ||    }
t |
ƒdkrþt j d|
ƒt j dt j|    ƒƒt j dt j|ƒƒtjƒqþn|tjkr| rdS|jtjƒ|tjkr=tnt} |tjtjgkrä|tjkr“t j d|| t j|ƒ|fƒn,|tjkr¿t j d|| |fƒn||jkr|jj|ƒqnt j d||| fƒdSt||| ƒdS(Nis<±¾·þµÄ¿ç·þʱ¼äÓë¿ç·þʵ¼Êʱ¼äÎó²î¹ý´óͬ²½Ç°¶Ë! diffSeconds=%sscurCrossTime=%ssupdCrossTime=%ssOÁ¬ÉÏ¿ç·þÖÐÐÄ·þÎñÆ÷: crossServerID=%s,isReconn=%s,crossServerTime=%s,isResart=%ss<Á¬Éϳ£¹æ¿ç·þ·þÎñÆ÷: crossServerID=%s,isReconn=%s,isResart=%ss5Á¬ÉÏÆäËû·þÎñÆ÷: serverID=%s,serverType=%s,isReconn=%s(tintttimeR#R RR RtserverType_CrossCenterRt GetCrossTimet SetCrossTimetabsR%tLogtChangeTimeNumToStrtChPlayertSync_PyServerDataTimeToClientRRtssConn_UnknownRRtserverType_CrossRtappendtOnConnCrossServer( RRR
t
serverTimeR2RR"t befConnStatet updCrossTimet curCrossTimet diffSecondstisReconn((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt OnServerHeart“sB         
     cCsNttjƒƒ}|js|S|jtd||jƒ7_||_|jS(Ni(R5R6R tmaxR!(RR((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyR8És         icCs.||_|r|nttjƒƒ|_|S(N(R R5R6R!(RRCR((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyR9Ós    !cCs|jS(N(R(R((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pytGetCrossCenterIDÙscCs|jS(N(R(R((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pytGetCrossServerIDListÚscCs'|j s||jkr&||_dS||jdkr=dS||_xÚ|jjƒD]É}|jƒtjkrwqVn|jƒ}|sqVn||kr¡qVn||tkr·qVn|jtj    ƒ|j
ƒ}|j ƒ}|tj krt jd||fƒqVt jd||fƒqVWdS(Ni
s+Óë¿ç·þ·þÎñÆ÷¶Ï¿ª: serverID=%s,serverType=%ss+ÓëÆäËû·þÎñÆ÷¶Ï¿ª: serverID=%s,serverType=%s(RRtvaluesR RRRtDisconnectedTimeRtssConn_DisconnectedRR    R@R%R;(RRR"t lastHeartTimeRR
((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pytCheckSSServerDisconnectedÜs.            ( RRRR#R4RIR8R9RKRLRQ(((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyRcs                 6    
        cCs(tj}|s$tƒ}|t_n|S(N(t
PyGameDatat g_ssServerMgrR(tssMgr((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pytGetSSServerMgrs
         cCs'tƒ}|j|ƒ|j|ƒdS(N(RURQR4(ttickRRT((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pytOnSecondProcesss      cCsj|j}|j}|j}|j}|tjƒjƒkr@dStjsMdSt    ƒj
||||ƒdS(N( R+R,R-R.R%R*RRRtg_serverInitOKRURI(tnetPackRR
RCR2((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyRIs                    cCsxtjƒ}tjƒ}tjƒjƒ|_||_||_t    j
||gd|ƒtj ƒrtt j |ƒndS(NR
(R%R    R(ttagSSServerConnOKR*RR+R,tIsReconnR/R0t IsMainServerR=tSyncOnlinePlayerToCross(R
RRHt curServerTypeR3((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyRB%s           cCsà|j}|j}|j}tjƒ}tjd||||fƒ|tjkr¡t|gdt    j
|ƒƒ|tj kr¡t j ||ƒtj|ƒq¡n|tjkrÜ|tj krÜt j|ƒtj|ƒndS(NsJÊÕµ½·þÎñÆ÷Á¬½Ó³É¹¦: serverID=%s,serverType=%s,isReconn=%s,curServerType=%sR$(R+R,R[R%R    R;RR7tSendCrossServerEventR/tGetSSPackDirTypeR@tDBFamilytSync_CenterToCross_FamilyInfotGameLogic_QunyingtSync_CenterToCross_QunyingInfotserverType_MaintSync_CrossToServer_FamilyInfotSync_CrossToServer_QunyingInfo(RYRR
RHR^((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pytOnServerConnOK?s              tcCs}tjƒ}tjƒjƒ|_tjƒ|_tj    ƒj
t j ƒ|_ ||_t|jƒ|_tj|||ƒdS(N(R(ttagSSCrossCenterEventR%R*RR+R    R,t    DBDataMgrtGetEventTrigMgrtGetValueRtDef_CrossCenterEventt
EventValuetGMEventtlentGMLenR/R0(t serverIDListR$tgmEventR3((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyR_Zs     cCsn|j}|j}|j}|j}tjd||||fƒ|tjkrTdStj    ||d|ƒdS(NsJÊÕµ½·þÎñÆ÷ʼþ±ä¸üͬ²½: serverID=%s,serverType=%s,eventValue=%s,gmEvent=%sRt(
R+R,RoRpR%R;RR7tGameWorldEventtDoLogic_CrossCenterEvent(RYRR
t
eventValueRt((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pytOnCrossCenterEventps                cCs‚i}tjƒ}|jtj|ƒ}xTt|jƒƒD]@}|j|ƒ}|jƒ}|j    diƒ}|j
|ƒq:W|S(NtRec( Rkt GetGameRecMgrtGetRecTypeIDMgrRtDef_GameRecType_CrossZonetrangetGetCounttAtt GetUserDicttgettupdate(t    funcMapIDtzoneServerIDListDictt
gameRecMgrtrecMgrtindextrecDatatuserDictt zoneRecDict((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pytGetFuncCrossZoneRec{s  cCsstjƒ}|jtj|ƒ}|jƒdkr@|jƒn|jtƒ}|j    ƒ}|j
i|d6ƒdS(NiRy( RkRzR{RR|R~t
DelAllDatat GetOneRecDataRR€R‚(Rƒt crossZoneRecR…R†RˆR‰((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pytSetFuncCrossZoneRecˆs   cCsctjƒ}||_||_||_t|jƒ|_|rRtj||ƒn tj    |ƒdS(N(
tChPyNetSendPackttagSCCrossZoneInfotMapIDtZoneIDt ServerIDListRqt    ServerCntR/t SendFakePacktSendFackPackOnline(tmapIDtzoneIDRst    curPlayert
clientPack((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pytSync_CrossZoneInfo“s              (((R%RRRuRcR(RR/RRkRaR=R6R'RNRRRURWRIRBRhtNoneR1R_RxR‹RRœ(((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt<module>s2            %
