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
ó
3š³jc@s¢ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZdZedZddd„ƒYZddd„ƒYZd„Zd    „Zd
„Zd „Zd „Zd „Zde jdd„Zd„Z d„Z!d„Z"d„Z#dd„Z$d„Z%dS(iÿÿÿÿNi
itSSServercBszeZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z    d„Z
d    „Z d
„Z d „Z d „ZRS( s4 ÆäËû·þÎñÆ÷¶ÔÏ󣬿ÉÒÔÊÇ¿ç·þ·þÎñÆ÷¡¢ÆäËûÓÎÏ··þµÈ
    cCs:||_d|_d|_d|_t|_d|_dS(Ni(t    _serverIDt _serverTypet
_connStatet_connStateTimetFalset    _connSucct _heartCurTime(tselftserverID((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt__init__Qs                        cCs|jS(N(R(R((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt GetServerIDZscCs|jS(N(R(R((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt GetServerType[scCs ||_dS(N(R(Rt
serverType((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt SetServerType\scCs|jS(N(R(R((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pytGetConnStateTime]scCs|jS(N(R(R((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt GetConnState^scCs5||_||_|tjkr1|jtƒndS(N(RRt ShareDefinetssConn_Disconnectedt SetConnSuccR(Rt    connStatetcurTime((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt SetConnState_s        cCs|jS(N(R(R((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt GetConnSuccdscCs ||_dS(N(R(RtconnSucc((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyRescCs|jS(N(R(R((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pytGetHeartCurTimefscCs ||_dS(N(R(RR((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pytSetHeartCurTimegscCs|jtjkrtStS(N(RRt ssConn_NormalRtTrue(R((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt IsServerOpenhs(t__name__t
__module__t__doc__R
R R RRRRRRRRR(((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyRMs                                                t SSServerMgrcBsneZd„Zd„Zd„Zd„Zd„Zd„Zd„Zdd„Z    d    „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.pyR
vs                            cCs<||jkr|j|}nt|ƒ}||j|<|S(N(R"R(RR    tssServer((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt GetSSServer‚s
  cCs!tjƒ}|tjtjgkr(dS|jrW||jkrW||jtkrWdS|jsfdnd}||_|r‹tjdƒntj    ƒ}tj
ƒj ƒ|_ tjƒ|_ ||_||_|tjkrõtj|dtjƒn(|tjkrtj|dtjƒndS(NiisÆô¶¯·þÎñÆ÷¹ã²¥ÐÄÌø!tdirType(t    GameWorldR RtserverType_CrossCentertserverType_CrossR#t
HeartBreattLogtChServerToServerPyPackt
tagSSHeartt GetGameWorldR tServerIDt
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    |ƒn|tj
kr•| r•dS|j tj
|ƒ|tj kr½t nt}|tjkrûtjd||tj|ƒ|fƒnl|tjkrItjd|||fƒ||jkrg|jj|ƒqgntjd|||fƒdStjƒ}    tjƒjƒ|    _tjƒ|    _||    _tj|    |gd|ƒt|||ƒdS(NsQ¡ñÁ¬ÉÏ¿ç·þÖÐÐÄ·þÎñÆ÷: crossServerID=%s,isReconn=%s,crossServerTime=%s,isResart=%ss>¡ñÁ¬Éϳ£¹æ¿ç·þ·þÎñÆ÷: crossServerID=%s,isReconn=%s,isResart=%ss7¡ñÁ¬ÉÏÆäËû·þÎñÆ÷: serverID=%s,serverType=%s,isReconn=%sR ( tintttimeR*RRRRR-R&tUpdateCrossTimeRRtssConn_UnknownRRR,R0tChangeTimeNumToStrR.R%tappendR1ttagSSServerConnOKR3R R4R R5tIsReconnR8R9t OnConnServer(
RR    R t
serverTimeR;RR)t befConnStatetisReconnR<((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt OnServerHeartªs:                  cCsx|jjƒD]ý}|jƒtjkr1qn|jƒrCqn|jƒ}||dkreqn|jtj|ƒ|j    ƒ}|j
ƒ}|tj kr¹t j d||fƒn@|tjkrât j d||fƒnt j d||fƒt jdd|ƒqWdS(Ni<s=¡øÓë¿ç·þ·þÎñÆ÷Á¬½ÓÁ÷³Ì³¬Ê±Ç¿ÖƶϿª: serverID=%s,serverType=%ss;¡øÓë¿ç·þÖÐÐÄÁ¬½ÓÁ÷³Ì³¬Ê±Ç¿ÖƶϿª: serverID=%s,serverType=%ss=¡øÓëÆäËû·þÎñÆ÷Á¬½ÓÁ÷³Ì³¬Ê±Ç¿ÖƶϿª: serverID=%s,serverType=%stSSServerConnSuccFails serverID=%s(R"tvaluesRRRRRRRR R R.R,R0R-tSendGameErrorEx(RRR)t    stateTimeR    R ((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pytCheckSSServerConnSuccÛs$    cCs ttjƒƒ}|jƒ}|j||ƒ||}t|ƒdkrœtjd|ƒtjdtj|ƒƒtjdtj|ƒƒtj    ƒndS(Nis<±¾·þµÄ¿ç·þʱ¼äÓë¿ç·þʵ¼Êʱ¼äÎó²î¹ý´óͬ²½Ç°¶Ë! diffSeconds=%sscurCrossTime=%ssupdCrossTime=%s(
R>R?t GetCrossTimet SetCrossTimetabsR,R0RBtChPlayertSync_PyServerDataTimeToClient(Rt updCrossTimeRt curCrossTimet diffSeconds((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyR@ös 
 cCsNttjƒƒ}|js|S|jtd||jƒ7_||_|jS(Ni(R>R?R'tmaxR((RR((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyRPs         icCs.||_|r|nttjƒƒ|_|S(N(R'R>R?R((RRGR((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyRQs    !cCs|jS(N(R&(R((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pytGetCrossCenterIDscCs|jS(N(R%(R((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pytGetCrossServerIDListscCs`|j s||jkr&||_dS||jtkr=dS||_x|jjƒD]}|jƒtjkrwqVn|jƒ}|sqVn||kr®|j|ƒqVn||t    krÄqVn|j
tj |ƒ|j ƒ}|j ƒ}|tjkrtjd||fƒqV|tjkrAtjd||fƒqVtjd||fƒqVWdS(Ns-¡øÓë¿ç·þ·þÎñÆ÷¶Ï¿ª: serverID=%s,serverType=%ss+¡øÓë¿ç·þÖÐÐĶϿª: serverID=%s,serverType=%ss-¡øÓëÆäËû·þÎñÆ÷¶Ï¿ª: serverID=%s,serverType=%s(R$R/R"RLRRRRRtDisconnectedTimeRRR R R.R,R0R-(RRR)t lastHeartTimeR    R ((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pytCheckSSServerDisconnecteds4             ( RRR
R*R=RJROR@RPRQRYRZR](((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyR!ss                  1            
        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
         cCs4tƒ}|j|ƒ|j|ƒ|j|ƒdS(N(RaR]ROR=(ttickRR`((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pytOnSecondProcessGs
       cCsj|j}|j}|j}|j}|tjƒjƒkr@dStjsMdSt    ƒj
||||ƒdS(N( R4R5R6R7R,R3R R^tg_serverInitOKRaRJ(tnetPackR    R RGR;((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyRJYs                    cCsqtjƒr?|tjkrmtjƒtjƒtjƒqmn.tjƒrm|tj    krmt
j |ƒqmndS(N( R,t IsCrossServerRR-tGameLogic_QunyingtOnCrossServer_Conn_CrossCentertGameLogic_ArenatPlayerActLunhuidiant IsMainServerR.RStOnMainServer_Conn_CrossServer(R R    RI((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyRFfs 
 
 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|ƒtj|ƒtj|ƒtj|ƒtj|ƒntj ƒ}tj!ƒj"ƒ|_||_t    j#||gd|ƒdS(NsL¡ïÊÕµ½·þÎñÆ÷Á¬½Ó³É¹¦: serverID=%s,serverType=%s,isReconn=%s,curServerType=%sR+R ($R4R5RER,R R0RR-tSendCrossServerEventR8tGetSSPackDirTypetGameWorldActiontSync_CC2CS_CrossActInfoR.tDBFamilytSync_CenterToCross_FamilyInfotPlayerActFamilyGCZtSync_C2CS_FamilyGCZCallRegtserverType_MaintSync_C2S_FamilyCrossAllServerIDtSync_CrossToServer_FamilyInfoRgtSync_C2S_QunyingCrossInfoRitSync_C2S_ArenaCrossInfoRjtSync_C2S_LunhuidianCrossInfotGameLogic_ZZBFtSync_C2S_ZZBFCrossInfotDBPalacetSync_C2S_PalaceCrossInfoR1ttagSSServerConnSuccR3R R9(ReR    R RIt curServerTypeR<((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pytOnServerConnOK€s4                         cCsL|j}|j}tƒj|ƒ}|jtƒtjd||fƒdS(Ns=¡ï¡ï¡ïÊÕµ½·þÎñÆ÷Á¬½ÓÁ÷³Ì³É¹¦¡ï¡ï¡ï: serverID=%s,serverType=%s(R4R5RaR*RRR,R0(ReR    R R)((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pytOnServerConnSucc²s          tcCs’tjƒ}tjƒjƒ|_tjƒ|_tj    ƒj
t j ƒ|_ ||_t|jƒ|_ttjƒƒ|_tj|||ƒdS(N(R1ttagSSCrossCenterEventR,R3R R4R R5t    DBDataMgrtGetEventTrigMgrtGetValueRtDef_CrossCenterEventt
EventValuetGMEventtlentGMLenR>R?R6R8R9(t serverIDListR+tgmEventR<((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyRmº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Ž( R4R5R‰RŠR6R,R0RR-RaR@tGameWorldEventtDoLogic_CrossCenterEvent(ReR    R t
eventValueRŽRG((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( R…t 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“( R…R”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R    R¤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    ServerCntR8t SendFakePacktSendFackPackOnline(tmapIDt crossServerIDtzoneIDRt    curPlayert
clientPack((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pytSync_CrossZoneInfos                  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.pytGetCrossActServerZoneInfos$ (((&R,R^RÁRRoR{RiRgR1RjRsR­R8RR…RqR}RSR?R/R[RR!RaRcRJRFRR‚tNoneR:RmR’R¥R©R¬R»RÒ(((soD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\CrossMgr.pyt<module>sF                   %
&Í                     2