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
E;gc@s…ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZdZdZdZejZdd2d„ƒYZdd3d„ƒYZd    „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&„Z5d'„Z6d(„Z7dd)„Z9d*„Z:d+„Z;d,„Z<d-„Z=d.„Z>d/„Z?d0„Z@d1„ZAdS(4iÿÿÿÿ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.pyR6s                        (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.pyRGs                                                (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.pytGetArenaBillIDgscCs
|jƒS(N(tGetName1(R((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytGetArenaBillNamehscCs |j|ƒS(N(tSetName1(Rtname((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytSetArenaBillNameiscCs
|jƒS(N(tGetType2(R((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytGetArenaBillJobjscCs
|jƒS(N(t    GetValue1(R((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytGetArenaBillRealmLVkscCs |j|ƒS(N(t    SetValue1(RtrealmLV((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytSetArenaBillRealmLVlscCs
|jƒS(N(t    GetValue2(R((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytGetArenaBillLVmscCs|j|ƒdS(N(t    SetValue2(Rtlv((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytSetArenaBillLVnscCs
|jƒS(N(t    GetValue3(R((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytGetArenaBillFaceoscCs|j|ƒdS(N(t    SetValue3(Rtface((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytSetArenaBillFacepscCs
|jƒS(N(t    GetValue4(R((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytGetArenaBillFacePicqscCs|j|ƒdS(N(t    SetValue4(RtfacePic((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytSetArenaBillFacePicrscCs
|jƒS(N(t GetCmpValue(R((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytGetArenaBillScoresscCs |j|ƒS(N(t SetCmpValue(Rtscore((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytSetArenaBillScoretscCs|jƒtj|jƒS(N(t GetCmpValue2t ShareDefinetDef_PerPointValuet GetCmpValue3(R((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytGetArenaBillFightPoweruscCs,|j|tjƒ|j|tjƒdS(N(t SetCmpValue2R8R9t SetCmpValue3(Rt
fightPower((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytSetArenaBillFightPowervsc    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.pyRD{sL    ++ ++ ++  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||ƒndS(Niÿÿÿÿi(t PlayerControltGetIsTJGt GetPlayerIDRUtNoneRRt __SyncPlayerBechallengedUpdScore(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 
cCs%tjtjƒd}tjtjƒ}tjtjƒ}tjd||||fƒtj    ddƒ}||kr’|dkr’tjdƒdSt
dƒt ƒtj ƒj tƒit_it_||krö|dkrötjtjdƒntjtj|dƒtƒtjdƒtS(    sX Èü¼¾ÖØÖÃ
           Èü¼¾¹æÔò£ºÇ°¶¨ÖÆÔËÓª×î´ó¿ª·þÌìΪһ¸öÈü¼¾£¬ºóÐø°´ OnWeekEx ÖØÖÃ
    isEÖØÖþº¼¼³¡! resetName=%s,openServerDay=%s,OSSeasonState=%s,worldLV=%sRŒis¿ª·þ¶¨ÖÆÌìÄÚ²»ÄÜÖØÖã¡NtWeeks,=============== ÖØÖþº¼¼³¡OK ===============(RZR[RR\R8t"Def_Notify_WorldKey_WorldAverageLvRFRJRbRcRŽRgRGRwRIRxRytg_arenaPlayerMatchDicttSetDBGSTrig_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.pyRg5sF
      
 
 
  ;
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.pyRfes:
      
 
 !
 
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 |jƒ}| s%t|ƒdkr9tjd|ƒdS|d}t||ƒ\}}    }
} } } |s‚tjd||ƒdS|tkrœ|tjkr¾tjd|tjf|ƒdSt    j
ddiƒ}g|j ƒD]}t |ƒ^qà}|j ƒd}x*|D]"}|    |krt|ƒ}PqqW||kr_tjd||    f|ƒdS||}||krœtjd    ||    ||f|ƒdSntS(
NisûÓÐÖ¸¶¨valueList!isBÕÒ²»µ½¶ÔÕ½¶ÔÊÖ£¬²»ÔÚÆ¥ÅäÁбí»ò¶ÔÕ½¼Ç¼À²»ÄÜÕ½¶·£¡tagPlayerID=%ss>¾º¼¼³¡ÇëÇó»ØºÏÕ½¶·Ä¿±êΪ»úÆ÷ÈËʱtagType´íÎ󣡠tagType=%s != %stArenaRobotLVNPCRsE¾º¼¼³¡ÕÒ²»µ½¸ÃµÈ¼¶»úÆ÷È˶ÔÓ¦µÄ»ØºÏÕ½¶·NPCID£¡ tagPlayerID=%s,tagLV=%ss^¾º¼¼³¡ÇëÇó»ØºÏÕ½¶·µÄ»úÆ÷È˵ȼ¶¶ÔÓ¦µÄNPCID²»Ò»Ö£¡ tagPlayerID=%s,tagLV=%s,tagID=%s != npcID=%s(R…RRRFRWt__findBattleTagtErrLogRétChConfigtTurnBattle_TagType_NPCRbR¥RçRQRÜRêR™(RˆtmapIDt
funcLineIDttagTypettagIDt    valueListR Rt    isFindTagRRRRR    trobotLVNPCIDDicttlvStrRÃttagLVStrR&tnpcID((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytOnTurnFightRequest&s> 
!     %
 
     cCs¿tjdt|ƒ|jƒƒ|s*dS|d}t|ƒdkrP|dni}i}|dkr–t||d|d|d|jdƒƒn|d    kr´t||ƒ}n||gS(
NsMapServer_Arena %siit MatchRefresht    isRefreshtplayerLVt playerScoret gmMatchIDListt BattleResult(RFRWRêR…RRt__DoArenaMatchRefreshtgett__DoArenaBattleResult(RˆtmsgListtcmdtcmdDicttretDict((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytMapServer_ArenaKs 
" . 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ÓRQRÿR¾RVRÌRÜR†t
GetGMLevelt DebugAnswerRêRct    CanHappentpopt RandRobotIDRURRéRLRRRMRtPlayerViewCachet FindViewCachetGetCachePropDataDictRR"R'R?R,RR1R¢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.pyR^sN       
      
 $        "
      
 $        
 
 
    '
 
 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(NRRRRR iR!( tChPyNetSendPackttagGCArenaMatchListt    MatchListttagGCArenaMatchInfoRtPlayerIDRtJobRRRtScoreRR R    R!RéR,R-R.t
PlayerNameRR8R9Rt FightPowerExRRVRRt
MatchCountt NetPackCommont SendFakePack(RˆR2t
clientPackROt    matchInfoRRRSR>((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pyR"9s4             
   c CsOt}d\}}}}}tjj|gƒ}xw|D]o}    |    j|kr7t}|    j|    j|    j|    j    |    j
f\}}}}}t j d|||f|ƒPq7q7Wt |ƒ}
|s9xz|
D]o} | j|krÃt}| j| j| j| j    | j
f\}}}}}t j d|||f|ƒPqÃqÃWn||||||fS(Nis6    ¶ÔÊÖÔÚÆ¥ÅäÁбíÖÐ! tagLV=%s, tagJob=%s, tagScore=%ss6    ¶ÔÊÖÔÚ¶ÔÕ½¼Ç¼ÖÐ! tagLV=%s, tagJob=%s, tagScore=%s(iiiii(R©RxR—RRR™RRRRR    RFRWRU( R RRRRRRR    R2ROR‰Rl((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pyRþ\s$ 3  3 c:Csii}|j|ƒ|jƒ}|jƒ}tjdt|ƒ|ƒ|d}|d}|d}|d}|sw|S|}    d5\}
} } t||ƒ\} }}}}}| sËtjd||ƒ|St|ƒ}tj    ƒj
t j ƒ}|sù|S|t kr“tjƒj|ƒ}|r6tj|ƒ r6d    nd}t|ƒ}t|ƒdkrd|d
nd}|r“|j}tjd ||ƒq“n|jƒ}|jƒ}|d }|d }d}t||    ||ƒ}td||ƒ}|j|ƒd    } |t j}!|t j}"|jƒ}#|jƒ}$tj|||t j ||||dtd|!d|"d|#d|$ƒg}%|rt j!ddƒ}&tj"|&ƒ}'|'r|%j#|'d ƒt|'ƒdkrÕ|'dnd}(|(rtj$dd|jƒ|'dd|'d    gƒqqnt|||    | ƒ})td||)ƒ}*|t kr/t%j&|ƒ}+|+rTt%j'|+ƒ},d}-|,d}|,d}.|,d}
|,d} |,d} | t j}/| t j}0|,j(ddƒ}|,j(ddƒ}tj||.|-t j ||
||*dtd|/d|0d|d|ƒqTn%|j)|ƒ}1|1rTt*|1|*ƒn|j+ƒ|j|ƒd    }2tjd||| |2f|ƒtjd||)|*f|ƒ|ji|d6|d 6| d!6|2d"6|%d#6t,d$6ƒ|t kr¸|j|ƒd    }3|3d    }4|3d    kr¡|4tt-j.ƒkr¡|4|j/ƒkr¡tjd%t-j.|ƒt-j.|4}5|j0|4ƒ}1t1|1|5ƒtjd&||3|5f|ƒq¸tjd'||ƒnt2t3t j4d(d)ƒƒ}6t5t6j6ƒƒ}7t7|ƒ}8|7|8_8||8_9||8_:||8_;|*|8_<t5|ƒ|8_=||8_>d    |8_?||8_||8_@||8_A|j#|8ƒt|ƒ|6kr|t|ƒ|6}|t-jB|<ntC||8gƒ|t kr§t7|ƒ}|7|_8||_9||_:||_;||_<t5| ƒ|_=|)|_>|rd    nd|_?|*|_|#|_@|$|_A|j#|ƒt|ƒ|6kr~|t|ƒ|6}|t-jB|<n|r§tC||gƒtD||*ƒq§ntjd*t-jBƒtjd+||ƒtE|t,||ƒi |d6|d,6|d6|d 6|d 6|    ||gd-6| d.6|d/6|d06|
d16| d26||)|*gd36|d6}9tFjGd4|9ƒ|S(6Ns¾º¼¼³¡Íæ¼ÒÕ½¶·½á¹û: %sRRRRiRsDÕÒ²»µ½¶ÔÕ½¶ÔÊÖ£¬²»ÔÚÆ¥ÅäÁбí»ò¶ÔÕ½¼Ç¼À²»´¦Àí½áË㣡tagPlayerID=%siiÿÿÿÿsA    ¶ÔÊÖÊÇÍæ¼Ò£¬´Ó¶ÔÊÖ×îжÔÕ½¼Ç¼ÖлñµÃ¶ÔÊÖ×îлý·Ö! tagScore=%sR!R>RžRŸR tvalue3tvalue4tArenaBattleAwarditArenaWinerItemRRRRtAccIDR R!sA    ¸üÐÂ×ÔÉí»ý·Ö: 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=%sRXtcurScoretTagAccIDt TagPlayerIDRt
tagRealmLVt tagFightPowerRtArenaBattleResult(iis(HtupdatetGetAccIDR…RFRWRêRþRÿRUR^R_R8R`RétGetPlayerManagertFindPlayerByIDRƒR„RRR†RtGetJobtGetNamet__CalcBattleAddScoreRÌR#R9tGetFacet
GetFacePicRdR¨R©RbR¥tGetResultByRandomListRVt WorldNotifyR,R-R.RtFindByIDR6RªR™RxR¢RaRMR'RÓtMaxBattleRecCountRcRQttimeR RRRRRRRRRR    Ryt__SyncArenaBattleRecordR‡RtDataRecordPackt SendEventPack(:RˆRRtaccIDR RRRRRkRnRottagAccIDRRRRRR    R‰Rut    tagPlayert    tagOnlinettagBattleRecListt tagBattleRect    playerJobt
playerNameR!R>R³RRRgRŸR R+R0Rit randItemListt awardItemInfot isWorldNotifyt tagAddScoret updTagScorettagCacheRSt    tagOpInfot tagPlayerNamet tagCmpValue2t tagCmpValue3trobotBillboardDataRht tagUpdOrdert tagOrderIndext
updRobotLVtbattleRecMaxCountRRltdrDict((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pyRws   
 
 
 
 !  " "      
 
    +"6 
 
 
 
 
  1
 % 
3                                                                                    6#c    Csi|jƒ}|jƒ}tdi|d6gƒ}tjƒjdd||d|t|ƒ|jƒƒdS(NtUpdScoreRitArena(R…t GetRealMapIDRêRFRstMapServer_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(NRdiisU    ¼ÆËãµÃ·Ö¹«Ê½: 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†RFRÿRQRêRÑtFormulaControltGetCompileFormulaRW( R RkRRt    diffScoretcalcScoreFormatDictt scoreKeyListtcalcKeytscoreKeyt
compileKeyt    formatStrR((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pyRw5s&
* 
       
    cCs0tjƒj|ƒ}|sdSt|gƒdS(N(RFRstGetPlayerByIndexR(Rjt
clientDatattickRˆ((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytOnQueryArenaBattleRecordSs
 c    Cs¯|s!|jƒ}t|ƒ}ntjƒ}g|_xP|D]H}tjƒ}|j|_|j|_    |j
|_ |j |_ t|jƒ|_t|jƒ|_|j|_|j|_|j|_|j|_|jtkrutj|jƒ}|rutj|ƒ}|d}|d|_ |d|_|d|_ |t!j"|_#|t!j"|_$|j%ddƒ|_qun|jj&|ƒq=Wt|jƒ|_'t(j)||ƒdS(NRRRRR i(*R…RURTttagGCArenaBattleRecordListtBattleRecordListttagGCArenaBattleRecordRRXRRYRRRRZRêRtAddScoreRRt AddScoreLenRtIsWinRtTimeRR R    R!RéR,R-R.R[RR8R9RR\RRVt RecordCountR^R_(    RˆRsR R`RltrecInfoRRRSR>((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pyR[s@                
   c Cs7tjƒj|ƒ}|sdS|j}t|ƒ}|sXtjd||jƒƒdS|d}|j}tj    ƒ}||_||_
t j |ƒ}    |    r#t j |    ƒ}
|
d} |
d|_|
d|_|
d|_|
d|_| tj|_| tj|_|
jdd    ƒ|_ntj||ƒdS(
Ns6¾º¼¼³¡Íæ¼ÒÎÞ¶ÔÕ½¼Ç¼£¬ÎÞ·¨²éѯ×îÐÂÊý¾Ý! tagPlayerID=%siÿÿÿÿRRRYRRR i(RFRsRªRXRURÿR…RRTttagGCArenaBattlePlayerInfoRZR,R-R.RRYR[RR8R9RR\RR R^R_( RjR«R¬RˆRR†R‡RR`RRRSR>((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pytOnQueryArenaBattlePlayer‰s4     
             
    (((BRFR8RƒR¡RdR,RëRZRTR€R^RbRxRR¦R~RXRéR+R}t*Def_UniversalGameRecType_ArenaBattleRecordRIRR RRRRRR"R$R'R)R,R.R1R3R6R;R?RDR€RURR‚RŠR’R”R]RgRfR¼R¤RŽR RR†RR"RþRR‡RwR­RR¸(((saE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldArena.pyt<module>s~                     '                                                                    6                                &    0    0        /    D    %     Û    #        ´    
            .