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
RžXjc@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZdZedZddd„ƒYZddd„ƒYZd„Zd    „Zd
„Zd „Zd „Zde jd d„Zd„Zd„Zd„Zd„Z dd„Z!d„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__Os
                cCs|jS(N(R(R((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt GetServerIDVscCs|jS(N(R(R((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt GetServerTypeWscCs ||_dS(N(R(Rt
serverType((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt SetServerTypeXscCs|jS(N(R(R((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt GetConnStateYscCs ||_dS(N(R(Rt    connState((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt SetConnStateZscCs|jS(N(R(R((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pytGetHeartCurTime[scCs ||_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.pyRKs                                t SSServerMgrcBseeZd„Zd„Zd„Zd„Zd„Zd„Zdd„Zd„Z    d    „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.pyRks                            cCs<||jkr|j|}nt|ƒ}||j|<|S(N(RR(RRtssServer((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt GetSSServerws
  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 DoHeartbeats" +             c    Csxttjƒƒ}|j|ƒ}|j|ƒ|j|ƒ|jƒ}|tjkr{|jsk||_n|j    |ƒn|tj
kr•| r•dS|j tj
ƒ|tj krºt nt}|tjkrøtjd||tj|ƒ|fƒnl|tjkrFtjd|||fƒ||jkrd|jj|ƒqdntjd|||fƒdSt|||ƒdS(NsQ¡ñÁ¬ÉÏ¿ç·þÖÐÐÄ·þÎñÆ÷: crossServerID=%s,isReconn=%s,crossServerTime=%s,isResart=%ss>¡ñÁ¬Éϳ£¹æ¿ç·þ·þÎñÆ÷: crossServerID=%s,isReconn=%s,isResart=%ss7¡ñÁ¬ÉÏÆäËû·þÎñÆ÷: serverID=%s,serverType=%s,isReconn=%s(tintttimeR#R RR RR&RtUpdateCrossTimeRRtssConn_UnknownRRR%tLogtChangeTimeNumToStrR'Rtappendt OnConnServer(    RRR
t
serverTimeR3RR"t befConnStatetisReconn((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt OnServerHearts0             cCs ttjƒƒ}|jƒ}|j||ƒ||}t|ƒdkrœtjd|ƒtjdtj|ƒƒtjdtj|ƒƒtj    ƒndS(Nis<±¾·þµÄ¿ç·þʱ¼äÓë¿ç·þʵ¼Êʱ¼äÎó²î¹ý´óͬ²½Ç°¶Ë! diffSeconds=%sscurCrossTime=%ssupdCrossTime=%s(
R6R7t GetCrossTimet SetCrossTimetabsR%R:R;tChPlayertSync_PyServerDataTimeToClient(Rt updCrossTimeRt curCrossTimet diffSeconds((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyR8Çs 
 cCsNttjƒƒ}|js|S|jtd||jƒ7_||_|jS(Ni(R6R7R tmaxR!(RR((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyRB×s         icCs.||_|r|nttjƒƒ|_|S(N(R R6R7R!(RR>R((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyRCá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#R5RAR8RBRCRKRLRQ(((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyRhs                 *        
        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(RURQR5(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_serverInitOKRURA(tnetPackRR
R>R3((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyRA(s                    cCsÉtjƒ}tjƒ}tjƒjƒ|_||_||_t    j
||gd|ƒtj ƒr—|t j krÅtjƒtjƒtjƒqÅn.tjƒrÅ|t jkrÅtj|ƒqÅndS(NR
(R%R    R)ttagSSServerConnOKR+RR,R-tIsReconnR0R1t IsCrossServerRR&tGameLogic_QunyingtOnCrossServer_Conn_CrossCentertGameLogic_ArenatPlayerActLunhuidiant IsMainServerR'REtOnMainServer_Conn_CrossServer(R
RR@t curServerTypeR4((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyR=5s           
 
 cCsH|j}|j}|j}tjƒ}tjd||||fƒ|tjkr¡t|gdt    j
|ƒƒt j |ƒ|tj kr¡tj||ƒq¡n|tj krÒ|tj krÒtj||ƒn|tjkrD|tj krDtj|ƒtj|ƒtj||ƒtj|ƒtj|ƒtj|ƒndS(NsL¡ïÊÕµ½·þÎñÆ÷Á¬½Ó³É¹¦: serverID=%s,serverType=%s,isReconn=%s,curServerType=%sR$(R,R-R[R%R    R:RR&tSendCrossServerEventR0tGetSSPackDirTypetGameWorldActiontSync_CC2CS_CrossActInfoR'tDBFamilytSync_CenterToCross_FamilyInfotPlayerActFamilyGCZtSync_C2CS_FamilyGCZCallRegtserverType_MaintSync_C2S_FamilyCrossAllServerIDtSync_CrossToServer_FamilyInfoR]tSync_C2S_QunyingCrossInfoR_tSync_C2S_ArenaCrossInfoR`tSync_C2S_LunhuidianCrossInfo(RYRR
R@Rc((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pytOnServerConnOKXs(                  tcCs’tjƒ}tjƒjƒ|_tjƒ|_tj    ƒj
t j ƒ|_ ||_t|jƒ|_ttjƒƒ|_tj|||ƒdS(N(R)ttagSSCrossCenterEventR%R+RR,R    R-t    DBDataMgrtGetEventTrigMgrtGetValueRtDef_CrossCenterEventt
EventValuetGMEventtlentGMLenR6R7R.R0R1(t serverIDListR$tgmEventR4((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyRd{s     cCs‡|j}|j}|j}|j}|j}tjd||||fƒ|tjkr]dSt    ƒj
|ƒt j ||d|ƒdS(NsJÊÕµ½·þÎñÆ÷ʼþ±ä¸üͬ²½: serverID=%s,serverType=%s,eventValue=%s,gmEvent=%sR~( R,R-RyRzR.R%R:RR&RUR8tGameWorldEventtDoLogic_CrossCenterEvent(RYRR
t
eventValueR~R>((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( Rut 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ƒ( RuR„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   cCs=t|ƒ}x*|jƒD]\}}||kr|SqWdS(Ni(R•titems(RRR”t    recZoneIDR}((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pytGetCrossRecZoneID¸s
  cCsltjƒ}||_||_||_||_t|jƒ|_|r[tj    ||ƒn tj
|ƒdS(N( tChPyNetSendPackttagSCCrossZoneInfotMapIDt CrossServerIDtZoneIDt ServerIDListR{t    ServerCntR0t SendFakePacktSendFackPackOnline(tmapIDt crossServerIDtzoneIDR}t    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`|Stj|ƒ}tj    d|ƒ}|s‹|Sx<|D]4}tj
||j ƒƒr’|j ƒ|j ƒfSq’W|S(NitActTimetActZone(ii(R%t
GetActInfoRt ActNum_CrossR‹t ActKey_CfgIDt IpyGameDataPYtGetIpyGameDatatGetActZoneSigntGetIpyGameDataListtCheckServerIDInListtGetServerIDListtGetCrossServerIDt    GetZoneID(    tactNamet actServerIDtrettactInfotcfgIDtipyDatatzoneSigntzoneIpyDataListt zoneIpyData((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pytGetCrossActServerZoneInfoÏs$ (((#R%RRR±RRfR_R]R)R`RjRR0RRuRhRER7R(RNRRRURWRAR=RrtNoneR2RdR‚R•R™RœR«RÂ(((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt<module>s@                 %
¨                 #    #