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
x‹gc@spddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZdZdZdZejZdd1d„ƒYZdd2d„ƒYZd    „Zd
„Zd „Zd „Zd „Zd„Zd„Zd„Zd„Zd„Z d„Z!d„Z"d„Z#d„Z$d„Z%d„Z&d„Z'd„Z(d„Z)d„Z*d„Z+d„Z,d„Z-d „Z.d!„Z/d"„Z0d#„Z1d$„Z2d%„Z3d&„Z4d'„Z5dd(„Z7d)„Z8d*„Z9d+„Z:d,„Z;d-„Z<d.„Z=d/„Z>d0„Z?dS(3iÿÿÿÿNi¬&i(#i2tArenaMatchPlayercBseZd„Zd„ZRS(cCs|jƒdS(N(t    ResetData(tself((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pyt__init__.s
cCs:d|_d|_d|_d|_d|_d|_dS(Ni(t tagPlayerIDttagLVttagJobttagScorettagFacet
tagFacePic(R((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pyR5s                        (t__name__t
__module__RR(((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pyR,s    tArenaBattleReccBseZdZd„ZRS(s ¾º¼¼³¡¶ÔÕ½¼Ç¼Êý¾Ý
        ¶îÍâ˵Ã÷£º
        ÒòΪÓÐÖ÷¶¯¶ÔÕ½µÄ²Å»áÉϰñ£¬¶øÖ»ÓжÔÕ½¹ýµÄµÄ²Å»á±»Æ¥Åäµ½£¬ËùÒÔ¿ÉÈÏΪֻҪÓжÔÕ½¼Ç¼£¬×îºóÒ»Ìõ¼Ç¼¼´Îª×îеÄÊý¾Ý¼Ç¼
        Òò´Ë¿ÉÒÔÓÃÀ´´æ´¢×ÔÉíÏà¹ØµÄÊý¾Ý£¬¿ÉÓÃÓÚÀëÏß±»±ðÈËÆ¥Å䵽ʱÔÝ´æÊý¾ÝÓã¬ÉÏÏߺóÈ¡×îºóÒ»Ìõ¶ÔÕ½¼Ç¼¸üÐÂÊý¾Ý
    cCsp||_d|_d|_d|_d|_d|_d|_d|_d|_d|_    d|_
d|_ dS(Ni( tplayerIDRRRRR    RtaddScoretisWint
battleTimet    isDisposetupdScore(RR ((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pyRFs                                                (R
R t__doc__R(((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pyR ?scCs
|jƒS(N(tGetID(tbillData((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytGetArenaBillIDfscCs
|jƒS(N(tGetName1(R((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytGetArenaBillNamegscCs |j|ƒS(N(tSetName1(Rtname((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytSetArenaBillNamehscCs
|jƒS(N(tGetType2(R((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytGetArenaBillJobiscCs
|jƒS(N(t    GetValue1(R((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytGetArenaBillRealmLVjscCs |j|ƒS(N(t    SetValue1(RtrealmLV((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytSetArenaBillRealmLVkscCs
|jƒS(N(t    GetValue2(R((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytGetArenaBillLVlscCs|j|ƒdS(N(t    SetValue2(Rtlv((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytSetArenaBillLVmscCs
|jƒS(N(t    GetValue3(R((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytGetArenaBillFacenscCs|j|ƒdS(N(t    SetValue3(Rtface((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytSetArenaBillFaceoscCs
|jƒS(N(t    GetValue4(R((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytGetArenaBillFacePicpscCs|j|ƒdS(N(t    SetValue4(RtfacePic((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytSetArenaBillFacePicqscCs
|jƒS(N(t GetCmpValue(R((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytGetArenaBillScorerscCs |j|ƒS(N(t SetCmpValue(Rtscore((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytSetArenaBillScoresscCs|jƒtj|jƒS(N(t GetCmpValue2t ShareDefinetDef_PerPointValuet GetCmpValue3(R((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytGetArenaBillFightPowertscCs,|j|tjƒ|j|tjƒdS(N(t SetCmpValue2R8R9t SetCmpValue3(Rt
fightPower((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytSetArenaBillFightPowerusc    Cstjƒ}|jtƒ}tjd|jƒƒxPt|jƒƒD]<}|j|ƒ}|jƒ}t    |ƒ}|j
ƒ|_ |j ƒ|_ |jƒd|_|jƒd|_|jƒ|_|jƒ}|ræ|jdƒng}tt|ƒdkr |dndƒ|_tt|ƒdkr6|dndƒ|_|jƒ}|rc|jdƒng}    tt|    ƒdkrˆ|    dndƒ|_tt|    ƒdkr³|    dndƒ|_|jƒ}
|
rà|
jdƒng} tt| ƒdkr| dndƒ|_tt| ƒdkr0| dndƒ|_t|ƒ} | j |ƒtj!d||t"j#|dd„ƒfƒqEWt$j%t$j&ƒ} | r­t'd    ƒr­nltj(ƒj)t*j+ƒ}|r|j,ƒdkrt-j.d
dƒ}t/j0t*j+|ƒt1|ƒqt2ƒndS( Ns¿ª·þ¼ÓÔØ±¾·þ¾º¼¼³¡¶ÔÕ½¼Ç¼! %si
s,iis*    ¼ÓÔØÍæ¼Ò¶ÔÕ½¼Ç¼: playerID=%s, |%s| %stdefaultcSs|jS(N(t__dict__(tobj((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pyt<lambda>›st OnServerStartt
ArenaRobot(3t    GameWorldtGetUniversalRecMgrt GetTypeListtDef_RecType_ArenaBattleRecordtLogtCounttxrangetAtRR tGetTimeRR#RR(RRR-Rt GetStrValue1tsplittinttlenRRt GetStrValue2RRt GetStrValue3RR    tGetPlayerArenaBattleRecListtappendtDebugLogtjsontdumpstPlayerDBGSEventtGetDBGSTrig_ByKeytDef_ArenaOSSeasonStatet__DoArenaSeasonResett GetBillboardt FindBillboardR8t Def_BT_ArenatGetCountt IpyGameDataPYt
GetFuncCfgtPlayerBillboardtUpdateBillboardMaxCountt__RandRobotLVListt__ResetArenaRobotBillboard(tuniversalRecMgrt recDataListtindextrecDataR t    battleRect    strValue1t
resultInfot    strValue2tupdInfot    strValue3tfaceInfot battleRecListt OSSeasonStatet    billBoardt robotMaxCount((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pyRDzsL    ++ ++ ++  0 
cCs;tjƒ}|jtƒtjdttjƒƒ|jtƒ}xòtjj    ƒD]á}xØ|D]Ð}|j
ƒ}|j |j ƒ|j |jƒ|j|jƒ|j|jd|jƒ|j|jƒ|jdt|jƒ|jfƒ|jdt|jƒ|jfƒ|jd|j|jfƒq_WqRWdS(Ns¹Ø·þ±£´æ±¾·þ¾º¼¼³¡¼Ç¼! %si
s%s,%s( RFRGtDeleteRIRJRRt
PyGameDatatg_arenaPlayerBattleRecDictRHtvaluestAddRectSetTimeRR R R%RR*RRR/Rt SetStrValue1RQRRt SetStrValue2RRt SetStrValue3RR    (RhRiRsRlRk((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pyt OnServerClose°s     ##%cCs*|tjkrgtj|<ntj|S(N(RxRy(R ((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pyRUÆscCs |tjkS(N(RxRy(R ((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytIsArenaBattlePlayerÌscCsdS(N((((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytSendMapServerArenaInfoÎscCs²tj|ƒrdS|jƒ}t|ƒ}d}xK|ddd…D]6}|jrZqEnd|_|dkrE|j}qEqEW|dkr›t||ƒntj|dt    ƒdS(Niÿÿÿÿit BattleResult(
t PlayerControltGetIsTJGt GetPlayerIDRUtNoneRRt __SyncPlayerBechallengedUpdScoretDoOfflineUnprocessedt__DoOfflineArenaBattleResult(t    curPlayerR tcurBattleRecListRRl((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pyt OnPlayerLoginÓs            cCsštdƒtjddƒ}tjtjƒd}||krYtjd||fƒdStjtjƒ}|dkrŒtjd|ƒdSt    dƒdS(NtDaytOperationActionisAOnDayExʱ¾º¼¼³¡¿ª·þ¶¨ÖÆÈü¼¾½øÐÐÖУ¬²»´¦Àí! openServerDay=%s <= %ss=OnDayExʱ¾º¼¼³¡¿ª·þ¶¨ÖÆÈü¼¾ÒѽáËã¹ý£¬²»´¦Àí! OSSeasonState=%stOpenServerSeason(
t__DoGiveBillboardAwardRbRcRZR[t Def_ServerDayRFRJR\R](tcustomMaxServerDayt openServerDayRt((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytOnDayExìs
 
cCs©tjddƒ}tjtjƒd}||krOtjd||fƒdStjtjƒ}| s€|dks€||kr›tjd||fƒdStdƒdS(NRisFOnWeekExʱÔÚ¿ª·þ¶¨ÖÆÌìÄÚ£¬²»´¦Àí¾º¼¼³¡Èü¼¾ÖØÖÃ! openServerDay=%s <= %ss]OnWeekExʱ¾º¼¼³¡¿ª·þ¶¨ÖÆÈü¼¾½øÐÐÖлòͬһÌì½áË㣬²»´¦ÀíÖØÖÃ! openServerDay=%s,OSSeasonState=%stOnWeekExSeason(    RbRcRZR[R’RFRJR\R](R“R”Rt((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytOnWeekExs 
cCs2tjtjƒd}tjtjƒ}tjtjƒ}tjd||||fƒtj    ddƒ}||kr’|dkr’tjdƒdSt
dƒt ƒtj ƒj tƒit_it_tjdƒ||kr|dkrtjtjdƒntjtj|dƒtƒtjd    ƒtS(
sX Èü¼¾ÖØÖÃ
           Èü¼¾¹æÔò£ºÇ°¶¨ÖÆÔËÓª×î´ó¿ª·þÌìΪһ¸öÈü¼¾£¬ºóÐø°´ OnWeekEx ÖØÖÃ
    isEÖØÖþº¼¼³¡! resetName=%s,openServerDay=%s,OSSeasonState=%s,worldLV=%sRis¿ª·þ¶¨ÖÆÌìÄÚ²»ÄÜÖØÖã¡NtWeekRƒs,=============== ÖØÖþº¼¼³¡OK ===============(RZR[R’R\R8t"Def_Notify_WorldKey_WorldAverageLvRFRJRbRcR‘RgRGRwRIRxRytg_arenaPlayerMatchDictR„tDelOfflineUnprocessedtSetDBGSTrig_ByKeyR‚tTrue(t    resetNameR”RttworldLVR“((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pyR]s*     
          cCsètjƒjtjƒ}|s"dS|jƒtjddƒ}tjd|ƒt    j
tj|ƒgt _ t jtjƒ}t jt j|ƒtjd|ƒt|ƒ}t|ƒ}tjdt|ƒ|fƒtjdt|ƒ|fƒtjddƒ}d}xÌt|dd    d    ƒD]´}||}||}    |d7}d
}
d
} tj|ƒ} d} d}| }| }|}|    }|tj}|tj}t    j||
| tj||||d td |d |ƒq"W|jƒdS(NREis0    ÖØÖóõʼ»¯¾º¼¼³¡»úÆ÷È˰ñµ¥! robotMaxCount=%ss    worldLV=%ss    robotLVList: %s, %ss    robotScoreList: %s, %stOpenJobiiÿÿÿÿttautoSortt    cmpValue2t    cmpValue3(RFR^R_R8R`tClearRbRcRJRdReRxtg_arenaRobotLVListRZR[R™RœtDef_ArenaWorldLVRft__RandRobotScoreListRRtGetFuncEvalCfgRLtrandomtchoiceR9tUpdatePlayerBillboardtFalsetSort(RuRvRŸt robotLVListtrobotScoreListt openJobListtrobotIDtitrobotLVt
robotScoret    robotNametopInfotrobotJobt robotRealmLVtrobotFightPowerttype2tvalue1tvalue2tcmpValueR£R¤((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pyRg8sF
      
 
 
  ;
cCs—tƒ\}}tjddƒ}g}||d}|t|ƒ}d|}d}d}    x·t||||ƒD]Ÿ}
|
|krˆPn|dkr|
}n|
|d} |||    } | d}    | dkrÕqrnx3tt| ƒƒD]} |jtj|| ƒƒqèWd}qrWt    |ƒ|kr4|| }n6x3t    |ƒ|kri|jtj|||ƒƒq7W||d<||d<t
|dt ƒt _ |S(s_ Ëæ»ú»úÆ÷È˵ȼ¶
    @param robotMaxCount: »úÆ÷ÈËÊýÁ¿
    @return: ÉýÐòÅźõĻúÆ÷È˵ȼ¶Áбí
    REiiiiÿÿÿÿtreverse(t__GetRobotLVRangeRbRctfloatRLRQRVRªtrandintRRtsortedRRxR¦(Rvt
robotMinLVt
robotMaxLVtdifficultLVSteptlvListtlvCounttlvAvgtoneLVRobotCounttminLVtdifficultRobotCountExR&tmaxLVtdifficultRobotCountt_((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pyRfhs:
      
 
 !
 
c Cs‚tjtjƒ}td|ƒ}tjƒ}|jƒ}d}||krm|j|dƒ}|jƒ}ntj    ddƒ\}}|}t
tj ddƒƒ}xšt |d|ƒD]…}    |j|    ƒ}
|    |dkrë|
j ƒ}q·tjƒj|    dƒ} |
jƒ|ko'| jƒknr·|
j ƒ}Pq·q·Wt|t||ƒƒ}tjd|||||fƒ||fS(NiiREiisV    »úÆ÷È˵ȼ¶·¶Î§: worldLV=%s,worldLVTime=%s,maxWorldLVTime=%s,minLV=%s,robotMaxLV=%s(RZR[R§tmaxRbtIPY_DatatGetWorldLVCounttGetWorldLVByIndextGetOpenServerSecondR©tevalRcRLt
GetWorldLVtminRFRJ( RŸt
ipyDataMgrtmaxCntt worldLVTimetworldLVIpyDataRËRÍRÅtmaxWorldLVTimeR³tipyDatat nextIpyData((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pyRÀ˜s.   (     c Csntjddƒ\}}||d}|t|ƒ}d|}g}d}d}x²t||dƒD]}    |dkr|    }n|d|}
|
d}|
dkr«qfnxOtt|
ƒƒD];} ||    krà|j|    ƒq¾|jtj||    ƒƒq¾Wd}qfWt|ƒ|kr&|| }n&x#t|ƒ|krK|j|ƒq)W||d<||d<|j    ƒ|S(s§ Ëæ»ú»úÆ÷ÈË»ý·Ö
    @param minScore: »úÆ÷ÈË×îС»ý·Ö
    @param maxScore: »úÆ÷ÈË×î´ó»ý·Ö
    @param robotMaxCount: »úÆ÷ÈËÊýÁ¿
    @return: ÉýÐòÅźõĻúÆ÷ÈË»ý·ÖÁбí
    tArenaSetiiiÿÿÿÿ(
RbR©RÁRLRQRVRªRÂRRtsort( RvtminScoretmaxScoret
scoreCounttscoreAvgtoneScoreRobotCountt    scoreListtminSt robotCountExR5t
robotCountRÏ((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pyR¨¶s6
     
 
 
 
 
cCs§tjd|ƒtjƒjtjƒ}|s3dS|dkritjddiƒ}tjddƒ}n:|dkrŸtjddiƒ}tjddƒ}ndSg}x'|jƒD]}|j    t
|ƒƒq¶W|j ƒtjd    |ƒ|d
}i}|j ƒ|j ƒ}}    tjd ||    fƒxÙt|ƒD]Ë}
|j|
ƒ} | s\q;n|
d} | |kr¨|j|ƒd} | t|ƒkr›Pn|| }n| jƒ}|tkrÆq;n| |g||<|t|ƒ}tjd ||g|| gƒq;Wtjd |ƒ|jƒ}g}xbtjjƒD]Q\}}||kr[q=n|sgq=n|j    |ƒtjd||g|ƒq=Wtjd|ƒdS(Ns=== ¾º¼¼³¡½áËãÅÅÐн±Àø! === %sRŽtArenaBillboradAwardiiR˜iis    ½±ÀøÃû´ÎÁбí: %sis6    °ñµ¥Êý¾ÝÊý! billboardCount=%s,billboardMaxCount=%ssArenaBillboardAward%ss    ½±ÀøÍæ¼ÒÃû´ÎÐÅÏ¢: %ssArenaFloorAward%ss    ½±Àø±£µ×Íæ¼ÒÐÅÏ¢: %s(RFRJR^R_R8R`RbR©tkeysRVRQRàRat GetMaxCountRLRMRjRRRt
MaxRobotIDtstrtPlayerCompensationt SendMailByKeyRxRytitems(t    awardTypeRutbillboradAwardDicttfloorAwardListt    orderListtorderStrt
awardOrdertorderPlayerIDDicttbillboardCounttbillboardMaxCountRjt billBoardDatatordertnextOrderIndexR t    awardListtorderPlayerIDListtfloorPlayerIDListRs((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pyR‘ås`  
 
 
    $   cCsõtjdt|ƒ|ƒ|s$dStjƒj|ƒ}|d}t|ƒdkr_|dni}i}|dkr¯|sdSt||d|d|d|jdƒƒn;|d    krê|sØtj    |d    |ƒdSt
||ƒ}n||gS(
NsMapServer_Arena %siit MatchRefresht    isRefreshtplayerLVt playerScoret gmMatchIDListRƒ( RFRWRîtGetPlayerManagertFindPlayerByIDRRt__DoArenaMatchRefreshtgetR„tAddOfflineUnprocessedt__DoArenaBattleResult(R tmsgListR‹tcmdtcmdDicttretDict((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytMapServer_Arena)s"
" . c4Cs |jƒ}tjddƒ}tjddƒ}tjd|||f|ƒtjd||f|ƒt|ƒt|ƒ}|tjkrœgtj|<ntj|}    t|    ƒ|krÈ|    | }    n| rt|    ƒ|krtjd|ƒt||    ƒdStj    ƒj
t j ƒ}
|
s$dS|
j |ƒd} |
jƒ} | dkr\| d} ntjd| | f|ƒtjdd    ƒ\} }g}| dkr(|r(| d}d|koÇ| knrtd| ƒ}tj|ƒ|j|t|ƒ ƒtjd
|||f|ƒq(|| kr(| d}xí|D]â}t|d ƒ}t| ||d ƒ}|dks|dks||kr´tjd | |||||fƒPntj||ƒ}|| krî||krî|j|ƒntjd||||||f|ƒ|d}q<Wq(ntdt|ƒt|ƒƒ}d| ko^| knr¥|r¥| | }d|koŠ|knrêt| d| dƒ}tj|ƒ|j|t|ƒ ƒtjd|||f|ƒq¥||kr¥| d}xí|D]å}t|d ƒ}t| ||d ƒ}|| ksX|| ksX||kr‚tjd| |||| ||fƒPntj||ƒ}|| kr¼||kr¼|j|ƒntjd||||||f|ƒ|d}qWd}x©|dkrž|dkrž|d8}| d}t|| ƒ}tj||ƒ}|| krù||krù|j|ƒ|d8}tjd|||||f|ƒqùqùWq¥n|jƒ|dkrÇ|jƒrÇg}x¦|D]ž}||krtj|d|ƒqÔn|
j |ƒd}|dkr9tj|d|ƒqÔn||krKqÔn|j|ƒtj|d||fƒqÔWtjdt|ƒ|fƒ|r°||t|ƒ }n||7}|jƒntjddƒ}|r5|r5t|ƒ|kr5tj|d ƒr5|j dƒ} tjd|| f|ƒntjd||ƒtjddƒ}!tjddƒ\}"}#|"d|"}$}%tjddƒ}&t||&dd ƒ}'t||&dd ƒ}(t!})t"|ƒ}*xF|*ddd…D]1}+|+j#t!krì|+j#t$krì|+j#})PqìqìWtjd |)|$|%|'|(f|ƒx±t%|ƒD]£},t|    ƒ|,krv|    |,}-nt&ƒ}-|    j|-ƒ|-j'ƒ|rc
|j dƒ}.|.d}/|
rc
d|/koØ|
jƒknrc
|
j(|/ƒ}0t)|0ƒ|-_#|-j#t$kr­    t*j+|-j#ƒ}1|1rß    t*j,|1ƒ}2t-|0|2d!ƒt.|0|2d"ƒt/|0|2d#ƒt0|0|2d$ƒt1|0|2j2d%dƒƒt3|0|2j2d&dƒƒqß    n2|/ttj4ƒkrß    tj4|/}3t/|0|3ƒnt5|0ƒ|-_6t7|0ƒ|-_8t9|0ƒ|-_:t;|0ƒ|-_<t=|0ƒ|-_>tjd'|,d|-j#|-j6|-j:|.f|ƒqQqc
n|)d7})|)t$kr‚
t!})n|)|-_#tj?|!ƒ|-_8tj|$|%ƒ|-_6tj|'|(ƒ|-_:tjd(|,d|-j#|-j6|-j:f|ƒqQW|    tj|<t||    ƒdS()Nt
ArenaMatchiis?¾º¼¼³¡Íæ¼ÒË¢ÐÂÆ¥ÅäÁбí: isRefresh=%s,playerLV=%s,playerScore=%ss.    higherOrderPerList=%s,lowerOrderPerList=%ss    ·ÇË¢ÐÂÇÒÓÐÊý¾Ý£¬Ö±½Óͬ²½£¡is    maxOrder=%s,playerOrder=%sisL    Ö±½ÓËæ»ú½Ï¸ßÃû´Î! higherOrderCount=%s,randOrderList=%s,matchOrderList=%sidgY@s°¾º¼¼³¡Æ¥Åä¸ßÃû´ÎÍæ¼Ò±ÈÀý·¶Î§ÅäÖôíÎó! playerOrder(%s) - higherOrderCount(%s)*per(%s) = tagOrder(%s) <= 0 or randMaxOrder(%s)<=0 or tagOrder > randMaxOrder higherOrderPerList=%ssZ    ¸ù¾Ý±ÈÀýËæ»ú½Ï¸ßÃû´Î! higherOrderCount=%s,per=%s,randOrder=(%s~%s)%s,matchOrderList=%ssK    Ö±½ÓËæ»ú½ÏµÍÃû´Î! lowerOrderCount=%s,randOrderList=%s,matchOrderList=%ss¾¾º¼¼³¡Æ¥ÅäµÍÃû´ÎÍæ¼Ò±ÈÀý·¶Î§ÅäÖôíÎó! playerOrder(%s) - lowerOrderCount(%s)*per(%s) = tagOrder(%s) > maxOrder(%s) or randMinOrder(%s)>maxOrder or randMinOrder > tagOrder lowerOrderPerList=%ssY    ¸ù¾Ý±ÈÀýËæ»ú½ÏµÍÃû´Î! lowerOrderCount=%s,per=%s,randOrder=(%s~%s)%s,matchOrderList=%si2sZ    ¸ßÃû´Î²»×㣬ʹÓýϵÍÃû´Î²¹³ä! higherLackCount=%s,randOrder=(%s~%s)%s,matchOrderList=%ssÄ¿±êID²»ÄÜÊÇ×Ô¼º!ÎÞ·¨Æ¥Åä!%ssÄ¿±êID²»ÔÚ°ñµ¥ÉÏ!ÎÞ·¨Æ¥Åä!%ssÖ¸¶¨Æ¥ÅäID(%s),order(%s)s#matchOrderList=%s,needMatchCount=%siiÿÿÿÿsE    ¸ÅÂÊÆ¥Åäµ½Ò»¸ö»úÆ÷ÈË£¬È¥µô×îºóÒ»¸ö! matchRobotRate=%s,popOrder=%ss+    ×îÖÕÆ¥Åäµ½µÄÃû´ÎÁбí: matchOrderList=%sR REi
isE    Ëæ»ú»úÆ÷È˱¸ÓÃÐÅÏ¢: lastRandRobotID=%s,LV(%s ~ %s),score(%s ~ %s)tNametRealmLVtLVt
FightPowertFacetFacePicsH    %s Æ¥ÅäÔÚ°ñµ¥ÉϵÄ: tagPlayerID=%s,tagLV=%s,tagScore=%s,matchOrder=%ss:    %s Æ¥Åä·Ç°ñµ¥ÉϵÄ: tagPlayerID=%s,tagLV=%s,tagScore=%s(@R†RbR©RFRWRRRxRšt__SyncMatchListR^R_R8R`t IndexOfByIDRatrangeRªtshuffletextendR×RQtErrLogRÂRVRÐRàR‡t
GetGMLevelt DebugAnswerRîRct    CanHappentpopt RandRobotIDRURRíRLRRRMRtPlayerViewCachet FindViewCachetGetCachePropDataDictRR"R'R?R,R    R1R¦R$RRRR3RR)RR.R    R«(4R‹RRRRR thigherOrderPerListtlowerOrderPerListtneedMatchCountt    matchListRut playerOrdertmaxOrdert highRandOrdert lowRandOrdertmatchOrderListthigherOrderCountt randOrderListt randMaxOrdertperttagOrdert    randOrderthigherLackCounttlowerOrderCountt randMinOrdertdoCountt randOrderMint randOrderMaxtgmMatchOrderListt    gmMatchIDt gmMatchOrdertmatchRobotRatetpopOrderR±RËRÏt    randMinLVt    randMaxLVtrandRobotScorePerRanget randMinScoret randMaxScoretlastRandRobotIDRŒRlR³t matchPlayert
matchOrdert
matchIndexRtcurCachet    cacheDictR´((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pyRBsN       
      
 $        "
      
 $        
 
 
    '
 
 0               
 
(     '    
             (  cCsgtjƒ}g|_x)|D]!}tjƒ}|j|_|j|_|j|_    |j
|_ |j |_ |j|_|jtkr-tj|jƒ}|r-tj|ƒ}|d}|d|_    |d|_|d|_|tj|_|tj|_|jddƒ|_ |jddƒ|_q-n|jj|ƒqWt|jƒ|_tj||ƒdS(NRRRRRiR( tChPyNetSendPackttagGCArenaMatchListt    MatchListttagGCArenaMatchInfoRtPlayerIDRtJobRRRtScoreRRR    RRíR#R$R%t
PlayerNameRR8R9Rt FightPowerExR    RVRRt
MatchCountt NetPackCommont SendFakePack(R‹R)t
clientPackRFt    matchInfoRIRJR>((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pyRs4             
   c    Csk|jƒ}||g}t||ƒ}||d<||g}d|}|jddd|t|ƒƒdS(NtofflineRecTimes%sitArena(RNR tMapServer_QueryPlayerResultRR(    R‹RktcmdNameRtrecTimeR Rtrett
resultName((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pyRŠ@s  
 
c<Csu    i}|j|ƒ|jƒ}|jƒ}tjdt|ƒ|ƒ|d}|d}|d}|d}|sw|S|}    t}
d7\} } } }}d8\}}}tjj    |gƒ}xw|D]o}|j
|krÃt }
|j |j |j|j|jf\} } } }}tjd| | | f|ƒPqÃqÃWt|ƒ}|
sÅxz|D]o}|j
|krOt }
|j |j |j|j|jf\} } } }}tjd    | | | f|ƒPqOqOWn|
sãtjd
||ƒ|Stjƒjtjƒ}|s|S|tkrŸtjƒj|ƒ}|rBtj|ƒ rBd nd}t|ƒ}t|ƒdkrp|d nd}|rŸ|j} tjd | |ƒqŸn|jƒ}|j ƒ}|d}|d}d} t!||    | |ƒ}!t"d||!ƒ}"|j#|ƒd }#|tj$}$|tj$}%|j%ƒ}&|j&ƒ}'t'j(||| tj||||"dtd|$d|%d|&d|'ƒg}(|r#t)j*ddƒ})tj+|)ƒ}*|*r#|(j,|*d ƒt|*ƒdkrá|*dnd}+|+r tj-dd|j ƒ|*dd|*d gƒq q#nt!|| |    | ƒ},t"d| |,ƒ}-|tkr;t.j/|ƒ}.|.r`t.j0|.ƒ}/d}0|/d} |/d}1|/d}|/d}|/d}|tj$}2|tj$}3|/j    ddƒ}|/j    ddƒ}t'j(||1|0tj| || |-dtd|2d|3d|d|ƒq`n%|j1|ƒ}4|4r`t2|4|-ƒn|j3ƒ|j#|ƒd }5tjd|!|"|#|5f|ƒtjd ||,|-f|ƒ|ji|!d!6|"d"6|#d#6|5d$6|(d%6t d&6ƒ|tkrÄ|j#|ƒd }6|6d }7|6d kr­|7ttj4ƒkr­|7|j5ƒkr­tjd'tj4|ƒtj4|7}8|j6|7ƒ}4t7|4|8ƒtjd(||6|8f|ƒqÄtjd)||ƒnt8t9t)j:d*d+ƒƒ}9t;t<j<ƒƒ}:t=|ƒ}|:|_>||_
| |_ | |_ |-|_t;|ƒ|_?|!|_@d |_A|"|_||_||_|j,|ƒt|ƒ|9kr©|t|ƒ|9}|tjB|<ntC||gƒ|tkr³t=|ƒ}|:|_>||_
||_ ||_ |"|_t;| ƒ|_?|,|_@|r#d nd|_A|-|_|&|_|'|_|j,|ƒt|ƒ|9krŠ|t|ƒ|9}|tjB|<n|r³tC||gƒtD||-ƒq³ntjd,tjBƒtjd-||ƒtE|t ||"ƒi |d6|d.6|d6|d6|d6|    |!|"gd/6|d06|d16| d26|d36|d46| |,|-gd56|d6};tFjGd6|;ƒ|S(9Ns¾º¼¼³¡Íæ¼ÒÕ½¶·½á¹û: %sRRRRiR¡s6    ¶ÔÊÖÔÚÆ¥ÅäÁбíÖÐ! tagLV=%s, tagJob=%s, tagScore=%ss6    ¶ÔÊÖÔÚ¶ÔÕ½¼Ç¼ÖÐ! tagLV=%s, tagJob=%s, tagScore=%ssDÕÒ²»µ½¶ÔÕ½¶ÔÊÖ£¬²»ÔÚÆ¥ÅäÁбí»ò¶ÔÕ½¼Ç¼À²»´¦Àí½áË㣡tagPlayerID=%siiÿÿÿÿsA    ¶ÔÊÖÊÇÍæ¼Ò£¬´Ó¶ÔÊÖ×îжÔÕ½¼Ç¼ÖлñµÃ¶ÔÊÖ×îлý·Ö! tagScore=%sR!R>R¢R£R¤tvalue3tvalue4tArenaBattleAwarditArenaWinerItemRRRRtAccIDRRsA    ¸üÐÂ×ÔÉí»ý·Ö: addScore=%s,updScore=%s,curOrder=%s,updOrder=%ss>    ¸üжÔÊÖ»ý·Ö: tagPlayerID=%s,tagAddScore=%s,updTagScore=%sRRtcurOrdertupdOrdert awardItemListtisOKs$    PyGameData.g_arenaRobotLVList=%ssK    »úÆ÷ÈËÔÚ°ñÉÏ£¬¸üеȼ¶ÐÅÏ¢! tagPlayerID=%s,tagUpdOrder=%s,updRobotLV=%ss2    »úÆ÷È˲»ÔÚ°ñÉÏ£¬²»¸üеȼ¶ÐÅÏ¢! tagPlayerID=%sRßis    ×îÐÂËùÓжÔÕ½¼Ç¼»º´æ! %ss    retDict=%sROtcurScoretTagAccIDt TagPlayerIDRt
tagRealmLVt tagFightPowerRtArenaBattleResult(iiiii(iis(HtupdatetGetAccIDR†RFRWRîR­RxRšR    RRRRRRR    RURR^R_R8R`RíRRR„R…RRR‡RtGetJobtGetNamet__CalcBattleAddScoreRÐRR9tGetFacet
GetFacePicRdR¬RbR©tGetResultByRandomListRVt WorldNotifyR#R$R%tFindByIDR6R®R¦RaRMR'R×tMaxBattleRecCountRcRQttimeR RRRRRyt__SyncArenaBattleRecordRˆRtDataRecordPackt SendEventPack(<R‹RRtaccIDR RRRRRit    isFindTagRRRRR    RlRmttagAccIDR)RFRŒRlRut    tagPlayert    tagOnlinettagBattleRecListt tagBattleRect    playerJobt
playerNameR!R>R·RRReR£R¤R+R0Rgt randItemListt awardItemInfot isWorldNotifyt tagAddScoret updTagScorettagCacheRJt    tagOpInfot tagPlayerNamet tagCmpValue2t tagCmpValue3trobotBillboardDataRft tagUpdOrdert tagOrderIndext
updRobotLVtbattleRecMaxCountRtdrDict((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pyR Ks.   
 
 
 
  3  3  " "      
 
    +"6 
 
 
 
 
  1
 % 
3                                                                                    6#c    Csi|jƒ}|jƒ}tdi|d6gƒ}tjƒjdd||d|t|ƒ|jƒƒdS(NtUpdScoreRiRZ(R†t GetRealMapIDRîRFRtMapServer_QueryPlayerRRtGetRouteServerIndex(R‹RR ttagMapIDtcmdStr((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pyRˆs   c     Cs ||}|r"tjddƒntjddƒ}|jƒ}|jƒd}x$|D]}||krW|}PqWqWW|dkr¤tjd||||fƒdSdt|ƒt|ƒf}    ||}
t    t
j |    |
ƒƒ} tj d|||||    |
| fƒ| S(NRbiisU    ¼ÆËãµÃ·Ö¹«Ê½: playerID=%s,diffScore=%s,scoreKeyList=%s,isWin=%s ÕÒ²»µ½¶ÔÓ¦key¹«Ê½isArenaBattleScore_%s_%ssj    ¼ÆËãµÃ·Ö¹«Ê½: playerID=%s,diffScore=%s,scoreKeyList=%s,isWin=%s,compileKey=%s,formatStr=%s,addScore=%s( RbR©RëRàR‡RFRRQRîRÕtFormulaControltGetCompileFormulaRW( R RiRRt    diffScoretcalcScoreFormatDictt scoreKeyListtcalcKeytscoreKeyt
compileKeyt    formatStrR((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pyRss&
* 
       
    cCs0tjƒj|ƒ}|sdSt|gƒdS(N(RFRtGetPlayerByIndexR{(Rjt
clientDatattickR‹((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytOnQueryArenaBattleRecord:s
 c    Csš|s!|jƒ}t|ƒ}ntjƒ}g|_x;|D]3}tjƒ}|j|_|j|_    |j
|_ |j |_ t|jƒ|_t|jƒ|_|j|_|j|_|j|_|j|_|jtkr`tj|jƒ}|r`tj|ƒ}|d}|d|_ |d|_|d|_ |t!j"|_#|t!j"|_$q`n|jj%|ƒq=Wt|jƒ|_&t'j(||ƒdS(NRRRR()R†RURKttagGCArenaBattleRecordListtBattleRecordListttagGCArenaBattleRecordRRORRPRRRRQRîRtAddScoreRRt AddScoreLenRtIsWinRtTimeRRR    RRíR#R$R%RRRR8R9RRSRVt RecordCountRURV(    R‹RsR RWRltrecInfoRIRJR>((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pyR{Bs>                
   c Cs"tjƒj|ƒ}|sdS|j}t|ƒ}|sXtjd||jƒƒdS|d}|j}tj    ƒ}||_||_
t j |ƒ}    |    rt j |    ƒ}
|
d} |
d|_|
d|_|
d|_|
d|_| tj|_| tj|_ntj||ƒdS(Ns6¾º¼¼³¡Íæ¼ÒÎÞ¶ÔÕ½¼Ç¼£¬ÎÞ·¨²éѯ×îÐÂÊý¾Ý! tagPlayerID=%siÿÿÿÿRRRPRR(RFRR¦RORURR†RRKttagGCArenaBattlePlayerInfoRQR#R$R%RRPRRRR8R9RRSRURV( RjR§R¨R‹RRƒR„RRWRIRJR>((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytOnQueryArenaBattlePlayeros2     
             
    (((@RFR8R„RRdR#RïRZRKR|RURbRxRªRzRXRíR"Ryt*Def_UniversalGameRecType_ArenaBattleRecordRIRR RRRRRR"R$R'R)R,R.R1R3R6R;R?RDR€RURR‚RR•R—R]RgRfRÀR¨R‘RR‡RRRŠR RˆRsR©R{R´(((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pyt<module>sz                    '                                                                    6                                )    0    0        /    D     Û    #         Ç    
            -