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
SÞjc@slddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZdZedZddd„ƒYZddd„ƒYZd„Zd    „Zd
„Zd „Zd „Zde jd d„Zd„Zd„Zd„Zdd„Zd„Z dS(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__Ns
                cCs|jS(N(R(R((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt GetServerIDUscCs|jS(N(R(R((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt GetServerTypeVscCs ||_dS(N(R(Rt
serverType((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt SetServerTypeWscCs|jS(N(R(R((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt GetConnStateXscCs ||_dS(N(R(Rt    connState((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt SetConnStateYscCs|jS(N(R(R((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pytGetHeartCurTimeZscCs ||_dS(N(R(RtcurTime((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pytSetHeartCurTime[scCs|jtjkrtStS(N(Rt ShareDefinet ssConn_NormaltFalsetTrue(R((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt IsServerOpen\s( t__name__t
__module__t__doc__RRR    R R RRRR(((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyRJs                                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.pyRjs                            cCs<||jkr|j|}nt|ƒ}||j|<|S(N(RR(RRtssServer((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt GetSSServervs
  cCs tjƒ}|tjtjgkr(dS|jrW||jkrW||jtkrWdS|jsfdnd}||_tjƒ}tj    ƒj
ƒ|_ tjƒ|_ ||_ ||_|tjkrßtj|dtjƒn(|tjkrtj|dtjƒndS(NiitdirType(t    GameWorldR    RtserverType_CrossCentertserverType_CrossRt
HeartBreattChServerToServerPyPackt
tagSSHeartt GetGameWorldRtServerIDt
ServerTypet
ServerTimetIsResartt NetPackCommontSendCrossServerToServerPacktdirType_MainAndCross(RRR
tisResarttpack((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt DoHeartbeat~s" +             c Csûttjƒƒ}|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} |tjkr{t j d|| t j|ƒ|fƒnl|tjkrÉt j d|| |fƒ||jkrç|jj|ƒqçnt j d||| fƒdSt||| ƒdS(Nis<±¾·þµÄ¿ç·þʱ¼äÓë¿ç·þʵ¼Êʱ¼äÎó²î¹ý´óͬ²½Ç°¶Ë! diffSeconds=%sscurCrossTime=%ssupdCrossTime=%ssQ¡ñÁ¬ÉÏ¿ç·þÖÐÐÄ·þÎñÆ÷: crossServerID=%s,isReconn=%s,crossServerTime=%s,isResart=%ss>¡ñÁ¬Éϳ£¹æ¿ç·þ·þÎñÆ÷: crossServerID=%s,isReconn=%s,isResart=%ss7¡ñÁ¬ÉÏÆäËû·þÎñÆ÷: serverID=%s,serverType=%s,isReconn=%s(tintttimeR#R RR RR&Rt GetCrossTimet SetCrossTimetabsR%tLogtChangeTimeNumToStrtChPlayertSync_PyServerDataTimeToClientRRtssConn_UnknownRRR'Rtappendt OnConnServer( RRR
t
serverTimeR3RR"t befConnStatet updCrossTimet curCrossTimet diffSecondstisReconn((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt OnServerHeartœs@         
     cCsNttjƒƒ}|js|S|jtd||jƒ7_||_|jS(Ni(R6R7R tmaxR!(RR((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyR8Ñs         icCs.||_|r|nttjƒƒ|_|S(N(R R6R7R!(RRBR((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âscCsP|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ƒqV|tjkr1t jd||fƒqVt jd||fƒqVWdS(Ni
s+Óë¿ç·þ·þÎñÆ÷¶Ï¿ª: serverID=%s,serverType=%ss)Óë¿ç·þÖÐÐĶϿª: serverID=%s,serverType=%ss+ÓëÆäËû·þÎñÆ÷¶Ï¿ª: serverID=%s,serverType=%s(RRtvaluesR RRRtDisconnectedTimeRtssConn_DisconnectedRR    R'R%R;R&(RRR"t lastHeartTimeRR
((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pytCheckSSServerDisconnectedäs2            ( RRRR#R5RHR8R9RJRKRP(((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyRgs                 5    
        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.pytGetSSServerMgr
s
         cCs'tƒ}|j|ƒ|j|ƒdS(N(RTRPR5(ttickRRS((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+RRQtg_serverInitOKRTRH(tnetPackRR
RBR3((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyRH"s                    cCs¿tjƒ}tjƒ}tjƒjƒ|_||_||_t    j
||gd|ƒtj ƒr|t j kr»tjƒtjƒq»n.tjƒr»|t jkr»tj|ƒq»ndS(NR
(R%R    R)ttagSSServerConnOKR+RR,R-tIsReconnR0R1t IsCrossServerRR&tGameLogic_QunyingtOnCrossServer_Conn_CrossCentertGameLogic_Arenat IsMainServerR'R=tOnMainServer_Conn_CrossServer(R
RRGt curServerTypeR4((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyRA/s           
 cCs.|j}|j}|j}tjƒ}tjd||||fƒ|tjkr¡t|gdt    j
|ƒƒt j |ƒ|tj kr¡tj||ƒq¡n|tj krÒ|tj krÒtj||ƒn|tjkr*|tj kr*tj|ƒtj||ƒtj|ƒtj|ƒndS(NsL¡ïÊÕµ½·þÎñÆ÷Á¬½Ó³É¹¦: serverID=%s,serverType=%s,isReconn=%s,curServerType=%sR$(R,R-RZR%R    R;RR&tSendCrossServerEventR0tGetSSPackDirTypetGameWorldActiontSync_CC2CS_CrossActInfoR'tDBFamilytSync_CenterToCross_FamilyInfotPlayerActFamilyGCZtSync_C2CS_FamilyGCZCallRegtserverType_MaintSync_CrossToServer_FamilyInfoR\tSync_C2S_QunyingCrossInfoR^tSync_C2S_ArenaCrossInfo(RXRR
RGRa((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pytOnServerConnOKQs$                tcCs}tjƒ}tjƒjƒ|_tjƒ|_tj    ƒj
t j ƒ|_ ||_t|jƒ|_tj|||ƒdS(N(R)ttagSSCrossCenterEventR%R+RR,R    R-t    DBDataMgrtGetEventTrigMgrtGetValueRtDef_CrossCenterEventt
EventValuetGMEventtlentGMLenR0R1(t serverIDListR$tgmEventR4((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyRbrs     cCsn|j}|j}|j}|j}tjd||||fƒ|tjkrTdStj    ||d|ƒdS(NsJÊÕµ½·þÎñÆ÷ʼþ±ä¸üͬ²½: serverID=%s,serverType=%s,eventValue=%s,gmEvent=%sRz(
R,R-RuRvR%R;RR&tGameWorldEventtDoLogic_CrossCenterEvent(RXRR
t
eventValueRz((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pytOnCrossCenterEventˆs                cCs‚i}tjƒ}|jtj|ƒ}xTt|jƒƒD]@}|j|ƒ}|jƒ}|j    diƒ}|j
|ƒq:W|S(NtRec( Rqt 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(NiR( RqR€R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   cCsltjƒ}||_||_||_||_t|jƒ|_|r[tj    ||ƒn tj
|ƒdS(N( tChPyNetSendPackttagSCCrossZoneInfotMapIDt CrossServerIDtZoneIDt ServerIDListRwt    ServerCntR0t SendFakePacktSendFackPackOnline(tmapIDt crossServerIDtzoneIDRyt    curPlayert
clientPack((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pytSync_CrossZoneInfo«s                  c    CsËd}tj|tjƒ}|s%|S|jtjdƒ}|sD|Stjd|ƒ}|s`|S|jƒ}tj    d|ƒ}|sˆ|Sx<|D]4}tj
||j ƒƒr|j ƒ|j ƒfSqW|S(NitActTimetActZone(ii(R%t
GetActInfoRt ActNum_CrossR‡t ActKey_CfgIDt IpyGameDataPYtGetIpyGameDatat GetZoneSigntGetIpyGameDataListtCheckServerIDInListtGetServerIDListtGetCrossServerIDt    GetZoneID(    tactNamet actServerIDtrettactInfotcfgIDtipyDatatzoneSigntzoneIpyDataListt zoneIpyData((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pytGetCrossActServerZoneInfo¹s$  (((!R%RQRªR{RdR^R\R)RhR–R0RRqRfR=R7R(RMRRRTRVRHRARntNoneR2RbR~R‘R•R¤R»(((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt<module>s<                %
£                 "    !