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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
ÔøÅic@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z dd%d„ƒYZdd&d„ƒYZd„Zd„Zddd„Zd    „Zd
„Zd „Zd d „Zd„Zgd„Zggdd„Zggd„Zd„Zd„Zdddd„Zd„Zd„Z dddde!d„Z"d„Z#d„Z$dd„Z%d„Z&d„Z'e(ddd„Z)d „Z*d!„Z+d dd"„Z,d#„Z-d$„Z.dS('iÿÿÿÿNtCrossPlayerObjcBseZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z    d„Z
d    „Z d
„Z d „Z d „Zd „Zd„ZRS(cCsCd|_||_d|_d|_d|_d|_d|_dS(Nti(tNonet_CrossPlayerObj__curPlayert_CrossPlayerObj__playerIDt_CrossPlayerObj__playerNamet_CrossPlayerObj__serverIDt_CrossPlayerObj__mainServerIDt_CrossPlayerObj__familyIDt_CrossPlayerObj__realmLV(tselftplayerID((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyt__init__$s                            cCsL||_|rHtj|ƒ|_tjƒjƒ|_|jƒ|_ndS(N(    Rt    GameWorldtGetPlayerServerIDRt GetGameWorldt GetServerIDRt GetFamilyIDR(R
t    curPlayer((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyt    SetPlayer.s     cCs]|j|jƒƒ|j|jƒƒ|j|ƒ|j|jƒƒ|j|jƒƒdS(N(    t SetPlayerNamet GetPlayerNamet SetServerIDRtSetMainServerIDt
SetRealmLVt
GetRealmLVt SetFamilyIDR(R
tcurCachet fromServerID((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pytUpdByViewCache6s  cCs|jS(N(R(R
((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyt    GetPlayer?scCs|jS(N(R(R
((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyt GetPlayerID@scCs|jS(N(R(R
((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyRAscCs ||_dS(N(R(R
tserverID((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyRBscCs|jS(N(R(R
((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pytGetMainServerIDCscCs ||_dS(N(R(R
t mainServerID((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyRDscCs|jS(N(R(R
((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyREscCs ||_dS(N(R(R
tfamilyID((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyRFscCs*|jr|jS|jr&|jjƒSdS(NR(RRR(R
((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyRHscCs ||_dS(N(R(R
t
playerName((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyRIscCs*|jr|jS|jr&|jjƒSdS(Ni(R    RtGetOfficialRank(R
((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyRJscCs ||_dS(N(R    (R
trealmLV((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyRKs(t__name__t
__module__R RRRRRRR!RRRRRRR(((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyR!s    
                                                        tCrossPlayerMgrcBs5eZd„Zd„Zd„Zd„Zd„ZRS(cCs i|_dS(N(t _CrossPlayerMgr__crossPlayerDict(R
((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyR Ps    cCs^d}||jkr%|j|}nt|ƒ}||j|<|jtjƒj|ƒƒ|S(N(RR*RRR tGetPlayerManagertFindPlayerByID(R
R tcPlayer((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyt RegistPlayerTs  cCs>d}||jkr%|j|}ntr:t|ƒ}n|S(N(RR*tFalseR(R
R R-((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pytFindCrossPlayer^s cCs|jj|dƒdS(N(R*tpopR(R
R ((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyt DeletePlayerfscCs |jjƒS(N(R*tkeys(R
((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pytGetPlayerIDListjs(R'R(R R.R0R2R4(((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyR)Ms
        
        cCs.tj}|dkr*tƒ}|t_n|S(N(t
PyGameDatatg_crossPlayerMgrRR)(tmgr((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pytGetCrossPlayerMgrls
          cCs1|s
dSt|tjƒr-tjdƒdStS(Ns(__checkCrossPlayer isinstance IPY_Player(t
isinstancet IPY_GameObjt
IPY_PlayerR tErrLogtTrue(t crossPlayer((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyt__checkCrossPlayerss  cGs/|s
dStjƒj|ƒ}|s)dStjƒ}g}tƒ}xÎt|jƒƒD]º}    |j|    ƒ}
|
j    ƒ} |r| |krqWn|j
| ƒ} | s«qWn|rÇ||
|Œ rÇqWn| j ƒ} | rû| j |j ƒ|jƒƒqWn|rW|j| ƒqWqWW|r+t||ƒndS(N(t    DBDataMgrt GetFamilyMgrt
FindFamilyR t IsCrossServerR8trangetGetCounttGetAtRR0Rt SendFakePackt    GetBuffert    GetLengthtappendtSendFakePackToPlayerList(R#t
clientPackt excludeIDListt    parseFunctargstfamilyt isCrossServertcrossPlayerListtcrossPlayerMgrtindextmemberR R>R((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pytSendFakePackByFamily|s6       c    Cs±g}tƒ}|jƒ}x‚|D]z}|j|ƒ}|jƒ}tj||ƒs[q"n|jƒ}|r|j|jƒ|j    ƒƒq"n|j
|ƒq"Wt ||ƒdS(N( R8R4R0R!R tCheckServerIDInListRRGRHRIRJRK(    RLt serverIDListttoCrossPlayerListRSt playerIDListR R>R"R((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pytSendFackPackToServerListšs         c Csj|s
dS|sdStjƒjƒ}i}xŸ|D]—}|jƒ}|ratj||ƒq3n|jƒ}|jƒ}||kr‹q3n||kr¤g||<n||}||kr3|j|ƒq3q3W|sØdS|j    ƒ|j
ƒt j |ƒ}    }
} xb|j ƒD]T\}}i|d6|    d6|
d6| d6} |d}tjtj| |g|ƒqWdS(sP¸øcrossPlayerÍæ¼Ò·¢ËÍ·â°ü£¬ÊÊÓÃÓÚ½ÓÊܵÄÍæ¼Ò·â°üÊý¾ÝÒ»Öµģ¬¿ç·þ¡¢ÓÎÏ··þͨÓÃ
    NRZtpackBufftpackLentpackHeadi(R RRRt NetPackCommonRGRR!RJRHRItCommFunct GetPackHeadtitemstCrossMsgtSendToClientServert ShareDefinetC2S_SendFakePack( RRRLt curServerIDtcrossServerPlayerDictR>RR R"RZR\R]R^tdataMsg((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyRK¬s8       
 )"
 cCsÛ|s
dSt|ƒsdS|jƒ}|r@tj||ƒdS|jƒ}|tjƒjƒkrhdS|jƒ}|j    ƒ|j
ƒ}}i|gd6|d6|d6t j |ƒd6}t jtj||g|ƒdS(NRZR\R]R^(R?RR_RGR!R RRRRHRIR`RaRcRdReRf(R>RLRR"R R\R]Ri((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyRGÓs     .icCs“|s
dS|jƒ|jƒ}}i|gd6|d6|d6tj|ƒd6}tjtj||g|ƒtjtj||gtj    |ƒdS(NRZR\R]R^(
RHRIR`RaRcRdReRft SendToServert dirType_All(R RLRR\R]Ri((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pytSendFakePackByIDès."cCsp|d}|d}|d}tjƒ}x?|D]7}|j|ƒ}|dkrXq1n|j||ƒq1WdS(NRZR\R](R R+R,RRG(RiRZR\R]t playerManagerR R((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyRfñs
 
 
   cCs«t|ƒsdS|jƒ}|r9tj|||ƒdS|jƒ}|tjƒjƒkradS|jƒ}i|gd6|d6|d6}t    j
t j ||g|ƒdS(NRZtmsgMarkt msgParamList( R?Rt PlayerControlt
NotifyCodeR!R RRRRcRdRetC2S_NotifyCode(R>RnRoRR"R Ri((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyRqÿs    cCs©tjƒj|ƒ}|sdStjƒjƒ}i}tƒ}    xt|jƒƒD]ú}
|j    |
ƒ} | j
ƒ} |rŒ| |krŒqSn|r¤| |kr¤qSn|    j | ƒ} | s¿qSn| j ƒ}|rð|rS||||ƒqSqSn| j ƒ}||krqSn||kr'g||<n||}| |krS|j| ƒqSqSWxQ|jƒD]C\}}i|d6|d6}|j|ƒtj|||gƒq^WdS(NRZR#(R@RARBR RRR8RDRERFRR0RR!RJRbtupdateRcRd(R#tmsgTypeRiRMt
onlyIDListthavePlayerCallRPRgRhRSRTRUR R>RR"RZt sendDataMsg((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pytSendToFamilyPlayersD          
  cCs\tjƒj|ƒ}|sdSd„}i|d6|d6}t|tj||d|ƒdS(NcSstj||d|dƒdS(NRnRo(RpRq(RR#Ri((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyRv>sRnRoRv(R@RARBRxReRr(R#RnRoRMRPRvRi((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyt FamilyNotify9s    cCss|d}|d}|d}tjƒ}xB|D]:}|j|ƒ}|dkrXq1ntj|||ƒq1WdS(NRnRoRZ(R R+R,RRpRq(RiRnRoRZRmR R((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyRrFs
 
 
   cCs=tj|dtƒtj|dtƒtj|dtƒdS(NtCostPlayerResourcestGivePlayerResourcestSetPlayerNomalDict(tPlayerOfflineSupporttDoOfflineUnprocessedt__doCostPlayerResourcest__doGivePlayerResourcest__doSetPlayerNomalDict(R((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyt OnPlayerLoginTsc    CsÓt|ƒsdSi|d6}|r0||d<n|rC||d<n|rV||d<n|jƒ}|jƒ}|r‹t|dd|ƒdS|jƒ}|tjƒjƒkr³dSt    j
t j ||g|ƒdS(sݿ۳ý¿ç·þÍæ¼Ò×ÊÔ´
    @param eventName: ÏûºÄʼþÖµ
    @param costMoneyDict: ¿Û³ý»õ±Ò {»õ±ÒÀàÐÍ:ÏûºÄÖµ, ...}
    @param costItemDict: ¿Û³ýÎïÆ· {ÎïÆ·ID:¸öÊý, ...}£¬Ôݲ»Ö§³Ö£¬ÓÐÐèÒªÔÙÀ©Õ¹
    @param drDict: ¼Ç¼Á÷ÏòÐÅÏ¢
    Nt    eventNamet costMoneyDictt costItemDicttdrDictRz( R?RRRRR!R RRRcRdRetC2S_CostPlayerResources(    R>RƒR„R…R†RiR RR"((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyRzZs&        cCsOtjƒj|ƒ}|s8tj|d|ddƒdSt|dd|ƒdS(NRzt outtimeDaysi(R R+R,R}tAddOfflineUnprocessedRR(RiR R((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyR‡ys c
Cs´|jƒ}|d}|jdƒ}|jdƒ}|jdiƒ}|r§xX|jƒD]G\}}    tj|||    ||ƒsYtjd|||    f|ƒqYqYWn|r°ndS(NRƒR„R…R†sE__doCostPlayerResources error! eventName=%s,moneyType=%s,costMoney=%s(RtgetRbRptPayMoneyR R<(
RtrecDataRƒt    eventDataR R„R…R†t    moneyTypet    costMoney((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyRs 
    Rc
Csæt|ƒsdSi|d6}|r0||d<n|rC||d<n|rV||d<n|si||d<n|jƒ}|jƒ}|ržt|dd|ƒdS|jƒ}    |    tjƒjƒkrÆdSt    j
t j ||    g|ƒdS(s€¸øÍæ¼Ò×ÊÔ´
    @param awardItemList: ¸øÎïÆ·Áбí [[itemID,itemCnt], ...]
    @param moneyDict: ¸ø»õ±Ò {»õ±ÒÀàÐÍ:ÏûºÄÖµ, ...}
    NRƒt awardItemListt    moneyDictR†t isNotifyAwardR{( R?RRR€RR!R RRRcRdRetC2S_GivePlayerResources(
R>RR‘RƒR†R’RiR RR"((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyR{”s*         cCsOtjƒj|ƒ}|s8tj|d|ddƒdSt|dd|ƒdS(NR{Rˆi(R R+R,R}R‰R€R(RiR R((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyR“³s c Cs3tjd||fƒ|d}|jdgƒ}|jdiƒ}|jdiƒ}|jdtƒ}tjd|ƒ|r»i}|j|ƒtj||d|t|gdtƒn|r i}    |    j|ƒx6|jƒD]%\}
} t    j
||
| ||    ƒqáWn|r/tj |||d    |ƒndS(
Ns__doGivePlayerResources %s, %sRƒRR‘R†R’sawardItemList=%steventt    moneyInfo( R tDebugLogRŠR=Rst ItemControlertGivePlayerItemOrMailR/RbRpt    GiveMoneytNotifyGiveAwardInfo( RRŒRƒRRR‘R†R’t
itemDRDictt
moneyRDictRŽt
moneyValue((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyR€»s&
 (  cCsðt|ƒsdS|jƒ}|jƒ}i|d6}|rRt|dd|ƒdS|jƒ}|tjƒjƒkrŽtj    d||ƒdS|dkrÐt
j ƒj t jƒ}|ji|d6|d6ƒntjt j||g|ƒdS(s©¿Û³ý¿ç·þÍæ¼Ò×ÊÔ´
    @param setDict: ÒªÉèÖõÄNomalDictSetProperty¶ÔÓ¦key:value {key:value, ...}
    @param resetType: ×ÖµäÖØÖÃÀàÐÍ£¬¿Õ-ÓÀ¾Ã£¬Day-ÈÕÖØÖã¬Week-ÖÜÖØÖÃ
    NtsetDictR|s/CrossPlayerÉèÖÃ×Öµäʱ±¾·þÍæ¼Ò²»´æÔÚ! setDict=%sRt    resetTypetcenterEventValue(R?RRRRR!R RRR<R@tGetEventTrigMgrtGetValueRetDef_CrossCenterEventRsRcRdtC2S_SetPlayerNomalDict(R>RžRŸR RRiR"R ((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyR|Õs"      cCsOtjƒj|ƒ}|s8tj|d|ddƒdSt|dd|ƒdS(NR|Rˆi(R R+R,R}R‰RR(RiR R((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyR¤îs cCs¡|jƒ}|d}|jddƒ}|dkrm|jddƒ}|jtjƒ}tjd|tjƒ}    tjd|tjƒ}
|    j} t    j    j
|    ƒd} |    j } |    j }|
j}t    j    j
|
ƒd}|
j }|
j }|dkr7| |ks| |ks||krjtj d    ||ƒdSqm|d
krm| |krjtj d ||ƒdSqmnx-|jƒD]\}}tj|||ƒqzWdS( NRžRŸRR is%sitDays)·ÇͬһÌìÁ˲»ÔÙÉèÖÃÍæ¼Ò¸ÃkeyÖµ! setDict=%stWeeks)·ÇͬһÖÜÁ˲»ÔÙÉèÖÃÍæ¼Ò¸ÃkeyÖµ! setDict=%s(RRŠtNomalDictGetPropertytChConfigtDef_PDict_OnCrossEventR tChangeStrToDatetimetTYPE_Time_Format_YmdHtdaytdatetimet isocalendartmonthtyeartLogRbRptNomalDictSetProperty(RRŒRƒRR RžRŸR tplayerEventValuetcenterEventTimetplayerEventTimet
center_Dayt center_Weekt center_Montht center_Yeart
player_Dayt player_Weekt player_Montht player_Yeartkeytvalue((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyRös6 
                          $  
gà?c     Cs£|jƒ}|dkr3tjd||fƒdS|dksW|tjƒjƒkrt|||d|ƒ}    |r‹t||||    ƒndStjƒj    |ƒ}
|
s¸|
j
ƒ rÌt j |dƒdS|rá|rád}n|r7|j |ƒ} | r$|| |dkr$t j |dƒdS|j||ƒni|d6} |r]|jƒ| d    <n|rp|| d<n|rƒd
| d <ntjtj| |g|ƒdS( Nis.¹¦ÄÜËùÊô¿ç·þÒì³£! funcName=%s,crossServerID=%st    reqDataExt ServerNoOpeniièt RequestLatertfuncNameR\it
needResult(RR R<RRtCallPyPackFunct__doCrossPyPackRettCrossMgrtGetSSServerMgrt GetSSServert IsServerOpenRpRqt GetDictByKeytSetDictRHRctSendToCrossServerRetS2C_CrossPyPack( Rt
clientDatat crossServerIDttickRÃRÄtreqCDRÀR tisOKtssServertreqTickRi((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pytPyPackForwardings<  $        cCs®|d}|jdƒ}|jdƒ}d}|rPtj|ƒ}|sPdSnt|||||ƒ}d|krª|jdƒ||d<tjtj    ||g|ƒndS(NRÃR\RÀRÄRÓ(
RŠRR_tReadRecPyPackDataRÅR1RcRdRetC2S_CrossPyPackRet(RiRR RÃR\RÀRÏRÓ((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyRÎGs
 
cCs–tjƒj|ƒ}|sdS|d}|jdƒ}|j|dƒd}|rptj|ƒ}|spdSn|jdƒ}t||||ƒdS(NRÃR\iRÓ(    R R+R,RŠRÌRR_R×RÆ(RiR RRÃR\RÏRÓ((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyRØXs
c    Cs…tƒj|ƒ}|s0tjd||ƒdSt|ƒ}|sWtjd|ƒdStjƒjƒ}||||||ƒ}|S(Ns ÕÒ²»µ½¸ÃCrossPlayer! playerID=%ss·â°ü¹¦Äܺ¯ÊýÃû²»´æÔÚ! %s(R8R0R R<t GetCallFuncRtGetTick(    R RÏRÃRRÀR>tcallFuncRÑRÓ((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyRÅjs cCs4d|}t|ƒ}|s dS||||ƒdS(Ns%s_Ret(RÙ(RRÏRÃRÓRÛ((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyRÆzs 
 cCs½d}d|kr‡|jdƒ}t|ƒdkr¹|\}}t|ƒ}t||ƒr„t||ƒ}t|ƒr|}qq„q¹n2tƒ}||kr¹t||ƒr¹||}n|S(Ns.i(Rtsplittlent
__import__thasattrtgetattrtcallabletglobals(RÃRÛtpartst
moduleNamet    func_nametmoduletfunctgDict((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyRلs         (((/R@R R5R_RpR}R—ReR:RcR¨R`RÇR­RR)R8R?RRVR[RKRGRlRfRqRxRyRrR‚RzR‡RR=R{R“R€R|R¤RR/RÖRÎRØRÅRÆRÙ(((sjD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\CrossPlayer.pyt<module>sV              ,                    '              *                                  &+