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
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
x{[c@scddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZdZiagaiaiaiaiagae jZe jZe jZ e!dƒZ"\Z#Z$Z%e!dƒ\Z&Z'Z(Z)Z*Z+d„Z,d„Z-d„Z.d„Z/d    „Z0d
„Z1d „Z2d „Z3d „Z4d„Z5d„Z6d„Z7d„Z8d„Z9d„Z:d„Z;dZ<dZ=d„Z>d„Z?d„Z@d„ZAd„ZBd„ZCd„ZDd„ZEeFd„ZGeFd „ZHd!dXd"„ƒYZId#dYd$„ƒYZJd%„ZKd&„ZLd'„ZMeNd(„ZOd)„ZPeNd*„ZQd+„ZRd,„ZSd-„ZTd.„ZUd/„ZVd0„ZWd1„ZXd2„ZYd3„ZZd4„Z[d5„Z\d6„Z]d7„Z^d8„Z_d9„Z`d:„Zaid;„Zbd<„ZceFd=„Zdd>„Zed?„Zfd@„ZgdA„ZhdB„ZidC„ZjdD„ZkdE„ZldF„ZmdG„ZndH„ZodI„ZpdJ„ZqdK„ZrdL„ZsdM„ZtdN„ZudO„ZvdP„ZwdQ„ZxdR„ZydS„ZzdT„Z{dU„Z|dV„Z}dW„Z~dS(ZiÿÿÿÿNiiicCst|dƒdS(NtPlayerDisconnect(tSendCancelMergePKMatch(t    curPlayer((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyt OnLeaveServerQs cCs
|jƒS(N(tGetName2(tbbData((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytGetBBPlayerAccIDgscCs
|jƒS(N(tGetID(R((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytGetBBMergePlayerIDhscCs
|jƒS(N(R(R((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyt GetBBPlayerIDjscCs |j|ƒS(N(tSetID(RtplayerID((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyt SetBBPlayerIDkscCs|jƒdS(Nid(tGetID2(R((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytGetBBPlayerGrademscCs|jƒdS(Nid(R (R((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytGetBBPlayerMaxGradenscCs*tt|ƒ|ƒ}|j|d|ƒS(Nid(tmaxRtSetID2(RtgradetmaxGrade((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytSetBBPlayerGradeoscCs
|jƒS(N(tGetName1(R((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytGetBBPlayerNamerscCs |j|ƒS(N(tSetName1(Rtname((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytSetBBPlayerNamesscCs
|jƒS(N(tGetType2(R((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytGetBBPlayerJobtscCs |j|ƒS(N(tSetType2(Rtjob((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytSetBBPlayerJobuscCs
|jƒS(N(t    GetValue1(R((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytGetBBFightPowervscCs |j|ƒS(N(t    SetValue1(Rt
fightPower((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytSetBBFightPowerwscCs
|jƒS(N(t GetCmpValue(R((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytGetBBMergePKScorexscCsŸ|j|ƒtjdƒ}x;t|tƒD])\}}||kr-t||ƒdSq-Wtdt|tƒdƒ}t||ƒtj    d||fƒdS(Nt MergePK_MatchiisA¿ç·þPKÕÒ²»µ½·ÖÖµ¶ÔÓ¦¶Îλ, Ä¬ÈÏÉèÖÃΪ×î´ó¶Îλ!score=%s,maxGrade=%s(
t SetCmpValuet ReadChConfigtGetEvalChConfigt    enumeratetDef_Match_StepScoreListRRtlent    GameWorldtErrLog(RtscoretmatchCfgRtsScoreR((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytSetBBMergePKScoreys    i †i NcCs|jƒtS(N(t GetCmpValue2tPKCnt_CalcValue(R((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytGetBBMergePKWinCnt‰scCs*tt|ƒ}|j|tt|ƒƒS(N(tmintPKCnt_MaxValuet SetCmpValue2R4tGetBBMergePKCnt(Rt totalWinCnt((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytSetBBMergePKWinCntŠscCs|jƒtS(N(R3R4(R((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyR9scCs*tt|ƒ}|jt|ƒt|ƒS(N(R6R7R8R5R4(RtpkCnt((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytSetBBMergePKCntŽscCs|jƒtS(N(t GetCmpValue3R4(R((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytGetBBMergePKCWinCnt“scCs*tt|ƒ}|j|tt|ƒƒS(N(R6R7t SetCmpValue3R4tGetBBMergePKMaxCWinCnt(RtcWinCnt((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytSetBBMergePKCWinCnt”scCs|jƒtS(N(R>R4(R((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyRA—scCs*tt|ƒ}|jt|ƒt|ƒS(N(R6R7R@R?R4(Rt
maxCWinCnt((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytSetBBMergePKMaxCWinCnt˜scCs§tjƒj|ƒ}|s%|dgS|j|ƒ}|dkrJ||gS|jƒrqtjd|ƒ|dgS|s|dgS|j|ƒ}|j|ƒ||gS(s¸'
    ¸ù¾ÝÕ˺ŻñÈ¡¶ÔÕ½Íæ¼ÒÊý¾ÝÐÅÏ¢
    @param billboardIndex: ÅÅÐаñË÷Òý
    @param playerID: Íæ¼ÒID,
    @param isAdd: ÕÒ²»µ½Êý¾ÝʱÊÇ·ñÌí¼ÓÐÂÊý¾Ý
    @return: [billBoard, bbData]
    s%¿ç·þPK»ý·Ö°ñµ¥ÒÑÂú£¡billboardIndex=%sN(    R-t GetBillboardt FindBillboardtNonetFindByIDtIsFullR.tAddToBillboardtSetType(tbillboardIndexR tisAddt    billBoardR((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytGetMatchPlayerBillboardDataœs    
 
 
 
 c Csättƒƒ}d}|s`tjdƒ}|t}tjƒj|ƒ}|||kr`dSntjƒj||ƒtj    d|||fƒxMt
j t
j gD]9}tj ƒj|ƒ}    |    sÊq£ng}
|t
j krì|    jƒnxt|    jƒƒD]|} |    j| ƒ} |
j| jƒ| jƒ| jƒ| jƒ| jƒ| jƒ| jƒ| jƒ| jƒ| jƒg
ƒqÿW||||
g} tj    d|||t|
ƒtt|
ƒƒfƒt j!t"j#d| t$ƒq£WdS(NtPKMatchSyncBBToClientServerR&sN¿ªÊ¼Í¬²½¿ç·þ»ý·Ö°ñµ¥µ½×Ó·þÎñÆ÷¡£¡£¡£isForce=%s,actionState=%s,isStateChange=%ssj    Í¬²½¿ç·þPK»ý·Ö°ñµ¥µ½×Ó·þÎñÆ÷: isStateChange=%s,actionState=%s,bbType=%s,bbDataListLen=%s,dataStrLen=%si(%tinttIsMergePKMatchOpenR(R)tDef_Match_SyncBillboardTickR-t GetGameWorldt GetDictByKeytSetDicttLogt ShareDefinetDef_BT_MergePKDaytDef_BT_MergePKWeekRFRGtSorttxrangetGetCounttAttappendRR RRRRt    GetValue2R$R3R>R,tstrtMergeBroadcasttSendBroadcastMergetChConfigtDef_MergePKSyncBillboardtFalse(tisForcettickt isStateChanget actionStatetprocessTickKeyR0t processTicktlastProcessTicktbbTypeROt
bbDataListtindexRtsyncList((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyt__SyncBillboardToClientServerÂs6
 *&    )tPlayerExtendInfocBseZd„ZRS(cCs:d|_d|_d|_d|_d|_d|_dS(Nti(taccIDR t
playerNameR"tplayerLVtmaxHP(tself((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyt__init__ìs                        (t__name__t
__module__R{(((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyRtést MatchPlayercBseZd„ZRS(cCs:||_||_||_||_||_||_dS(N(RvR RwtpkScoreR"t    matchTick(RzRvR RwRR"Ri((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyR{ùs                        (R|R}R{(((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyR~õscCs¢tjƒ}tj}tj||j|ƒƒxmtjtjtjgD]S}|j|ƒ}|dkrŠt    j
|ƒ}|j ||ƒntj||ƒqGWdS(Ni( R-RURYt Def_Notify_WorldKey_MergePKStatetSendMapServerMsgExRVt Def_Notify_WorldKey_MergePKDayIDt#Def_Notify_WorldKey_MergePKSeasonIDt*Def_Notify_WorldKey_MergePKSeasonStartTimetPlayerDBGSEventtGetDBGSTrig_ByKeyRW(t    gameWorldt
pkStateKeytidKeytactionID((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytOnMapServerInitOKs      c Cs¾tjƒsdStjdƒ}|ddkrDtjd|ƒdStj}tj}tj}tj    }t
j |ƒ}t
j |ƒ}t
j |ƒ}t
j |ƒ}    |t j krÃ|dkrÃdStjƒ}
iagaiaiatjƒjƒ|    } tjƒ} | jƒ} ttjƒƒ}tj|t jƒ}tj|t jƒ}||dd}tj|t jƒ}|t jkr"|dksŸ||kr/|d7}|| dd}tj|t jƒ}|}t|
||ƒt|
||ƒtjtjƒtj d    |||||||fƒn&tj d
|||||||fƒtj!d |t j"ƒ}tj|t j"ƒ}tj|t j"ƒ}|dkrù||krùtjtj#ƒt|
||ƒtj d |||||fƒ|}n tj d |||||fƒd} n|t j kr||ddd}tj|t jƒ}||k}|r£d} tj d|||||||||f    ƒn,tj d|||||||||f    ƒt$|ƒtj dƒt%j&tj#ƒtj dƒt%j&tjƒn|t j'kr5tj dƒnt|
tj(|t)ƒ| |    krjt|
|| ƒn||||| g}t*j+t j,d|t)ƒtjƒj-ƒ}t.t/|t/ƒdS(sR ¿ç·þPKÈü״̬±ä¸ü´¦Àí£¬ ½ö¿ç·þÖ÷·þÎñÆ÷ÓÐЧ£¬ ´¦Àí״̬ͬ²½¸ø×Ó·þÎñÆ÷½øÐÐÏàÓ¦µÄ´¦Àí NtMergePK_Seasoniis9¿ç·þPKÈü¼¾Ñ­»·ÖÜÆÚÅäÖôíÎó, ±ØÐëΪ7µÄ±¶Êý! seasonCycle=%siiis`¿ç·þPKÐÂÈü¼¾¿ªÆô: newSeasonID=%s,newSeasonStartTime=%s(%s),curTime=%s(%s),oldSesonEndTime=%s(%s)sX¿ç·þPK±¾Èü¼¾ÒѾ­¿ªÆôÁË: seasonID=%s,seasonStartTime=%s(%s),curTime=%s(%s),endTime=%s(%s)s %s 00:00:00s<¿ç·þPKÐÂÈÕÈü¿ªÆô: seasonID=%s,dbDayID=%s(%s),curDayID=%s(%s)sB¿ç·þPK±¾ÈÕÈüÒѾ­¿ªÆôÁË: seasonID=%s,dbDayID=%s(%s),curDayID=%s(%s)se¿ç·þPKÈü¼¾½áÊø: seasonID=%s,startTime=%s(%s),endTime=%s(%s),setSeasonEndDateStr=%s(%s),curTime=%s(%s)sz¿ç·þPKÈü¼¾Î´½áÊø, ½ö¹Ø±Õµ±ÈÕPK״̬!: seasonID=%s,startTime=%s(%s),endTime=%s(%s),setSeasonEndDateStr=%s(%s),curTime=%s(%s)s±¸·ÝÈÕ»ý·Ö°ñ...s±¸·ÝÖÜ»ý·Ö°ñ...s¿ç·þÆ¥ÅäPK»î¶¯ÔÝÍ£...(0R-t IsMergeServerR(R)R.RYRƒR„R…tDef_Notify_WorldKey_IsSeasonEndR†R‡RetDef_Action_CloseRUtg_matchPlayerDicttg_matchPlayerListtg_preparePlayerDicttg_prepareRoomDicttGetVSRoomManagertDeleteAllVsRoomst GetServerTimetweekdayRRttimetChangeTimeNumToStrtTYPE_Time_YmdFormattDef_Action_Opent__SetMergePKActionKeyValuetPlayerBillboardtClearBillboardByIndexR[RXtChangeTimeStrToNumtTYPE_Time_FormatRZt__SaveTopPlayerEquipViewtDataRecordPacktDR_BillboardDataByDaytDef_Action_PauseRRgRcRdtDef_MergePKActionStatetGetTickRstTrue(tstatet seasonCycletdayIDKeyt seasonIDKeytseasonStartTimeKeytisSeasonEndKeytdbDayIDt
dbSeasonIDt dbStartTimet dbIsSeasonEndRˆt isSeasonEndtdayTimetweekDaytcurTimet
curDateStrtdbStartDateStrtendTimet
endDateStrtnewSeasonStartTimetnewSeasonStartDateStrtdayIDtcurDayIDDateStrtdbDayIDDateStrtsetSeasonEndTimetsetSeasonEndDateStrtisSeasonEndDatetactionStateInfoRi((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytOnMergePKMatchStateChanges¤                    
                                  
   cCsŸtt|ƒtjƒjtjƒ}tjtj    ƒ}tjtj
ƒ}tjtj ƒ}tjtj ƒ}|||||g}t jtjd|tƒdS(s  ×Ó·þÆô¶¯³É¹¦Í¨Öª»î¶¯×´Ì¬¼°Êý¾Ý iN(RsR¨R-RURVRYRR†R‡RƒR„R…RRcRdReR¦Rg(RiR©R¯R°R±R²RÃ((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytOnClientServerInitOK—s cCsT|j||ƒ|r)tj||ƒntj||ƒtjd||fƒdS(Ns$    ¿ç·þPK״̬ID±ä¸ü key=%s,value=%s(RWR†tSetDBGSTrig_ByKeyR-R‚RX(RˆtkeytvaluetisSaveDB((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyR¥s c    Cs¡tjdƒtjƒ}|jtƒ}t|ƒ}tjdt|ƒƒtjƒjtƒ|jtƒ}tjdƒtjƒj    t
j ƒ}t ||t ƒtjdƒtjƒj    t
jƒ}t ||tƒtjd|ƒ|rt ||tƒn]|jtiƒ}xH|jƒD]:\}}|\}    }
} } t|t| | ||    |
ƒq Wt|tƒ} tjdt| ƒƒtjtjd| tƒdS(Ns¿ªÊ¼±£´æ¸ßÊÖÍæ¼ÒÄ£ÐÍÔ¤ÀÀÐÅÏ¢...s    ÀúÊ·¼Ç¼: %ss    ==´æ´¢×òÈÕ¸ßÊÖ°ñ==s    ==´æ´¢×òÈÕÈü¼¾¸ßÊÖ°ñ==s-    ==´æ´¢×òÈÕÈü¼¾¸ßÊÖ°ñ==isSeasonEndDate(%s)s&    ¹ã²¥×Ó·þ¸ßÊÖ°ñÍæ¼ÒÄ£ÐÍÔ¤ÀÀÐÅÏ¢: %si(R-RXtGetUniversalRecMgrt GetTypeListt#Def_MergePKTopPlayerEquipRecordTypet__GetAllTopPlayerViewInfoDictRbtDeleteRFRGRYRZt__SavePlayerViewInfoByBBDatatDef_TopPlayerView_YesterdayR[tDef_TopPlayerView_WeektDef_TopPlayerView_LastWeektgettitemst__SaveEquipViewRecDataRgRcRdRetDef_MergePKTopPlayerView(RÂtuniversalRecMgrt
recordListtlastTopPlayerDictt dayBillBoardt weekBillBoardtlastWeekTopPlayerDictR tviewInfoRwtequipViewInfoListRtordertsyncClientServerInfo((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyR¢®s0      cCsÚi}xÍt|jƒƒD]¹}|j|ƒ}t|ƒ\}}}}}    }
|j|iƒ} | j|gƒ} | s|gn| d} | j|
ƒ|    | ||g| |<| ||<|r|tkr| t|<qqW|S(Ni(R]tCountR_t__GetPlayerModelViewInfoRÓR`tg_playerEquipViewDict(RØtisUpdPlayerEquipViewtallTopPlayerDicttitrecDatatdataTypeRRßR Rwt equipViewInfot viewInfoDicttplayerInfoListRÞ((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyRÍÚs 
c    Cs“|s
dStd|jƒƒ}xmt|ƒD]_}|j|ƒ}t|ƒ}tj|gƒ}t||t|ƒ|d|t    |ƒ|ƒq,WdS(Nii(
R6R^R]R_R    RãRÓRÕRR(RORØRètmaxIndexRqRR RÞ((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyRÏîs c        Cs=x6|D].}|jƒ}t|||||||ƒqWdS(N(tAddRect__SetPlayerModelViewInfo(    RØRèRRßR RwRÞRéRç((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyRÕûs   cCs^|jƒ}|jƒ}|jƒ}|jƒ}|jƒ}|jƒ}||||||fS(N(RRat    GetValue3t    GetValue4t GetStrValue2t GetStrValue3(RçRèRRßR RwRé((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyRâs      cCstjd||||||fƒt|ƒ}|j|ƒ|j|ƒ|j|ƒ|j|ƒ|j|ƒ|j|ƒdS(NsM    ±£´æ¼Í¼ dataType=%s,job=%s,order=%s,playerID=%s,name=%s,equipViewInfo=%s(    R-RXRbR!t    SetValue2t    SetValue3t    SetValue4t SetStrValue2t SetStrValue3(RçRèRRßR RwRé((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyRî s           cCstjƒjtjƒtjkS(N(R-RURVRYRReRœ(((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyRSsc Cs¥|d}|d}|d}ttj|ƒd}|sUtjd||fƒdSt|ƒ}t|ƒ}||krštjd||||fƒdS|dkrHtj    dƒ\}}    t
|    ƒ}
|
dkr÷tjd    |||||
fƒdS|||
||g} t j t jd| tƒtjd
|||||
fƒnY|d kr¡t||ƒtj|||ƒtt|ƒtjd ||||fƒndS( NRvR ttypeisEClientServer_RecoverMergePKWin Íæ¼Ò²»ÔÚÖܰñÀïÃæ£¡accID=%s,playerID=%ssVClientServer_RecoverMergePKWin ²»ÐèÒª»Ö¸´Á¬Ê¤£¡accID=%s,playerID=%s,cWin=%s,maxCWin=%stMergePKWinRecoverCostisaClientServer_RecoverMergePKWin ÏûºÄ¼ÆËãÒì³££¡accID=%s,playerID=%s,cWin=%s,maxCWin=%s,costMoney=%ssBÇëÇó»Ö¸´Á¬Ê¤£ºaccID=%s,playerID=%s,cWin=%s,maxCWin=%s,costMoney=%sis=¿Û·Ñ³É¹¦È·Èϻָ´Á¬Ê¤£ºaccID=%s,playerID=%s,cWin=%s,maxCWin=%s(RPRYR[R-R.R?RARXR(R)tevalRcRdRetDef_RecoverMergePKWinCostRgRCR£tDR_RecoverMergePKWinRsR¨( tplayerInfoDictRiRvR t recoverTypeRtcWintmaxCWint    moneyTypet
costFormatt    costMoneyt costInfoList((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytClientServer_RecoverMergePKWins<
 
 
                      c    
CsRtjƒstjdƒdStƒs7tjdƒdS|d}|d}|d}|d}ttj|ƒd}|sdn    t|ƒ}|t    kr´tjd    ||fƒdS|t
krÛtjd
||fƒdSt ||||||ƒ}|t    |<|t krt j |ƒntjd |||||tt ƒtt    ƒfƒdS( Ns"·Ç¿ç·þ·þÎñÆ÷²»´¦Àí¿ç·þPKÆ¥ÅäÇëÇó£¡s&¿ç·þÆ¥ÅäPK»î¶¯Î´¿ªÆô£¬²»ÔÊÐíÇëÇóÆ¥Å䣡RvR RwR"iis>ÖØ¸´Ìá½»¿ç·þPKÆ¥ÅäÇëÇó£¡ÒѾ­ÔÚÆ¥Åä¶ÓÁÐÀplayerID=%s,accID=%ss>ÖØ¸´Ìá½»¿ç·þPKÆ¥ÅäÇëÇó£¡ÒѾ­ÔÚ×¼±¸¶ÓÁÐÀplayerID=%s,accID=%ssbÍæ¼Ò¼ÓÈëÆ¥Åä: accID=%s,playerID=%s,playerName=%s,pkScore=%s,fightPower=%s,playerCnt=%s,dictÈËÊý=%s(R-RŽR.RSRXRPRYR[R%R‘R“R~R’R`R,(    RýRiRvR RwR"RRt matchPlayer((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyt ClientServer_RequestMergePKMatchGs2       
 
 
 
 
     )cCsätjƒrdStƒsdS|jtjƒr\tjd|jƒƒ|jtjdƒdSi|j    ƒd6|jƒd6|j
ƒd6|d6|j ƒd6}t j tj|ƒtj|dƒtjdt|ƒ|jƒƒdS(    Ns:±¾´ÎÀëÏßΪҪµÇ½¿ç·þ·þÎñÆ÷µÄ×Ô¶¯ÀëÏßÐÐΪ£¬²»·¢ËÍÈ¡ÏûÆ¥Å䣡iRvR RwtreasontvsRoomIDs*·¢ËÍÈ¡Ïû¿ç·þPKÆ¥Åäµ½¿ç·þ·þÎñÆ÷£ºdataMsg=%s(R-RŽRSRVRet"Def_PlayerKey_IsLoginToMergeServertDebugLogt GetPlayerIDRWtGetAccIDtGetNamet GetVsRoomIdt MergeChildMsgt!SendMergerChildToCenterStringDatatDef_CancelMergePKMatcht PlayerControlt SetVsRoomIdRXRb(RRtdataMsg((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyRos"        c
CstjƒstjdƒdStƒs*dS|d}|d}|d}|d}|d}tjd||||ttƒ|fƒ|tkrètj|ƒ}|tkrÅtjtj    |ƒƒntjd||ttƒfƒn|t
krt
j|ƒtjd    ||fƒng}x#t j ƒD]\}    }
t } x'|
D]} | j|krGt} PqGqGW| svq.n|j|    ƒx½|
D]µ} | j} | j}||kr´qŠn|t
krêt
j|ƒtjd
| ||    fƒn| tkr    tjd | ƒn| t|<tjd | ||    ttƒttƒfƒqŠWq.W|r
tjd t|ƒt|ƒfƒtjƒ}x‹|D]€}|t kr¶t j|ƒtjd|ƒn|j|ƒ}|sßtjd|ƒqƒtjƒj|ƒtjd|ƒqƒWndS(Ns"·Ç¿ç·þ·þÎñÆ÷²»´¦ÀíÈ¡Ïû¿ç·þPKÆ¥Å䣡RvR RwRR    sSÍæ¼ÒÈ¡ÏûÆ¥Åä: reason=%s,accID=%s,playerID=%s,playerName=%s,playerCnt=%s,vsRoomID=%ss>    ´ÓÆ¥Åä¶ÓÁÐÖÐɾ³ý: accID=%s,playerID=%s,Æ¥Åä¶ÓÁÐÊ£ÓàÈËÊý=%ss*    ´Ó×¼±¸¶ÓÁÐÖÐɾ³ý: accID=%s,playerID=%ssG    ½«Ö®Ç°Æ¥ÅäµÄ¶ÔÊÖ´Ó×¼±¸¶ÓÁÐÖÐɾ³ý rpAccID=%s,rpPlayerID=%s,roomID=%sise    ½«Ö®Ç°Æ¥ÅäµÄ¶ÔÊÖÖØÐ¼ÓÈëÆ¥Åä¶ÓÁÐÍ· rpAccID=%s,rpPlayerID=%s,roomID=%s,Æ¥ÅäÈËÊý±ä¸ü=%s,dictÈËÊý=%ss%    É¾³ý·¿¼äIDÁбí, delRoomCnt=%s, %ss0        g_prepareRoomDict ÒƳý·¿¼ä: delRoomID=%ss<        È¡ÏûÆ¥ÅäGetVSRoomManagerÕÒ²»µ½¶ÔÕ½·¿¼ä: delRoomID=%ss<        GetVSRoomManagerɾ³ýÒѾ­´´½¨µÄ¶ÔÕ½·¿¼ä: delRoomID=%s(R-RŽR.RSRXR,R’R‘tpopRqR“R”RÔRgR R¨R`RvtinsertRbR•t
FindVsRoomtDeleteVsRoomById(RýRiRvR RwRR    Rt delRoomIDListtroomIDt
playerListtisInRoomtplayertrpAccIDt
rpPlayerIDt    vsRoomMgrt    delRoomIDt    delVSRoom((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytClientServer_CancelMergePKMatchŠsp      
 
 
 
 
       #                 
    +#    cCsËtjƒstjdƒdS|d}|d}|d}|d}|d}|d}|d}|d    }    tjƒj|ƒ}
|
stjd
|ƒdS|
jƒtjkrÍtjd |
jƒƒdS|
jƒd krë|
j    ƒn |
j
d ƒ} | sdS| j |ƒ} | s+| j |ƒ} n| j d ƒ| j|ƒ| j|ƒtj|tƒƒ} || _|| _|| _|| _|| _|    | _| t|<tjd|||||fƒdS(Ns"·Ç¿ç·þ·þÎñÆ÷²»´¦ÀíÈ¡Ïû¿ç·þPKÆ¥Å䣡t playerAccIDR Rwt    playerJobR    R"RxRys@Íæ¼Ò¿ç·þ¶ÔÕ½Êý¾Ý×¼±¸OK, µ«ÕÒ²»µ½¸Ã¶ÔÕ½·¿¼ä(%s)£¡¿ÉÄܶÔÊÖÒÑÈ¡Ïû£¡s8Íæ¼Ò¿ç·þ¶ÔÕ½Êý¾Ý×¼±¸OK, µ«·¿¼ä״̬·ÇµÈ´ý״̬, state=%s£¡iisVÍæ¼Ò¿ç·þPK×¼±¸Íê±Ï: playerAccID=%s,playerID=%s,playerName=%s,fightPower=%s,vsRoomID=%s(R-RŽR.R•Rt GetRoomStateRYtDef_VsRoom_State_WaitPlayertGetVsTeamCountt    AddVsTeamt    GetVSTeamt GetMemberByIdt    AddMembert
SetIsReadyt SetPlayerNametSetJobtg_roomMemberExtendInfoDictRÓRtRvR RwR"RxRyRX(RýRiR%R RwR&R    R"RxRytvsRoomtroomTeamtmembert
extendInfo((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytClientServer_MergePKPrepareOKÞsL  
 
 
 
 
 
 
 
-                           
    cCs’tjdƒg}tjƒ}x3t|jƒƒD]}|j|ƒ}|sSq2n|jƒ}|tjkrtq2n|j    ƒdkrŒq2n|j
ƒ}tj |j ƒƒ}|dkr¿q2n|j dƒ}i}    xt|jƒƒD]‰}
|j|
ƒ} | sPn| jƒsPn| jƒ} tj| ƒ} | s=dn| j}| sRdn| j}| sgdn| j}| s|dn| j}ttj| ƒd}|s§dn    t|ƒ}ttj| ƒd}|s|| jƒ| jƒdddddd||||g |    | <qç|t|ƒt |ƒt!|ƒt"|ƒt|ƒt#|ƒt$|ƒt%|ƒ||||g |    | <qçWt&|    ƒt'krŒq2n|j(|||    gƒ|j)tj*ƒtjd||t+|    ƒfƒ|t,kr2t,j-|ƒ}tjd|ƒxP|D]E}|j.}|t/krt/j-|ƒtjd|j|fƒqqWq2q2Wtjdt&|ƒƒ|rŽt0j1t2j3d|t4ƒndS(    Ns===ÒÑ×¼±¸ºÃµÄ¶ÔÕ½·¿¼ä´¦Àí===iRuis7    ×¼±¸ºÃµÄ·¿¼ä: MapID=%s,roomID=%s,readyMemberDict=%ss<        ×¼±¸·¿¼ä×ֵ仺´æ g_prepareRoomDict pop ÒƳýroomID=%ssM            ×¼±¸Íæ¼Ò×ֵ仺´æ g_preparePlayerDict pop ÒƳýaccID=%s,playerID=%ss    ÒÑ×¼±¸ºÃµÄ¶ÔÕ½·¿¼äÊý: %s(5R-RXR•R]tGetVsRoomCountt    GetVsRoomR'RYR(R)t GetCreaterIDtToIntDeftGetPwsR+trangetGetMemberCountt    GetMembert
GetIsReadyR R1RÓRvR"RxRyRPRZR%R[t GetPlayerNametGetJobRRR9R?R5RARR,tDef_RoomMemberCntR`t SetRoomStatetDef_VsRoom_State_PrepareFightRbR”RR R“RcRdRetDef_MergePKReadyOKRoomListRg(RitsendReadyOKRoomListR!t vsRoomIndexR2t    roomStateRt    roomMapIDR3treadyMemberDicttmIndexR4t memPlayerIDR5texAccIDR"RxRyt    dayBBDatatdayScoreRtpreparePlayerListt    prePlayerR ((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyt__ReadyOKRoomPlayerProcesssˆ               +                                                    c
Cs‚tjƒsdStƒsdStt|ƒtjdƒ}|t}d}tjƒj    |ƒ}|||krrdStjƒj
||ƒt |ƒt t ƒdkr¿tjdt t ƒƒdStjdt t ƒƒ|t}|t}|t}tt dtjdƒƒ}g}    t|||    |ƒt |    ƒ|krPt||||    ƒn|    | }    t|    |ƒtjdt |    ƒƒdS(    NR&tPKMatchLastTickisÆ¥ÅäPKÈËÊý(%s) < 2¸ö£¬²»´¦Àí£¡sA¡ï¡ï¡ï¡ï¡ï¡ï¡ï¡ï¡ï¡ï¿ªÊ¼¿ç·þPKÆ¥Åä(×ÜÈËÊý:%s)¡ï¡ï¡ï¡ï¡ï¡ï¡ï¡ï¡ï¡ïRÇRs+==========Æ¥Åä½áÊø(×ÜÆ¥Åä¶ÓÎé:%s)==========(R-RŽRSRsRgR(R)tDef_Match_ProcessTickRURVRWRRR,R’RXtDef_Match_MaxGroupCnttDef_Match_OutTimeTickR+tsortedtoperatort
attrgettert__DoMatch_OutTimePlayert__DoMatch_StepScorePlayert __DoSetVSRoom(
RiR0RmRlRnt maxGroupCntt outTimeTickt stepScoreListt scoreSortListtmatchPlayerVSList((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytOnPKMatchProcessns:      
 
 
 
 
 
 c Cs>tjd||fƒx tD]}t|ƒdkrQtjdt|ƒƒPn||j|krjqntjd||j||j|fƒ||kr°tjdƒqn|j|ƒ}|t|ƒdkrù|d}tjd||fƒnÑ|dkr)|d}tjd||fƒn¡|d}|d}||}    ||}
t|    j|jƒ} t|j|
jƒ} | | kr|n|}tjd    ||j||    j||
j| | |f    ƒ||krõ|j|ƒ|j|ƒ} n.||kr|j|ƒ} |j|ƒnq|j    || gƒqWdS(
Ns1 ==ÓÅÏÈÆ¥Å䳬ʱµÈ´ýÍæ¼Ò==×î´óµÈ´ýʱ¼ä:%s, tick=%sis    µ±Ç°Íæ¼ÒÊý%s<=1£¬²»ÔÙÆ¥Å䣡s)    ³¬Ê±Íæ¼Ò, %s-%s=%s >= outTimeTick(%s)s        ÒѾ­±»Æ¥Åä×ßÁË£¡s6        ³¬Ê±Íæ¼ÒË÷Òý%s,×îºóÒ»¸ö,ĬÈÏÆ¥ÅäÉÏÒ»¸öË÷Òý%s£¡is4        ³¬Ê±Íæ¼ÒË÷Òý%s,µÚÒ»¸ö,ĬÈÏÆ¥ÅäÏÂÒ»¸öË÷Òý%s£¡s^        ³¬Ê±Íæ¼ÒË÷Òý-»ý·Ö(%s-%s),ÉÏÒ»¸ö(%s-%s),ÏÂÒ»¸ö(%s-%s),preDiff=%s,nextDiff=%s,vsIndex=%s(
R-RXR’R,R€RqtabsRRR`(R`R^RaRiRt outTimeIndextvsIndextpreIndext    nextIndexRQt
nextPlayertpreDifftnextDifftvsPlayer((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyRZ¢sL       
 
 
 
 
 
       cCs tjd|t|ƒfƒg}tj|ƒ}x|D]‡}|sIPnd}x9t|ƒD]+\}}    |    j}
|
|krPn|}q\W|dkrq9n|j||d ƒ||d}q9Wtj    |ƒtjdt|ƒƒxgt|ƒD]Y\}} g} x'| D]} | j| j| j
fƒqWtjd|t | ƒfƒqõWxÇt |ƒD]¹}t }xb|D]Z} t| ƒdkrqrntjt t| ƒƒdƒ}|jƒ| j|dƒ}| j|dƒ}|j}|j}|j}|j}tj|ƒ}|s4tjd||fƒqrntj|ƒ}|sftjd||fƒqrn|j||gƒt}tjd    |j|j|j|j|j
|j|j|j|j|j
f
ƒqrW|sëtjd
|ƒPnt|ƒ|kr_tjd t|ƒƒPq_q_WdS( Ns8 ==Æ¥Åä»ý·Ö·Ö¶ÎÍæ¼Ò== maxGroupCnt=%s,scoreSortListLen=%siÿÿÿÿis    »ý·Ö·Ö¶Î¸öÊý: %ss        »ý·Ö¶Î×é %s: %siis,    µÈ´ý¶ÓÁÐÕÒ²»µ½Íæ¼Ò£¬accID=%s,playerID=%ssu    ³É¹¦Æ¥ÅäÍæ¼Ò:aAccID=%s,aPlayerID=%s,aName=%s,aScore=%s,aFP=%s VS bAccID=%s,bPlayerID=%s,bName=%s,bScore=%s,bFP=%ss8    ÒѾ­Ã»ÓÐÂú×ãÆ¥ÅäÌõ¼þµÄÍæ¼Ò! isMatchOK=%s, ²»ÔÙÆ¥Å䣡s3    ÒѾ­´ïµ½×î´óÆ¥ÅäÊý! ÒÑÆ¥Åä¶ÔÕ½Êý=%s, ²»ÔÙÆ¥Å䣡(R-RXR,tcopytdeepcopyR*RR`trandomtshuffleR"RbR]RgtsampletsortRRvR R‘RÓR.R¨Rw(R`R_R]RatsplitPlayerListttempPlayerListt    stepScoret    stepIndexRæRRt sPlayerListtstrListRt    isMatchOKt vsIndexListtaPlayertbPlayertaAccIDtbAccIDt    aPlayerIDt    bPlayerIDtamPlayertbmPlayer((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyR[Ùsp      
   ! 
                    *c Csú|s
dSg}tjƒ}tjdt|ƒƒxž|D]–\}}| s:| rZq:n|tksr|tkr•tjd|j|jfƒq:nd}x?tdƒD]1}tjddƒ}|j    |ƒs¨|}Pq¨q¨W|séq:n|j
|ƒ}    |    sq:nt j dƒt }
tj|
ƒ} |    j|ƒ|    jtjƒ|    jt| ƒƒ|j} |j} |j}|j}tjd| || || |fƒ|j|||ggƒt||ƒt||ƒq:W|rötjtjd|tƒndS(    Ns#===¸øÅä¶ÔµÄÍæ¼Ò¿ª·¿¼ä(Åä¶ÔÊý:%s)===sA    Íæ¼Ò²»ÔڵȴýÆ¥Åä¶ÓÁÐÀ¿ÉÄÜÒѾ­±»Æ¥Åä×ߣ¡aAccID=%s,bAccID=%siiiiÿÿR&sI    ¿ª·¿:mapID=%s,roomID=%s,aAccID=%s,aPlayerID=%s,bAccID=%s,bPlayerID=%s(R-R•RXR,R’RvR]RntrandintRt    AddVsRoomR(R)tDef_Match_MapIDListtchoicet SetOpenTickRCRYR(tSetPwsRbR R`t__PopMatchPlayerToPrepareRcRdRetDef_MergePKMatchResultRg(RaRitsendMatchResultListR!RzR{Rt_t    ranRoomIDtnewRoomt    mapIDListtmapIDR|R}R~R((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyR\*sP                           cCs—|j}|j}tjtj|ƒƒ}|tkrFtj|ƒn|t|<tj|gƒ}|j    |ƒ|t|<t
j d|||fƒdS(Ns@        ½«Æ¥ÅäÍæ¼Ò×ªÒÆµ½µÈ´ý¶ÓÁУ¡roomID=%s,accID=%s,playerID=%s( RvR R’RRqR‘R“R”RÓR`R-RX(RRRvR tmPlayertroomPlayerList((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyRˆfs         
 
cCsQi|d6|d6|d6|d6|d6|d6}|j|ƒtjd|ƒdS(NRtwinnerIDtloserIDt winnerWinCntt loserWinCnttoverTypet MergePKOver(tupdateR£t SendEventPack(RR’R“R”R•R–texDicttdataDict((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytDR_MergePKOverzs
 cECsªtjdt|ƒƒ|\}}}}}}}}g}    | sI| rtjd||fƒtjƒj|ƒtjƒ}
xu||gD]g} tjƒj| ƒ} | s³qŒnt| |
||ddd||ddddd|||    ggƒqŒWt    ||||||ƒdStjƒj
|ƒ} | s3dSt t j |tƒ\}}t t j|tƒ\}}t t j |tƒ\}}t t j|tƒ\}}t|ƒ}t|ƒ}t|ƒ}t|ƒ}t|ƒ}t|ƒ}tjdƒ}|\}}}}}|t|ƒkr'||n|d} t|ƒ}!|t|ƒkrY||n|d}"t|ƒ}#tdt||| |!ƒƒ}$t|||"|#ƒ}%tjd|||fƒtjd|||fƒtjd    | |!|$fƒtjd
|"|#|%fƒg}&d}'d}(d})d}*d}+d},d}-d}xt| jƒƒD]‰}.| j|.ƒ}/xqt|/jƒƒD]]}0|/j|0ƒ}1|1jƒ}2|1jƒ}3|1j ƒ}4|2t!krÊqnt!|2}5|5j"}6|5j#}7|2|k}8|8rþ|n|}9|9r|9t$|2<n|8r#|$n|%}:|8r5|n|};t%|;|6|2|3|4|7|:|8ƒ|8rf|n|}<t%|<|6|2|3|4|7|:|8tƒ    }=|8r·|=})|3}'t&|<ƒ}+|6},n|=}*|3}(|6}-|2}|&j'|2ƒqWqWWtjd tt$ƒƒtjƒj|ƒ|r!|j(ƒn|r*nd}>tjƒ}
|
|||+|,|-|||'|(|>|$|%|||    g}?tjd t|?ƒƒx‹|&D]ƒ} tjƒj| ƒ} | sít)j*t+j,d| |?gt-ƒtjd || fƒqnt.j/| t j tƒt| |?gƒqW|    rdi|&d6|    d6}@tjdt|@ƒƒt)j*t+j0d|@t-ƒn|)dkrŒt1j2dd|'|)gƒn|*dkr·t1j2dd|'|(|*gƒni|,d6|-d6|d6|d6|$d6|%d6}Ai|d6|d6|d6|d6}Bx~|Bj3ƒD]p\}C}Dt4|Dƒt5|Dƒt6|Dƒt|Dƒt7|Dƒt|Dƒt8|Dƒt9|Dƒt&|Dƒt:|Dƒg
|A|C<qWt    |||||||AƒdS(NsÊÕµ½MapServer_¿ç·þPKÕ½¶·½á¹û %ss9    Ã»ÓжÔÊÖÐÅÏ¢, ¸Ã³¡Õ½¶·ÊÓΪÎÞЧ!winnerID=%s,loserID=%siRut MergePK_Scoreiÿÿÿÿs/winnerDayScore=%s,winnerScore=%s,winnerGrade=%ss,loserDayScore=%s,loserScore=%s,loserGrade=%ss+wBaseScore=%s,wExScore=%s,winnerAddScore=%ss*lBaseScore=%s,lExScore=%s,loserAddScore=%ss ×°±¸»º´æ: %ss Õ½¶·½á¹û: %ss2Íæ¼Ò²»ÔÚÏß, PK½á¹ûͬ²½¸ø×Ó·þ!roomID=%s,playerID=%st playerIDListt luckyItemLists¹ã²¥×Ó·þ·¢·ÅÍæ¼ÒÎïÆ· %stPK_liubo_160510tPK_liubo_46483t
winerAccIDt
loserAccIDR”R•twinnerAddScoret loserAddScoretwinnerBBDataDaytwinnerBBDataSeasontloserBBDataDaytloserBBDataSeason(;R-RXRbR•RtGetCurrentDataTimeStrtGetPlayerManagertFindPlayerByIDt__NotifyPKOverInfoRœRRPRYRZR¨R[R%RR(R)R,RúRR6R R]R)R+R=R>R R@RAR1RvR"Rãt__UpdateMatchPKBillboardDataR?R`R\RcRdRetDef_MergePKUnNotifyOverInfoRgRžtSync_BillboardExtDef_MergePKLuckyItemRtMergeWorldNotifyRÔR    RR RR9R5RA(EtinfoListRR’R“R”R•twinnerEquipViewListtloserEquipViewListR–RŸttimeStrR RR2t billBoardDayR¦t billBoardWeekR§R¨R©twinnerDayScoret winnerScoret winnerGradet loserDayScoret
loserScoret
loserGradetscoreCfgt dayMaxScoretwBaseScoreListtwExScoreFormattlBaseScoreListtlExScoreFormatt
wBaseScoretwExScoret
lBaseScoretlExScoreR¤R¥Ržt
winnerNamet    loserNamet
notifyCWintnotifyStopCWint winnerCWinCntR¢R£t    teamIndexR3RKR4RLRwRR5RvR"tisWinRétaddScoret    bbDataDayt bbDataSeasont    notifyCntt
remainTimetoverInfotsyncLuckyItemDictRštdrBillboardDataDicttdrKeyR((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytMapServer_MergePKOversì -      & &      
          $           c    CsÉ|s
dS|jƒ}    |j|    ƒt||ƒt||ƒt||ƒt||ƒt|ƒ}
|
d} t|| ƒt|ƒ} |s’dn| d} t    || ƒt
|ƒ}t d||ƒ}t ||ƒt |ƒ}|sí|n|d}t||ƒt|ƒ}| |kr"| n|}t||ƒtjd|    |||||||
| ||||| | ||fƒ|sƒdStjdƒ\}}|r®| |kr®| S| rÅ| |krÅ| SdS(Niisš¸üпç·þPK»ý·Ö°ñ: type=%s,accID=%s,playerID=%s,name=%s,job=%s,addScore=%s,isWin=%s,pkCnt=(%s-%s),score=(%s-%s),winCnt=(%s-%s),cWin=(%s-%s),maxCWin=(%s-%s)tMergePK_WinNotify(tGetTypeRLRR RR#R9R=R?RCR%RR2R5R;RARER-RXR(R)(RRvR RwRR"RÐRÏt isNotifyCWinRoR<tupdPKCntRÿtupdCWinR/tupdScoretwinCntt    updWinCntRt
updMaxCWint cWinCntListt stopCWinCnt((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyR®'sB       
             ;cCs|jƒ}tjƒ}|jƒg|_xÅ|D]½}|\}}}}}    }
} } } }}}}}}}d}t|ƒdkr­t|dƒdkr­|dd}ntjƒ}|jƒ||_t|jƒ|_||_    ||_
||_ |    |_ t|j ƒ|_ |
|_t|jƒ|_| |_| |_| |_t|jƒ|_||_t|jƒ|_||_t|ƒ|_t|jƒ|_||_||_||_||_|jj|ƒtj d||f|ƒq2Wt|jƒ|_!t"j#||ƒdS(Nis*ͬ²½Íæ¼ÒÕ½¶·½á¹û: roomID=%s,luckyItemID=%s($R tChPyNetSendPackttagMergePKOverInfotCleart
PKOverListR,ttagMergePKOvertTimeStrtTimeLentRoomIDtOverTypet
RemainTimet WinnerAccIDtWinnerAccIDLent
LoserAccIDt LoserAccIDLentWinnerIDtLoserIDt
WinnerNamet WinnerNameLent    LoserNamet LoserNameLentWinnerAddScoreRbt LoserAddScoretLoserAddScoreLent WinnerWinCntt LoserWinCntt WinnerCWinCntt LuckyItemIDR`R-RXRát NetPackCommont SendFakePack(RtplayerPKOverListR tpkOverInfoPackRÕR¶RR–RÍR¢R£R’R“RÉRÊRÔR¤R¥R”R•RŸt luckyItemIDt
pkOverInfo((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyR­]sL  
     6( 
                                                            c Cs|s
dStjƒ}|\}}}}}tjd|ƒ|tjƒjtjƒkrst|tj|tƒntjd|ƒ|tj    tj
ƒkrÅt|tj
|ƒ|rÖt dƒqÖntjd|ƒ|t jkr tj}tj}tj}    tj    |ƒ}
tj    |ƒ} tj    |    ƒ} tjd|| || ||
fƒ||
krtjdƒt|
ƒtƒt|||ƒn tjdƒ|| krýtjdƒt| ƒtjƒjtƒt|||ƒt||    |ƒt dƒq tjdƒndS(    Ns+×Ó·þÊÕµ½¿ç·þPKÈü״̬ͬ²½ actionStateInfo=%ss/    ×Ó·þ¿ç·þPK״̬Ïàͬ, ²»´¦Àí! MergePKState=%ss6    ×Ó·þ¿ç·þPKÈü¼¾½áÊø×´Ì¬Ïàͬ, ²»´¦Àí! isSeasonEnd=%ssT    seasonID=%s,dbSeasonID=%s,startTime=%s,dbSeasonStartTime=%s,dayID=%s,dbDayID=%s,s    ×Ó·þ¿ç·þPKÈÕÈüÖØÖÃ!s    ×Ó·þ¿ç·þPKÈÕÈüÒѾ­¿ªÆôÁË!s    ×Ó·þ¿ç·þPKÈü¼¾ÖØÖÃ!s    ×Ó·þ¿ç·þPKÈü¼¾ÒѾ­¿ªÆôÁË!(R-RURXRVRYRRRgR†R‡RtSync_MergePKSeasonInfoRHReRœRƒR„R…t__GiveMergePKAwardByMail_Dayt__ResetMergePKDayAwardRecordt__GiveMergePKAwardByMail_SeasonRÊRÎtDef_MergePKAwardRecordType( RÃRˆR©tseasonIDt    startTimeR½R³R«R¬R­R¯R°tdbSeasonStartTime((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytOnRecvMergePKActionStateŽsJ                   
 
 c    
CsÁtj}tj}tj\}}tjdƒxŒ|D]„\}}xu|D]m}tjƒj|ƒ}|s€tj    d|ƒqHnt
j ||t ƒt j||||d||gƒqHWq5WdS(Ns=== ÊÕµ½PKÆ¥Åä½á¹û´¦Àí ===s(    Íæ¼Ò²»ÔÚÏß»ò²»ÊDZ¾·þÍæ¼Ò!playerID=%si(RYtDef_MergeAction_MergePKRetDef_MergeTransMapIDtDef_MergeTransMapPosR-RXR«R¬R RRR¨tPlayerMergeRegistertSendMergeActionReg(    t vsPlayerListt
actionTypeRtposXtposYRRR R((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytOnRecvMergePKMatchInfoÆs          *cCstjdƒx    |D]\}}}xï|jƒD]á}tj|ƒ}|sbtjd|ƒq0ntjƒj|ƒ}|s”tjd|ƒq0n|jt    j
dƒt j ƒ}|j ƒ||_||_g|_xú|jƒD]ì}|\ }    }
} } } }}}}}}}}t jƒ}|j ƒ|    |_t|    ƒ|_|
|_t|
ƒ|_| |_| |_| |_||_||_||_||_||_||_ ||_!||_"|jj#|ƒqåWt|jƒ|_$t%j&||ƒtjd||f|ƒq0WqWdS(Ns4===ÊÕµ½¿ç·þ·þÎñÆ÷֪ͨÒÑ×¼±¸ºÃµÄ¶ÔÕ½PK·¿¼äÐÅÏ¢´¦Àí===s#    ²»ÊDZ¾·þÍæ¼Ò readyOKPlayerID=%ss!    Íæ¼Ò²»ÔÚÏß readyOKPlayerID=%sis5    Í¨ÖªÍæ¼Ò½øÈë¿ç·þPK¶ÔÕ½·¿¼ä!roomMapID=%s,roomID=%s('R-RXtkeysRtGetRegisterPlayerRecR R«R¬RWReR
RåttagCanEnterMergePKRçtMapIDRìt
MemberListtvaluesttagCanEnterMergePKMembertAccIDR,tAccIDLent
PlayerNametNameLentJobtPKCntt    PKCWinCnttScoretDayScoretPKWinCntt
MaxCWinCnttGradet
FightPowertPlayerLVtMaxHPR`t    MemberCntRR(treadyOKRoomListRIRRJtreadyOKPlayerIDt
regRecDataRt    enterPackt
memberInfoRvRRR<t    pkCWinCntR/tpkWinCntt
maxCWInCntRR"RxRyROR4((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytOnRecvMergePKReadyOKRoomÜsR  
            - 
                                                    "c
Cs¯|jdgƒ}|jdgƒ}tjdƒ\}}}tjƒ}x`|D]X}tj|ƒ}|stjd|ƒqOn||}    tj    ||    ||g|ƒqOWdS(NRžRŸtMergePK_LuckyItemMails,¿ç·þPK»ñµÃÐÒÔËÎïÆ·£¬²»ÊDZ¾·þÍæ¼Ò playerID=%s(
RÓR(R)R-RªRRR tPlayerCompensationtSendPersonalItemMailEx(
tluckyItemInfoDictRžRŸttitlet contentTempletgetDayst
curTimeStrR R2tcontent((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytOnRecvMergePKLuckyItems  
 c Csd|\}}}}tjƒj|ƒ}|sBtjd|ƒdS|jƒx½|D]µ\
}}}}    }
} } } }}|j|ƒ}|j|ƒ|j|ƒ|j|ƒ|j    |    ƒ|j
|
ƒ|j | ƒ|j | ƒ|j | ƒ|j|ƒ|j|ƒqSWtjd|t|ƒ||fƒ|rG|tjkrGn|tjkr`tƒndS(Ns2OnRecvMergePKSyncBillboard °ñµ¥Î´³õʼ»¯! bbType=%ssM×Ó·þ¸üпç·þPK»ý·Ö°ñµ¥³É¹¦: bbType=%s,ÌõÊý=%s,isStateChange=%s,actionState=%s(R-RFRGR.RçRKRLRRtSetName2RR!RóR'R8R@RXR,ReRRYR[t__Sync_RecoverMergePKWinPlayer(tsyncBBDataInfoRjRkRoRpROR tid2tname1tname2ttype2tvalue1tvalue2tcmpValuet    cmpValue2t    cmpValue3R((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytOnRecvMergePKSyncBillboard#s2
+             
cCssts
dStj}tjƒj|ƒ}|s2dStjdttƒƒg}xÐtD]È}tjƒj    |ƒ}|s}qVn|j
|ƒ}|s˜qVnt |ƒt |ƒkrÇtjd|ƒqVnt j||tƒtjd|ƒtjƒ}|jƒtj||ƒ|j|ƒqVWx3|D]+}|tkr)tjtj|ƒƒq)q)WtjdttƒƒdS(Ns    ¼ì²éδͬ²½ÐøÊ¤Íæ¼Òid£¡%ss0        µ±Ç°Á¬Ê¤ != ×î´óÁ¬Ê¤ ²»Í¬²½£¡playerID=%ss/        Í¬²½×ÔÉíÖܰñ¸ø»Ö¸´Á¬Ê¤Íæ¼Ò£¡playerID=%ss    Ê£Óàδͬ²½ÐøÊ¤Íæ¼Òid£¡%s(tg_recoverMergePKWinPlayerIDListRYR[R-RFRGRXRbR«R¬RIR?RARžR°R¨RåttagRecoverMergePKWinOKRçRRR`RRq(RoROtsyncPlayerIDListR RRt recoverOKPackt    sPlayerID((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyRDFs:      
  cCsI|dkrE|tkrEtj|ƒtjd|ttƒfƒndS(Nis#Ìí¼Ó»Ö¸´Á¬Ê¤Íæ¼ÒID: playerID=%s, %s(RPR`R-RXRb(R ((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytAdd_RecoverMergePKWinPlayerps  c
Cs)tjƒ}|jtƒtjdƒ|jtƒ}xv|jƒD]h\}}tjd|ƒxH|jƒD]:\}}|\}}}    }
t|||    |
|||ƒqlWqBWtjƒ} x[t    d| j
ƒƒD]D} | j | ƒ} | dksÐ| j ƒ rqÐntj| tƒqÐWtjdƒdS(Ns"×Ó·þ¸üпç·þPK¸ßÊÖ°ñÔ¤ÀÀÐÅÏ¢¡£¡£¡£s    Ô¤ÀÀÀàÐÍ£ºdataType=%sis#    ×Ó·þ¸üпç·þPK¸ßÊÖ°ñÔ¤ÀÀÐÅÏ¢OK!(R-RÊRÎRÌRXRËRÔRÕR«R]tGetPlayerCounttGetPlayerByIndexRHt    GetInitOKtPlayerUniversalGameRectSendUniversalGameRecInfo(tinfoDictR×RØRèRêR RÝRwRÞRRßt playerManagerRqR((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytOnRecvMergePKTopPlayerViewxs"   $  cCs€|\}}}}}tjƒj|ƒ}|sEtjd|ƒdSt||||gƒ}|jddd|t|ƒƒdS(Ns9ÊÕµ½»Ö¸´Á¬Ê¤¿Û·ÑÐÅÏ¢, Íæ¼Ò²»ÔÚÏß »ò ·Ç±¾·þÍæ¼Ò£¡ accID=%sitMergePKRecoverWinCost(R-R«tFindPlayerByAccIDR RbtMapServer_QueryPlayerResultR,(RRvRRRÿRRt    playerMsg((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytOnRecvRecoverMergePKWinCostscCsä|\}}tj|ƒ}tjd|t|ƒf|ƒ|sVtjd|ƒdStjƒj|ƒ}|r…t||gƒdStjƒ}|j    t
ƒ}|j ƒ}|j |ƒ|j t|ƒƒtjd||ƒdS(Ns*×Ó·þÊÕµ½¿ç·þPKδͬ²½µÄ½á¹û playerID=%s, %ss    ²»ÊDZ¾·þÍæ¼Ò playerID=%ss;    Íæ¼Ò²»ÔÚÏß, ²åÈëδͬ²½µÄ¿ç·þPK½á¹ûͨÓüǼ£¡playerID=%s(RRR-RXRbR«R¬R­RÊRËt!Def_MergePKUnNotifyOverRecordTypeRíR!R÷(tunNotifyPKOverInfoR RÕRçRR×RØt    recordRec((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytOnRecvMergePKUnNotifyOverInfos"     c CsxtjƒrdSt|ƒtj|tƒg}|jƒ}|jƒ}tjƒ}|j    t
ƒ}|j ƒ}d}tj d|ƒxµt |ƒD]§}||}    |j|    ƒ}
|
s¾q“n|
jƒ|krÖq“n|
jƒ} y4t| ƒ} |j| ƒ|j|    ƒ|d7}Wq“tjd| |jƒƒq“Xq“W|rttj d|t|ƒf|ƒt||ƒndS(NisOnMergePKLogin recordCnt=%sisOnMergePKLogin eval(%s) error!s$Íæ¼ÒÉÏÏßͬ²½¿ç·þPK½á¹û: accID=%s, %s(R-RŽRRYRZR
R R RÊRËRcRáRXR]R_RRòRúR`RÎR.RbR­( RRRvR R×RØt    recordCnttdelCntRæt    dataIndexRçtoverStrRÕ((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytOnMergePKLogin·s> 
 
    " c     Cs2|tjdƒtkrtS|jƒ}tjƒj|ƒ}|s\tjd||ƒt    Sx»t
|j ƒƒD]§}|j |ƒ}xt
|j ƒƒD]{}|j|ƒ}|jƒ|kr—|drÑtjntj}    t|d|    gƒ}
|jddd|
t|
ƒƒt    Sq—WqoWtjd||ƒt    S(NR&sÕÒ²»µ½¿ç·þPK·¿¼ä, roomID=%siitEnterFBSetFactions#¿ç·þPK·¿¼äÕÒ²»µ½¶ÔÓ¦Íæ¼Ò, roomID=%s(R(R)R„RgR R-R•RR.R¨R]R)R+R=R>RYt CampType_EviltCampType_JusticeRbR`R,( RRRR R2RÎR3RKR4t    factionIDRa((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytOnRequestEnterMergePKMapâs$  c%
Cs§tj|tjƒ}tjd||fƒ|s6dStj}tjƒj|ƒ}|sotj    d|ƒdSt
j dƒ}|\}}}|j ƒ}|j ƒi}    t
j dƒ}
|
\} } } | j ƒ}|j ƒi}xt|jƒƒD]‰}|j|ƒ}t|ƒ}tj|ƒ}|sCtjd|ƒqönt|ƒ}t|ƒ}x    t|ƒD]û\}}||kr tjd|||fƒqhnt|tjƒ}|td|ƒ@rètjd    ||||fƒqhn|    j|gƒ}||kr qhntjd
||||fƒ|j|ƒ||    |<t||tj|td|ƒBƒqhWt|ƒ}x    t|ƒD]û\}}||kr¸tjd |||fƒq€nt|tjƒ}|td|ƒ@rtjd ||||fƒq€n|j|gƒ}||kr$q€ntjd ||||fƒ|j|ƒ|||<t||tj|td|ƒBƒq€WqöWtjd|    ƒx||    j ƒD]n\}}||}tj!|d||ff} t"j#d| |||ƒ}!t$j%||!d|i|d6ƒq¡Wtjd|ƒx||j ƒD]n\}}"| |}#tj!| d||ff}$t"j#d|$| |"|#ƒ}!t$j%|"|!d|#i|d6ƒq1WdS(s` Óʼþ²¹·¢¿ç·þPKµ±ÈÕδÁìÈ¡½±Àø 
        @param preDayID: ²¹·¢µÄÉÏÒ»¸öÈÕÈüID, µ±ÈÕ0µãµÄtimeÖµ
    s<    ÈÕÈü±ä¸ü, Óʼþ²¹·¢×òÈÕδÁìÈ¡½±Àø, preDayID=%s,dateStr=%sNs        ÕÒ²»µ½ÅÅÐаñ(%s)tMergePKAward_DayPKCnttMergePKAward_DayWinCnts!        ²»ÊDZ¾·þÍæ¼Ò, playerID=%ssB        µ±ÈÕPK´ÎÊý²»×ã²»¿É²¹·¢, playerID=%s,curPKCnt=%s < pkCnt=%sisQ        ÒÑÁìÈ¡µÄPK´ÎÊý²»²¹·¢, playerID=%s,pkCnt=%s,pkCntAwardRecord=%s,pkIndex=%ssS        ¼ÓÈëPK´ÎÊý²¹·¢½±ÀøÁбí, playerID=%s,pkCnt=%s,pkCntAwardRecord=%s,pkIndex=%ssF        µ±ÈÕʤÀû´ÎÊý²»×ã²»¿É²¹·¢, playerID=%s,curWinCnt=%s < winCnt=%ssV        ÒÑÁìÈ¡µÄʤÀû´ÎÊý²»²¹·¢, playerID=%s,winCnt=%s,winCntAwardRecord=%s,winIndex=%ssX        ¼ÓÈëʤÀû´ÎÊý²¹·¢½±ÀøÁбí, playerID=%s,winCnt=%s,winCntAwardRecord=%s,winIndex=%ss2    ²¹·¢×òÈÕδÁìÈ¡PK´ÎÊý½±Àø: sendPKCntMailDict=%ss'%s',%sRutDayPKCntR%s5    ²¹·¢×òÈÕδÁìȡʤÀû´ÎÊý½±Àø: sendWinCntMailDict=%st    DayWinCnttWinCnt(&R-RšReR›RXRYRZRFRGR.R(R)RRqR]R^R_R    RRR t__GetMergePKAwardRecordRecR9R*t__GetMergePKAwardRecordtDef_MergePKAward_DayPKCnttpowRÓR`t__SetMergePKAwardRecordR5tDef_MergePKAward_DayWinCntRÔtDef_MailFormatR:R;R£tDR_SendMergePKRewardMail(%tpreDayIDtdateStrRot    billboardt dayPKCntInfot pkMailTempNumtpkDaystpkCntAwardDictt pkCntKeyListtsendPKCntMailDictt dayWinCntInfotwinMailTempNumtwinDaystwinCntAwardDictt winCntKeyListtsendWinCntMailDictRæRt curPlayerIDtregRecRetcurPKCnttpkIndexR<tpkCntAwardRecordtpkPlayerIDListt    curWinCnttwinIndexRàtwinCntAwardRecordtwinCntPlayerIDListtpkAwardItemListt pkMailContenttguidtwinPlayerIDListtwinAwardItemListtwinMailContent((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyRýsœ     
 
                  
'                
+
$
$c"
Cs tjd|ƒ|sdStj}tjƒj|ƒ}|sTtjd|ƒdStjdƒ}|\}}}i}tjdƒ}|\}    }
} | j    ƒ} | j
ƒi} x t d|j ƒdƒD]ñ}|j |dƒ}t|ƒ}tj|ƒ}|stjd|ƒqÌnt|ƒ}t|ƒ}x    t| ƒD]û\}}||krztjd|||fƒqBnt|tjƒ}|td    |ƒ@rÂtjd
||||fƒqBn| j|gƒ}||kræqBn|j|ƒ|| |<t||tj|td    |ƒBƒtjd ||||fƒqBWt|tjƒ}|d kr£| r£|||<t||tjdƒtjd |||fƒqÌtjd|||fƒqÌWtjd| ƒxƒ| jƒD]u\}}| |}tj|    d||ff}tjd||
||ƒ}t j!||d|i|d6|d6ƒqßWtjd|ƒx|jƒD]\}}tj"||ƒ} | s qvntj|d||ff}!tjd|!||g| ƒ}t j!|g|d| i|d6|d6ƒqvWdS(sQ Óʼþ²¹·¢¿ç·þPKÈü¼¾Î´ÁìÈ¡½±Àø
        @param preSeasonID: ²¹·¢µÄÉÏÒ»¸öÈü¼¾ID
    s7    Èü¼¾±ä¸ü, Óʼþ²¹·¢ÉϸöÈü¼¾Î´ÁìÈ¡½±Àø preSeasonID=%sNs        ÕÒ²»µ½ÅÅÐаñ(%s)tMergePKAward_SeasonRanktMergePKAward_SeasonGradeis!        ²»ÊDZ¾·þÍæ¼Ò, playerID=%ssG        Èü¼¾×î¸ß¶Îλ²»×ã²»¿É²¹·¢, playerID=%s,curMaxGrade=%s < grade=%sisI        ÒÑÁìÈ¡µÄ¶Îλ²»²¹·¢, playerID=%s,grade=%s,gradeAwardRecord=%s,i=%ssK        ¼ÓÈë¶Îλ²¹·¢½±ÀøÍæ¼Ò, playerID=%s,grade=%s,gradeAwardRecord=%s,i=%sisE        ¼ÓÈëÃû´Î²¹·¢½±ÀøÍæ¼Ò, playerID=%s,order=%s,rankAwardRecord=%ssC        ÒÑÁìÈ¡µÄÅÅÃû²»²¹·¢, playerID=%s,order=%s,rankAwardRecord=%ss4    ²¹·¢Èü¼¾Î´ÁìÈ¡¶Îλ½ú¼¶½±Àø: sendGradeMailDict=%ss%s,%sRut SeasonGradetSeasonIDR+s/    ²¹·¢Èü¼¾Î´ÁìÈ¡Ãû´Î½±Àø: sendRankMailDict=%st
SeasonRanktRank(#R-RXRYR[RFRGR.R(R)RRqR]R^R_R    RRR RRvR*RwtDef_MergePKAward_SeasonGradeRyRÓR`RztDef_MergePKAward_SeasonRankRÔR|R:R;R£R}tGetDictValueByRangeKey("t preSeasonIDRoR€t rankAwardInfotrankMailTempNumtrankDayst rankAwardDicttsendRankMailDicttgradeAwardInfotgradeMailTempNumt    gradeDaystgradeAwardDictt gradeKeyListtsendGradeMailDictRßRRRŽt curMaxGradeReRæRtgradeAwardRecordRžtrankAwardRecordtmGradet mPlayerIDListt awardItemListtgradeMailContentR™tmOrdert    mPlayerIDtrankAwardItemListtrankMailContent((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyR    [s„     
               
#    
        
+.c    Cs-|jƒ}|\}}}tjd|||f|ƒ|tjkrXtjdƒdS|tjkrštjtjƒs‘tjd||ƒdSd}n|tj    krût
|ƒ}t ||ƒ}|t d|ƒ@rûtjd|||f|ƒdSn|tj krt||ƒ}n…|tjkr=t||ƒ}nd|tjkr^t||ƒ}nC|tjkr|t|ƒ}n%|tj    krt||ƒ}ndS|s«dS|t|ƒkrÞtjd|||f|ƒdS|tj    kr t||||t d|ƒBƒtj|tƒn|||gS(    s  µØÍ¼Íæ¼ÒÇëÇóÁìÈ¡¿ç·þPKÏà¹Ø½±Àø s5ÁìÈ¡¿ç·þPK½±Àø: awardType=%s,index=%s,packSpaceNum=%ss    Ã»Óиý±ÀøÀàÐÍ!Rus+    Èü¼¾Î´½áÊø£¬²»¿ÉÁìÈ¡¸Ã½±Àø!awardType=%siis6    ÒÑÁìÈ¡¹ý¸Ã½±Àø£¡awardType=%s,getRecord=%s,index=%ssG    ÁìÈ¡Á¬Ê¤½±Àø£¬±³°ü¿Õ¼ä²»×㣡awardType=%s, index=%s, packSpaceNum=%s(R R-RXRYtDef_MergePKAwardTypeListR¤R†R‡RtDef_MergePKAward_FirstWinCntRvRwRyRxt"__GetMergePKAwardItemList_DayPKCntR{t#__GetMergePKAwardItemList_DayWinCntR£t%__GetMergePKAwardItemList_SeasonGradet$__GetMergePKAwardItemList_SeasonRankt%__GetMergePKAwardItemList_FirstWinCntR,RzRYRZR
(    RtmsgListR t    awardTypeRqt packSpaceNumRet    getRecordR·((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pytMapServer_QueryMergePKAward®sL            cCsŒtjƒjtƒ}d}xHt|jƒƒD]4}|j|ƒ}|jƒ|kr[q.n|}Pq.W|sˆ|j    ƒ}|j
|ƒn|S(s »ñÈ¡Íæ¼Ò¿ç·þPK½±ÀøÁìÈ¡¼Ç¼ N( R-RÊRËR
RHR]RáR_RRíR!(R RØReRæRç((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyRväs cCs_tjƒjtƒ}xCt|jƒƒD]/}|j|ƒ}|jdƒ|jdƒq(WdS(s ÖØÖÿç·þPKÍæ¼ÒÈÕ½±ÀøÁìÈ¡¼Ç¼ iN(    R-RÊRËR
R]RáR_RóRô(RØRæRe((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyRós  cCsh|tjkr|jƒS|tjkr2|jƒS|tjkrK|jƒS|tjkrd|jƒSdS(s »ñÈ¡¿ç·þPK½±ÀøÁìÈ¡¼Ç¼ i(    RYRxRaR{RïR£RðR¤t    GetValue5(ReRÅ((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyRwüs
 
 
 
cCsš|tjkr|j|ƒn]|tjkr>|j|ƒn>|tjkr]|j|ƒn|tjkr||j|ƒnt    j
d|||fƒdS(s ÉèÖÿç·þPK½±ÀøÁìÈ¡¼Ç¼ sB        ¸üпç·þPK½±ÀøÁìÈ¡¼Ç¼: playerID=%s,awardType=%s,record=%sN( RYRxRóR{RôR£RõR¤t    SetValue5R-RX(R ReRÅtrecord((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyRzsc
Cså|jƒ}ttj|ƒd}|s,gStjdƒ}|d}|jƒ}|jƒt|ƒ}||ks|dkrt    j
d||f|ƒgS||}t |ƒ}    ||    krÝt    j
d||    f|ƒgS||S(s& »ñÈ¡¿ç·þPKµ±ÈÕPK´ÎÊý½±ÀøÎïÆ·ÐÅÏ¢Áбí iRqiis2    ÁìȡÿÈÕPK´ÎÊý½±ÀøË÷ÒýÔ½½ç£¡index=%s,maxLen=%ss:    ÁìȡÿÈÕPK´ÎÊý½±Àø´ÎÊý²»×ã, needPKCnt=%s > curPKCnt=%s( R RPRYRZR(R)RRqR,R-RXR9(
RRqR RRR„R…tmaxLent    needPKCntR((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyR¿s$ 
 
 
  c
Cså|jƒ}ttj|ƒd}|s,gStjdƒ}|d}|jƒ}|jƒt|ƒ}||ks|dkrt    j
d||f|ƒgS||}t |ƒ}    ||    krÝt    j
d||    f|ƒgS||S(s( »ñÈ¡¿ç·þPKµ±ÈÕʤÀû´ÎÊý½±ÀøÎïÆ·ÐÅÏ¢Áбí iRriis4    ÁìȡÿÈÕʤÀû´ÎÊý½±ÀøË÷ÒýÔ½½ç£¡index=%s,maxLen=%ss>    ÁìȡÿÈÕʤÀû´ÎÊý½±Àø´ÎÊý²»×ã, needWinCnt=%s > curWinCnt=%s( R RPRYRZR(R)RRqR,R-RXR5(
RRqR RR‡RŠR‹RÌt
needWinCntR“((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyRÀ,s$ 
 
 
  c    CsÛ|jƒ}ttj|ƒd}|s,gStjdƒ}|jƒ}|jƒt|ƒ}||ksu|dkr“t    j
d||f|ƒgS||}t |ƒ}||krÓt    j
d||f|ƒgS||S(s »ñÈ¡¿ç·þPKÊ×´ÎʤÀû´ÎÊý½±ÀøÎïÆ·ÐÅÏ¢Áбí 
         Ê¤Àû´ÎÊýȡÿ¸öÈü¼¾µÄʤÀû´ÎÊý, Èü¼¾ÖØÖúó, Ê¤Àû´ÎÊýÖØÐÂͳ¼Æ, Á콱״̬²»ÖØÖÃ
    itMergePKAward_FirstWinCntis4    ÁìÈ¡Ê×´ÎʤÀû´ÎÊý½±ÀøË÷ÒýÔ½½ç£¡index=%s,maxLen=%ss>    ÁìÈ¡Ê×´ÎʤÀû´ÎÊý½±Àø´ÎÊý²»×ã, needWinCnt=%s > curWinCnt=%s( R RPRYR[R(R)RRqR,R-RXR5(    RRqR RtfirstWinCntAwardDicttfirstWinCntKeyListRÌRÎR“((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyRÃCs"  
 
  c
Cså|jƒ}ttj|ƒd}|s,gStjdƒ}|d}|jƒ}|jƒt|ƒ}||ks|dkrt    j
d||f|ƒgS||}t |ƒ}    ||    krÝt    j
d||    f|ƒgS||S(s( »ñÈ¡¿ç·þPKÈü¼¾¶Îλ½ú¼¶½±ÀøÎïÆ·ÐÅÏ¢Áбí iRžiis0    ÁìÈ¡Èü¼¾½ú¼¶½±ÀøË÷ÒýÔ½½ç£¡index=%s,maxLen=%ss;    ÁìÈ¡Èü¼¾½ú¼¶½±Àø¶Îλ²»×ã, needGrade=%s > curMaxGrade=%s( R RPRYR[R(R)RRqR,R-RXR(
RRqR RtseasonGradeInfoR¯R°RÌt    needGradeR²((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyRÁ[s$ 
 
 
  cCsÁtjƒjtjƒ}|s/tjdƒgS|jƒ}|j|ƒd}|dkrrtjd||ƒgSt    j
dƒ}|d}tj ||gƒ}|s½tjd||ƒn|S(s$ »ñÈ¡¿ç·þPKÈü¼¾ÅÅÃû½±ÀøÎïÆ·ÐÅÏ¢Áбí s    ÕÒ²»µ½Èü¼¾ÅÅÐаñ...iis*    »ñÈ¡Èü¼¾ÅÅÃû½±ÀøÎ´Éϰñ, seasonOrder=%sRis*    ÕÒ²»µ½Èü¼¾ÅÅÃû½±ÀøÅäÖÃ: seasonOrder=%s( R-RFRGRYR[R.R t IndexOfByIDRXR(R)R¥(RROR t seasonOrdertseasonRankInfoRªR»((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyRÂrs   
cCs    tjtjƒ}tjtjƒ}| s2| r6dStjƒ}|jƒ||_||_    t
j dƒ|_ tjtj ƒ|_|sõtjƒ}xkt|jƒƒD]D}|j|ƒ}|dksª|jƒ rÞqªntj||ƒqªWntj||ƒdS(NR(R†R‡RYR„R…RåttagGCMergePKSeasonInfoRçR tSeasonStartTimeR(R)t SeasonCycleRt IsSeasonEndR-R«R]RVRWRHRXRR(RR°R±t
seasonInfoR\Ræ((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyR†s& 
         (((R-RRRcR:RRYRåRžR†R£RR(RYReRXRnRlR™RBR‘R’R“R”R1RãRPt+Def_UniversalGameRecType_MergePKAwardRecordR
t.Def_UniversalGameRecType_MergePKTopPlayerEquipRÌt,Def_UniversalGameRecType_MergePKUnNotifyOverRcR<tDef_TopPlayerViewTypeListRÐRÑRÒRTRURVR+R„RTRRRR    R RRRRRRRR R#R%R2R4R7R5R;R9R=R?RCRARERgRPRsRtR~RŒRÄRÅR¨RR¢RÍRÏRÕRâRîRSRRRR$R6RRRbRZR[R\RˆRœRÙR®R­RRR8RBRORDRUR]RbRfRkRpRR    RÈRvRRwRzR¿RÀRÃRÁRÂR(((sS.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldMergePK.pyt<module>sà                                                                                                                                     & '          ‚             ,              
             )    (        T    3    ]    4    7    Q    <         ¦ 6    1    8        5        #    *                     +        ^    S    6