hwj35
2025-06-16 12bfd1cd414e0fa14310a800df8288a844d6489f
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
ðÐÆgc@sûddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZdefd„ƒYZd„Zd„Zd„Zd„Zd„Zd    d
„Zd „Zd „Zd „Zd„Zd„Z dd„Z"dd„Z#d„Z$d„Z%d„Z&d„Z'd„Z(d„Z)d„Z*defd„ƒYZ+d„Z,d„Z-id„Z.dS(iÿÿÿÿNtCrossPKBillboardManagercBsYeZdZd„Zed„Zd„Zd„Zd„Zd„Z    d„Z
d„Z RS(    sCrossPKFinalBillboard_%s_%scCs(d|_d|_g|_i|_dS(NsZoneSeasonDataList_%s_%ssZoneSeasonPlayerOrderDict_%s_%s(t,_CrossPKBillboardManager__ZoneSeasonDataListt3_CrossPKBillboardManager__ZoneSeasonPlayerOrderDictt(_CrossPKBillboardManager__ZoneSeasonListt2_CrossPKBillboardManager__UnSortZoneSeasonTimeDict(tself((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pyt__init__-s
                cCs²|j||f}|j||f}t||ƒsnt||gƒt||iƒ|jj||fƒnt||ƒ}|r™|j|||ƒnt||ƒ}||fS(N(RRthasattrtsetattrRtappendtgetattrt)_CrossPKBillboardManager__PKBillboardSort(RtzoneIDtseasonIDtisSortt listAttrNametorderDictAttrNamet billboardListt    orderDict((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pytGetCrossPKBillboardInfo4scCsÅ||f|jkrdS|jj||fƒ|jdtjddƒdtƒi}x*t|dƒD]\}}|||j<qgW|j||f}t    |||ƒt
j d|||fƒdS(NtkeytPKScoretTimetreverseis2¿ç·þPK°ñµ¥ÅÅÐò: zoneID=%s,seasonID=%s,orderDict=%s( Rtpoptsorttoperatort
attrgettertTruet    enumeratetPlayerIDRRt    GameWorldtDebugLog(RR R RRtordert billboardDataR((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pyt__PKBillboardSortCs"cCsl|js dSd}xR|jjƒD]A\}}|\}}|||krQq#n|j||tƒq#WdS(Ni<ièi`ê(RtitemsRR(RtticktsortCDRtupdTickR R ((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pytPKBillboardSortByTimeQs     cCs;||f|jkr7tjƒjƒ|j||f<ndS(N(RRt GetGameWorldtGetTick(RR R ((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pyt SetNeedSort]s"c CsEtj}tjƒ}x |jD]\}}||}}|j|||ƒ}|j||ƒd}tjd||t    |ƒfƒx®|D]¦}    t
j ƒ}
||
_ ||
_ ||
_|    j|
_|    j|
_|    j|
_|    j|
_|    j|
_|    j|
_|    j|
_|    j|
_|    j|
_ |j!|
ƒqŠWqWg|_dS(Nis.CopyToCrossBillboard: zoneID=%s,seasonID=%s,%s("t ShareDefinetDef_CBT_CrossRealmPKt PyDataManagertGetCrossBillboardManagerRtGetCrossBillboardRRtLogtlentPyGameDataStructttagDBCrossBillboardt GroupValue1t GroupValue2t BillboardTypeRtIDt
PlayerNametName1tJobtType2tRealmLVtValue1tDanLVtValue2tFacetValue3tFacePictValue4RtCmpValueRt    CmpValue3tAddBillboardData( RttoBillboardTypet billboardMgrR R t groupValue1t groupValue2ttoBillboardObjRR"ttobillboardData((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pytCopyToCrossBillboardcs0                                  cCsžd}d}d}xX|jD]M\}}|j||ƒd}x(|D] }|d7}||jƒ7}qEWqWtjd|t|ƒfƒtj||ƒ|S(Ntiis#SaveCrossPKBillboard cnt :%s len=%s(RRt    getBufferRR1R2tCommFunct
WriteDWORD(RtsavaDatatcntDatatcntR R RR"((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pyt GetSaveDatas 
c
Cstj||ƒ\}}tjd|ƒxxt|ƒD]j}tjƒ}|jƒ||j|||ƒ7}|j    }|j
}|j ||ƒd}    |    j |ƒq6Wx`|j D]U\}}|j||ƒ|j ||tƒd}    tjd||t|    ƒfƒq®W|jƒ|S(NsLoadCrossPKBillboard cnt :%sis$    zoneID=%s, seasonID=%s, count=%s(RQt    ReadDWORDRR1txrangeR3ttagDBCrossPKBillboardtcleartreadDatatZoneIDtSeasonIDRR    RR+RR2RN(
RtdatastpostdataslenRUt_R"R R R((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pytLoadPyGameDatas  
        $
( t__name__t
__module__tDBKEY_CrossPKFinalBillboardDataRtFalseRR R(R+RNRVRb(((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pyR)s                          cCsc|jƒ}|\}}}}i|d6|d6|d6|d6}tj|d|tj||ƒdS(NR R t    eventNamet    eventDatatQueryCrossPKSeasonOrder(t GetPlayerIDtCrossBillboardtOnQueryPlayerBillboardRankR,R-(t    curPlayertmsgListtplayerIDR R RgRhtfuncData((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pyt!MapServer_QueryCrossPKSeasonOrder¤s
 "c
Cstjƒj|ƒ}|sdS|d}|d}|d}|d}|d}t|||||gƒ}    |jddd|    t|    ƒƒdS(NR R RgRhiitCrossPKSeasonOrder(RtGetPlayerManagertFindPlayerByIDtstrtMapServer_QueryPlayerResultR2(
RoRpt
orderIndext queryPlayerR R RgRhR!tsysMsg((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pytOnQueryCrossPKSeasonOrderRet¬s
 
 
 
 
c CsÒd}tjtjƒd}tj|ƒ}|rI|d|krI|dStjd|ƒi}tjƒ}tjƒ}tj    di|d6t
ƒ}|sž|Sx÷|D]ï}|j ƒ}tj d||ƒ}    |    sØq¥nx¹t |    ƒD]«\}
} | jƒ} | jƒ} | jƒ}| jƒ}tjjd| tjƒ}tjjd    ||ftjƒ}|
t|    ƒdkr~d}n|    |
d}||kr¹tjd
|| | |fƒPn‘||koÐ|knrØnr||krå|rJ|jƒ}tjjd|tjƒ}||krDtjd || | |fƒqåqDqJnqå|sVdn    |jƒ}| g||<tjd || | ||fƒPqåWq¥Wtj|||gƒ}tjd ƒtjdƒ|dS(NtCrossPKZoneSeasonTimeInfoiis(¼ÓÔØ¿ç·þPKÈü¼¾Ê±¼äÐÅÏ¢: openServerDay=%st CrossZonePKt CrossZoneNametCrossRealmPKSeasons %s 00:00:00s%s %s:00sC    Èü¼¾Î´¿ªÊ¼! zoneID=%s,seasonID=%s,startDateStr=%s,endDateStr=%ssC    Èü¼¾ÒѹýÆÚ! zoneID=%s,seasonID=%s,startDateStr=%s,endDateStr=%ssS    Èü¼¾»î¶¯ÖÐ! zoneID=%s,seasonID=%s,startDateStr=%s,endDateStr=%s,nextSeasonID=%ss¿ç·þPKÈü¼¾Ê±¼äÐÅÏ¢¼ÓÔØÍê±Ï!s==============================================================(tPlayerDBGSEventtGetDBGSTrig_ByKeyt Def_ServerDayt IpyGameDataPYt GetConfigExRR1t GetServerTimetGetCrossZoneNametGetIpyGameDataByConditionRt    GetZoneIDtGetIpyGameDataListRt GetSeasonIDt GetStartDatet
GetEndDatet
GetEndTimetdatetimetstrptimetChConfigtTYPE_Time_FormatR2tNonet SetConfigEx(Rt openServerDaytZoneSeasonTimeInfotzoneSeasonTimeDictt
serverTimet crossZoneNamet crossZoneListt zoneIpyDataR tseasonIpyDataListtit seasonIpyDataR t startDateStrt
endDateStrt
endTimeStrt startDateTimet endDateTimetnextSeasonIpyDatatnestStartDateStrtnextStartDateTimet nextSeasonID((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pyt__GetCrossPKZoneSeasonTimeInfo¼sb        "                    cCsRtjƒsdStƒ}|s#dStjƒ}tjƒ}tjƒ}x|jƒD]ö\}}tjd||ƒ}|sqTn|d}|s—qTn|j    ƒ}|j
ƒ}    |j ƒ}
|j ƒ} t j jd|    tjƒ} t j jd|
| ftjƒ} d}| |ko"| knr0d}n|| krEd}ntj|}tj|}|j|ƒ}|j|ƒ}||kr›||kr›qTn|j||ƒ|j||ƒtjd|||fƒ|jƒ}|dkrùit_n|jtjtjƒ}i|d6|d    6|d
6|d 6}tjtj||ƒqTWdS( NR|is %s 00:00:00s%s %s:00iis8¿ç·þPKÈü¼¾×´Ì¬±ä¸ü: zoneID=%s,seasonID=%s,seasonState=%sR\R]t SeasonStatet
MatchState(Rt IsCrossServerR¦R)R„R…R$R‚tGetIpyGameDataR‰RŠR‹RŒRRŽRRt Def_WorldKey_CrossPKZoneSeasonIDt#Def_WorldKey_CrossPKZoneSeasonStatet GetDictByKeytSetDictR1tGetServerGroupIDListt
PyGameDatatg_crossPKMatchDictR,t)Def_Notify_WorldKey_CrossDailyActionStatetDailyActionID_CrossReamPKt CrossRealmMsgtSendMsgToClientServertCrossServerMsg_PKSeasonInfo(R•t    gameWorldR–R—R tseasonTimeInfoR™tcurSeasonIpyDataR RRžRŸR R¡t seasonStatetzoneSeasonIDDictNametseasonStateDictNamet dictSeasonIDtcurSeasonStatetserverGroupIDListt
matchStatet
seasonInfo((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pytOnMinuteProcesssT        
    "              "c CsLtjƒsdStjƒ}|jtjtjƒ}|jtjtj|ƒ| rl|rltjdƒntj    ƒ}t
j di|d6t ƒ}|sždSx§|D]Ÿ}|j ƒ}|jƒ}|jtj|ƒ}|jtj|ƒ}    i|d6|d6|    d6|d6}
tjd|||    |fƒtjtj|
|ƒq¥WdS(    Ns%¿ç·þPKÆ¥Åä״̬¿ªÆô£¬ÖØÖÃÏà¹ØÆ¥ÅäÊý¾Ý!R|R}R\R]R§R¨sF¿ç·þPKÆ¥Åä״̬±ä¸ü: zoneID=%s,seasonID=%s,seasonState=%s,matchState=%s(RR©R)R­R,R²R³R®R1R…R‚R†RR‡R¯RR«R¬R´RµR¶( tisOpenR·tpreStateR—R˜R™R R¿R RºRÁ((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pyt$OnCrossRealmPKDailyActionStateChange>s(       "ic Cs0tjd|ƒ|r9t|ƒ}|s-dS|g}n(tjƒ}tjdi|d6tƒ}|skdStjƒ}x²|D]ª}|jƒ}|j    t
j |ƒ}|j    t
j |ƒ}    |j    t jt jƒ}
i|d6|d6|    d6|
d6} |r|gn    |jƒ} tjt j| | ƒq~WdS(    sN Í¬²½¿ç·þPK»î¶¯Êý¾Ýµ½×Ó·þÎñÆ÷
    @param serverGroupID: Îª0ʱͬ²½ËùÓÐ×Ó·þ
    s.ͬ²½¸ø×Ó·þ¶ÔÓ¦µÄÈü¼¾ÐÅÏ¢: syncServerGroupID=%sNR|R}R\R]R§R¨(RR1tGetCrossPKServerGroupZoneR…R‚R†RR)R‡R­RR«R¬R,R²R³R¯R´RµR¶( R%t serverGroupIDtipyDataR˜R—R·R™R R RºRÀRÁR¿((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pyt"Sync_CrossPKInitDataToClientServer^s(      "c
CsÂtjƒ}tjdi|d6tƒ}|s2dSx‰|D]}xx|jƒD]j}t|tƒrm||ks²t|tƒrLt    |ƒdkrL|d|ko­|dknrL|SqLWq9WdS(NR|R}iii(
RR…R‚R†RR¯t
isinstancetintttupleR2(RÇR—R˜R™t    groupInfo((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pyRÆzs  E c Cs`tjƒjtjƒsdSt|ƒtjƒ}tjdi|d6t    ƒ}|sXdSt
j ƒ}g|_ x&|D]}|j ƒ}t
jƒ}||_|jƒjtjƒjtjƒƒ|_t|jƒ|_g|_tjd||ƒ}|sgn|}xf|D]^}t
jƒ}    |jƒ|    _|jƒ|    _|jƒ|    _ |j!ƒ|    _"|jj#|    ƒqWt|jƒ|_$|j j#|ƒqtWt|j ƒ|_%t&j'||ƒtjƒ}
t
j(ƒ} |
jtjƒ| _|
jtj)ƒ| _|
jtj*ƒ| _+|
jtj,tj-ƒ| _.tjƒ| _/t| j/ƒ| _0t&j'|| ƒdS(NR|R}R~(1RR)R­R,t!Def_Notify_WorldKey_CrossPKZoneIDt__OnLoginNotifyPKOverInfoR…R‚R†RtChPyNetSendPackttagGCCrossRealmPKSeasonInfotZoneListR‡ttagGCCrossRealmPKZoneR\t GetZoneNametdecodetDef_Game_Character_EncodingtencodetGetCharacterEncodingtZoneNameR2t ZoneNameLent
SeasonListRˆttagGCCrossRealmPKSeasonR‰R]RŠt    StartDateR‹tEndDateRŒtEndTimeR    t SeasonCountt    ZoneCountt NetPackCommont SendFakePackttagGCCrossRealmPKSeasonStatet#Def_Notify_WorldKey_CrossPKSeasonIDt&Def_Notify_WorldKey_CrossPKSeasonStateR§R²R³R¨R}tCrossZoneNameLen( RmR—R˜tzoneSeasonInfoR™R tzoneInfot
seasonListRœRÁR·tseasonStatePack((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pyt OnPlayerLoginˆsN
             *        cCs&tjƒjtjtjƒtjkS(N(RR)R­R,R²R³RtDef_Action_Open(((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pytIsCrossRealmPKMatchState¹sc
Csx|d}|d}|d}|d}|jddƒ}|jdgƒ}|dk}    t||||||    |ƒdS(    NR R Rot
fightPowert requestTypeit gmMatchIDListi(tgettOnRefreshPKMatch(
RÇtplayerInfoDictR%R R RoRïRðRñt    isRefresh((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pytClientServerMsg_PKMatch¾s
 
 
 
 c&Cs$|d}|d}|d}|d}|d}|d}|d}    |d}
|d    } |d
} |d } |d }|d }|d}|tjkr¿tjd||||f|ƒdStj|}||krÿtjd|||||f|ƒdS|j|ƒ}tjddƒ}|r‰tjddƒ}t|ƒ|krT||nd}t    tj
ddƒƒ}||}|d7}nd}||}tj d|ƒ}|rÜ|j ƒrÜ||j ƒkrÜ|d7}ntj d|||||||f|ƒ||}}d|    }}| |}}|}tjtj||||||||d|d|
d| ƒ    |}tjtj|ƒƒ} | jddƒ}!|r¨|n|}"tjƒ}#i}$|||#|"||||||!g
|$|<|g}%tjtj|$|%ƒt|||| |tƒdS(NRot tagPlayerIDtisWinnertpkZoneIDR t
playerNamet    playerJobtfacetfacePictrealmLVRïtpkScoretdanLVt    cWinCountsPÍæ¼ÒÆ¥Å䣬ÎÞ·¨½áËã¿ç·þPK½±Àø! tagPlayerID=%s,isWinner=%s,pkScore=%s,cWinCount=%ssoÄ¿±êÍæ¼ÒID²»ÔÚÍæ¼ÒÆ¥ÅäÁбíÀÎÞ·¨½áËã¿ç·þPK½±Àø! tagPlayerID=%s not in %s ,isWinner=%s,pkScore=%s,cWinCount=%stCrossRealmPKScore2iiiitCrossRealmPKDansc½áËã¿ç·þPK½±Àø: tagPlayerID=%s,isWinner=%s,pkScore=%s,cWinCount=%s,addScore=%s,updScore=%s,danLV=%sRORKtvalue3tvalue4tName(R°R±RtErrLogtindexR‚t
GetFuncCfgtGetFuncEvalCfgR2tevaltGetFuncCompileCfgRªt GetLVUpScoreR1RktUpdCrossBillboardR,R-tPlayerViewCachetGetCachePropDataDictt FindViewCacheRòtGetCurrentDataTimeStrR´RµtCrossServerMsg_PKOverInfoRóR(&RÇRôR%RoR÷RøR R RúRûRüRýRþRïRÿRRt matchIDListt
matchIndextaddScoret baseScoreListt    baseScoretwExScoretupdScoret pkDanIpyDataRJRKtname2ttype2tvalue1tvalue2tcmpValuet tagCacheDictt tagPlayerNametwinnerIDttimeStrtplayerOverDictR¿((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pytClientServerMsg_PKOverÌsn
 
 
 
 
 
 
 
 
 
 
 
 
 
          "
 
$          (    c Cs½|s|tjkr.t|||||ƒntjj|gƒ}i}x9|D]1}    tj|    ƒ}
|
sqqPn|
jƒ||    <qPWi|d6|d6|d6} tjt    j
| |gƒdS(NRoRt matchInfoDict( R°R±t __DoPKMatchRòRRRPR´RµR,tCrossServerMsg_PKMatchReqRet( R R RoRïRÇRõRñRR'tmatchIDt    viewCachetdataMsg((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pyRós c  Csqtƒs'tjd||f|ƒdStjddƒ}tjddƒ}||}g}tj}    ||}
} tjƒ} | j    |    |
| ƒ} | j
ƒ}| j |ƒ}tjd||||||f|ƒ|dkrü|}tjd||ƒnt d||dƒ}t |||dƒ}||krF|j|ƒng}xC|D];}||kriPn| j|ƒ}|jt|jƒƒqSWtjdt|ƒ|f|ƒd}t}xât |ƒD]Ô}tjd    |d|||f|ƒd}g}|r&t||||||dƒn| r|dkrt||ƒ}d
}g}||krÏ|j|ƒ}t d||dƒ}g|||d!D]}t|ƒ^q˜}||krÏ|j|ƒqÏntjd |t|ƒ|f|ƒtjd t|ƒ|f|ƒn| rA|rAt||||||dƒn|rYtj|ƒ}n|sr|d}t}n|j|ƒtjd ||||f|ƒqËW| rìtjtjddƒƒrì|}||d
<tjd||ƒn|r=tjd||ƒx4|D])}|r)|jdƒn|j|ƒq Wntjdt|ƒ|ƒ|rm|tj |<n|S(Ns1·ÇÆ¥Åä½×¶Î£¬²»ÔÊÐíË¢ÐÂÆ¥Åä! zoneID=%s,seasonID=%stCrossRealmPKMatch3iis]===Ö´ÐÐÆ¥Åä: zoneID=%s,seasonID=%s,playerID=%s,fightPower=%s,playerBillIndex=%s,matchCount=%sis<Íæ¼ÒδÉÏ»ý·Ö°ñ£¬ÊÓΪÅÅÔÚ°ñÉÏ×îºóÒ»ÃûÖ®ºó! playerBillIndex=%ss#»ý·Ö°ñ¿ÉÆ¥ÅäµÄÅÅÃûÍæ¼ÒIDÁбí: %s,%ssAÆ¥ÅäµÚ%s¸ö: matchIndex=%s,playerBillIndex=%s,billLoopIndexList=%siÿÿÿÿs0    ÈüÇøÕ½Á¦°ñÍæ¼ÒÅÅÃû: playerPackIndex=%s,%s,%ss    ÈüÇøÕ½Á¦°ñËæ»úÍæ¼Ò: %s,%ssO        ±¾¶ÎËæ»úÆ¥Åä½á¹û: matchIndex=%s,matchID=%s,randIDList=%s,matchIDList=%sis2ûÓÐÆ¥Åäµ½»úÆ÷ÈË£¬¸ÅÂÊÖ±½ÓÆ¥Åäµ½»úÆ÷ÈË: robotID=%ss&GMÖ¸¶¨Æ¥ÅäÄ¿±êÍæ¼ÒID: gmMatchIDList=%ss×îÖÕÆ¥Åä½á¹û: matchIDList=%s(!RîRR R‚R    R,R-R.R/R0tGetCountt IndexOfByIDtmaxtrangetremovetAtR    RËR8R2R‘Rft__addRandMatchIDt__getZonePackPlayerIDListRtrandomtchoiceRt    CanHappenRRuR°R±( R R RoRïRñt
matchCountt    rankRanget
totalRangeRt billboardTypeRJRKRIt billboardObjt billDataCounttplayerBillIndextbillStartIndextbillLoopIndexListtloopBillPlayerIDListRtbillDatatrandPackPlayerIDListt    haveRobotRR*t
randIDListtzonePackPlayerIDListtplayerPackIndext
startIndextpackIDtrobotIDt    gmMatchID((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pyR(&s    
                $ * ## 
     $"
 c Cstjƒ}||}||d}    t|ƒ}
|dkr_tjd|||    |
f|ƒn tjd|||    |
f|ƒxùt||    dƒD]ä} | |
kr©Pn|| } | sÒ| |ksÒ| |kròtjd| |f|ƒq“n| |kr!tjd| ||f|ƒq“n|j| ƒsPtjd| |f|ƒq“n|j| ƒtjd| |f|ƒq“WdS(Nis@    Æ¥ÅäÈüÇø»ý·Ö°ñ: matchIndex=%s,loopIndex=%s~%s,loopIDCount=%ss@    Æ¥ÅäÈüÇøÕ½Á¦°ñ: matchIndex=%s,loopIndex=%s~%s,loopIDCount=%ss9        ²»¿ÉÆ¥Åä¿Õ»ò×Ô¼º»òÒÑÌí¼Ó: dataID=%s,randIDList=%ssD        ²»¿ÉÌí¼ÓÒÑÆ¥Åä¹ýÍæ¼Ò: dataID=%s,randIDList=%s,matchIDList=%ss5        ²»Æ¥ÅäÎÞ»º´æÊý¾ÝÍæ¼Ò: dataID=%s,randIDList=%ss5        Ìí¼Ó¿ÉÒÔËæ»úÆ¥ÅäÍæ¼Ò: dataID=%s,randIDList=%s(R.tGetPlayerViewCachePyManagerR2RR R1t
IsPlayerInR    ( RoRR:RFRtloopPlayerIDListtsigntpyViewCacheMgrt
indexStarttindexEndt loopIDCountRtdataID((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pyR4„s. 
  #  
  cCs|tjƒ}tjd||ƒ}|rx|jƒ}tjƒ}|j|ƒ}tjd||t    |ƒ|f|ƒ|SgS(NR|s=    »ñµÃÈüÇø»îÔ¾´ò°üÊý¾ÝÍæ¼Ò: zoneID=%s,serverIDList=%s,%s,%s(
RR…R‚RªR¯R.RMtGetPlayerIDListByServerIDInfoR R2(R RoR—R™t serverIDListRQRG((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pyR5 s       cCs(|d}|d}|d}|d}|d}|d}|d}|jdd    ƒ}    |jd
d    ƒ}
|d } |d } |d } |d}||}}d|}}| | }}| }tjtj||||||||d|d|    d|
ƒ    }tjd|||| | ||f|ƒdS(NR\R]t
PlayerInfotaccIDRoRúRûRüiRýRþRÿRRRORKRRsaGMÉèÖÿç·þPK°ñµ¥Íæ¼ÒÊý¾Ý: isOK=%s,zoneID=%s,seasonID=%s,pkScore=%s,danLV=%s,cWinCount=%s,accID=%s(RòRkRR,R-RR1(RÇtmsgDataR R RôRYRoRúRûRüRýRþRÿRRRJRKRRRRR tisOK((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pytClientServerMsg_PKBillboard­s,
 
 
 
 
 
 
 
 
 
 
   !     cCsÑtjƒrdStjtjƒ}tjtjƒ}tjtjƒ}tjd|||fƒtj    ƒ}|j
tjƒ}|sÍ|j tj|ƒ|j tj|ƒ|j tj|ƒtjdƒndS(Ns=OnGameServerInitOK dbZoneID=%s,dbSeasonID=%s,dbSeasonState=%ss*    ·þÎñÆ÷Æô¶¯È¡DBÖµÉèÖñ¾·þÈüÇøÈü¼¾ÐÅÏ¢: ( RR©RR€R,RÎRåRæR1R)R­R®(tdbZoneIDt
dbSeasonIDt dbSeasonStateR·R ((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pytOnGameServerInitOKËs  cCsÈtjƒrdStjƒ}|jtjƒ}|jtjƒ}|jtjƒ}tjƒjtjtj    ƒ}tj
tj|ƒtj
tj|ƒtj
tj|ƒtj
tjtj    |ƒdS(N( RR©R)R­R,RÎRåRæR²R³tSendMapServerMsgEx(R·R R RºRÀ((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pytOnMapServerInitOKßs  cCs0tjdƒ|sdS|jddƒ}|jddƒ}|jddƒ}|jddƒ}tjd||||fƒ|s†dS|s¼tjtjƒ}|r¼tjd|ƒdSntjƒ}|j    tj
ƒ}|j tj |ƒ|j tj|ƒ|j tj
|ƒ|j tj tj|ƒtjtj ƒ}tjtjƒ}tjtj
ƒ}    tjd    |||    fƒtjtj |ƒtjtj|ƒtjtj
|ƒtjtj ƒ}tjtjƒ}tjtj
ƒ}    tjd
|||    fƒ|d kr!|d kr!ntjtj |ƒtjtj|ƒtjtj
|ƒtjtj tj|ƒtjƒ}
||
_||
_||
_||
_tjƒ|
_t|
jƒ|
_tjƒ} xXt| jƒƒD]D} | j| ƒ} | dksä| j ƒ rqänt!j"| |
ƒqäWdS( NsÊÕµ½¿ç·þ·þÎñÆ÷ͬ²½µÄÈü¼¾ÐÅÏ¢...R\iR]R§R¨s6    zoneID=%s,seasonID=%s,seasonState=%s,matchState=%ss4    ÒѾ­ÓзÖÅäÈü¼¾IDµÄÔݶ¨²»Äܱ»ÖÃΪ0! dbSeasonID=%ss5    before dbZoneID=%s,dbSeasonID=%s,dbSeasonState=%ss5    update dbZoneID=%s,dbSeasonID=%s,dbSeasonState=%sii(#RR1RòRR€R,RåRR)R­RæR®RÎR²R³tSetDBGSTrig_ByKeyRaRÐRäR\R]R§R¨R…R}R2RçRsRXtGetPlayerCounttGetPlayerByIndexR‘t    GetInitOKRâRã(RÁR R RºRÀR^R·R¾R]R_Rët playerManagerR›Rm((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pyR¶ñsh                    c Csö|d}|d}|d}tjƒj|ƒ}|s=dStjƒ}g|_x{|D]s}tjƒ}||_|jj|ƒ||kr–qYn||}t    j
||ƒ}    |    s¾qYnt    j ||    ƒt    j |    ƒ}
||_|
j ddƒ|_t|jƒ|_|
j ddƒ|_|
j ddƒ|_|
j d    d
ƒ|_|
j d d
ƒ|_|
j d d
ƒ|_|
j d d
ƒtj|_|
j d d
ƒtj|_tj|
j ddƒƒ|_qYWt|jƒ|_tj||ƒdS(NRoRR'RROR;itLVR=iRARCt
FightPowertAccID(RRsRtRÐttagGCCrossRealmPKMatchOKt MatchPlayerttagGCCrossRealmPKMatchPlayerRR    RtReadCacheBufferToCacheObjtSync_PlayerCacheRRòR9R2tNameLenR;RhR=RARCRtDef_PerPointValueRit FightPowerExtGetAccIDServerIDtServerIDtMatchPlayerCountRâRã( tretInfoRoRR'Rmt matchOKPackR*t matchPlayert cacheBuffertcurCachet    cacheDict((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pyR)4sD
 
 
            
    "tCrossPKUnNotifyOverInfoManagercBs5eZd„Zd„Zd„Zd„Zd„ZRS(cCs i|_dS(N(t5_CrossPKUnNotifyOverInfoManager__unNotifyOverInfoDict(R((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pyR`s    cCs||j|<dS(N(R}(RRot overInfoData((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pytAddUnNotifyOverInfods cCs|jj|dƒS(N(R}RR‘(RRo((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pytGetPlayerUnNotifyOverInfohscCswd}d}d}x1|jjƒD] }|d7}||jƒ7}q"Wtjd|t|ƒfƒtj||ƒ|S(NROiis,SaveDBCrossPKUnNotifyOverInfo cnt :%s len=%s(R}tvaluesRPRR1R2RQRR(RRSRTRUR~((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pyRVks
cCsƒtj||ƒ\}}tjd|ƒxSt|ƒD]E}tjƒ}|jƒ||j|||ƒ7}||j    |j
<q6W|S(Ns%LoadDBCrossPKUnNotifyOverInfo cnt :%s( RQRWRR1RXR3ttagDBCrossPKUnNotifyOverInfoRZR[R}R(RR^R_R`RURaR~((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pyRbws 
(RcRdRRR€RVRb(((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pyR|^s
                 cCsïtjƒ}tjd|ƒxË|jƒD]½\}}|\
}}}}}}    }
} } } tj|ƒs€tjd|ƒq*ntjƒj|ƒ}| s«tj|ƒr„tjd|ƒt    j
ƒ}|j ƒ||_ ||_ d|_||_d|_||_||_tgƒ|_t|jƒ|_||_|    |_|
|_| |_| |_| |_tjƒj||ƒq*nt|ƒ}|j ddd|t|ƒƒtjd||||||    |
| | |j!ƒf
|ƒq*WdS(Ns8===ÊÕµ½¿ç·þ·þÎñÆ÷ͬ²½µÄ¿ç·þPK½á¹û=== curServerGroupID=%ss%    ²»ÊDZ¾·þÍæ¼Ò£¬²»´¦Àí! playerID=%ss>    Íæ¼Ò²»ÔÚÏß »òÍÑ»úÖУ¬ÏÈ»º´æ£¬Íæ¼ÒÉÏÏߺóÔÙͬ²½£¬playerID=%sitCrossPKOverInfos†Í¨ÖªµØÍ¼¿ç·þPK½áËã: zoneID=%s,seasonID=%s,timeStr=%s,winnerID=%s, pkScore=%s,danLV=%s,cWinCount=%s,addScore=%s,tagPlayerID=%s,mapID=%s("RtGetServerGroupIDR R$t PlayerControltGetDBPlayerAccIDByIDRsRttGetIsTJGR3R‚RZR\R]tRoomIDtTimeStrtOverTypeRtWinnerIDRutRoundWinnerInfoR2tRoundWinnerLenRR?t    CWinCounttAddScoret TagPlayerIDt TagPlayerNameR.t!GetCrossPKUnNotifyOverInfoManagerRRvtGetMapID(R%tcurServerGroupIDRotoverInfoR R R$R#RÿRRRR÷R"tplayerR~Ry((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pyRƒsD $ 
                                                         3c Cs
|jƒ}tjƒj|ƒ}|s+dS|j}|j}|j}|j}|j}|j    }|j
}    |j }
|j } |j } t|||||||    |
| | g
ƒ} |jddd| t| ƒƒtjd|||||||    |
| |jƒf
|ƒdS(NiRƒs•Íæ¼ÒÉÏÏß֪ͨµØÍ¼Î´½áËãµÄ¿ç·þPK½áËã: zoneID=%s,seasonID=%s,timeStr=%s,winnerID=%s,pkScore=%s,danLV=%s,cWinCount=%s,addScore=%s,tagPlayerID=%s,mapID=%s(RjR.R’R€R\R]R‰R‹RR?RŽRRR‘RuRvR2RR R“(RmRoR~R R R$R#RÿRRRR÷R"Ry((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pyRϬs&                                         *    /cCs+i}|j|ƒtjd||ƒdS(Ns
CrossPK_%s(tupdatetDataRecordPackt SendEventPack(RgtdataDictt
drDataDict((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pytDR_CrossReamlPKÁs (/RR…R´R˜RÐR3RRRkR.RâR‚R,R°RQRRRR6ttimetobjectRRqRzR¦RÂRÅRÉRÆRìRîRöR&R‘RóR(R4R5R\R`RbR¶R)R|RRÏRœ(((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pyt<module>sX                    {            G    ;              1            F  ^                         C    *%    )