hwj35
2025-07-02 be2004bc6492efa067d8fc7ab2a84dd61dba819f
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
363
364
4Ûdhc@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scCsg}x|D]ù}i}t|tƒs7t|tƒr€t|ƒ}|dkr`|d|d<n|dkrù|d|d<qùnyt|tƒrœ||d<n]t|tƒr´|}nEtj|ƒsÉq n|jƒ|d<|j    ƒ|d<|j
ƒ|d<|j |ƒq W|S(NitItemIDitCounttUserData( t
isinstancetlistttupleRŸR#tdictR£tCheckItemCanUset GetItemTypeIDtGetCountt 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(titemsRU(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\RU(tnpcDicttkillListtnpcidRa((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetJsonNPCKillList¸scCsBg}x5|jƒD]'\}}|ji|d6|d6ƒqW|S(NR`tHPPer(R\RU(RbRcRdRf((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_fbPickUpItemDictRUR_RMRPtgetR`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ŸttagMCDynamicBarriertAPosXtAPosYtBPosXtBPosYtAngleRURKt 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tgnotPetRmRÎ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ïRU(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    gotPlayerRU(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ütgotNPCRU(RôRýRúRþRÿ((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ñRtnpcCntRú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ÖRTRRRRRRRRR(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ÕRRTRR_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ÕRRTRRR_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æR.t 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ÌRmRŸtDef_TDCfg_NotifyMarkRntFBNotify(
RæR"twheelNumR#trefreshNPCDicttrefreshNPCListRdR/R0R€((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_FromRefreshMarkRRt
IsGameBossRÜRÖRRŠ(
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æR.R"R/R0t nextWheelTimet prepareTimetcurWheelStartTickR2tnextWheelRemainTickR-((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ÌRm(    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ˆR5tGetFuncEvalCfgRIRPRQRRRSRTRURVtcopytdeepcopyt    enumerateRÜtGetBuyTimesVIPPriID(RaR7RIR™R—tmaxRegainFbCnttrecoverIntervalDictRZR[R\R]R^R_R`tcntListtrCntListtsumCntRä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(    R4RVRTRVRnRÆtSync_FBPlayerFBInfoDataRot!OnFBCountChangeEffectRecoverCount(RatitemIDR7taddCntR`((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+RyR±tChangeDataByDigitPlaceRnRÆRŒR_tPlayerActivitytOnEnterFBActivityt PlayerSuccesstAddEnterFBSuccesstDef_Player_Dict_EnterFbCntTotaltDef_UpperLimit_DWordRŠRiR~RR`(RaRztaddCountR{tisFreet
addCountExt enterCntKeyR™tcurLineEnterCntt updEnterCnttupdValueRšRBtenterCntTotalKeyt 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(NRciis¸±±¾Ê±¼ä»Ö¸´´ÎÊýÒÑ´ïµ±ÈÕÉÏÏÞ!s¸±±¾Ê±¼ä»Ö¸´´ÎÊýÒÑ´ï³£¹æ´ÎÊý!sV¸±±¾»¹¿É°´Ê±¼ä»Ö¸´´ÎÊý!curTime=%s,regainStartTime=%s,passTime=%s,updRegainTotalTime=%s(R5RdRIRVRTRWRnRÆt$Def_Player_Dict_FbCntRegainStartTimet$Def_Player_Dict_FbCntRegainTotalTimeR+RŠR#ttimeR8RˆR|RŒtNotifyFBCntRegainInfo(RaR7RjtmaxCanRecoverCnttrecoverIntervaltcurRegainFbCnttcurTimeRIt 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(NRcii(R#R–R5RdR\RVRTRWR8RˆR|RŒR”R•R±RnRÆR(RaR›RjtmapIDStrt 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(NRcii(R5RdtkeysR#R–RIR}ttagMCFBCntRegainRt    DataMapIDRVRTR”R•RÜt
RemainTimeRWt    RegainCntRUttagMCFBCntRegainRemainTimetInfoListRŸtCntRˆR‰( Rat syncMapIDListRjR¡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ÆRUR~(    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ˆRhRQRPtGetDayResetTypeRŒR‹RTRURVRWR”R•tDef_FBMapID_ZhuXianBosst GameFuncCommt GetFuncCanUseRMtGameFuncID_ZhuXianBossR±RÛRUR~tSync_FBPlayerFBBuyCountR—(Rat    onDayTypeRÁRÂRäRcR7RtdayTimesRšRR™t    buyCntKeyR^t recoverCntKeyR¥t itemAddCntKeyR`tregainFBCntKeyt 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ŠR8RhRRRSRXtGetAddFBBuyCntRVRTRˆRŒR|tDef_FBMapID_SealDemonRËR5RÛRdRmRItevalRMR§R¦R¹tDef_Cost_BuyFBCntRÆRÏRoRt GetPlayerNamet SendMailByKey(t playerIndext
clientDataRRaR7tcoupleIDRcRvRut    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(RýRþRMtGameFuncID_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 remaindMinuteR tminutet 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+tGetCurrentTimeRRR    R
R R R RTRRR`R_(RtprepareSecondsR›tprevTimeRRRRtprevYeart    prevMonthtprevDaytprevHourR!R R$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ðRRdRmRnRoR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=%sR4isFbEncourageBuff   ÕÒ²»µ½¼¼ÄÜ%s(RðR+RmRÕRRRÍR4R5RdRmRTR?R@RARBRCRERFRG( RaRÃRR&R­RæRLR7RRRSRTRU((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(NR4isClearEncourageBuff() TruesClearEncourageBuff() False( RNtsetR5RdtvaluesREtDelBuffBySkillIDRntRefreshPlayerAttrByBuffR+RmR`R_(RaRRRt 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(NR3R«sFbEncourageCnt_%s(RÍR4R5tGetIpyGameDataByConditionR`R}ttagMCFBEncourageInfoRR¯R+RÕRðtGetInspireTypettagMCFBEncourageCntt    MoneyTypeRt EncourageCntRURŸR°RˆR‰( RatlvR&RKt ipyDataListt encourageInfoRMRæRct inspireTypetpackData((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyRGí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(R2RTRk(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( R4R5RdRuRÅRTtDef_PDict_LastEnterFBTickR+tChangeTimeStrToNumtGetCurrentDataTimeStrRÜRŠ(    RaR7t enterCDDictt lvLimitDicttcdTickt lastEnterTickttimeNumR2t    curCDTick((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyRn    s&   
     cCs”tjƒjƒ}t|ƒ}tjddƒ}||kr@dStjtjƒƒ}t|t    j
||ƒtj d||fƒt ||ƒdS(NRois%UpdateFBEnterTick mapID=%s,timeNum=%s( R+RRÍR4R5RdRqRrRÈRTRpRŠRÚ(RaR7RsRw((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ÍRmRUR\RŸtremovetpopt SetConfigEx(R7RztmIDToDataMapIDDictt
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¼RUR€(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(NRoiis&ÐÞÕýÍæ¼Ò¸±±¾CDʱ¼ä mapID=%s,timeNum=%s(R5RdR+RqRrR}ttagMCFBEnterTickListRt EnterTickListR©RÅRTRpRÈRŠRittagMCFBEnterTickRµt LastEnterTickRURŸR°RˆR‰(Rat    syncMapIDRsRwt    enterListR7Rvt 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#RNR}ttagMCPlayerFBInfoDataRRŸt    FBDataCntt
FBDataListt tagMCFBInfoRèRVRTR‹tEnterCntRˆt EnterCntTotalRUt
RecoverCntRVt
ItemAddCntR\t
PassLineIDRŠtDef_FBStar_MaxKeyCntR^t    PassGradeRUt 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»RhRUR¼R}ttagMCBuyEnterInfoRtFBInfot tagMCBuyInfoRèRVRTRTtBuyCountRŸ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ÑRUtrandomtshuffleRgtextend( 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ÛRdRRTtMap_FBDict_LastAreaRewardTickRÖRŠRÐRÑRÒRÓRöR÷RiRLRºR¹RlRuRntGetPlayerReExpRítAddExptGetFBAreaRewardExpR»tDef_PerPointValueR¼tPlayerAddZhenQiR`R½t PlayerFamilytAddPlayerFamilyActiveValueRMtDef_AddFAVReason_FamilyInvadeR¾(t
cfgKeyNameRt    needAliveRæRÖtrewardIntervaltrewardFormatDictt getCntLimitt lastAwardTickRRùRaR~tgetCnttmultipletreLVtreExpR^taddExpttotalExpt    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ËRER}RˆRBR5tPlayerFBRMRýRÊR„t ItemControlerR†RÌR*RRRöRjRTRXRR«R<tmathR–ReRÒ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/R6RARFRHR3RZR_ReRgR|R–R¢R¤R§R°R´R·R¸RºR¼R½R¿RÅRÉRÛRÜRßRäRíRóRõRRRRR    R RR,RDtDef_TDCfg_SmallWheelSpaceR7R$R&R(R)R+R3R6R RCRJRORŒRxR|R‚R“RR¨R—R·R¸RÅRØRÜRÛRüRRR(R2RXRYR_RGRlRmRsRnRyR4R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 "         <