hwj35
2025-06-16 12bfd1cd414e0fa14310a800df8288a844d6489f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
¢/Ygc@sZddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZe jZdd)d„ƒYZd„Zd„Zd„Zd„Zdd    „Zd
„Zd „Zd „Zd „Zd„Zd„Z d„Z!d„Z"dd„Z#dd„Z%d„Z&d„Z'd„Z(d„Z)e*d„Z+e,d„Z-d„Z.d„Z/d„Z0d„Z1d„Z2d„Z3d „Z4d!„Z5d"„Z6d#„Z7d$„Z8dd%„Z9d&„Z:d'„Z;d(„Z<dS(*iÿÿÿÿNtCrossBattlefieldBuycBs2eZdZd„Zd„Zd„Zd„ZRS(s ¿ç·þÕ½³¡¹ºÂò¼Ç¼
    cCs|jƒdS(N(tClear(tself((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pyt__init__As
cCsLd|_d|_d|_d|_d|_d|_g|_i|_dS(Ni(tbuyTimethmNumtzoneIDtplayerIDt    factionIDt
serverOnlytcallPlayerIDListtcallPlayerDict(R((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pyREs                                cCsßi|_x|jD]t}tj|ƒ}|s4qntj|ƒ}i|dd6|dd6|dd6|dd6|dd6|j|<qWi|jd6|jd6|jd6|jd    6|j    d
6|j
d 6|jd 6|jd 6S(NtNametJobtLVtRealmLVt
FightPowerRRRRRR    R
R ( R R
tPlayerViewCachet FindViewCachetGetCachePropDataDictRRRRRR    (RRtcurCachet    cacheDict((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pytGetSyncClientServerStringRs    $$5cCs1x*|jƒD]\}}t|||ƒq WdS(N(titemstsetattr(RtattrDicttktv((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pytSetAttr_s(t__name__t
__module__t__doc__RRRR(((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pyR>s
              c CsStjƒsdSit_tjƒ}|jtƒ}tjd|jƒƒxt    |jƒƒD]í}|j
|ƒ}|j ƒ}|j ƒ}|j ƒ}|jƒ}|jƒ}|jƒ}    tƒ}
|jƒ|
_||
_||
_||
_||
_||
_|    rt|    ƒng|
_t||ƒ} |
| |<tjd|
jƒƒq^WdS(Ns¼ÓÔØ¿ç·þÕ½³¡¹ºÂò¼Ç¼! %ss    %s(t    GameWorldt IsCrossServert
PyGameDatatg_crossBattlefieldBuyInfotGetUniversalRecMgrt GetTypeListtDef_RecType_CrossBattlefieldBuytLogtCounttxrangetAtt    GetValue1t    GetValue2t    GetValue3t    GetValue4t    GetValue5t GetStrValue3RtGetTimeRRRRRR    tevalR
tGetBuyPlayerInfoR( tuniversalRecMgrt recDataListtindextrecDataRRRRR    t    strValue3tbuyRect buyPlayerInfo((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pyt OnServerStartds4                                    
cCsBtjƒsdStjƒ}|jtƒtjdƒ|jtƒ}xötjj    ƒD]å\}}xÖ|j    ƒD]È\}}x¹|j
ƒD]«}tjd|j ƒƒ|j ƒ}|j |jƒ|j|jƒ|j|jƒ|j|jƒ|j|jƒ|j|jƒ|jt|jƒjddƒƒq‡WqnWqUWdS(Ns±£´æ¿ç·þÕ½³¡¹ºÂò¼Ç¼!s    %ss t(R R!R$tDeleteR&R'R%R"R#RtvaluesRtAddRectSetTimeRt    SetValue1Rt    SetValue2Rt    SetValue3Rt    SetValue4Rt    SetValue5R    t SetStrValue3tstrR
treplace(R4R5t_t    buyHMInfoR:R9R7((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pyt OnServerClose‰s&     .cCs |d|S(Nid((topenHourt
openMinute((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pytGetHMNum¥scCs|d|dfS(Nid((R((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pyt
GetHMByNum¦sicCs#tjtj|ƒ}|sgS|S(N(tCrossRealmPlayert&GetCrossZoneIpyDataListByServerGroupIDtChConfigtDef_FBMapID_CrossBattlefield(t serverGroupIDt ipyDataList((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pyt"GetCrossBattlefieldZoneIpyDataList¨scCstjtj|ƒS(N(RPt"GetCrossZoneIpyDataByServerGroupIDRRRS(RT((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pytGetCrossBattlefieldZoneIpyData¯scCs t|ƒ}|sdS|jƒS(Ni(RXt    GetZoneID(RTt zoneIpyData((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pytGetCrossBattlefieldZoneID³s cCs9ttjƒƒ}|sdS|jƒ}t||ƒdS(N(RXR tGetServerGroupIDRYtSyncCrossBattlefieldBuyInfo(t    curPlayerRZR((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pyt OnPlayerLoginºs   cCs$tjƒsdSit_tƒdS(N(R R!R"R#t'Sync_CrossBattlefieldDataToClientServer(((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pyt    DoOnDayExÂs
     c CstjƒsdStjddƒ}tjddiƒ}tjddiƒ}tjddiƒ}tjddiƒ}d„|jƒDƒ}d„|jƒDƒ}d„|jƒDƒ}d    „|jƒDƒ}i|d
gtj6|d gtj6|d gtj    6}    t
j ƒ}
xÚ|    jƒD]Ì\} } | \} }|
j | ƒ}tj d | |fƒx‹|D]ƒ\} }}|
j| ||ƒ}|s’qbn|jƒx<t|jƒƒD](}|j|ƒ}|sÐq¯n|j}|j}|d}g}tj| |tgƒ}|r |j|ƒn|g}| tjkr|rtj||tddgƒ\}}t|||ƒ}|j||dgƒntj d| ||||fƒ|r¯tj||g||dtƒq¯q¯W|jƒqbWqWtjt j!ƒdS(NtCrossBattlefieldBillboardJoiniiitCrossBattlefieldBillboardcSs%i|]\}}|t|ƒ“qS((tint(t.0RR((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pys
<dictcomp>Ós    cSs%i|]\}}|t|ƒ“qS((Rd(ReRR((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pys
<dictcomp>Ôs    cSs%i|]\}}|t|ƒ“qS((Rd(ReRR((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pys
<dictcomp>Õs    cSs%i|]\}}|t|ƒ“qS((Rd(ReRR((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pys
<dictcomp>Ös    tCrossBattlefieldEnterOrderWeektCrossBattlefieldCallOrderWeektCrossBattlefieldScoreOrderWeeks7¹ýÖܽáËã¿ç·þÕ½³¡Öܰñ½±Àø: billboardType=%s,groupList=%siisE    billboardType=%s,rank=%s,playerID=%s,cmpValue=%s,awardItemList=%st    crossMail("R R!t IpyGameDataPYt
GetFuncCfgtGetFuncEvalCfgRt ShareDefinetDef_CBT_BattlefieldWJointDef_CBT_BattlefieldWCalltDef_CBT_BattlefieldWScoret PyDataManagertGetCrossBillboardManagertGetBillboardGroupListR'tGetCrossBillboardtSortDataR)tGetCountR*tIDtCmpValuetGetOrderValueByDicttFalsetextendRdtappendtPlayerCompensationt SendMailByKeytTruet    ClearDatatPlayerFuncTeamt DelTeamByFuncRRRS(tenterWeekMoneyItemIDtenterWeekMoneyMultiDicttenterWeekOrderAwardDicttcallWeekOrderAwardDicttscoreWeekOrderAwardDicttenterWeekMoneyMultiIntDicttenterWeekOrderIntAwardDicttcallWeekOrderIntAwardDicttscoreWeekOrderIntAwardDictt billboardDictt billboardMgrt billboardTypetdoInfot    awardDicttmailKeyt    groupListt groupValue1t groupValue2t billboardObjtit billboardDataRtcmpValuetrankt awardItemListtrankAwardItemListt    paramListtmoneyBaseCountt
multiValuetawardMoneyCount((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pyt
DoOnWeekExÉs`   
        
    $    &cCstjƒjtjtjƒS(N(R t GetGameWorldt GetDictByKeyRmt$Def_Notify_WorldKey_DailyActionStatetDailyActionID_CrossBattlefield(((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pytGetCrossBattlefieldStatescCs_xXtjjƒD]G}x>|jƒD]0}x'|jƒD]}||jkr6tSq6Wq#WqWtS(N(R"R#R>R
RRz(RRJR:R9((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pytIsBattlefieldCallPlayers cCsS|tjkritj|<ntj|}||krEi||<n||}|S(N(R"R#(RRRJR:((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pyR3s   
cCs™tjd|ƒt|ƒ}|s'dStƒ}i|d6}tjtj|ƒxB|D]:}|jƒ}|rx|gn    |j    ƒ}t
||ƒqWWdS(sL Í¬²½¿ç·þÕ½³¡Êý¾Ýµ½×Ó·þÎñÆ÷
    @param serverGroupID: Îª0ʱͬ²½ËùÓÐ×Ó·þ
    s,ͬ²½¸ø×Ó·þ¿ç·þÕ½³¡Êý¾Ý: syncServerGroupID=%sNtbattlefieldState( R R'RVR¥t CrossRealmMsgtSendMsgToClientServerRmtCrossServerMsg_BattlefieldStateRYtGetServerGroupIDListt"Send_CrossServerMsg_BattlefieldBuy(RTt crossZoneListR§tdataMsgRZRtserverGroupIDList((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pyR`s        c Csïtjj|iƒ}|r>t|d|dƒ}|g}n |jƒ}i}xg|D]_}||kroqWn||}i}x*|jƒD]\}    }
|
jƒ||    <qŒW|||<qWWi|d6|d6|d6} tjt    j
| |ƒdS(NRLRMRt syncBuyHMInfotopData( R"R#tgetRNtkeysRRR¨R©RmtCrossServerMsg_BattlefieldBuy( RR¯R±RJRt    hmNumListR°R:tsyncBuyPlayerInfoRR9tsendMsg((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pyR¬3s"    
cCstƒtƒdS(N(t$SyncMapServerCrossBattlefieldBuyInfot+SyncMapServerCrossBattlefieldSysCallBuyInfo(((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pytOnMapServerInitOKLscCs³i}x“tjjƒD]‚\}}i||<xi|jƒD][\}}i}x8|jƒD]*\}}i|jd6|jd6||<qXW||||<q9WqWtjtj|ƒdS(NR
R(    R"R#RR
RR tSendMapServerMsgExRmt0Def_Notify_WorldKey_CrossBattlefieldCallTeamInfo(tsyncMapBuyInfoRRJRR:tbuyInfoRR9((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pyR¸Rs
"cCs tj}tjtj|ƒdS(N(R"t g_crossBattlefieldSysCallBuyListR R»Rmt2Def_Notify_WorldKey_CrossBattlefieldSysCallBuyInfo(R½((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pyR¹`s    cCstjƒsdStƒdS(N(R R!tDispose_CrossBattlefieldState(((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pytOnMinuteProcesses cCsd}tj|ƒ}tjƒ}d|j|j|jf}|rr|d|krrtjd|ƒt|dfStj    ddƒ}tj    ddƒ}||}tj
dt j ƒ}|rÇ|j ƒnd    }    tj    dd
ƒ}
g} d|j|j|jf} x£|D]›\} }tjjd | | |ftjƒ}|tjd |    ƒ}i}x/|
D]'}|tjd | ƒ}|||<q\W| j| ||||gƒqWtj||| gƒ}tjd ||fƒtjd||    fƒtjdƒ|r ttƒnt|dfS(NtCrossBattlefieldTimeInfos%d-%d-%dis1ÒѾ­¼ÓÔØ¹ý±¾ÈÕ¿ç·þÕ½³¡Ê±¼ä״̬ÐÅÏ¢£¡reloadSign=%sitCrossBattlefieldOpenit DailyActioni
is%s %02d:%02d:00tminutess@±¾ÈÕ¿ç·þÕ½³¡Ê±¼ä״̬ÐÅÏ¢¼ÓÔØÍê±Ï!reloadSign=%s,isRefreshState=%ss&    allOpenHMList=%s,fbTotalMinutes=%ss==============================================================(Rjt GetConfigExR t GetServerTimetyeartmonthtdaytDebugLogRzRltGetIpyGameDataRmR¤t GetDurationtdatetimetstrptimeRRtTYPE_Time_Formatt    timedeltaR|t SetConfigExR'RÁR(tisRefreshStatetkeyRÃt
serverTimet
reloadSignt sysOpenHMListtcallOpenHMListt allOpenHMListt dailyIpyDatatfbTotalMinutestopenNotifyMinuteListtbattleTimeInfoListt startDateStrRLRMt openDateTimet closeDateTimetnotifyOpenTimeDicttnotifyOpenMinutetnotifyOpenDateTime((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pyt__GetCrossBattlefieldTimels< 
%    c
Csttƒ\}}|p|}tjƒ}tjjd|j|j|j|j    |j
ft j ƒ}d}x||D]t\}}}}}    ||    kr¯|    |}
t |||
ƒn||koÆ|knrq|d|}|t_qqqqWtjtj} tjƒ} | j| ƒ} | r+| |kr+dStj| |ƒ| j| |ƒtjd| |fƒ|r÷| |kr÷tjjt jdƒgt_gt_|}t|ƒ\}}tj ddƒ}t!ƒ}x%|D]}|j"ƒ}||g|krrtj ddiƒ}|j#t jgƒ}tjd    ||fƒ|rðt$t%|ƒƒ}t&j'|t j|t(ƒqðqÖtj)j#|iƒ}||krßt%||ƒdkrßtjd
|ƒdg}t&j'|t j|t(ƒqÖtjd |ƒqÖWni|d 6}t*j+tj,|ƒdS( Ns%d-%d-%d %d:%d:00iids4¿ç·þÕ½³¡×´Ì¬±ä¸ü: beforeState=%s,battlefieldState=%sRÄitCrossDynamicLineMapisH    ¿ªÆôÕ½³¡ÏµÍ³¾Ö£¬È·±£Ã¿¸öµÈ¼¶¶Î¶¼ÓÐÒ»³¡: zoneID=%s,lvRangeInfoList=%ss'    ÓÐÕÙ¼¯µÄ³¡´Î¿ªÆô·ÖÇøÕ½³¡! zoneID=%ss'    ÎÞÕÙ¼¯µÄ³¡´Î²»¿ª·ÖÇøÕ½³¡! zoneID=%sR§(-RåRzR RÈRÏRÐRÉRÊRËthourtminuteRRRÑt__DoBattlefieldOpenNotifyR"tg_openDateTimeRmR£R¤R¡R¢R»tSetDictR'tg_crossDynamicLineInfotpopRStNonetg_overPlayerIDListR¿RORjRlRVRYR²trangetlentPlayerFBtOpenCrossDynamicLineBySysRR#R¨R©Rª(t reloadRefreshtisReloadtbattlefieldTimeListt curDateTimeR§RLRMRàRáRâRãtstateKeyt    gameWorldt beforeStateRRØR­RZRtdynamicLineLVRangeDicttlvRangeInfoListtfuncLineIDListRJR®((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pyRÁ—s^   
               "     c
Cstjddƒ}||g|kr}tƒ}|s7dSx?|D]7}|jƒ}|jƒ}tj|dd|gƒq>WdSt||ƒ}xutj    j
ƒD]d\}}    t j t j|ƒ}|sÉqœn|jƒ}||    krçqœntj|dd|gƒqœWdS(sA Ö´Ðпç·þÕ½³¡¿ªÆô¹ã²¥
                    »¹ÒªÏÞÖÆ¿ª·þÌ쿪Æô
    RÄiNitCrossBattlefieldOpenSys(RjRlRVRYR«t PlayerControltWorldNotifyCrossRNR"R#RRPtGetCrossZoneIpyDataByZoneIDRRRS(
RLRMRãRØR­RZRR¯tcurHMNumRJ((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pyRéæs(         cCsƒtƒ}|s6tjd|ƒtj||dƒdS|tjkr\tj||dƒdSt|ƒ\}}tj    ddƒ}||g|k}|r?|tj
krÒtjd||ƒtj||dƒdStj
|}||krtjd||f|ƒtj||dƒdStjr?tj||dƒdSntj rvtj ƒ}    |    tj j }
tjdd    ƒ} | d
} |
| krvtjd |
| f|ƒt} xJtjjƒD]9\}}|j|tƒr¼t} tjd |ƒPq¼q¼W|rM||}xA|jƒD]0}||jkrt} tjd |ƒPqqWn| rstj||d| gƒdSqvn|||fS(Nsµ±Ç°Ê±¼äÕ½³¡Î´¿ªÆô!t FBIsNotOpentCrossBattlefieldAlreadyJoinRÄis ¸Ã·ÖÇøÃ»ÓÐʹÓÃÕÙ¼¯Á zoneID=%ss)¸Ãʱ¶Î»¹Î´Ê¹ÓÃÕÙ¼¯Á zoneID=%s,hmNum=%stCrossBattlefieldCallOverii<s³Ùµ½ÁË! passSeconds=%s > %ss(ÒѽøÈëµÄÖØ¸´½øÈë²»ÏÞÖÆÊ±¼ä!  playerID=%ss&ÕÙ¼¯Áî³ÉÔ±²»ÊÜÈËʱ¼äÏÞÖÆ!  playerID=%stCrossBattlefieldBelate(R¥R R'RÿtNotifyCodeCrossR"RïRORjRlR#RêRÈtsecondsRkRÌRtg_crossDynamicLineCopyMapInfoRtIsMustCopyMapPlayerRzR>R
(RTRRRRLRMRØt isCallBattleRJRÖt passSecondstcloseEnterMinutest closeSecondstisBelateRIt
copyMapObjR:R9((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pytGetCrossBattlefieldOpenTime
s`               
 
 
cCsŒtƒ}|sdS|tjkr2itj|<ntj|}    ||f}
|
|    krdg|    |
<n|    |
} | sxdSx t| dƒD]ü\} } | j| j}}|s³qˆn||f}|tjkrÔqˆntj|}|j|kröqˆntjj    |iƒ}||krqˆn||}x8|j
ƒD]*}||j kr4t j d|ƒ|Sq4W|j||||ƒ}|rˆ|SqˆWdS(Nis,ÕÙ¼¯Áî³ÉÔ±²»ÊÜÈËÊýÏÞÖÆ£¬¿É½øÈ룡 playerID=%s(R¥R"Rìt    enumeratet    realMapIDt    copyMapIDR    RR#R²R>R
R RÌtOnRequestEnterCrossCopyMap(RRTtmapIDt
funcLineIDRtcopyMapPlayerMaxtincludeOfflinettickRt zoneLineDictt zoneLineKeytfuncLineObjListRIt funcLineObjRRRÕRRJR:R9tcanEnter((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pytGetCallPlayerCopymapObjMsD        
 
c+Cs÷tjƒsdSt|ƒ}|s&dS|jƒ}|d}|d}|d}|d}|d}|d}    |d}
|d} |d    } |d
} |jd d ƒ}|jd d ƒ}|jdd ƒ}t| | ƒ}tj|tƒ}|r7tj    |ƒ}||d<||d<||d<||d<|    |d<nt
j ddƒ}| | g|kr.|t j kr‹tjd|| | f|ƒdSt j j|ƒttjƒƒ}tjd|| | f|ƒt
jddƒ}|||df\}}}}||d }}}|
d}||kr[tjtj||||||||d|d|ƒ    n|g}|jidd6|d6ƒi|d6|d 6|d!6} tjtj| |ƒtƒtjƒj|ƒ}!|!r*tdt j gƒ}"tjƒj d d |!j!ƒ|!j"ƒd"|"t#|"ƒ|!j$ƒƒndS|t j%krMit j%|<nt j%|}#||#krsi|#|<n|#|}$||$krªtjd#|| | f|ƒdSd(\}%}&x@|$j&ƒD]2\}'}(|(j'| krë|%d7}%qÃ|&d7}&qÃW|%|&kr/tjd$|| | | |%|&f|ƒdSttjƒƒ}t(ƒ}(||(_)||(_*||(_+||(_,| |(_'|g|(_-||(_.|(|$|<tjd%|| | | |f|ƒt
jddƒ}|||df\}}}}||d }}}|
d}||krJtjtj||||||||d|d|ƒ    nxh|$j&ƒD]Z\})}*|)|kruqWn||*j-krW|*j-j/|ƒtjd&|)|f|ƒqWqWWt0ƒ|j1ƒ}|jid'd6|d6ƒt2|||ƒdS()NRt
playerNamet    playerJobtplayerLVtrealmLVt
fightPowertbuyOpenCountWeekRLRMtfactionR    itfacetfacePicR R RRRRÄis>Íæ¼ÒÒѾ­¹ºÂò¹ý¸Ãϵͳ³¡´Î£¡ zoneID=%s,openHour=%s,openMinute=%ss:Íæ¼Ò¹ºÂòϵͳÕÙ¼¯³¡´Î£¡ zoneID=%s,openHour=%s,openMinute=%sRcR<tvalue3tvalue4t
SysCallBuytopTypeRRtSysCallBuyPlayerIDR±tCrossBattlefields>Íæ¼ÒÒѾ­¹ºÂò¹ý¸ÃÕÙ¼¯³¡´Î£¡ zoneID=%s,openHour=%s,openMinute=%ssÕóӪƽºâÏÞÖÆ£¬²»¿ÉÔÙ¹ºÂò¸Ã¿ç·þÕ½³¡ÕóÓª£¡ zoneID=%s,openHour=%s,openMinute=%s,faction=%s,curFactionCount(%s) > othFactionCount(%s)sSÍæ¼Ò¹ºÂò¿ªÆôÕÙ¼¯³¡´Î£¡ zoneID=%s,openHour=%s,openMinute=%s,faction=%s,serverOnly=%ss?    ´ÓÒѼÓÈëµÄÆäËûÕÙ¼¯¶ÓÎéÒÆ³ý: otherBuyPlayerID=%s,playerID=%stBuyOpen(ii(3R R!RXRYR²RNRRRRRjRlR"R¿R'R|RdttimeRÌRktCrossBillboardtUpdCrossBillboardRmRotupdateR¨R©R´R¹tGetPlayerManagertFindPlayerByIDRGtMapServer_QueryPlayert GetPlayerIDt GetRealMapIDRñtGetRouteServerIndexR#RRRRRRRR
R    tremoveR¸R«R¬(+RTtmsgDataRZRRR!tjobR#R$R%R&RLRMR'R    R(R)RRRRØRtbillboardCallCountLimitR“tdataIDtname1tname2ttype2tvalue1tvalue2R˜R¯R·t    buyPlayertsendCMDRJR:tcurFactionCounttothFactionCountRIR9totherBuyPlayerIDtotherRec((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pyt"ClientServerMsg_BattlefieldBuyOpen|sÈ   
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 7    $   
                                     
    
 7 ! cCs|d}|d}|d}|d}|d}t|ƒ}|sHdS|jƒ}t||ƒ}    t||    ƒ}
||
kr¥tjd|    ||
jƒf|ƒdS||
krÏtjd|    |f|ƒdS|
|} tjdd    ƒ} t    | j
ƒ| kr$tjd
|    || j
f|ƒdStj d |||||f|ƒ|| j
kri| j
j |ƒnxh|
j ƒD]Z\} }| |kr”qvn||j
krv|j
j|ƒtj d | |f|ƒqvqvWtƒ|jƒ}|jid d6ƒt|||ƒdS(NRLRMt buyPlayerIDt tagPlayerIDRsMÍæ¼ÒÒѹºÂò¸Ã³¡´ÎÕÙ¼¯¶ÓÎ飬ÎÞ·¨¼ÓÈëÆäËûÕÙ¼¯¶ÓÎé! hmNum=%s,tagPlayerID=%s in %ss7¿ç·þÕ½³¡²»´æÔÚ¸ÃÍæ¼ÒµÄÕÙ¼¯¶ÓÎé! hmNum=%s,buyPlayerID=%stCrossBattlefieldCallisA¿ç·þÕ½³¡ÕÙ¼¯ÈËÊýÒÑÂú! hmNum=%s,buyPlayerID=%s,callPlayerIDList=%ssTÍæ¼Ò¼ÓÈëÕÙ¼¯¶ÓÎ飡 zoneID=%s,openHour=%s,openMinute=%s,buyPlayerID=%s,tagPlayerID=%ssB    ´ÓÒѼÓÈëµÄÆäËûÕÙ¼¯¶ÓÎéÒÆ³ý: otherBuyPlayerID=%s,tagPlayerID=%stCallJoinR-(RXRYRNR3R tErrLogR³RjRkRñR
RÌR|RR;R¸R«R4R¬(RTR<RLRMRLRMRRZRRR:R9tcallTeamMemMaxRIRJR¯((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pyt#ClientServerMsg_BattlefieldCallJoinsJ
 
 
 
 
   # 
      ! c CsJ|d}|d}|d}|d}|d}t|ƒ}|sHdS|jƒ}t||ƒ}    t||    ƒ}
||
krœtjd|    |f|ƒdS|
|} || jkrÜtjd|    ||| jf|ƒdS| jj|ƒtjd|||||f|ƒt    ƒ|j
ƒ} |j id    d
6ƒt || |ƒdS( NRLRMRLRMRs7¿ç·þÕ½³¡²»´æÔÚ¸ÃÍæ¼ÒµÄÕÙ¼¯¶ÓÎé! hmNum=%s,buyPlayerID=%ss]¿ç·þÕ½³¡ÕÙ¼¯¶ÓÎéûÓиÃÍæ¼Ò! hmNum=%s,buyPlayerID=%s,tagPlayerID=%s not in callPlayerIDList=%ssTÍæ¼ÒÕÙ¼¯¶ÓÎéÌßÈË£¡ zoneID=%s,openHour=%s,openMinute=%s,buyPlayerID=%s,tagPlayerID=%stCallKickR-( RXRYRNR3R RPR
R;RÌR¸R«R4R¬( RTR<RLRMRLRMRRZRRR:R9R¯((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pyt#ClientServerMsg_BattlefieldCallKick7s6
 
 
 
 
 
         c Cs|d}|d}|d}|d}t|ƒ}|s>dS|jƒ}t||ƒ}t||ƒ}    ||    kr’tjd||f|ƒdS|    |}
|r¨dnd|
_tjd||||f|ƒ|jƒ} |j    id    d
6ƒt
|| |ƒdS( NRLRMR    Rs4¿ç·þÕ½³¡²»´æÔÚ¸ÃÍæ¼ÒµÄÕÙ¼¯¶ÓÎé! hmNum=%s,playerID=%siisDÍæ¼ÒÕÙ¼¯¶ÓÎéÐ޸ģ¡ zoneID=%s,openHour=%s,openMinute=%s,serverOnly=%st
CallChangeR-( RXRYRNR3R RPR    RÌR«R4R¬( RTR<RLRMR    RRZRRR:R9R¯((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pyt%ClientServerMsg_BattlefieldCallChange\s*
 
 
 
 
     cOCs»ttjƒƒ}|\ }}}}}}}}    }
} } } tjd|||||||
| t| ƒf    |ƒtjddiƒ}tjddiƒ}tjddƒ}tjddƒ}d„|jƒDƒ}d„|jƒDƒ}tjd    d
ƒ}i}gg}}xŸ| D]—}|\}}}}}}}} }!}"}#}$}%}&}'}(})}*}+},}-}.}/}0}1}2}3t    j
j |ƒ|!g}4| |krá|j |ƒd }5tj ||!t ƒ}6tjd | |!|f|ƒnE|j |ƒd }5tj ||!t ƒ}6tjd| |!|f|ƒ|6rNtj|5|g|6|4dtƒn|||df\}7}8}9}:||d};}<}=|%d
7}%|%}>|>|krÓtjtj|7|8|9|:|;|<|=|>d|d|ƒ    n|"|#kr0|$|"|#7}$|"}#|$}>tjtj|7|8|9|:|;|<|=|>d|d|ƒ    ntjd| ||!||"|#|$|%|&|'|(f |ƒ|| |!|"|#|$|%|&|'|(|)|*|+|,|-|.|/|0|1|2|3g||<qW|rÔtjd||dtƒn|rötjd||dtƒnd\}?}@|
rh|rht|ƒdkrh|d|d
}?}@x0|
D]%}Atjd|Ag|gdtƒq<Wntjtj|ƒ}B|Br|Bjƒng}Ci|d6|d6|d6}Dtjtj|D|Cƒd}Et|ƒ\}F}Gtjdd
ƒ}Htjddƒ}I|H|I}J|Jjƒ|F|Gg|Jkr€|Jj |F|Ggƒd
}Kt|Jƒ|Kkr]|J|Kn|Jd\}L}Md|L|Mf}En|    r·|| |    |?|@|Eg}Nt!j"|Cdd|NƒndS(Ns¯¿ç·þÕ½³¡µØÍ¼Í¬²½½á¹û: hmNum=%s,zoneID=%s,funcLineID=%s,winnerFaction=%s,superItemInfo=%s,finalSuperItemPlayerID=%s,superItemPlayerIDList=%s,scoreKingID=%s,battlePlayerCount=%stCrossBattlefieldAwardiiiicSs%i|]\}}|t|ƒ“qS((Rd(ReRR((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pys
<dictcomp>†s    cSs%i|]\}}|t|ƒ“qS((Rd(ReRR((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pys
<dictcomp>‡s    RbitCrossBattlefieldOrderWins0    »ñʤÕóÓªÍæ¼Ò: faction=%s,rank=%s,playerID=%stCrossBattlefieldOrderLoses0    Ê§°ÜÕóÓªÍæ¼Ò: faction=%s,rank=%s,playerID=%sRiR<iR*R+s£    Õ½³¡ÕóÓªÍæ¼Ò: faction=%s,isWinner=%s,rank=%s,playerID=%s,score=%s,highScoreToday=%s,highScoreWeekTotal=%s,enterCountWeek=%s,teamID=%s,isCallOpen=%s,isCalled=%stCrossBattlefieldJoinWintCrossBattlefieldJoinLosetCrossBattlefieldSuperAwardRtoverTimetsyncPlayerDataInfoRÄs    %02d:%02dtCrossBattlefieldOver(ii(#RdR1R R'RñRjRlRRkR"RïR|RyRzR}R~RR2R3RmRnRpRPRRRRSR«R¨R©tCrossServerMsg_BattlefieldOverROtsortR6RÿR(OtmsgListR]Rt fbPropertyIDRRt winnerFactiont superItemInfotfinalSuperItemPlayerIDtfinalSuperItemPlayerNametsuperItemPlayerIDListt scoreKingIDt scoreKingNametbattlePlayerListtwinnerOrderAwardDicttloserOrderAwardDicttwinnerAwardListtloserAwardListtwinnerOrderIntAwardDicttloserOrderIntAwardDicttbillboardEnterCountLimitR^twinnerPlayerIDListtloserPlayerIDListt
playerInfoRR=R(R)R$tnametisWinnerR'R™tscorethighScoreTodaythighScoreWeekTotaltenterCountWeektteamIDt
isCallOpentisCalledtkillCntt ckillCntInfot killBossCntt killScoreKingt killGuardCntt    auraScoretsuperItemAwardCnttfactionBuffCollCnttpersonBuffCollCnttcrystalCollCntt wallCollCntRœtorderAwardMailKeytorderAwardItemListR“R?R@RARBRCRDR˜t superItemIDtsuperItemCounttsuperItemPlayerIDRZR¯R·tnextBattleTimeStrRLRMRØRÙRÚt nextOpenIndext nextOpenHourtnextOpenMinutet msgParamList((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pytMapServer_CrossBattlefieldOverzsŽ*    ,  W        "
 7 7    ,  &
 
,cCsj|d}tjƒ}tƒ}tjd||fƒtjtj}|j||ƒtj||ƒdS(NR§s@ÊÕµ½¿ç·þ·þÎñÆ÷ͬ²½µÄÕ½³¡×´Ì¬: battlefieldState=%s,beforeState=%s(    R R¡R¥RÌRmR£R¤RëR»(R<R§RùRúRÕ((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pyRªäs
     cCsÍtjd|ƒ|d}|d}|d}ttjƒƒ}||krqtjd||t|ƒfƒdSxU|jƒD]G\}}tj|ƒr~d|g|g}t    j
|d|t ƒq~q~WdS(Ns$ÊÕµ½¿ç·þ·þÎñÆ÷ͬ²½µÄÕ½³¡½áËãÐÅÏ¢: %sRR]R^s@·Ç±¾·þËùÊô·ÖÇøµÄ¿ç·þÕ½³¡¹ºÂòÐÅÏ¢! curZoneID(%s) != zoneID(%s) %stBattlefieldOverR/( R RÌR[R\RPRGRRÿtGetDBPlayerAccIDByIDRPt MapServer_QueryCrossPlayerResultR(R<RR]R^t    curZoneIDRt
playerDatatmsgInfo((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pyR`òs
 
 
  cCsÇtjd|ƒ|d}|jdiƒ}ttjƒƒ}||krotjd||t|ƒfƒdSd|krû|d}tj|ƒr÷|d}|d}|d}|d    }|d
}    d ||||    |gg}
t    j
|d |
ƒndS|d } | s!t j j |dƒnxf| jƒD]X\} } t|| ƒ}x:| jƒD],\}}tƒ}|j|ƒ|||<qVWq.Wtƒ| s¤d|krµtd|ƒdS|d}|d}|d}t||ƒ} td|| ƒ|dkr–|d}|d}tjdd|d||fgƒtj|ƒrÃ|d}|d    }|d
}    d ||||    |gg}
t    j
|d |
ƒqÃn-|dkr¥n|dkr´n|dkrÃndS(Ns$ÊÕµ½¿ç·þ·þÎñÆ÷ͬ²½µÄÕ½³¡¹ºÂòÐÅÏ¢: %sRR±s@·Ç±¾·þËùÊô·ÖÇøµÄ¿ç·þÕ½³¡¹ºÂòÐÅÏ¢! curZoneID(%s) != zoneID(%s) %sR.RLRMR'RttodayBuyOpenCounttBattlefieldBuyR/R°R-R0RR!itCrossBattlefieldBuyOpens%d:%02dRORSRU(R RÌR²R[R\RPRGRÿR–RPR—R"R#RíRîRR3RRR¸R]RNt WorldNotify(R<RR±R˜RRLRMR'RR›RšR°RR¶R:RLRR9R-R!((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pyR´sj
   
 
 
 
 
 
 
      
 
 
 
 
#
 
 
   cCs–tjj|iƒ}|dkr*|gn    |jƒ}tjƒ}g|_x£|D]›}t|ƒ\}}tj    ƒ}||_
||_ g|_ t ||ƒ}    x(|    jƒD]\}
} tjƒ} |
| _| j| _| j| _g| _x³| jD]¨} tjƒ}| |_| | jkr‘| j| }|d}|d|_|d|_|d|_|d|_|tj|_ |tj|_!n| jj"|ƒqùWt#| jƒ| _$|j j"| ƒq­Wt#|j ƒ|_%|jj"|ƒqRWt#|jƒ|_&|rt'j(||ƒnvt)j*ƒ}xgt+|j,ƒƒD]S}|j-|ƒ}|dks;|j.ƒ s;t/j0|ƒr~q;nt'j(||ƒq;WdS(NRR R RR(1R"R#R²RîR³tChPyNetSendPackttagGCCrossBattlefieldBuyInfot    HMBuyListROttagGCCrossBattlefieldBuyHMtHourtMinutet BuyPlayerListR3RttagGCCrossBattlefieldBuyPlayert BuyPlayerIDRtFactionR    t
ServerOnlytFactionPlayerListR
ttagGCCrossBattlefieldPlayertPlayerIDR t
PlayerNameR RRRmtDef_PerPointValueRt FightPowerExR|RñtFactionPlayerCounttBuyPlayerCounttHMCountt NetPackCommont SendFakePackR R5R)tGetPlayerCounttGetPlayerByIndext    GetInitOKRÿtGetIsTJG(R^RRRJRµt
clientPackthtmthmPackR:RLR9t buyPlayerPackt callPlayerIDt
playerPacktfactionPlayerInfoR%t playerManagerR–((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pyR]JsX!                                    
     (cCstjƒrdStjƒj|ƒ}|jƒ}|j}|j}|j}|}tj    ddƒ}    tj
ƒ}
tj |
ƒ} d| j | j | j||f} tj | ƒ} | tjd|     ƒ}| |kr÷tjd||| |f|ƒdSttjƒƒ}|sdSt||ƒ}t||ƒ}||kr[tjd||f|ƒdS||}tj    ddƒ}t|jƒ|kr°tjd    |||jf|ƒdS|jrÝtj|ƒ rÝtj|d
ƒdSi|d 6|d 6|d 6|d6|d6}tjt j!|ƒdS(NRÄis%s-%s-%s %s:%s:00RÆso¸Ãʱ¼äµãÕ½³¡ÒѹرÕÕÙ¼¯£¬²»ÄÜÔÙÕÙ¼¯¼ÓÈë! openHour=%s,openMinute=%s,crossServerDateTime(%s) >= endBuyDateTime(%s)s7²»´æÔÚ¸ÃÍæ¼ÒµÄ¿ç·þÕ½³¡ÕÙ¼¯¶ÓÎé! hmNum=%s,buyPlayerID=%sRNis9ÕÙ¼¯ÈËÊýÒÑÂú! hmNum=%s,buyPlayerID=%s,callPlayerIDList=%stCrossBattlefieldCallServerOnlyRLRMRLRMR("R R!R5R¶R8R£R¤R§RjRktGetCrossServerTimeStrtChangeStrToDatetimeRÉRÊRËRÏRÒR'R[R\RNR3RPRñR
RÌR    RÿR–t
NotifyCodeR¨tSendMsgToCrossServerRmRR(R6t
clientDataRR^RRLRMRLRMtcloseBuyMinutetcrossServerTimeStrtcrossServerDateTimet startTimeStrt startDateTimetendBuyDateTimeRRR:R9RQR®((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pytOnCrossBattlefieldJoinByCall‹sJ               "      
 )cCstjƒrdStjƒj|ƒ}|jƒ}|j}|j}|j}|}tjd|||f|ƒ||krdSt    j
ddƒ}    tj ƒ}
tj |
ƒ} d| j | j| j||f} tj | ƒ} | tjd|     ƒ}| |kr$tjd||| |f|ƒdSttjƒƒ}|s@dSt||ƒ}t||ƒ}||krˆtjd||f|ƒdS||}||jkrÈtjd||||jf|ƒdSi|d    6|d
6|d 6|d 6|d 6}tjtj|ƒdS(Ns6ÕÙ¼¯³¡´ÎÌßÈË: tagPlayerID=%s,openHour=%s,openMinute=%sRÄis%s-%s-%s %s:%s:00RÆso¸Ãʱ¼äµãÕ½³¡ÒѹرÕÕÙ¼¯£¬²»ÄÜÔÙÕÙ¼¯ÌßÈË! openHour=%s,openMinute=%s,crossServerDateTime(%s) >= endBuyDateTime(%s)s7²»´æÔÚ¸ÃÍæ¼ÒµÄ¿ç·þÕ½³¡ÕÙ¼¯¶ÓÎé! hmNum=%s,buyPlayerID=%ssW¸ÃÕÙ¼¯¶ÓÎéûÓиÃÍæ¼Ò! hmNum=%s,buyPlayerID=%s,tagPlayerID=%s not in callPlayerIDList=%sRLRMRLRMR(R R!R5R¶R8R£R¤t TagPlayerIDRÌRjRkRÃRÄRÉRÊRËRÏRÒR'R[R\RNR3RPR
R¨RÆRmRT(R6RÇRR^RRLRMRMRLRÈRÉRÊRËRÌRÍRRR:R9R®((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pytOnCrossBattlefieldCallKickÆsJ                "      
    )c    Cs…tjƒrdStjƒj|ƒ}|jƒ}|j}|j}|j}i|d6|d6|d6|d6}tj    t
j |ƒdS(NRLRMR    R( R R!R5R¶R8R£R¤R©R¨RÆRmRV(    R6RÇRR^RRLRMR    R®((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pytOnCrossBattlefieldCallChangeþs              "((=RÏR"R¨RÿRqRŸRPR}RRR2RjR³RmR RòRRtoperatorR1t,Def_UniversalGameRecType_CrossBattlefieldBuyR&RR;RKRNRORVRXR[R_RaR R¥R¦R3R`RîR¬RºR¸R¹RÂRRåRzRÁRéRR RKRRRTRVR”RªR`R´R]RÎRÐRÑ(((scE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossBattlefield.pyt<module>sp                       &    %                                 ;                                   + O    $    C    /    Š    1    %        j            E A    ;    8