hzr
2 天以前 c999bc50d37b5371f92ba71b3ab70f6eeb0e5076
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
¢zÀgc@séddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZdefd„ƒYZd„Zd„Zd„Zd„Zd„Zd    d
„Zd „Zd „Zd „Zd„Zd„Zd„Z d„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.pytGetCrossPKBillboardInfo3scCsÅ||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__PKBillboardSortBs"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.pytPKBillboardSortByTimePs     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.pytCopyToCrossBillboardbs0                                  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 GetSaveData~s 
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Æys  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    Csc|d}|d}|d}|d}|jddƒ}|dk}t||||||ƒdS(NR R Rot
fightPowert requestTypeii(tgettOnRefreshPKMatch(    RÇtplayerInfoDictR%R R RoRï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| ƒ    |}tjƒ} | j|ƒ}!|!rœ|!jnd}"|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=%sRORKtvalue3tvalue4(R°R±RtErrLogtindexR‚t
GetFuncCfgtGetFuncEvalCfgR2tevaltGetFuncCompileCfgRªt GetLVUpScoreR1RktUpdCrossBillboardR,R-R.tGetDBPlayerPackDataManagertGetPlayerPackObjRùtGetCurrentDataTimeStrR´RµtCrossServerMsg_PKOverInfoRòR('RÇRóR%RoRöR÷R R RùRúRûRüRýRïRþRÿRt matchIDListt
matchIndextaddScoret baseScoreListt    baseScoretwExScoretupdScoret pkDanIpyDataRJRKtname2ttype2tvalue1tvalue2tcmpValuet packDataMgrt
tagPackObjt tagPlayerNametwinnerIDttimeStrtplayerOverDictR¿((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pytClientServerMsg_PKOverÊsp
 
 
 
 
 
 
 
 
 
 
 
 
 
          "
 
$           (    c CsÞ|s|tjkrCt||||ƒ}|rC|tj|<qCntjƒ}tjj|gƒ}i}x9|D]1}    |j|    ƒ}
|
s’qqn|
jƒ||    <qqWi|d6|d6|d6} tj    t
j | |gƒdS(NRoRt matchInfoDict( R°R±t __DoPKMatchR.R RñRt GetBaseDictR´RµR,tCrossServerMsg_PKMatchReqRet( R R RoRïRÇRôRRR%tmatchIDtpackObjtdataMsg((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pyRòs  c Cs
tƒ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||ƒntjdt|ƒ|ƒ|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×îÖÕÆ¥Åä½á¹û: matchIDList=%s(RîRR R‚RR,R-R.R/R0tGetCountt IndexOfByIDtmaxtrangetremovetAtR    RËR8R2R‘Rft__addRandMatchIDt__getZonePackPlayerIDListRtrandomtchoiceRt    CanHappenRu(R R RoRït
matchCountt    rankRanget
totalRangeRt billboardTypeRJRKRIt billboardObjt billDataCounttplayerBillIndextbillStartIndextbillLoopIndexListtloopBillPlayerIDListRtbillDatatrandPackPlayerIDListt    haveRobotRR)t
randIDListtzonePackPlayerIDListtplayerPackIndext
startIndextpackIDtrobotID((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.R R2RR R0t
IsPlayerInR    ( RoRR9RERtloopPlayerIDListtsignRt
indexStarttindexEndt loopIDCountRtdataID((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pyR3|s. 
  #  
  cCsŒtjƒ}tjd||ƒ}|rˆtjƒ}|jƒ|jƒ}|j|jƒƒ}tj    d||t
|ƒ|f|ƒ|SgS(NR|s=    »ñµÃÈüÇø»îÔ¾´ò°üÊý¾ÝÍæ¼Ò: zoneID=%s,serverIDList=%s,%s,%s( RR…R‚RªR.R tSortR¯tGetPlayerIDListByServerIDInfoR R2(R RoR—R™Rt serverIDListRF((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pyR4˜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þRÿRRORKRRsaGMÉèÖÿç·þPK°ñµ¥Íæ¼ÒÊý¾Ý: isOK=%s,zoneID=%s,seasonID=%s,pkScore=%s,danLV=%s,cWinCount=%s,accID=%s(RñRkR R,R-RR1(RÇtmsgDataR R RóRVRoRùRúRûRüRýRþRÿRRJRKRRRRRtisOK((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_ByKeyR^RÐRäR\R]R§R¨R…R}R2RçRsRXtGetPlayerCounttGetPlayerByIndexR‘t    GetInitOKRâRã(RÁR R RºRÀR[R·R¾RZR\Rët playerManagerR›Rm((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pyR¶êsh                    c    Cso|d}|d}|d}tjƒj|ƒ}|s=dStjƒ}g|_xô|D]ì}tjƒ}||kr–||_|jj|ƒqYn||}|d|_|d|_    t
|j    ƒ|_ |d|_ |d|_ |d|_|d|_|d    |_|d
tj|_|d
tj|_|jj|ƒqYWt
|jƒ|_tj||ƒdS( NRoRR%RùtjobtlvRýRûRüRï(RRsRtRÐttagGCCrossRealmPKMatchOKt MatchPlayerttagGCCrossRealmPKMatchPlayerRR    R9R2tNameLenR;tLVR=RARCRtDef_PerPointValuet
FightPowert FightPowerExtMatchPlayerCountRâRã(    tretInfoRoRR%Rmt matchOKPackR)t matchPlayert    matchInfo((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pyR(-s:
 
 
            
       tCrossPKUnNotifyOverInfoManagercBs5eZd„Zd„Zd„Zd„Zd„ZRS(cCs i|_dS(N(t5_CrossPKUnNotifyOverInfoManager__unNotifyOverInfoDict(R((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pyRSs    cCs||j|<dS(N(Ru(RRot overInfoData((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pytAddUnNotifyOverInfoWs cCs|jj|dƒS(N(RuRR‘(RRo((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pytGetPlayerUnNotifyOverInfo[scCswd}d}d}x1|jjƒD] }|d7}||jƒ7}q"Wtjd|t|ƒfƒtj||ƒ|S(NROiis,SaveDBCrossPKUnNotifyOverInfo cnt :%s len=%s(RutvaluesRPRR1R2RQRR(RRSRTRURv((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pyRV^s
cCsƒtj||ƒ\}}tjd|ƒxSt|ƒD]E}tjƒ}|jƒ||j|||ƒ7}||j    |j
<q6W|S(Ns%LoadDBCrossPKUnNotifyOverInfo cnt :%s( RQRWRR1RXR3ttagDBCrossPKUnNotifyOverInfoRZR[RuR(RR^R_R`RURaRv((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pyRbjs 
(RcRdRRwRxRVRb(((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pyRtQs
                 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 PlayerControltGetDBPlayerAccIDByIDRsRttGetIsTJGR3RzRZR\R]tRoomIDtTimeStrtOverTypeRtWinnerIDRutRoundWinnerInfoR2tRoundWinnerLenRR?t    CWinCounttAddScoret TagPlayerIDt TagPlayerNameR.t!GetCrossPKUnNotifyOverInfoManagerRwRvtGetMapID(R#tcurServerGroupIDRotoverInfoR R R"R!RþRÿRRRöR tplayerRvRy((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pyRvsD $ 
                                                         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ŠRxR\R]RRƒRR?R†R‡RˆR‰RuRvR2RR R‹(RmRoRvR R R"R!RþRÿRRRö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ÐR3RRkR.RâR‚R,R°RQRRRR5ttimetobjectRRqRzR¦RÂRÅRÉRÆRìRîRõR$RòR&R3R4RYR]R_R¶R(RtRRÏR”(((s_E:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossRealmPK.pyt<module>sV                   {            G    ;              1             G        T                        C    $%    )