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
 ×øgc@s¢ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z d„Z d„Zd„Zd„Zd„Zd„Zd„Zd    d
„Zd „Zd „Zd „Zd„Zd„Zd    d    d    d    d    d    d„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z!d„Z"d„Z#e$d„Z%d„Z&d„Z'dS(iÿÿÿÿNcCsd|jƒ}tjddtj|ƒtj|ƒfƒ}|sD|S|jdƒjtjƒƒ|S(NtMerges OpName_%s_%stgbk(    tGetNamet ReadChConfigtGetPyMongoConfigt    GameWorldtGetPlayerPlatformtGetPlayerServerSIDtdecodetencodetGetCharacterEncoding(t    curPlayert
playerNametopName((s[E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\CrossRealmPlayer.pytGetCrossPlayerName/s  cCs4tjj|dƒ}tjƒ}tj|||ƒS(Nt CrossZoneComm(tChConfigtDef_CrossZoneTypeNametgetRtGetCrossZoneNamet IpyGameDataPYtGetIpyGameData(tmapIDtzoneIDt zoneTypeNamet crossZoneName((s[E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\CrossRealmPlayer.pytGetCrossZoneIpyDataByZoneID;s cCsåtjj|dƒ}tjƒ}tj|i|d6tƒ}|sGdSx}|D]u}|jƒ}x`|D]X}t    |t
ƒr |d|ko›|dkns»t    |t ƒrg||krg|SqgWqNWtj d|||fƒdS(NRt CrossZoneNameiisEûÓÐÕÒµ½¿ç·þÍæ·¨¶ÔÓ¦·ÖÇø! mapID=%s, serverGroupID=%s, zoneTypeName=%s( RRRRRRtGetIpyGameDataByConditiontTruetGetServerGroupIDListt
isinstancettupletinttErrLog(Rt serverGroupIDRRt ipyDataListtipyDatatserverGroupIDListtserverGroupIDInfo((s[E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\CrossRealmPlayer.pyt"GetCrossZoneIpyDataByServerGroupIDAs    3 cCsl|r+t||ƒ}|sdS|g}n=tjƒ}tjj|dƒ}tj|i|d6tƒ}|S(NRR(    R(RRRRRRRR(RR#R%R$RR((s[E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\CrossRealmPlayer.pyt&GetCrossZoneIpyDataListByServerGroupIDQs  cCsÂd}tjƒ}tj|i|d6tƒ}|s8dSxƒ|D]{}|jƒ}xf|D]^}t|tƒr‘|d|koŒ|dkns¬t|tƒrX||krX|j    ƒSqXWq?WdS(NRRii(
RRRRRRRR R!t    GetZoneID(R#RRR$R%R&R'((s[E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\CrossRealmPlayer.pytGetServerCommCrossZoneID^s    3cCs7|tjkrdStj|}tj|i|d6ƒS(NtZoneID(RtDef_CrossZoneMapTableNameRR(RRt    tableName((s[E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\CrossRealmPlayer.pytGetServerCrossZoneMapIpyDatams cCstjƒjtjƒS(N(Rt GetGameWorldt GetDictByKeyt ShareDefinet#Def_Notify_WorldKey_CrossServerOpen(((s[E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\CrossRealmPlayer.pytIsCrossServerOpentsicCs{tjƒjtjƒ}tjƒ}tjd|||fƒ|rM|gng}tjtj    i|d6|d6|ƒdS(sP Í¬²½¿ç·þ³£¹æÍ¨ÓÃÊý¾Ýµ½×Ó·þÎñÆ÷
    @param serverGroupID: Îª0ʱͬ²½ËùÓÐ×Ó·þ
    sG֪ͨµ±Ç°¿ç·þ·þÎñÆ÷״̬: isOpen=%s,crossZoneName=%s,syncServerGroupID=%stisOpenRN(
RR0R1R2R3RtLogt CrossRealmMsgtSendMsgToClientServertCrossServerMsg_CrossServerState(R#R5RR&((s[E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\CrossRealmPlayer.pyt$Sync_CrossCommInitDataToClientServerxs  $cCsÆtjtj|rdndƒtjƒjtj|ƒ|s¨tjƒ}x[t    |j
ƒƒD]D}|j |ƒ}|dkr„q]nt j|dƒ|jdƒq]Wntjtji|d6ƒdS(NiiR5(tPlayerDBGSEventtSetDBGSTrig_ByKeytDef_CrossServerCloseRR0tSetDictR2R3tGetPlayerManagertxrangetGetActivePlayerCounttGetActivePlayerAttNonet PlayerControlt SetCrossMapIDtKickR7R8R9(R5t playerManagertiR ((s[E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\CrossRealmPlayer.pytDoChangeCrossServerState„s  cCsd|kr2|dt_tjtjtjƒn|d}|rHdnd}tjd|ƒtjƒjtj    |ƒ|sÛtj
ƒ}xXt |j ƒƒD]7}|j |ƒ}|dkrÄqntj|dƒqWn
tjƒtjƒj|ƒtjtj    |ƒdS(NRR5iis)ÊÕµ½¿ç·þ·þÎñÆ÷״̬±ä¸ü: ÊÇ·ñÕý³£¿ª·ÅÖÐ=%s(t
PyGameDatatg_crossZoneNameRtSendMapServerMsgExR2t!Def_Notify_WorldKey_CrossZoneNameR6R0R>R3R?R@RARBRCRDRER7tOnCrossServerStateOpent!SendCrossServerStateToLoginServer(tmsgDataR5RGRHR ((s[E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\CrossRealmPlayer.pyR9˜s$  
 
cCsytjƒsdS|jƒ}tj|ƒ}tjtj||gƒtj    |dƒ|j
dƒtj d||ƒdS(Nis(PlayerExitCrossServer...serverGroupID=%s( Rt IsCrossServert GetPlayerIDRDtGetPlayerServerGroupIDR7R8R2tCrossServerMsg_ExitCrossServerRERFR6(R tplayerIDR#((s[E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\CrossRealmPlayer.pytPlayerExitCrossServer²s   cCsd|}tjd|ƒtjƒj|ƒ}|sPtjd|ƒt|ƒdStj|dƒdS(Ns3ÊÕµ½¿ç·þ·þÎñÆ÷ͬ²½µÄÍæ¼ÒÍ˳ö¿ç·þ·þÎñÆ÷: playerID=%ss    Í˳ö¿ç·þʱ±¾·þÍæ¼Ò²»ÔÚÏß!i(RR6R?tFindPlayerByIDtDoOfflinePlayerExitCrossServerRDRE(RPRUR ((s[E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\CrossRealmPlayer.pyRTÃs
cCs(tjtji|d6idd6ƒdS(NtPlayerIDitExAttr5(t PlayerDBOpert UpdateDBOpertTable_DBPlayer(RU((s[E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\CrossRealmPlayer.pyRXÏs$c    Csƒ|jtj|ƒt|||||||gƒ}|jddd|t|ƒƒtjd||||||f|jƒƒdS(Nit CrossRealmRegsSSendCrossRealmReg registerMap=%s,mapID=%s,dataMapID=%s,copyMapID=%s,posX=%s,posY=%s(    R>RtDef_PlayerKey_CrossRegisterMaptstrtMapServer_QueryPlayerResulttlenRR6RR(    R t registerMapRt    dataMapIDt    copyMapIDtposXtposYtlineIDtsysMsg((s[E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\CrossRealmPlayer.pytSendCrossRealmRegÕs !    #cCs¨tjƒj|ƒ}|sdStƒs,dS|d}|jtjƒ}|r^||kr^dS|jtjdƒtjd||ƒ|tj    kr—n t
||ƒdS(Nis¿ç·þ±¨Ãû³É¹¦ , registerMap=%s( RR?RWR4R1RR_R>R6tDef_FBMapID_CrossRealmPKtNotifyCanEnterMergeServer(RUtmsgListttickR RctplayerRegisterMap((s[E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\CrossRealmPlayer.pytOnCrossRealmRegOKâs    
 cCsdS(N((R Rc((s[E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\CrossRealmPlayer.pyRlscCs?tjƒj|ƒ}tjd|jƒƒtj|dƒdS(s¡ Ô¼¶¨¸Ã·â°ü½öÍæ¼Òµ±Ç°´¦ÓÚ¿ç·þ״̬£¬µ«ÊÇÒ»Ö±Á¬²»ÉÏ¿ç·þ·þÎñÆ÷ʱ²Å»á·¢´Î°üÇ¿ÖÆÖØÖÿç·þ״̬
                Ò»°ãÊÇ¿ç·þ·þÎñÆ÷Òì³£»òÆäËû´íÎóµ¼ÖÂÎÞ·¨µÇ¼¿ç·þ·þÎñÆ÷
    s*ijЩÒì³£Çé¿öÏ£¬Ç°¶ËÇ¿ÖÆ·¢°üÍ˳ö¿ç·þ״̬! iN(RR?tGetPlayerByIndexR"RRRDRE(tindext
clientDataRnR ((s[E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\CrossRealmPlayer.pytOnForceQuitCrossState
sc Csôtjdƒ|d}|d}|d}tjƒj|ƒ}|rut|ƒ}|jddd|t|ƒƒdStjdt|ƒ|ƒ|\}}}}    i|d6|d    6|d
6|    d 6g}
tj    d |g|
d idd6|d6ƒdS(NsÊÕµ½¿ç·þ·þÎñÆ÷»ñµÃÎïÆ·!RYtItemDatatEventitCrossPutInItems5ÊÕµ½¿ç·þ»ñµÃÎïÆ·£¬Íæ¼Ò²»ÔÚÏߣ¬Ö±½Ó·¢Óʼþ! itemInfo=%stItemIDtCountt IsAuctionItemtUserDatattdetaili(
RtDebugLogR?RWR`RaRbR6tPlayerCompensationt SendMailByKey( titemInfoRUtitemDatateventR titemMsgtitemIDt    itemCounttisBindt itemUserDatat addItemList((s[E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\CrossRealmPlayer.pytCrossServerMsg_PutInItems 
 
 
 %*cCsr|d}tjƒj|ƒ}|sCtjdt|ƒ|ƒdSt|ƒ}|jddd|t|ƒƒdS(NRYs$¿ç·þ»ñµÃ»õ±ÒÊ±Íæ¼Ò²»ÔÚÏß! msgInfo=%sitCrossGiveMoney(RR?RWR"R`RaRb(tmsgInfoRUR ((s[E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\CrossRealmPlayer.pytCrossServerMsg_GiveMoney's
 cCsƒ|\}}}}tjs7tjƒjtj|ƒntjj|gƒ}|j||gƒ|tj|<|st    dƒndS(Ni(
RJtg_crossSetPlayerAttrRR0R>Rt#Def_WorldKey_CrossSetPlayerAttrTickRtappendt__SendCrossServerSetPlayerAttr(RŒRnRUtsetTypetsetDicttisDelaytplayerSetInfoList((s[E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\CrossRealmPlayer.pytSetCrossPlayerAttrValue3s      cCst|ƒdS(N(R‘(Rn((s[E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\CrossRealmPlayer.pytOnCrossProcess?s
cCsxtjs dS|rU|tjƒjtjƒdkr9dStjƒjtj|ƒntj    t
j tjƒit_dS(Ni
ièi'( RJRŽRR0R1RRR>R7tSendMsgToCrossServerR2t"ClientServerMsg_SetPlayerAttrValue(Rn((s[E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\CrossRealmPlayer.pyR‘Cs    "    cCs%tƒs dSt|ƒt|ƒdS(N(R4tSync_CrossZoneInfotLoginDoUnNotifyCrossMsg(R ((s[E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\CrossRealmPlayer.pyt OnPlayerLoginQs
    
 
cCsÆtjƒj|ƒ}|rV|jƒrVt|ƒ}|jdd||t|ƒƒ|S|tjkrugtj|<ntj|}|j    ||gƒtj
d||f|ƒ|rÂt |ƒndS(Nis0Íæ¼Ò²»ÔÚÏߣ¬Ìí¼Óδ֪ͨµÄ¿ç·þÃüÁî: %s, msgInfo=%s( RR?RWt    GetInitOKR`RaRbRJtg_unNotifyPlayerCrossMsgDictRR6RX(RUtcallNameRŒtofflineExitCrossR Rm((s[E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\CrossRealmPlayer.pyt MapServer_QueryCrossPlayerResultYs   cCs‹|jƒ}tjj|gƒ}|s+dSxY|D]Q\}}tjd||f|ƒt|ƒ}|jdd||t|ƒƒq2WdS(Ns(ÉÏÏß´¦Àíδ֪ͨµÄ¿ç·þÃüÁî: %s, msgInfo=%si(    RRRJRžtpopRR6R`RaRb(R RURmRŸRŒ((s[E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\CrossRealmPlayer.pyR›ls  #cCs5tjƒ}ttjƒƒ|_tj||ƒdS(N(tChPyNetSendPackttagGCCrossZoneInfoR+RtGetServerGroupIDt
CommZoneIDt NetPackCommont SendFakePack(R t
clientPack((s[E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\CrossRealmPlayer.pyRšws ((RR2R7RRRDRR£R;R§RRJR[RRR(R)R+R/R4R:RIR9RVRTRXRjRpRlRtRŠRR–R—R‘RœtFalseR¡R›Rš(((s[E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\CrossRealmPlayer.pyt<module>sL