hxp
2025-05-29 f08058713e574c675579ca5ccbfabeb1e6702cf0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
8hc@síddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZdZ dZ!dZ"dZ#dZ$dZ%dZ&d    Z'd
Z(d Z)d Z*d Z+dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6dZ7dZ8dZ9dZ:dZ;d Z<dZ=dZ>dZ?dZ@dZAd ZBd!ZCd ZDdZEdZFd"ZGd#ZHd$ZIdZJd%ZKd&ZLdZMd'ZNd(ZOd)ZPd*ZQeRd+ƒ\ZSZTd,„ZUd-„ZVd.„ZWeXd/„ZYdd0„Z[d1d2„Z\d1d3„Z]d1d4„Z^d5„Z_d6„Z`d7„Zad8„Zbd9„Zcd:eXedd;„Zed<„Zfd1dd:edd=„Zgd1d:d>„Zhd1d?„Zid@„ZjdA„ZkdB„ZldC„ZmdD„ZndE„ZoddF„ZpdG„Zqd:dH„ZrdI„ZsdJ„ZtdK„ZudL„ZvdM„ZwdejxdN„ZyejxdO„ZzidP„Z{idQ„Z|dR„Z}dS„Z~dT„ZdU„Z€dV„ZdW„Z‚dX„ZƒddY„Z„eddZ„Z…edd[„Z†d\„Z‡d]„Zˆd^„Z‰d_„ZŠd`„Z‹da„ZŒdb„Zdc„ZŽdd„Zd1eXde„Zd1eXdf„Z‘dg„Z’dh„Z“di„Z”dj„Z•dk„Z–d1gddl„Z—dm„Z˜dn„Z™do„Zšdp„Z›gdq„Zœdr„Zggds„Zždt„ZŸeRduƒ\Z Z¡Z¢Z£dv„Z¤eXdw„Z¥dx„Z¦dy„Z§dz„Z¨d{„Z©d|„Zªd}„Z«d~„Z¬d1d„Z­d1d€„Z®d„Z¯d‚„Z°ddƒ„Z±d„„Z²d:dedd…„Z³d†„Z´d‡„Zµgdˆ„Z¶d‰„Z·dŠ„Z¸d‹„Z¹dŒ„Zºd„Z»dŽ„Z¼d„Z½d„Z¾d‘„Z¿d1ddgd’„ZÀd“„ZÁd1d”„ZÂd1d•„ZÃd–„ZÄd1d—„ZÅd˜„ZÆd™„ZÇdš„ZÈd›„ZÉdœ„ZÊd„ZËdž„ZÌdŸ„ZÍd1d „ZÎdd¡„ZÏgd¢„ZÐd£„ZÑd¤„ZÒedd¥„ZÓd¦„ZÔd§„ZÕd¨„ZÖd©ddª„Z×d«„ZØd¬„ZÙdS(­iÿÿÿÿNt VSFB_CanEntert VSFB_IsClosetVSFB_NotFamilyIDt VSFB_NotFighttlineIDtsteptwheelt
wheelTotaltnpctnpcTotalt npcTotalNeedtexptexpPointtmoneytscoretgradetleaderIDtisHelpt    helpCounttrelationtrobotJobtisAutothasRefreshBosst
gsItemInfot    dataMapIDtisPasstisSweeptextraExpt extraExpPointtsptcostTimetranktitemInfot succItemInfot firstPassItemt    extrScoretenterLVt
helpPlayertownerIDt    ownerNametisAssisticCs*ttd|tjƒjƒf|ƒdS(Ns
GFBD_%s_%s(tsetattrt
PyGameDatat    GameWorldt GetGameWorldt    GetLineID(tattrKeytdata((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyt SetGameFBDataqscCs#ttd|tjƒjƒfƒS(Ns
GFBD_%s_%s(tgetattrR*R+R,R-(R.((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyt GetGameFBDatarscCst|ƒ}tjd|ƒS(NtFBFunc(tGetRecordMapIDt IpyGameDataPYtGetIpyGameDataNotLog(tmapID((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyt GetFBIpyDatats cCsJt|ƒ}tjd||ƒ}| rF|rFtjd|dƒ}n|S(NtFBLinei(R4R5R6(R7Rt isDefaultLinet fbLineIpyData((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetFBLineIpyDataws
  cCs,|st||ƒ}n|s"dS|jƒS(N(R<tNonetGetEnterPosInfo(R7RR;((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetFBLineEnterPosInfosicCs#t||ƒ}|sdS|jƒS(N(R<R=t GetStepTime(R7RR;((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetFBLineStepTime„scCs#t||ƒ}|sdS|jƒS(N(R<R=t GetRefreshNPC(R7RR;((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetFBLineRefreshNPCˆscCs#t||ƒ}|sdS|jƒS(N(R<R=t GetGradeInfo(R7RR;((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetFBLineGradeŒscCs#t||ƒ}|sdS|jƒS(N(R<R=t GetRewardInfo(R7RR;((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetFBLineRewardscCs t|ƒ}|sgS|jƒS(N(R8t GetRewardRate(R7t    fbIpyData((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetFBGradeRewardRateList•s cCs-|tjkr)tjƒjtj|ƒSdS(Ni(R*tFBEnterTimeLimiitMapIDR+R,tGetGameWorldDictByKeyt ShareDefinetDef_Notify_WorldKey_FBCanEnter(R((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetFBFuncOpenState™scCs$|tjkrdS|tj|kS(N(R*tFBOpenTimeRecord(RtdayStr((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetFBHasOpenToday¡scCsåd}|tjkr*|jtjƒ}n§|tjkrN|jtjƒ}nƒ|tjkrr|jtjƒ}n_tj    d||ƒ}|r¦|jtj
|ƒ}n+t j |tj |t|gƒ}|rÑtS||krátStS(NitFBGeneralTrain(tChConfigtDef_FBMapID_RealmTowertNomalDictGetPropertytDef_Player_Dict_RealmTowerFloortDef_FBMapID_SkyTowertDef_Player_Dict_SkyTowerFloortDef_FBMapID_TrialTowert!Def_Player_Dict_TrialTower_PassLVR5R6tDef_Player_Dict_FBPassLineIDR+tGetDictValueByBitt"Def_Player_Dict_PlayerFBStar_MapIdtFalsetTrue(t    curPlayerR7Rt
passLineIDtipyDataR((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytIsFBPass§s ! ic    Cs|jƒ}tj|||ƒs(tjS|rót|ƒsntjd||ƒ|rgtj    |dƒntj
St ||||||ƒ\}    }
|    s»|
r´tj    ||
|gƒntj St ||ƒró|rétj    |d|gƒntjSn|r|jƒ} |jƒ} |jƒ} | ru| | krutjd||| | f|ƒ|rntj    |d|gƒntjS| rÍ| | krÍtjd||| | f|ƒ|rÆtj    |d|gƒntjSt||||||ƒds|r tj    |d|gƒntjSntjS(    Nsµ±Ç°Ê±¼ä먦·Å¸Ã¸±±¾!mapID=%st FBIsNotOpent SingleEnterCDsHÍæ¼ÒµÈ¼¶²»×ã, ÎÞ·¨½øÈ븱±¾!mapID=%s,lineID=%s,curLV(%s) < lvLimitMin(%s)tFbLVsHÍæ¼ÒµÈ¼¶³¬¹ý, ÎÞ·¨½øÈ븱±¾!mapID=%s,lineID=%s,curLV(%s) > lvLimitMax(%s)itGeRen_chenxin_157069(t GetPlayerIDtFBLogictOnNeedCheckCanEnterFBCommRMtEntFBAskRet_OKROR+tLogt PlayerControlt
NotifyCodetEntFBAskRet_FBCloset__CheckCanEnterFBByTimetEntFBAskRet_NoEnterCnttCheckIsEnterCDtEntFBAskRet_EnterCDtGetLVt GetLVLimitMint GetLVLimitMaxtEntFBAskRet_LVLimittGetFBEnterTickettEntFBAskRet_NoTicket(RaR7RRIR;t reqEnterCnttisNotifyt    isTeamAsktplayerIDtcanEntert
notifyMarktcurLVt
lvLimitMint
lvLimitMax((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytCheckCanEnterFBComm¾sN  !
           
c Csg|jƒ}|stdfS|tjgkrytj|tj|t|gƒ}|sytjd||fƒtdfSn|j    tj
|ƒ}t ||ƒ}    |||    kr¸tdfStj ƒj |ƒ}
|
tjkrætdfS|
tjkrD|jƒs tdfS| r]|jƒ s7|jtjƒdkr]tdfSn|tjkr]tdfStdfS(Nts8OnEnterFBEvent Ê״νøÈë¸Ã¸±±¾Ïß·Ãâ·Ñ!mapID=%s,lineID=%stGeRen_chenxin_268121itTeamSingleEnter(t GetDayTimesR`RTtDef_FBMapID_PersonalBossR+R]R^R_tDebugLogRVtDef_Player_Dict_EnterFbCntDaytGetEnterFBMaxCnttGetMaptGetMapFBTypeByMapIDt IPY_GameWorldt    fbtSingletfbtTeamt GetHelpPointt    GetTeamIDt GetDictByKeytDef_PlayerKey_TeamMemCounttDef_NoLimitEnterCntMap( RaR7RRIR{R}tmaxTimest    curfbStartenterCnttmaxCnttfbType((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyRqõs. 
! 
 
 
, 
cCsã|st||ƒ}n|jƒ}|s=tgdtgfS|jƒ}|s‚tjd||f|jƒƒtgdtgfS|jt    j
|ƒ}|t |ƒkr´|dn||}    |    |}
|
stjd||f|jƒƒtgdtgfS|j ƒj tjƒ} tj|| |
ƒ\} } }}| sÐ|jƒ}|r”| r”||}tj|tj|ƒ}t|ƒ| |
||fStjd|||||
f|jƒƒtgdtgfS| | |
|gfS(Nis#ûÓÐÅäÖÃÃÅÆ±ÏûºÄ!mapID=%s,lineID=%siÿÿÿÿsTÃÅÆ±²»×ã, ÎÞ·¨½øÈ븱±¾!mapID=%s,lineID=%s,ticketID=%s,reqEnterCnt=%s,totalCostCnt=%s(R<t GetTicketIDR`R_tGetTicketCostCntR+tErrLogRiRVRTR‹tlentGetItemManagertGetPackRtrptItemt
ItemCommontGetItem_FromPack_ByID_ExExtGetTicketPriceRnt HaveMoneyExRMtTYPE_Price_Gold_Paper_MoneytboolRŠ(RaR7RR;R{R}tticketIDtticketCostCntListR™tcostCntt totalCostCnttitemPacktenought    indexListthasBindtlackCntt ticketPricet    costMoneyt costMoneyList((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyRy-s6   &
 !  
     c Csèt|||d|ƒ\}}}}}|s7t|fS|rši|d6|d6|d6}    x?|D]4\}
} tj||
| tj|    ƒs_t|fSq_Wn|sªt|fS|jƒj    t
j ƒ} t j || ||tdƒt|fS(NtMapIDtLineIDt
EnterCounttFBTicket(RyR=R_RntPayMoneyRTtDef_Cost_EnterFBR`R R¡RR¢R£t
ReduceItem( RaR7RR™tisEnoughR¯tdelCntR°R´tinfoDictt    moneyTypetmoneyNumR­((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytDelFBEnterTicketUs'
 
cCs|j||tjƒS(N(RVRTtDef_PDictType_FB(Ratkeyt defaultValue((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetFBPDictValuejscCstj|||tjƒdS(N(RntNomalDictSetPropertyRTRÂ(RaRÃtvalue((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytSetFBPDictValuerscCs4tjdƒ}|sdSttjƒjƒƒ}||tjkrHdSd}d}d}tjƒ}xšt    |j
ƒƒD]†}|j |ƒ}    |    dksy|    j ƒr¬qyn|rÊ|    jƒ|krÊqyn|    jƒ}
||
7}|d7}||
kry|
}qyqyW|s dS||} tjƒ} | jtj| ƒ| jtj|ƒtjd|||| |f|ƒ|tjkr0tjƒjƒd} t|| ƒ}|s¬dn    |jƒ}tjddƒ}| || }}t||ƒ}| jtj|ƒ| jtj|ƒtjd| |||fƒntS(    s¶¯Ì¬¸üи±±¾NPC³É³¤µÈ¼¶
    tNPCAttrStrengthenNiisMNPC³É³¤¶¯Ì¬µÈ¼¶±ä¸ü: isLeave=%s,totalLV=%s,playerCnt=%s,averageLV=%s,maxLV=%stElderBattlefieldCfgisD    ¸üÐÂÉϹŻúÆ÷È˵ȼ¶·¶Î§: lineID=%s,robotLVDiff=%s,robotLV=(%s~%s)( t ReadChConfigtGetEvalChConfigR4R+RtGetMapIDt    NPCCommontNPCAttr_DynNPCLVMaptGetMapCopyPlayerManagertxrangetGetPlayerCounttGetPlayerByIndexR=tIsEmptyRiRut    GetGameFBt SetGameFBDictRTtDef_FB_NPCStrengthenAverageLVtDef_FB_NPCStrengthenMaxLVRmtDef_FBMapID_ElderBattlefieldR,t GetPropertyIDR<RvR5t
GetFuncCfgtmaxtDef_FB_NPCStrengthenMinLVR`(R~tisLeavetattrStrengthenInfoR7tmaxLVttotalLVt    playerCnttcopyMapPlayerManagertiRaRt    averageLVtgameFBRR;R‚t robotLVDifft
robotLVMint
robotLVMax((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytUpdFBLineNPCStrengthenLVvsP  
 
 
      c CsVtjdƒ}|sdSttjƒjƒƒ}|tj}||krNdS||}tjƒ}tj    ƒj
ƒ}|r’t d|dƒ}n|j t j|ƒtjd|||f|ƒ|rRtjƒ}x{t|jƒƒD]d}    |j|    ƒ}
|
jƒdkrqçn|
jƒtjtjgkr8qçntj|
ttƒqçWntS(s¶¯Ì¬¸üи±±¾NPC³É³¤ÈËÊý
    RÉNisENPC³É³¤¶¯Ì¬ÈËÊý±ä¸ü: playerCount=%s,isLeave=%s,isRefreshNPCAttrNow=%si(RËRÌR4R+RRÍRÎtNPCAttr_DynPCCoefficientMapRÕRÐRÒRÜRÖRTtDef_FB_NPCStrengthenPlayerCntRmt GetNPCManagerRÑt GetNPCCountt GetNPCByIndextGetIDtGetTypeRt ntFunctionNPCtntPettDoNPCAttrStrengthenR_R`( R~RÞRßR7tcoefficientDicttisRefreshNPCAttrNowRæt playerCounttgameNPCManagertindextcurNPC((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytUpdFBLineNPCStrengthenPlayerCnt¦s2  
      cCsA|jtj|ƒ|jtj|ƒtjd||fƒdS(s{ ÉèÖùÖÎïµôÂäÖ´ÐдÎÊýÍò·ÖÂÊ ¼° ¹Ì¶¨¼Ó³É´ÎÊýÖµ
    @param doCountRate: ´ÎÊýÍò·ÖÂÊ
    @param doCountAdd: ´ÎÊý¹Ì¶¨Öµ    
    s7ÉèÖùÖÎïµôÂäÖ´ÐдÎÊýÐÅÏ¢: doCountRate=%s, doCountAdd=%sN(RÖRTtDef_FB_DropDoCountRatetDef_FB_DropDoCountAddR+Rm(Ræt doCountRatet
doCountAdd((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytSetNPCDropDoCountRateÈscCstjƒjtjƒdkS(Ni(R+RÕtGetGameFBDictByKeyRTtMap_FBDict_PropertyMark(((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetHadSetFBPropertyMarkÓscCstjƒjtjƒdS(Ni(R+RÕRRTR(((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetFBPropertyMarkÙscCs!tjƒjtj|dƒdS(Ni(R+RÕRÖRTR(t propertyMarkt    setPlayer((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytSetFBPropertyMarkßs cCstjƒj|jƒtjƒS(N(R+RÕtGetPlayerGameFBDictByKeyRðRTtFBPlayerDict_IsDelTicket(Ra((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetHadDelTicketòscCs&tjƒj|jƒtj|ƒdS(N(R+RÕtSetPlayerGameFBDictRðRTR    (RatdelSign((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytSetHadDelTicketøs"cCs|jtj||fƒS(N(RVRTtDef_Player_Dict_CustomMapStep(RaR7R((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetCustomMapStepýscCsItj|tj||f|ƒ|tjkrEtj|ddƒndS(Ni(RnRÆRTRtCustomMapStep_Overt SetCustomMap(RaR7RR((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytSetCustomMapStepÿs cCs:d}tjƒ}|jƒdkr6|jdƒ}n|S(s »ñÈ¡µ±Ç°µ¥È˸±±¾Íæ¼Ò iN(R=R+RÐRÒRÓ(Rat playerManager((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetCurSingleFBPlayers
 cCsE|r tjS|jƒr>tjƒjtjƒdkr>tjStjS(Ni(    RTtFB_JoinType_HelpR“R+RÕRtDef_FB_TeamPlayerCounttFB_JoinType_MultitFB_JoinType_Single(Rat isHelpFight((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyt GetFBJoinType s
*cCs0|tjƒjƒ}tjƒjƒ}||S(N(R+R,t GetOpenFBTickRt GetExistTime(tticktlastTickt    existTime((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetFB_RemainTimescCsÚd}tjƒ}|jtjƒ}||krM|rItj||ƒn|St||jƒdƒ}d}t    |ƒ}    d}
x<|D]4} |
| 7}
|
|}|dkr°Pn|    d8}    q†Wt
||    ƒ}    ||    krä| rä|S|j tj|    ƒtj d||||    |fƒ|rYtj||ƒ|    |krÖ|j |d|dtƒqÖn}tjƒ} xnt| jƒƒD]Z} | j| ƒ}|s™qxntj||ƒ|    |krx|j |d|dtƒqxqxW|    S(sa¸üе±Ç°¸±±¾ÐǼ¶¡¢ÆÀ¼¶
    @param gradeTimeList: ÆÀ¼¶·Ö¶Îʱ¼äÁÐ±í£¬µ¥Î»Ãë [×î¸ßÆÀ¼¶¿ÉÓÃʱ¼ä, Ï¼¶¿ÉÓÃʱ¼ä, ..., ×îµÍ¼¶¿ÉÓÃʱ¼ä]
    @param curPlayer: ´¥·¢µÄÍæ¼Ò£¬Ò»°ãÊÇDoEnterʱµ÷Ó㬻áͬ²½¸üÐÂÒ»´Î¸±±¾ÆÀ¼¶²¢½«ÐÅϢ֪ͨ¸ÃÍæ¼Ò
    @note: ÐǼ¶£º1-1ÐÇ£»2-2ÐÇ ...            [60, 20, 10]
            ÆÀ¼¶£º1-D£»2-C£»3-B£»4-A£»5-S;    [60, 30, 30, 20, 10]
    ig@@isQUpdateFBGrade useSecond=%s,gradeTimeList=%s,curGrade=%s,updGrade=%s,diffSecond=%siè(R+RÕRRTt Def_FB_GradeRjtDoFBHelptintt GetFBStepTickRŸRÜRÖRŠt Sync_TimeTickR`RÐRÑRÒRÓ(Rt gradeTimeListRattimeTypetlowestRætcurGradet    useSecondt
diffSecondtupdGradet gSecondTotaltgSecondRRù((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyt UpdateFBGradesH    
 
         !c Cs8d}|jtjƒ}||kr(|S|jtjƒ}t||dƒ}d}t|ƒ}    d}
x<|D]4} |
| 7}
|
|}|dkr—Pn|    d8}    qmWt||    ƒ}    ||    krÄ|S|jtj|    ƒtj    d||||    |fƒt
|i|    t 6ƒ|    |kr4|j |d|dt ƒn|    S(sa¸üе±Ç°¸±±¾ÐǼ¶¡¢ÆÀ¼¶
    @param gradeTimeList: ÆÀ¼¶·Ö¶Îʱ¼äÁÐ±í£¬µ¥Î»Ãë [×î¸ßÆÀ¼¶¿ÉÓÃʱ¼ä, Ï¼¶¿ÉÓÃʱ¼ä, ..., ×îµÍ¼¶¿ÉÓÃʱ¼ä]
    @param curPlayer: ´¥·¢µÄÍæ¼Ò£¬Ò»°ãÊÇDoEnterʱµ÷Ó㬻áͬ²½¸üÐÂÒ»´Î¸±±¾ÆÀ¼¶²¢½«ÐÅϢ֪ͨ¸ÃÍæ¼Ò
    @note: ÐǼ¶£º1-1ÐÇ£»2-2ÐÇ ...            [60, 20, 10]
            ÆÀ¼¶£º1-D£»2-C£»3-B£»4-A£»5-S;    [60, 30, 30, 20, 10]
    ig@@isWUpdateCustomFBGrade useSecond=%s,gradeTimeList=%s,curGrade=%s,updGrade=%s,diffSecond=%siè(R”RTt$Def_PlayerKey_ClientCustomSceneGradet'Def_PlayerKey_ClientCustomSceneStepTickR#RŸRÜtSetDictR+RŠt Notify_FBHelpt
Help_gradeR%R`( RaRR&R'R(R)t
fbStepTickR*R+R,R-R.((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytUpdateCustomFBGradePs2   
 
       cCsh|ji|t6|t6t|ƒt6ƒtj|dtƒ}|j|ƒt    j
d||j ƒƒdS(Nt ensure_asciisNotifyFBOver: %s( tupdatetOver_dataMapIDt Over_lineIDR#t Over_isPasstjsontdumpsR_t    Frm_FBEndR+RŠRi(RaRRRtoverDicttoverMsg((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyt NotifyFBOvervs
( cCsT|ji|t6ƒtj|dtƒ}|j|ƒtjd||jƒƒdS(NR7sNotifyFBHelp: %s(    R8t Help_lineIDR<R=R_t
Frm_FBHelpR+RŠRi(RaRthelpDictthelpMsg((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyt NotifyFBHelp~s
 cCs*tj|dtƒ}|jd|ƒdS(NR7s%s(R<R=R_R>(RatmsgDict((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytNotify_FB_OverŠscCs0tj|dtƒ}|jdt|ƒƒdS(NR7s%s(R<R=R_RCtstr(RaRD((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyR3scCsDg}x7|D]/}i}t|tƒs7t|tƒr£t|ƒ}|dkr`|d|d<n|dkr}|d|d<n|dkr/t|dƒ|d<q/nŒt|tƒr¿||d<npt|tƒr×|}nXtj|ƒsìq n|jƒ|d<|j    ƒ|d<t
j |ƒ|d<|j ƒ|d<|j |ƒq W|S(NitItemIDitCountit IsAuctionItemtUserData(t
isinstancetlistttupleRŸR#tdictR£tCheckItemCanUset GetItemTypeIDtGetCountt ItemControlertGetIsAuctionItemt GetUserDatatappend(titemListt jsonItemListR titemDicttinfolen((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetJsonItemList•s.          cCsBg}x5|jƒD]'\}}|ji|d6|d6ƒqW|S(NR¿t
moneyValue(titemsRX(t    moneyDictt    moneyListR¿R^((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetJsonMoneyList±scCsBg}x5|jƒD]'\}}|ji|d6|d6ƒqW|S(NtNPCIDtkillCnt(R_RX(tnpcDicttkillListtnpcidRd((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetJsonNPCKillList¸scCsBg}x5|jƒD]'\}}|ji|d6|d6ƒqW|S(NRctHPPer(R_RX(ReRfRgRi((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetJsonNPCHPPerList¿scCsë|jƒ}|tjkr9|jƒ}tj|ƒ}tj|ƒ}|tjkr&|rqtj|j    |ƒq6t
}xŒtj|D]}}    t |    t ƒs q…n|    d|dkr…|    j dƒ|j dƒkr…|    j ddƒ|j ddƒ|    d<t}Pq…q…W|s6tj|j    |ƒq6q9|gtj|<n|dkrIdSd}
tjƒ} xgt| jƒƒD]S} | j| ƒ} | sn| jƒrœqnn| jƒ|jƒkrn|
d7}
qnqnW|
dk}|rç|||ƒndS(NRJtIsBindRKii(RñRTtDef_ItemType_MoneyRðR£tCheckItemIsEquipt GetJsonItemR*tg_fbPickUpItemDictRXR_RNRQtgetR`R=R+tGetMapItemManagerRÑtGetMapItemCounttGetMapItemByIndexRÔt
GetOwnerIDRi(RatcurItemRtoverFunct mapItemTypeR~tisEquiptjsonItemtisInR tplayerItemCounttmapItemManagerRùtmapItemtisItemAllPickUp((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyt OnPickUpItemÆsB  2&   c Cs=tjƒ}|jƒ||_g|_x|D]‡}|d \}}}}t|ƒdkrg|dnd}    tjƒ}
||
_||
_||
_    ||
_
|    |
_ |jj |
ƒq/Wt|jƒ|_ |råtj||ƒnTtjƒ} xEt| jƒƒD]1} | j| ƒ}|s%qntj||ƒqWdS(sõͬ²½¶¯Ì¬Õϰ­ÎïÊÇ·ñÓÐЧÐÔ
    @param barrierPointList: Õϰ­ÎïµãÁбí [[aPosX,aPosY,bPosX,bPosY,angle¿ÉÑ¡], [aPosX,aPosY,bPosX,bPosY,angle¿ÉÑ¡], ...]
    @param state: ÊÇ·ñÓÐЧ
    @param curPlayer: Ö¸¶¨Í¨ÖªÄ¿±êÍæ¼Ò£¬ÎªNoneʱ¹ã²¥±¾µØÍ¼ËùÓÐÍæ¼Ò
    iiN(tChPyNetSendPackttagMCDynamicBarrierStatetCleartStatet BarrierListRŸttagMCDynamicBarriertAPosXtAPosYtBPosXtBPosYtAngleRXRKt NetPackCommont SendFakePackR+RÐtrangeRÒRÓ( tbarrierPointListtstateRatbarrierStatePacktposInfotaPosXtaPosYtbPosXtbPosYtangletbarriert playManagerRä((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytSyncDynamicBarrierStateñs0 
         "                      c    Csítjƒ}xÚt|jƒƒD]Æ}|j|ƒ}|dkrFqn|jƒ}||krdqn|jƒ}|dkrÌ|rˆqn|r¹tjƒj    ƒ}t
j |ƒj |ƒn|j tƒqn|sØqn|j tƒqWdS(Ni(R+RíRÑRîRïR=tGetNPCIDt
GetVisibleR,tGetTickRÎt
NPCControlt DoNPCRebornt
SetVisibleR`R_(    t
doorIDListttypetisRebornRøRäRútnpcIDtcurTypeR((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytOpenOrCloseDoorExs*       cCsÔtjƒ}xÁ|D]¹}|j|ƒ}|dkrKtjd|ƒqn|jƒ}|dkr³|roqn|r tjƒjƒ}tj    |ƒj
|ƒn|j t ƒqn|s¿qn|j t ƒqWdS(Ns¸±±¾ÎÞ·¨²éÕÒ, ÃÅID = %si(R+RítFindGameNPCByNPCIDR=RžR›R,RœRÎRRžRŸR`R_(R R¡R¢RøR£RúR¤R((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytOpenOrCloseDoor;s&      cCstjƒj|ƒdS(N(R+RÕtBroadcast_FbBillboard(tmaxCount((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyt InitBillBoard]scCsX|jƒ}|jƒ}tjƒj|ƒ}|j|ƒ|j|ƒ|jdƒdS(Ni(RitGetNameR+RÕtGetFbBillBoardPlayert SetPlayerIDt SetPlayerNametSetPoint(Rat curPlayerIDt curPlayerNametplayerBillBoard((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytInitBillBoardPlayeres     cCsmtjƒj|jƒƒ}|dkrCt|jƒ|dƒ}nt|jƒ|dƒ}|j|ƒ|S(Niiÿÿi(R+RÕR¬RitmintGetPointRÜR¯(RaR¡RÇR²tpoint((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytAddorReduceBillBoardus   cCs,tjƒj|jƒƒ}|j|ƒdS(N(R+RÕR¬Rit
SetCountry(RatcountryR²((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytSetCountryBillBoard…s cCs%tjƒj|jƒƒ}|jƒS(N(R+RÕR¬RiRµ(RaR²((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetPlayerBillBoardPointscCs%tjƒj|jƒƒ}|jƒS(N(R+RÕR¬RitGetBillboardIndex(RaR²((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetPlayerIndex_InBillBoard—scCs'tjƒ}|jƒ|j|ƒdS(N(R+RÕtSortFbBillBoardPlayerR¨(R©Ræ((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytNotifyBillBoardŸs 
 cCsPtjƒ}|j|ƒ|j|ƒtjd||ftjƒjƒƒdS(NsSetFBStep %s, tick=%s(R+RÕt    SetFBStept SetFBStepTickRmR,RÚ(RRRæ((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyRÀ¬s
   &cCsatjƒ}xNt|jƒƒD]:}|j|ƒ}|jƒsFqn|j|||ƒqWdS(N(R+RÐRRÒRÓRitSync_FbSystemMessage(tkeepTimetmsgTypetmsgRRäRa((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyR¹s  cCsgtjƒ}xTtd|jƒƒD]=}|j|ƒ}|jƒsIq"n|j||||ƒq"WdS(Ni(R+RÐRRÒRÓRiR%(RÄtmsgTickR£t
isContinueRRùRa((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytSync_Player_TimeTickÎs  c    Csd}|rHtjƒjtjƒ}|r?||kr?t}qHt}ntjd||fƒtjƒj    tj|ƒtj
ƒ}xyt d|j ƒƒD]b}|j |ƒ}|jƒsÁqšn|ræ|ræ|j||d|ƒn|j||||ƒqšWdS(Ns2Sync_Player_TimeTickEx() prevMsgType=%s,msgType=%si(R=R+RÕRRTtMap_FBDict_PrevFBTimeTypeR`R_RmRÖRÐRRÒRÓRiR%(    RÄRÆt isSendPrevMsgR£RÇt prevMsgTypeRRùRa((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytSync_Player_TimeTickExâs"           cCsºtjƒ}t}x—t|jƒƒD]ƒ}|j|ƒ}|jƒ}|jƒ}|jƒ}|sj|rst    }n|||gkr‹q%n|j
|ƒt j kr§t StSW|r¶tStS(N(R+R,R`RtGetGameWorldCounttGetGameFBByFbIndext GetFamilyVSt GetFamilyIDt GetVSFamilyIDR_tGetOpenStateByFbIndexRtfbosOpentDef_VSFB_IsClosetDef_VSFB_CanEntertDef_VSFB_NotFighttDef_VSFB_NotFamilyID(tfamilyIDt    gameWorldt todayNotFightRùRætfamilyVsManagertattackIDt    defenceID((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetCanEnterVSFBÿs"         cCs|tjƒ}xit|jƒƒD]U}|j|ƒ}|jƒ}|jƒ}|jƒ}|||gkr||fSqWdS(N(NN(    R+R,RRÍRÎRÏRÐRÑR=(RØRÙRùRæRÛRÜRÝ((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGet_VS_Line_GameFB$s    cCstjƒj|ƒS(N(R+R,t GetMapCopyPlayerManagerByFbIndex(t    lineIndex((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGet_Line_PlayerManager7scCs›tjƒ}|jƒtjkr<tjd|jƒƒdS|sFdStjƒ}xBt|jƒƒD].}tj|ƒ}|j    ƒ|kr’qen|SWdS(Ns+###µ÷Óú¯ÊýÒì³£ Get_TeamFB_Line_GameFB = %s(
R+Rt GetMapFBTypeRR‘RmR,RRÍRÚ(tteamIDtgameMaptgameWorldManagerRùRÙ((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGet_TeamFB_Line_GameFB?s  cCs‰tjƒjƒ}|tjkr…t|jƒƒ}|s=tS|jƒdkrSt    S|j
ƒtj krrt    dfS|j ƒtj kStS(Nit FBinCantEnter(R+RRãRR‘RçR“R`tGetCloseFBTickR_t    GetTeamLVt    tmlLeadert GetOpenStatetfbosWaitForClose(t    askStructt gameMapFBTypeRÙ((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytCheckFBStateCanEnter[s
c
CsM|s'tjƒjƒ}t|ƒ}ni}tjƒ}xŽt|jƒƒD]z}|j|ƒ}|jƒ}|syqLn|j    ƒt
j kr”qLn|r¬||kr¬qLn|j |dƒd||<qLW|ræt j|||ƒnctjƒ}xTt|jƒƒD]@}    |j|    ƒ}|jƒdkr2qnt j|||ƒqW|S(Nii(R+RRÍR4RíRÑRîRïRštGetGameNPCObjTypeRtgnotPetRpRÎtSyncNPCCntInfoRÐRÒRÓRð(
R7t    npcIDListRat
npcCntDictRøRùRúR£RRä((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyt
Sync_FBNPCys0   cCs‚g}tjƒ}xit|jƒƒD]U}|j|ƒ}|jƒdkrRq%n|jƒtjkrmq%n|j    |ƒq%W|S(Ni(
R+RíRRîRïRðRñRRòRX(t gameNPCListRøRùRú((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyt GetMapNPCListšs cCsg}tjƒ}xêt|jƒƒD]Ö}|j|ƒ}|jƒdks%tj|ƒdkrgq%n|jƒt    j
kr‚q%n|jƒt    j krîtj |ƒ}|dkr¸q%n|jƒ}|dkrî|jƒt    jkrîq%qîn|j|ƒq%W|S(Ni(R+RíRRîRïRðtGameObjtGetHPRñRRòt
gnotSummont GetObjDetailR=tGetOwnertGetGameObjTypet    gotPlayerRX(t findNPCListRøRùRút curNPCDetailt curNPCOwner((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetMapSystemNPCList±s" '  !    cCsdtjƒ}xQtd|jƒƒD]:}|j|ƒ}|jƒdkrOq"ntj|ƒq"WdS(Ni(R+RÐRRÒRÓRðRnt PlayerLeaveFB(RRäRa((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytDoLogic_FBKickAllPlayerÖs cCsÁtƒ}g}x«|D]£}tj|ƒdkr7qn|jƒtjkr¬tj|ƒ}|dkrmqn|j    ƒ}|dkr¬|j
ƒtj tj fkr¬qq¬n|j |ƒqW|S(Ni(RøRùRúRñRRûR+RüR=RýRþRÿtgotNPCRX(R÷RRúRR((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetMapSystemNPCListExés           cCssxltƒD]a}|dkr"q
n|jƒtjtjgkrFq
n|jƒ|kr^q
ntj|ƒq
WdS(N(    RR=RñRRòRóRšRÎt    SetDeadEx(t ignoreIDListRú((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyt
ClearFBNPC    s cCssxltƒD]a}|dkr"q
n|jƒtjtjgkrFq
n|jƒ|kr^q
ntj|ƒq
WdS(N(    RR=RñRRòRóRšRÎR(tclearNPCIDListRú((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyt ClearFBNPCExs cCsšd}xtƒD]‚}|dkr(qn|jƒtjtjgkrLqn|jƒ}|rp||krpqn|rˆ||krˆqn|d7}qW|S(Nii(RR=RñRRòRóRš(RôR    tnpcCntRúR£((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyt GetFBNPCCnt4s  cCsgtjƒ}tj|}tj|}tj|}|j||ƒ|j||ƒ|j||ƒdS(N(R+RÕRTtMap_NPC_RandomMapNPCIDtMap_NPC_RandomMapNPCNeedCnttMap_NPC_RandomMapNPCPerMaxCntRÖ(t refreshMarkR£tneedRefreshCntt    perMaxCntRætnpcIDKeyt
needCntKeyt perMaxCntKey((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytSetRandomRefreshMapNPCOs    icCstjƒ}|jtj||ƒ|jtj||ƒ|jtj||ƒ|jtj|dƒ|jtj|dƒ|jtj    ||ƒ|jtj
|dƒ|jtj |dƒ|jtj |dƒ|jtj |dƒ|rt||d|ƒndS(Ni(R+RÕRÖRTtMap_TDNPC_RefreshFileNumtMap_TDNPC_RefreshSignKeytMap_TDNPC_RefreshStartTicktMap_TDNPC_RefreshBigWheelNumtMap_TDNPC_RefreshSmallWheelNumtMap_TDNPC_CurWheelStartTicktMap_TDNPC_CurWheelIsOvertMap_TDNPC_AllWheelIsOvertMap_TDNPC_NPCCnttMap_TDNPC_NPCBossCntt__TDStartRefreshNotify(trMarktfileNumtsignRR|Ræ((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytOpenTDNPCRefreshks cCsètjƒ}|jtj|dƒ|jtj|dƒ|jtj|dƒ|jtj|dƒ|jtj|dƒ|jtj    |dƒ|jtj
|dƒ|rä|jtj |dƒ|jtj |dƒndS(Ni( R+RÕRÖRTRRRRRRRR!R"(R$t
isResetNPCRæ((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytCloseTDNPCRefreshs cCs;tjƒ}x(|D] }|jtj|ƒstSqWtS(N(R+RÕRRTR R_R`(t    rMarkListRæR$((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytIsTDNPCRefreshOver”s
  cCs;tjƒ}x(|D] }|jtj|ƒstSqWtS(N(R+RÕRRTRR_R`(R*RæR$((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytIsTDWheelRefreshOverŸs
  cCsdtjƒ}xQ|D]I}|jtj|ƒ}|jtj|ƒ}|dksX| rtSqWtS(Ni(R+RÕRRTR!RR_R`(R*RæR$R tcurWheelIsOver((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytIsTDNPCCurWheelAllKilled§s  c
Cs»tjƒ}|jtj|ƒ}|jtj|ƒ}|jtj|ƒ}|dkr^tStj    d|ƒ}|t
|ƒkr‡tS||}|t }||}    |dkoº|    |kS(Nis    TD_%s_Cfg( R+RÕRRTRRRR_RËRÌRŸtDef_TDCfg_NextWheelTime(
R$RRæt    startTickt curWheelNumR%trefreshCfgListt wheelInfoListtforceNextWheelTimetpassTick((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytCheckForceEnterNextWheel¶s  
 
 
cCsútjƒ}|jtj|ƒ}|d}|jtj||ƒ|jtj|dƒ|jtj||ƒ|jtj|dƒ|jtj    |ƒ}|dkrÜ|rÜ|jtj
|ƒ}t ||||ƒntj d|||fƒdS(Niis2TD ½øÈëÏÂÒ»²¨£ºfileNum=%s,rMark=%s,nextWheelNum=%s( R+RÕRRTRRÖRRRRRR#RŠ(R$RR|RæR1t nextWheelNumR%tsignKey((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytSetEnterTDNextWheelÍs 
c
Cs½|dkrdStjd|ƒ}|j|gƒ}|t|ƒkrKdS||ddd}tjd|ƒ}|t|ƒkr¹||}|t}    |    r¹tj|    |gƒq¹ndS(Nis TD_%s_NPCIDs    TD_%s_Cfg(RËRÌRpRŸtDef_TDCfg_NotifyMarkRntFBNotify(
RæR%twheelNumR&trefreshNPCDicttrefreshNPCListRgR2R3R€((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyR#ãs 
 
c
CsÛtjƒ}|jtjƒ}tj|}|j|ƒ}tj|ƒ}|rutd||ƒ}|j    ||ƒntj
|}|j|ƒ}||}    td|    ƒ}    |j    ||    ƒtj d||    ||fƒ|    S(Nis3UpdTDNPCCnt rMark=%s,updCnt=%s,bossCnt=%s,isBoss=%s( R+RÕR”RTtDef_NPC_Dict_FromRefreshMarkR"Rt
IsGameBossRÜRÖR!RŠ(
RúRÇRæR$tcurMarkNPCBossCntKeytbossCnttisBosstcurMarkNPCCntKeyR tupdCnt((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyt UpdTDNPCCntùs   
cCsGtjƒ}|jtj|ƒ}|jtj|ƒ}|dkrHdStjd|ƒ}|t|ƒkrqdS||}    |    t    }
|
dkrÛ|    t
} | s¥dS|jtj |ƒ} || } t | | dƒ}n3|jtj |ƒ}||} t |
| dƒ}|dkr-t|||ƒn|j|||tƒ|S(Niiÿÿÿÿs    TD_%s_Cfg(R+RÕRRTRRRËRÌRŸR/tDef_TDCfg_PrepareTimeRRÜRR=RÈR%R`(RaR$RÄRtmsgIDRæR1R%R2R3t nextWheelTimet prepareTimetcurWheelStartTickR5tnextWheelRemainTickR0((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytSync_TDNextWheelTicks0  
 
 
 
 
 c    Cs‚i}tjd|ƒ}|j|gƒ}xP|D]H}x?|D]7}x.|D]&\}}|j|dƒ|||<qLWq?Wq2W|S(Ns TD_%s_NPCIDi(RËRÌRp(    R%R&t npcCountDictR=R>t wheelNPCListtsmallWhellNPCInfoR£tnpcCount((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetTDCfgNPCCntInfo4s  &cCsât|ƒ}|sdS|jƒ}|jƒ}d}|jƒ}tj||ƒ}|jtj|ƒ}|jtj    |ƒ}    |jtj
|ƒ}
|jtj |ƒ} t j ||ƒ} || |||    ||
| } | S(Ni(R8RˆtGetExtraTimesMWPriIDtGetExtraTimesVIPPriIDt    PlayerViptGetPrivilegeValueRVRTtDef_Player_Dict_BuyFbCntDaytDef_Player_Dict_RecoverFbCnttDef_Player_Dict_ItemAddFbCnttDef_Player_Dict_RegainFbCnttPlayerGoldInvestt GetAddFBCnt(RaR7RIR—t MWPrivilegeIDtmwAddCnttextraTimesVIPPriIDtextraCnttbuyCntt recoverFbCntt
itemAddCntt regainFbCntt investFBCntRš((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyRŒ?s    "cCsÝt|ƒ}|jtj|ƒ}|jƒ}d}tjddƒ}t|ƒ|kro|t|ƒd}n|jƒ}d}||7}|j    ƒ}    t
j ||    ƒ}
|jtj |ƒ} |jtj |ƒ} |jtj|ƒ} | |
||| | g}tj|ƒ}d}xKt|ƒD]=\}}||7}td||ƒ||<||kr%Pq%q%W|\}}}}}}|jƒ}t
j ||ƒ}td|| ƒ}||||||g|||
|d|ggS(NitFBCntRegainIntervalii'(R8RVRTR‹RˆR5tGetFuncEvalCfgRIRSRTRURVRWRXRYtcopytdeepcopyt    enumerateRÜtGetBuyTimesVIPPriID(RaR7RIR™R—tmaxRegainFbCnttrecoverIntervalDictR]R^R_R`RaRbRctcntListtrCntListtsumCntRätcntt rRecoverFbCntt    rExtraCntt
rCommonCntt rRegainFbCnttrBuyCntt rItemAddCnttbuyTimesVIPPriIDt    canBuyCnttnoBuyCnt((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetFBDetailCntInfoRs8   
 
  cCsBt|ƒ}|jtj|ƒ}|dkr>tj||ƒS|S(Ni(R4RVRTR‹R+tGetDataByDigitPlace(RatfbIDtlineBitR™((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetEnterFBCountzs
  cCszt|ƒ}|jtj|ƒ}tj|tj|||ƒt||ƒtj|d|||gƒt||ƒdS(NtAddActivityCount_1(    R4RVRTRYRnRÆtSync_FBPlayerFBInfoDataRot!OnFBCountChangeEffectRecoverCount(RatitemIDR7taddCntRc((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytAddFBCntByItems   cCs£|}|rdn|}t|ƒ}tj|}|j|ƒ}|dkrœtj||ƒ}td||ƒ}    tj|||    ƒ}
tj    |||
ƒn~t
||ƒ} || kr»t St| ||ƒ} | |}tj    ||| ƒt j ||| |ƒtj|||ƒ| }
tj|} t|j| ƒ|tjƒ}tj    || |ƒtjd|||||
|f|jƒƒt||ƒt||ƒtS(Nii    s^    AddEnterFBCount fbID=%s, addCount=%s, lineBit=%s, enterCnt=%s,updValue=%s,enterCntTotal=%s(R4RTR‹RVR+R|R´tChangeDataByDigitPlaceRnRÆRŒR_tPlayerActivitytOnEnterFBActivityt PlayerSuccesstAddEnterFBSuccesstDef_Player_Dict_EnterFbCntTotaltDef_UpperLimit_DWordRŠRiRR‚R`(RaR}taddCountR~tisFreet
addCountExt enterCntKeyR™tcurLineEnterCntt updEnterCnttupdValueRšREtenterCntTotalKeyt enterCntTotal((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytAddEnterFBCounts6    
     #  cCs÷tjddƒ}t|ƒ|kr(dS|t|ƒ\}}|jtj|ƒ}||kr¤tj|tj|dƒtj|tj    |dƒt
j dƒn?t t j ƒƒ}t|ƒ}|jƒ}t||ƒ}    t||ƒ}
|
|    } |jtj|ƒ} || } | |krftj|tj|dƒtj|tj    |dƒt
j dƒn}| |krunn| s„|}n|| |}tj|tj||ƒtj|tj    ||ƒt
j d|| | |fƒt||gƒdS(NRfiis¸±±¾Ê±¼ä»Ö¸´´ÎÊýÒÑ´ïµ±ÈÕÉÏÏÞ!s¸±±¾Ê±¼ä»Ö¸´´ÎÊýÒÑ´ï³£¹æ´ÎÊý!sV¸±±¾»¹¿É°´Ê±¼ä»Ö¸´´ÎÊý!curTime=%s,regainStartTime=%s,passTime=%s,updRegainTotalTime=%s(R5RgRIRVRTRZRnRÆt$Def_Player_Dict_FbCntRegainStartTimet$Def_Player_Dict_FbCntRegainTotalTimeR+RŠR#ttimeR8RˆRRŒtNotifyFBCntRegainInfo(RaR7RmtmaxCanRecoverCnttrecoverIntervaltcurRegainFbCnttcurTimeRIt maxFreeTimesR™RštremainCanEnterCnttregainStartTimetpassTimetupdRegainTotalTime((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyR‚°s@   
 
          cCs»ttjƒƒ}tjddƒ}x|jƒD]‚\}}t|ƒ}|\}}|jtj|ƒ}|rƒ||krƒq1nt|ƒ}    |    j    ƒ}
t
||ƒ} t ||ƒ} | | } | |
krÕq1n|jtj |ƒ}|s÷q1n|jtj |ƒ}||}||kr)q1n||}d||}t|
| |ƒ}|rpt|||ƒ}n|dkr‚q1n||}tj|tj||ƒt||ƒq1WdS(NRfii(R#R™R5RgR_RVRTRZR8RˆRRŒR—R˜R´RnRÆR‚(RaRžRmtmapIDStrt recoverInfoR7R›RœRRIRŸR™RšR R¡tneedTimeR¢t
remainTimet
recoverCnttrealRecoverCnttupdRegainFbCnt((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytRegainFBCntProcessÙsB    
 
 
 
c Csktjddƒ}|sdS|sJg|jƒD]}t|ƒ^q/}ng}ttjƒƒ}x·|D]¯}t|ƒ|kr‡qintjƒ}|jƒ||_    |j
t j |ƒ}|j
t j |ƒ}    ||}
td|    |
ƒ|_|j
t j|ƒ|_|j|ƒqiW|s&dStjƒ} | jƒ|| _t| jƒ| _tj|| ƒdS(NRfii(R5RgtkeysR#R™RIR€ttagMCFBCntRegainR‚t    DataMapIDRVRTR—R˜RÜt
RemainTimeRZt    RegainCntRXttagMCFBCntRegainRemainTimetInfoListRŸtCntR‹RŒ( Rat syncMapIDListRmR¤tinfoListRžR7tmapInfotlastRegainTimeR¦R¢t
regainData((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyRšs6(  
    
 
    cCsytjƒjƒ}t|ƒ}|jtj|ƒ}t||ƒ}||krutjƒj    |j
ƒtj dƒt St S(Ni(R+RRÍR4RVRTR‹RŒRÕR RðtFBPlayerDict_IsHelpFightR`R_(RaR7R™Rš((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytSetIsHelpFight$s  "cCstjƒj|jƒtjƒS(N(R+RÕRRðRTR¹(Ra((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetIsHelpFight/sc    CsÓg}tjƒ}x¤t|jƒƒD]}|j|ƒ}|jƒ}|jƒ}|s^q%n|jƒ|krvq%ntj    |}|j
|ƒr%t j ||dƒ|j |ƒq%q%W|rÏt||ƒndS(Ni(R5tIPY_DataRÑtGetFBFuncCounttGetFBFuncByIndext GetDataMapIDt GetWeekTimestGetWeekResetTypeRTtDef_Player_Dict_EnterFbCntWeekRVRnRÆRXR(    Rat
onWeekTypet    mapIDInfot
ipyDataMgrRäRcR7t    weekTimestenterCntWeekKey((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytFBOnWeek3s"    cCs[tjd|jƒƒtj||ƒg}tjƒ}xìt|jƒƒD]Ø}|j    |ƒ}|j
ƒ}|j ƒrÅ|j t j|ƒ}|rÅtj|t j|dƒtjd|ƒqÅn|jƒ}| r|jƒ r|jƒ r|jƒ rqKn|jƒ|krqKnt||ƒ}    t j|}
|j |
ƒ} tj||
dƒt j|} |j | ƒ} tj|| dƒt j|}|j |ƒ}tj||dƒt j|}|j |ƒ}tj||dƒt j|}|j |ƒ}tj||dƒtj|t j|dƒtj|t j|dƒtjd||| ||||    | fƒ|t jkrt j!|t"j#ƒrt$|    | tj%dƒtj%ddƒƒ}||krêtj||||ƒq||krtj||
||ƒqqn|j&|ƒqKW|rWt'||ƒt(||ƒt)||ƒndS(Ns¸±±¾¹ýÌì´¦Àí,FBOnDay...is ÖØÖÃÈÕÖúÕ½½±Àø´ÎÊýÏÞÖÆ£¡mapID=%ssh    ÖØÖÃ:mapID=%s,dayTimes=%s,buyCnt=%s,recoverCnt=%s,itemAddCnt=%s,regainFBCnt=%s,maxCnt=%s,enterCnt=%stZhuXianBossCntCfgi(*R+RmRiRjtOnFBPlayerOnDayR5R¼RÑR½R¾R¿tGetDayHelpCountMaxRVRTtDef_PDict_FBRealHelpCountRnRÆRŠRˆRkRTRStGetDayResetTypeRŒR‹RWRXRYRZR—R˜tDef_FBMapID_ZhuXianBosst GameFuncCommt GetFuncCanUseRMtGameFuncID_ZhuXianBossR´RÛRXRtSync_FBPlayerFBBuyCountRš(Rat    onDayTypeRÄRÅRäRcR7RtdayTimesRšRR™t    buyCntKeyRat recoverCntKeyR¨t itemAddCntKeyRctregainFBCntKeyt regainFBCnttcurCnt((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytFBOnDayPsd    .          ,     cCsCtj|ƒt|ƒt|ƒt|ƒt|ƒt|ƒdS(N(RjtOnFBPlayerOnLoginRtSyncFBEnterTickRÒRštCheckFBPlayerOffine(Ra((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyt    FBOnLogin s 
 
 
 
 
cCsx|jƒ}t|ƒ}|s"dS|jƒ}|s8dStj|ƒ}||krttjd|ƒtj|ƒndS(Ns9Åжϸ±±¾ÀïÀëÏß³¬¹ýÒ»¶¨Ê±¼äÔòÍ˳ö¸±±¾ leaveServerSecond=%s(RÍR8tGetOfflineTimeRntGetPlayerLeaveServerSecondR+RŠR(RatmapidRct OfflineTimetleaveServerSecond((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyRÞ«s    c
Cstjƒj|ƒ}|j}|tjkrVtj|ƒ}|sVtjdƒdSnt    |ƒ}|sldSd}|j
ƒ}|r|t j ||ƒ7}n|t j||ƒ7}tjd||fƒ|dkrëtjd|ƒdS|jtj|ƒ}    |jƒ}
t||ƒ} t||ƒ} |tjkra|
ra| | |
kratjdƒdS|tjkr| | tjddƒkrdS|    |kr½tjd|||    |fƒdStjd    d
iƒ} | jt|ƒd ƒ}t|ƒ}tjd    diƒ}|jt|ƒtjƒ}|dkrPtjd |||fƒdStj|||ƒ}|sodSi|d 6}xG|D]?\}}tj|||tj |ƒsƒtjd|ƒdSqƒWtj!|tj||    d
ƒt"||gƒtj#|d|gƒt$||ƒ|tjkr{tj|ƒ}|r{tjddƒ}|j%ƒg}tj&d|g||ƒq{ndS(NsûÓаéÂÂÎÞ·¨¹ºÂòÇéÔµ¸±±¾´ÎÊý!is'¹ºÂò¸±±¾½øÈë´ÎÊý: mapID=%s,canBuyCnt=%ssmapID:%s ²»¿ÉÒÔ¹ºÂò½øÈë´ÎÊýsµ±Ç°´ÎÊýÒÑÂú£¬ÎÞÐ蹺Âò¡£¡£RÉisI¹ºÂò´ÎÊýÒѾ­ÓÃÍêmapID=%s,buyTimesVIPPriID=%s,hasBuyCnt=%s >= canBuyCnt=%st BuyFBCntCostit0s@ûÓÐÅäÖùºÂò¸±±¾´ÎÊýÏûºÄ»õ±ÒÊý! mapID=%s,costType=%s,costGold=%sRµsÏÉÓñ²»×ã!costGold=%stFBEnterTimeBuytLoveFBitBuyLoveFBCntCoupleMail('R+tGetPlayerManagerRÓtFBIDRTtDef_FBMapID_LoveRnt GetCoupleIDRŠR8RkRURVR[tGetAddFBBuyCntRVRWRˆRŒRtDef_FBMapID_SealDemonRÎR5RÛRgRpRItevalRMR§R¦R¹tDef_Cost_BuyFBCntRÆRÒRoR‚t GetPlayerNamet SendMailByKey(t playerIndext
clientDataRRaR7tcoupleIDRcRyRxt    hasBuyCntt maxDayTimesRšR™t costGoldDicttcostGoldtcostMoneyTypeInfotcostTypeR´R¾R¿RÀt addItemListt    paramList((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytBuyFBEnterCountÂst         % +     cCstj|tjƒS(N(t EventReporttWriteFuncCMEAcceptableRMtGameFuncID_RunDaily(Ra((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytDoFuncOpen_RunDailyscCstj|tjƒS(N(RRRMtGameFuncID_RunFamily(Ra((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytDoFuncOpen_RunFamilysc
Cstjƒjƒdks| r#dStjjƒ}|tjddƒ}|j|j|j|j    f\}    }
} } |j|j|j|j    f\} }}}d}t
|ƒ}d}xÐ|D]È\}}|| |gkrßq»n|| kr
||    |
| ||df}n|| ||||df}tjj |t j ƒ}||}|j}|ddd}d|koz|knr»Pq»q»W||kr|tjƒjt jƒkr|dkrÌ||g}n    |g}tjd||d|||ƒtjƒjt j|ƒndS(Nithoursis%s-%s-%s %s:%s:%siÿÿÿÿt00i<(R+R,tGetCurGameWorldIndextdatetimettodayt    timedeltatyeartmonthtdaythourRÜtstrptimeRTtTYPE_Time_FormattsecondsRÕRtMap_FBDict_NotifyOpenRnt WorldNotifyRÖ(t openTimeListt    notifyMsgtnotifyTimeListR7t mergeMinOSDt mergeMaxOSDt mergeMapInfoRžtnextTimetcurYeartcurMonthtcurDaytcurHourtnextYeart    nextMonthtnextDaytnextHourtstartTimeStrFormattmaxNotifyMinutet remaindMinuteRtminutet startTimeStrt    startTimeR§Rt msgParamList((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyt FBOpenNotifys:**  
          cCsAtjƒ}|tjddƒ}|j|j|j|jf\}}}}|j|j|j|jf\}}    }
} d} x¾|D]¶\} }| || gkr§qƒn| |krÒ| |||| |df}n| ||    |
| |df}tjj|t    j
ƒ}||}|j }d|ko0|knrƒt SqƒWt S(NRis%s-%s-%s %s:%s:%sRi(R+tGetCurrentTimeR    R R R RRRRTRRR`R_(RtprepareSecondsRžtprevTimeRRRRtprevYeart    prevMonthtprevDaytprevHourR$RR'R(R)tpastTimet pastSeconds((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytCheckIsFBPrepareTimeJs" ** 
    cCsÖ|jƒ}t|ƒ}tjd||ƒ}|s7dS|jƒ}tjƒ}|p^|jƒ}|j||ƒ}    d|}
|j||
ƒ} tj    ddiƒj
|dƒ} |    | krÐt j |dƒdS| |kr|t jkrþt j |dƒnt j |dƒdSt|jƒƒ} |tjkr[|jtjƒ}|r[| d9} q[nt j||| ƒ}|szdSi|d6}x6|D].\}}t j|||tj|ƒsŽdSqŽWtj    dd    iƒj
|tjƒ}||    }tjƒj|ƒ}|stjd
|ƒdStj|ƒ}|j|||    d    ƒ|j||
| d    ƒtj    dd iƒj
|dƒ}|tjkrntj ƒ}x8t!|j"ƒƒD]½}|j#|ƒ}|sËqªn|j$ƒ|krãqªnt%j&||||ƒt j |d |j'ƒ|    d    gƒt(||    d    |ƒ|jƒ|jƒkrªt)j*|t+j,d    |gƒqªqªWndt%j&||||ƒt j |d |    d    |gƒt(||    d    |ƒt)j*|t+j,d    |gƒt-S(Nt FbEncouragesFbEncourageCnt_%stFBEncourageBuffiitGeRen_chenxin_93643tXjmj_CopperInspireFullRµisFbEncourageBuff   ÕÒ²»µ½¼¼ÄÜ%sitAllianceBossText2tGeRen_chenxin_628920(.RÍR4R5tGetIpyGameDatatGetInspireMaxLVR+RÕRðRRgRpRnRoRtTYPE_Price_Silver_MoneyRðt GetMoneyCountRTRïRVtDef_Player_Dict_FMTDoubleR¦R¹tDef_Cost_FBEncouragetDef_SkillID_FBEncourageBufft GetGameDatatGetSkillBySkillIDRmt SkillCommont GetBuffTypeR tDef_FBMapID_AllFamilyBossRÐRÑRÒRÓRÐt    BuffSkillt    DoAddBuffR«tSendFBEncourageInfoR‰tDoAddSuccessProgressRMtSuccType_FBEncourageR`(RaRÃt encourageTypeRR&tcurMapIDRcRšRæt encourageLVtencourageCntKeyt encourageCntRàt encourageCosttisDoubleR´R¾R¿tmoneyCntt
buffTypeIDt skillBuffIDt    skillBufftbuffTypet
addHurtNumRRùtplayer((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytFbEncourageBuffusx    
!   $
! #&c Cs|jƒ}tjd|ƒ|p,|jƒ}tjƒ}|j||ƒ}|sWdStjƒjƒ}t|ƒ}tj    ddiƒj
|t j ƒ}||d}    tj ƒj|    ƒ}
|
s×tjd|    ƒdStj|
ƒ} tj|| |
|ƒt|||ƒdS(Ns#AddFbEncourageBuff() curPlayerID=%sR7isFbEncourageBuff   ÕÒ²»µ½¼¼ÄÜ%s(RðR+RmRÕRRRÍR4R5RgRpRTRBRCRDRERFRHRIRJ( RaRÃRR&R°RæROR7RURVRWRX((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytAddFbEncourageBuffÅs&   $cCs‚xntttjddiƒjƒƒƒD]E}tj|||ƒr(tj|ƒ}|jƒt    j
dƒt Sq(Wt    j
dƒt S(NR7isClearEncourageBuff() TruesClearEncourageBuff() False( ROtsetR5RgtvaluesRHtDelBuffBySkillIDRntRefreshPlayerAttrByBuffR+RmR`R_(RaRRUt playerControl((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytClearEncourageBuffàs.
  c Cs|jƒ}t|ƒ}tjdi|d6tƒ}|s>dStjƒ}|jƒg|_d}t    j
ƒ}|p~|j ƒ}xX|D]P}|j ƒ}    tj ƒ}
|    |
_|j|||    ƒ|
_|jj|
ƒqˆWt|jƒ|_tj||ƒdS(NR6R®sFbEncourageCnt_%s(RÍR4R5tGetIpyGameDataByConditionR`R€ttagMCFBEncourageInfoR‚R²R+RÕRðtGetInspireTypettagMCFBEncourageCntt    MoneyTypeRt EncourageCntRXRŸR³R‹RŒ( RatlvR&RNt ipyDataListt encourageInfoRPRæRct inspireTypetpackData((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyRJís(   
            cCstd|jtjƒƒS(Ni(RÜR”RTt Def_PlayerKey_AreaRewardMultiple(Ra((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetAreaRewardMultiple    scCs|jtj|ƒdS(N(R2RTRn(RaRÇ((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytSetAreaRewardMultiple    scCst||ƒdkS(Ni(t GetFBEnterCD(RaR7((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyRs    sc    Cst|ƒ}tjddƒ}||kr.dStjddƒ}||kri|jƒ||kridSn||}t|tj|ƒ}|s“dStjtj    ƒƒ}t
d||ƒ}t
d||ƒ}|dkrýtj d|||||fƒn|S(Nt    FBEnterCDiiisF¸±±¾½øÈëCDÖУ¡mapID=%s,timeNum=%s,lastEnterTick=%s,passTick=%s,Ê£Óà=%s( R4R5RgRuRÅRTtDef_PDict_LastEnterFBTickR+tChangeTimeStrToNumtGetCurrentDataTimeStrRÜRŠ(    RaR7t enterCDDictt lvLimitDicttcdTickt lastEnterTickttimeNumR5t    curCDTick((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyRq    s&   
     cCs”tjƒjƒ}t|ƒ}tjddƒ}||kr@dStjtjƒƒ}t|t    j
||ƒtj d||fƒt ||ƒdS(NRris%UpdateFBEnterTick mapID=%s,timeNum=%s( R+RRÍR4R5RgRtRuRÈRTRsRŠRÝ(RaR7RvRz((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytUpdateFBEnterTick:    s   cCsØtjdƒ}|s§i}i}tjƒ}x±t|jƒƒD]}|j|ƒ}|jƒ}|jƒ}|j|gƒ}    ||    kr¥|    j    |ƒ|    ||<n|j|gƒ}
||
kr@|
j    |ƒ|
||<q@q@Wg} x<|j
ƒD].\}}
t |
ƒdkrô| j    |ƒqôqôWxi|j
ƒD][\}}    x*| D]"} | |    krF|    j | ƒqFqFWt |    ƒdkr3|j |ƒq3q3Wtjd|ƒ}nx*|j
ƒD]\} }||kr´| Sq´W|S(Nt DataMapIDDicti(R5t GetConfigExR¼RÑtGetFBLineCounttGetFBLineByIndexR¿RÍRpRXR_RŸtremovetpopt SetConfigEx(R7R}tmIDToDataMapIDDictt
dMapIDDictRÅRäRctdMapIDtmIDtmIDListtdMIDListt    unMIDListtunMIDRt    mapIDList((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyR4J    s@           cCs”tjdƒ}|sg}tjƒ}xQt|jƒƒD]=}|j|ƒ}|jƒ}||kr:|j|ƒq:q:Wtjd|ƒ}n|S(NtGeneralTrainMapIDList(    R5R~R¼RÑtGetFBGeneralTrainCounttGetFBGeneralTrainByIndexR¿RXRƒ(RRÅRäRcR†((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetGeneralTrainMapIDListq    s   cCstƒ}|tjS(N(RRTtClientCustomSceneList(RŒ((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetClientCustomScene    s    cCs?tjddƒ}|sdStjtjƒƒ}tjƒ}|jƒg|_xÆ|j    ƒD]¸}|d|gkr{q]nt
|t j |ƒ}||krÝt |t j ||ƒ|}tjd||f|jƒƒntjƒ}|jƒ||_||_|jj|ƒq]Wt|jƒ|_tj||ƒdS(NRriis&ÐÞÕýÍæ¼Ò¸±±¾CDʱ¼ä mapID=%s,timeNum=%s(R5RgR+RtRuR€ttagMCFBEnterTickListR‚t EnterTickListR¬RÅRTRsRÈRŠRittagMCFBEnterTickRµt LastEnterTickRXRŸR³R‹RŒ(Rat    syncMapIDRvRzt    enterListR7Ryt enterTickObj((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyRÝŠ    s. 
     # 
        c
CsÝ|sItjƒ}gt|jƒƒD]}|j|ƒjƒ^q%}n=t|ƒttgkredSt|ƒtkr€|gn|}t    j
ƒ}|j ƒt |ƒ|_ g|_x|D]
}t    jƒ}|j ƒ||_|jtj|ƒ|_|jtj|ƒ|_|jtj|ƒ|_|jtj|ƒ|_|jtj|ƒ|_xCttjƒD]2}|jtj||fƒ}    |j j!|    ƒqmWt |j ƒ|_"|jj!|ƒq»Wt#j$||ƒdS(N(%R5R¼RÑR½R¾R¿R¡R#ROR€ttagMCPlayerFBInfoDataR‚RŸt    FBDataCntt
FBDataListt tagMCFBInfoRëRVRTR‹tEnterCntR‹t EnterCntTotalRXt
RecoverCntRYt
ItemAddCntR\t
PassLineIDRtDef_FBStar_MaxKeyCntR^t    PassGradeRXt PassGradeCntR‹RŒ(
RaRÄRÅRäRŒt
fbInfoDataR‡R¶tkeyNumt
gradeValue((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyR¯    s4 7! 
      
    cCs|slg}tjƒ}xQt|jƒƒD]:}|j|ƒ}|jƒsRq+n|j|jƒƒq+Wntj    ƒ}|j
ƒg|_ xV|D]N}tj ƒ}|j
ƒ||_ |jtj|ƒ|_|j j|ƒq’Wt|j ƒ|_|jdkrtj||ƒndS(Ni(R5R¼RÑR½R¾RkRXR¿R€ttagMCBuyEnterInfoR‚tFBInfot tagMCBuyInfoRëRVRTRWtBuyCountRŸtFBCountR‹RŒ(RaRŒRÅRäRcR¦R‡R¶((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyRÒæ    s*   
      
    c Csg}x!t|ƒD]}|jgƒqW|d}xÙtd||ƒD]Å}g}x{t|ƒD]m}g}||}||kr’|j|ƒn|||d}    |    |krÀ|j|    ƒn|j|ƒq`Wtj|ƒx+t|ƒD]\}
} | j||
ƒqëWqGW|S(Niii(RÑRXtrandomtshuffleRjtextend( RâtgroupCntt    groupListRätsetpttmpListtgttmpGrouptaIndextbIndextgitgroup((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyt GetGroupList
s&
 
   cCsƒtjƒ}|jtj|dƒ|jtj|dƒ|jtj|dƒ|jtj|dƒ|jtj|dƒdS(Ni(    R+R,tSetGameWorldDictRTtMap_Player_AreaReward_GetCnttMap_Player_AreaReward_GetExpt!Map_Player_AreaReward_GetExpPointt$Map_Player_AreaReward_GetZhenQiTotalt"Map_Player_AreaReward_GetTechPoint(R~RÙ((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytClearAreaRewardRecord"
s cCsÿtjƒ}tjƒ}tj|dƒ}tj|ƒ}tj|dƒ}|jtjƒ}|||krqdS|j    tj|ƒtj
d||fƒtj ƒ}    xQt |    j ƒƒD]=}
|    j|
ƒ} | sÛqºn|rütj| ƒdkrüqºn| jƒ} |rT|jtj| ƒ} | |kr6qºn|jtj| | dƒnt| ƒ}| jƒ}tj| ƒ}tj| ƒ}d|krt|dƒ}|j|ƒ}|dkrt|| ƒ|}|jtj| |tjƒ|jtj| |tjƒqnd|kr…t|dƒ}tj| |t t dƒ|jtj!| ƒ}||7}|jtj!| |ƒnd    |krºt|d    ƒ}t"j#| |t t$j%t ƒ|jtj&| ƒ}||7}|jtj&| |ƒqºqºWdS(
Niis¸øÕ½³¡¸£Àû tick=%s,needAlive=%siitExptZhenQitFBt    TechPoint('R+RÕR,R5RÛRgRRTtMap_FBDict_LastAreaRewardTickRÖRŠRÐRÑRÒRÓRùRúRiRLR½R¼RoRuRntGetPlayerReExpRðtAddExptGetFBAreaRewardExpR¾tDef_PerPointValueR¿tPlayerAddZhenQiR`RÀt PlayerFamilytAddPlayerFamilyActiveValueRMtDef_AddFAVReason_FamilyInvadeRÁ(t
cfgKeyNameRt    needAliveRæRÙtrewardIntervaltrewardFormatDictt getCntLimitt lastAwardTickRRùRaR~tgetCnttmultipletreLVtreExpRataddExpttotalExpt    addZhenQit totalZhenQit addTechPointt    techPoint((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytDoLogicAreaReward/
s^         $ 
 
cCs;|jtj|ƒ}|jtj|ƒ}|tj|S(N(RLRTR¾R¿RË(RÙR~R R ((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyRÊk
scCs|jtj|ƒS(N(RLRTRÀ(RÙR~((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetFBAreaRewardZhenQip
scCs|jtj|ƒS(N(RLRTRÁ(RÙR~((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetFBAreaRewardTechPoints
si'c    Cs­tjƒ}|jtjƒ}|||kr2dS|jtj|ƒ|rX||ƒntjƒ}xBt|jƒƒD].}|j    |ƒ}|s˜qwn|||ƒqwWdS(N(
R+RÕRRTtDef_FB_NotifyFBHelpTickRÖRÐRÑRÒRÓ(    Rt
fbHelpFunctintervalt befLogicFuncRæRRRùRa((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytNotifyCopyMapPlayerFBHelpv
s   cCstjƒjƒdS(Ni †(R+R,RÚ(((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetCrossDynamicLineMapZoneIDˆ
scCstjƒjƒddS(Ni †id(R+R,RÚ(((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyt GetCrossDynamicLineMapFuncLineIDŒ
s(ÚR+RRnR£tGameMapRÎRËRHR€R‹RER5tPlayerFBRMRRÍR‡RUR‰RÏR*RURùRjRTR[R    R®R<tmathR™RhRÕRÔR×RÖRBt    Help_stept
Help_wheeltHelp_wheelTotaltHelp_npct Help_npcTotaltHelp_npcTotalNeedtHelp_expt Help_expPointt
Help_moneyt
Help_scoreR4t Help_leaderIDt Help_isHelptHelp_helpCountt Help_relationt Help_robotJobt Help_isAutotHelp_hasRefreshBosstHelp_gsItemInfoR9R:R;t Over_isSweeptOver_expt Over_expPointt Over_extraExptOver_extraExpPointt
Over_moneytOver_spt Over_costTimet    Over_rankt Over_npcTotalt
Over_wheelt
Over_gradet Over_itemInfotOver_succItemInfotOver_firstPassItemt
Over_scoretOver_extrScoret Over_enterLVt Over_leaderIDtOver_helpPlayert Over_ownerIDtOver_ownerNamet Over_isAssistRtDef_FbActionEncouragetDef_FbActionChangeLineR0R2R8R`R<R=R?RARCRERGRJRORRRdR_R„RqRyRÁRÅRÈRêRûRRRRR
R RRRRR t tttFlagTakeR/R6RARFRHR3R]RbRhRjRR™R¥R§RªR³R·RºR»R½R¿RÀRÂRÈRÌRÞRßRâRçRðRöRøRRRR
R RRR/RGtDef_TDCfg_SmallWheelSpaceR:R'R)R+R,R.R6R9R#RFRMRRRŒR{RR…R–R‚R«RšRºR»RÈRÛRßRÞRÿRRR+R5R[R\RbRJRoRpRsRqR|R4RR’RÝRRÒR»RÂRàRÊRáRâRçRèRé(((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyt<module>s¢                                                                     7    8(         0    "                                        1&                              + % % "                
                          %                !        %                                                         "         (          )    ,                  P             @         ;    + P                                  '             % 7 "         <