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
365
366
Eokhc@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¡scCsd}|tjkr%tj||ƒS|tjkrI|jtjƒ}n§|tjkrm|jtjƒ}nƒ|tj    kr‘|jtj
ƒ}n_t j d||ƒ}|rÅ|jtj |ƒ}n+tj|tj|t|gƒ}|rðtS||krtStS(NitFBGeneralTrain(tChConfigtDef_FBMapID_Maint PlayerControltIsMainLevelPasstDef_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+tLogRVt
NotifyCodetEntFBAskRet_FBCloset__CheckCanEnterFBByTimetEntFBAskRet_NoEnterCnttCheckIsEnterCDtEntFBAskRet_EnterCDtGetLVt GetLVLimitMint GetLVLimitMaxtEntFBAskRet_LVLimittGetFBEnterTickettEntFBAskRet_NoTicket(RdR7RRIR;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 GetDayTimesRcRTtDef_FBMapID_PersonalBossR+R`RaRbtDebugLogRYtDef_Player_Dict_EnterFbCntDaytGetEnterFBMaxCnttGetMaptGetMapFBTypeByMapIDt IPY_GameWorldt    fbtSingletfbtTeamt GetHelpPointt    GetTeamIDt GetDictByKeytDef_PlayerKey_TeamMemCounttDef_NoLimitEnterCntMap( RdR7RRIR}RtmaxTimest    curfbStartenterCnttmaxCnttfbType((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyRs÷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 GetTicketIDRcRbtGetTicketCostCntR+tErrLogRlRYRTRtlentGetItemManagertGetPackR‘trptItemt
ItemCommontGetItem_FromPack_ByID_ExExtGetTicketPriceRVt HaveMoneyExRMtTYPE_Price_Gold_Paper_MoneytboolRŒ(RdR7RR;R}RtticketIDtticketCostCntListR›tcostCntt totalCostCnttitemPacktenought    indexListthasBindtlackCntt ticketPricet    costMoneyt costMoneyList((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyR{/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(R{R=RbRVtPayMoneyRTtDef_Cost_EnterFBRcR¢R£R‘R¤R¥t
ReduceItem( RdR7RR›tisEnoughR±tdelCntR²R¶tinfoDictt    moneyTypetmoneyNumR¯((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytDelFBEnterTicketWs'
 
cCs|j||tjƒS(N(RYRTtDef_PDictType_FB(Rdtkeyt defaultValue((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetFBPDictValuelscCstj|||tjƒdS(N(RVtNomalDictSetPropertyRTRÄ(RdRÅtvalue((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytSetFBPDictValuetscCs4tjdƒ}|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=tIsEmptyRlRwt    GetGameFBt SetGameFBDictRTtDef_FB_NPCStrengthenAverageLVtDef_FB_NPCStrengthenMaxLVRptDef_FBMapID_ElderBattlefieldR,t GetPropertyIDR<RxR5t
GetFuncCfgtmaxtDef_FB_NPCStrengthenMinLVRc(R€tisLeavetattrStrengthenInfoR7tmaxLVttotalLVt    playerCnttcopyMapPlayerManagertiRdRƒt    averageLVtgameFBRR;R„t robotLVDifft
robotLVMint
robotLVMax((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytUpdFBLineNPCStrengthenLVxsP  
 
 
      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_NPCStrengthenPlayerCntRpt GetNPCManagerRÓt GetNPCCountt GetNPCByIndextGetIDtGetTypeR‘t ntFunctionNPCtntPettDoNPCAttrStrengthenRbRc( 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+Rp(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(Rd((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 (RdtdelSign((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytSetHadDelTicketús"cCs|jtj||fƒS(N(RYRTtDef_Player_Dict_CustomMapStep(RdR7R((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetCustomMapStepÿscCsItj|tj||f|ƒ|tjkrEtj|ddƒndS(Ni(RVRÈRTRtCustomMapStep_Overt SetCustomMap(RdR7RR((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytSetCustomMapSteps cCs:d}tjƒ}|jƒdkr6|jdƒ}n|S(s »ñÈ¡µ±Ç°µ¥È˸±±¾Íæ¼Ò iN(R=R+RÒRÔRÕ(Rdt 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(Rdt isHelpFight((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyt GetFBJoinTypes
*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_GradeRmtDoFBHelptintt GetFBStepTickR¡RÞRØRŒt Sync_TimeTickRcRÒRÓRÔRÕ(Rt gradeTimeListRdttimeTypetlowestRètcurGradet    useSecondt
diffSecondtupdGradet gSecondTotaltgSecondRRû((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyt UpdateFBGrade!sH    
 
         !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'Rc( RdRR(R)R*R+t
fbStepTickR,R-R.R/R0((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytUpdateCustomFBGradeRs2   
 
       cCsh|ji|t6|t6t|ƒt6ƒtj|dtƒ}|j|ƒt    j
d||j ƒƒdS(Nt ensure_asciisNotifyFBOver: %s( tupdatetOver_dataMapIDt Over_lineIDR%t Over_isPasstjsontdumpsRbt    Frm_FBEndR+RŒRl(RdRRRtoverDicttoverMsg((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyt NotifyFBOverxs
( cCsT|ji|t6ƒtj|dtƒ}|j|ƒtjd||jƒƒdS(NR9sNotifyFBHelp: %s(    R:t Help_lineIDR>R?Rbt
Frm_FBHelpR+RŒRl(RdRthelpDictthelpMsg((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyt NotifyFBHelp€s
 cCs*tj|dtƒ}|jd|ƒdS(NR9s%s(R>R?RbR@(RdtmsgDict((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytNotify_FB_OverŒscCs0tj|dtƒ}|jdt|ƒƒdS(NR9s%s(R>R?RbREtstr(RdRF((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyR5‘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(titemsRW(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^RW(tnpcDicttkillListtnpcidRc((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetJsonNPCKillListºscCsBg}x5|jƒD]'\}}|ji|d6|d6ƒqW|S(NRbtHPPer(R^RW(RdReRfRh((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(NRLtIsBindRMii(RóRTtDef_ItemType_MoneyRòR¥tCheckItemIsEquipt GetJsonItemR*tg_fbPickUpItemDictRWRbRORRtgetRcR=R+tGetMapItemManagerRÓtGetMapItemCounttGetMapItemByIndexRÖt
GetOwnerIDRl(RdtcurItemRtoverFunct 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¡ttagMCDynamicBarriertAPosXtAPosYtBPosXtBPosYtAngleRWRMt NetPackCommont SendFakePackR+RÒtrangeRÔRÕ( tbarrierPointListtstateRdtbarrierStatePacktposInfotaPosXtaPosYtbPosXtbPosYtangletbarriert 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
SetVisibleRcRb(    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žRcRb(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(RltGetNameR+R×tGetFbBillBoardPlayert SetPlayerIDt SetPlayerNametSetPoint(Rdt curPlayerIDt curPlayerNametplayerBillBoard((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytInitBillBoardPlayergs     cCsmtjƒj|jƒƒ}|dkrCt|jƒ|dƒ}nt|jƒ|dƒ}|j|ƒ|S(Niiÿÿi(R+R×R«RltmintGetPointRÞR®(RdR RÉR±tpoint((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytAddorReduceBillBoardws   cCs,tjƒj|jƒƒ}|j|ƒdS(N(R+R×R«Rlt
SetCountry(RdtcountryR±((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«RlR´(RdR±((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetPlayerBillBoardPoint‘scCs%tjƒj|jƒƒ}|jƒS(N(R+R×R«RltGetBillboardIndex(RdR±((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 SetFBStepTickRpR,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ÕRltSync_FbSystemMessage(tkeepTimetmsgTypetmsgRRæRd((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ÕRlR'(RÃtmsgTickR¢t
isContinueRRûRd((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_PrevFBTimeTypeRcRbRpRØRÒRŒRÔRÕRlR'(    RÃRÅt isSendPrevMsgR¢RÆt prevMsgTypeRRûRd((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,RcRŒtGetGameWorldCounttGetGameFBByFbIndext GetFamilyVSt GetFamilyIDt GetVSFamilyIDRbtGetOpenStateByFbIndexR‘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.pytGetCanEnterVSFBs"         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_PlayerManager9scCs›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“RpR,RŒRÌRÜ(tteamIDtgameMaptgameWorldManagerRûRØ((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGet_TeamFB_Line_GameFBAs  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•RctGetCloseFBTickRbt    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‘tgnotPetRoRÐtSyncNPCCntInfoRÒRÔRÕRò(
R7t    npcIDListRdt
npcCntDictRúRûRüR¢RRæ((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyt
Sync_FBNPC{s0   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ñRW(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    gotPlayerRW(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òRVt PlayerLeaveFB(RRæRd((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þtgotNPCRW(RöRÿRü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 ClearFBNPCEx s 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 GetFBNPCCnt6s  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.pytSetRandomRefreshMapNPCQs    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.pytOpenTDNPCRefreshms 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×RRTRRbRc(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×RRTRRbRc(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 RRbRc(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×RRTRRRRbRÍ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èR0t 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ÎRoR¡tDef_TDCfg_NotifyMarkRVtFBNotify(
RèR$twheelNumR%trefreshNPCDicttrefreshNPCListRfR1R2R‚((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'Rc(RdR#RÃRtmsgIDRèR0R$R1R2t nextWheelTimet prepareTimetcurWheelStartTickR4tnextWheelRemainTickR/((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ÎRo(    R$R%t npcCountDictR<R=t wheelNPCListtsmallWhellNPCInfoR¢tnpcCount((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetTDCfgNPCCntInfo6s  &cCsât|ƒ}|sdS|jƒ}|jƒ}d}|jƒ}tj||ƒ}|jtj|ƒ}|jtj    |ƒ}    |jtj
|ƒ}
|jtj |ƒ} t j ||ƒ} || |||    ||
| } | S(Ni(R8RŠtGetExtraTimesMWPriIDtGetExtraTimesVIPPriIDt    PlayerViptGetPrivilegeValueRYRTtDef_Player_Dict_BuyFbCntDaytDef_Player_Dict_RecoverFbCnttDef_Player_Dict_ItemAddFbCnttDef_Player_Dict_RegainFbCnttPlayerGoldInvestt GetAddFBCnt(RdR7RIR™t MWPrivilegeIDtmwAddCnttextraTimesVIPPriIDtextraCnttbuyCntt recoverFbCntt
itemAddCntt regainFbCntt investFBCntRœ((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyRŽAs    "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'(R8RYRTRRŠR5tGetFuncEvalCfgRKRRRSRTRURVRWRXtcopytdeepcopyt    enumerateRÞtGetBuyTimesVIPPriID(RdR7RIR›R™tmaxRegainFbCnttrecoverIntervalDictR\R]R^R_R`RaRbtcntListtrCntListtsumCntRætcntt rRecoverFbCntt    rExtraCntt
rCommonCntt rRegainFbCnttrBuyCntt rItemAddCnttbuyTimesVIPPriIDt    canBuyCnttnoBuyCnt((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetFBDetailCntInfoTs8   
 
  cCsBt|ƒ}|jtj|ƒ}|dkr>tj||ƒS|S(Ni(R4RYRTRR+tGetDataByDigitPlace(RdtfbIDtlineBitR›((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetEnterFBCount|s
  cCszt|ƒ}|jtj|ƒ}tj|tj|||ƒt||ƒtj|d|||gƒt||ƒdS(NtAddActivityCount_1(    R4RYRTRXRVRÈtSync_FBPlayerFBInfoDataRqt!OnFBCountChangeEffectRecoverCount(RdtitemIDR7taddCntRb((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RYR+R{R³tChangeDataByDigitPlaceRVRÈRŽRbtPlayerActivitytOnEnterFBActivityt PlayerSuccesstAddEnterFBSuccesstDef_Player_Dict_EnterFbCntTotaltDef_UpperLimit_DWordRŒRlR€RRc(RdR|taddCountR}tisFreet
addCountExt enterCntKeyR›tcurLineEnterCntt updEnterCnttupdValueRœRDtenterCntTotalKeyt 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(NReiis¸±±¾Ê±¼ä»Ö¸´´ÎÊýÒÑ´ïµ±ÈÕÉÏÏÞ!s¸±±¾Ê±¼ä»Ö¸´´ÎÊýÒÑ´ï³£¹æ´ÎÊý!sV¸±±¾»¹¿É°´Ê±¼ä»Ö¸´´ÎÊý!curTime=%s,regainStartTime=%s,passTime=%s,updRegainTotalTime=%s(R5RfRKRYRTRYRVRÈt$Def_Player_Dict_FbCntRegainStartTimet$Def_Player_Dict_FbCntRegainTotalTimeR+RŒR%ttimeR8RŠR~RŽtNotifyFBCntRegainInfo(RdR7RltmaxCanRecoverCnttrecoverIntervaltcurRegainFbCnttcurTimeRIt 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(NReii(R%R˜R5RfR^RYRTRYR8RŠR~RŽR–R—R³RVRÈR(RdRRltmapIDStrt 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(NReii(R5RftkeysR%R˜RKRttagMCFBCntRegainRt    DataMapIDRYRTR–R—RÞt
RemainTimeRYt    RegainCntRWttagMCFBCntRegainRemainTimetInfoListR¡tCntRŠR‹( Rdt syncMapIDListRlR£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ÏR4RYRTRRŽR×R RòtFBPlayerDict_IsHelpFightRcRb(RdR7R›Rœ((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytSetIsHelpFight&s  "cCstjƒj|jƒtjƒS(N(R+R×R
RòRTR¸(Rd((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetIsHelpFight1sc    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_EnterFbCntWeekRYRVRÈRWR€(    Rdt
onWeekTypet    mapIDInfot
ipyDataMgrRæRfR7t    weekTimestenterCntWeekKey((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytFBOnWeek5s"    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+RpRlRmtOnFBPlayerOnDayR5R»RÓR¼R½R¾tGetDayHelpCountMaxRYRTtDef_PDict_FBRealHelpCountRVRÈRŒRŠRjRSRRtGetDayResetTypeRŽRRVRWRXRYR–R—tDef_FBMapID_ZhuXianBosst GameFuncCommt GetFuncCanUseRMtGameFuncID_ZhuXianBossR³RÝRWR€tSync_FBPlayerFBBuyCountR™(Rdt    onDayTypeRÃRÄRæRfR7RtdayTimesRœRR›t    buyCntKeyR`t recoverCntKeyR§t itemAddCntKeyRbtregainFBCntKeyt regainFBCnttcurCnt((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytFBOnDayRsd    .          ,     cCsCtj|ƒt|ƒt|ƒt|ƒt|ƒt|ƒdS(N(RmtOnFBPlayerOnLoginR€tSyncFBEnterTickRÑR™tCheckFBPlayerOffine(Rd((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ÏR8tGetOfflineTimeRVtGetPlayerLeaveServerSecondR+RŒR(RdtmapidRft 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_LoveRVt GetCoupleIDRŒR8RjRTRURZtGetAddFBBuyCntRYRVRŠRŽR~tDef_FBMapID_SealDemonRÍR5RÝRfRoRKtevalRMR©R¨R»tDef_Cost_BuyFBCntRÈRÑRqRt GetPlayerNamet SendMailByKey(t playerIndext
clientDataRRdR7tcoupleIDRfRxRwt    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(Rd((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytDoFuncOpen_RunDailyscCstj|tjƒS(N(RÿRRMtGameFuncID_RunFamily(Rd((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_NotifyOpenRVt 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+tGetCurrentTimeRR
R R R RRRTRRRcRb(RtprepareSecondsRtprevTimeRRRRtprevYeart    prevMonthtprevDaytprevHourR#RR&R'R(tpastTimet pastSeconds((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytCheckIsFBPrepareTimeLs" ** 
    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òR
RfRoRVRqR‘tTYPE_Price_Silver_MoneyRït GetMoneyCountRTRîRYtDef_Player_Dict_FMTDoubleR¨R»tDef_Cost_FBEncouragetDef_SkillID_FBEncourageBufft GetGameDatatGetSkillBySkillIDRpt SkillCommont GetBuffTypeR tDef_FBMapID_AllFamilyBossRÒRÓRÔRÕRÏt    BuffSkillt    DoAddBuffRªtSendFBEncourageInfoRˆtDoAddSuccessProgressRMtSuccType_FBEncourageRc(RdRÅt encourageTypeRR&tcurMapIDRfRœ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.pytFbEncourageBuffwsx    
!   $
! #&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=%sR6isFbEncourageBuff   ÕÒ²»µ½¼¼ÄÜ%s(RòR+RpR×R
RRÏR4R5RfRoRTRARBRCRDRERGRHRI( RdRÅRR&R¯RèRNR7RTRURVRW((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(NR6isClearEncourageBuff() TruesClearEncourageBuff() False( RPtsetR5RftvaluesRGtDelBuffBySkillIDRVtRefreshPlayerAttrByBuffR+RpRcRb(RdRRTt 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(NR5R­sFbEncourageCnt_%s(RÏR4R5tGetIpyGameDataByConditionRcRttagMCFBEncourageInfoRR±R+R×RòtGetInspireTypettagMCFBEncourageCntt    MoneyTypeR
t EncourageCntRWR¡R²RŠR‹( RdtlvR&RMt ipyDataListt encourageInfoRORèRft inspireTypetpackData((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyRIïs(   
            cCstd|jtjƒƒS(Ni(RÞR–RTt Def_PlayerKey_AreaRewardMultiple(Rd((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetAreaRewardMultiple        scCs|jtj|ƒdS(N(R4RTRm(RdRÉ((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytSetAreaRewardMultiple    scCst||ƒdkS(Ni(t GetFBEnterCD(RdR7((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyRu    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( R4R5RfRwRÇRTtDef_PDict_LastEnterFBTickR+tChangeTimeStrToNumtGetCurrentDataTimeStrRÞRŒ(    RdR7t enterCDDictt lvLimitDicttcdTickt lastEnterTickttimeNumR4t    curCDTick((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyRp     s&   
     cCs”tjƒjƒ}t|ƒ}tjddƒ}||kr@dStjtjƒƒ}t|t    j
||ƒtj d||fƒt ||ƒdS(NRqis%UpdateFBEnterTick mapID=%s,timeNum=%s( R+RRÏR4R5RfRsRtRÊRTRrRŒRÜ(RdR7RuRy((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ÏRoRWR^R¡tremovetpopt SetConfigEx(R7R|tmIDToDataMapIDDictt
dMapIDDictRÄRæRftdMapIDtmIDtmIDListtdMIDListt    unMIDListtunMIDRt    mapIDList((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyR4L    s@           cCs”tjdƒ}|sg}tjƒ}xQt|jƒƒD]=}|j|ƒ}|jƒ}||kr:|j|ƒq:q:Wtjd|ƒ}n|S(NtGeneralTrainMapIDList(    R5R}R»RÓtGetFBGeneralTrainCounttGetFBGeneralTrainByIndexR¾RWR‚(RŒRÄRæRfR…((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetGeneralTrainMapIDLists    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(NRqiis&ÐÞÕýÍæ¼Ò¸±±¾CDʱ¼ä mapID=%s,timeNum=%s(R5RfR+RsRtRttagMCFBEnterTickListRt EnterTickListR«RÇRTRrRÊRŒRlttagMCFBEnterTickR·t LastEnterTickRWR¡R²RŠR‹(Rdt    syncMapIDRuRyt    enterListR7Rxt 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%RPRttagMCPlayerFBInfoDataRR¡t    FBDataCntt
FBDataListt tagMCFBInfoRêRYRTRtEnterCntRŠt EnterCntTotalRWt
RecoverCntRXt
ItemAddCntR_t
PassLineIDRŒtDef_FBStar_MaxKeyCntRat    PassGradeRWt PassGradeCntRŠR‹(
RdRÃ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½RjRWR¾RttagMCBuyEnterInfoRtFBInfot tagMCBuyInfoRêRYRTRVtBuyCountR¡tFBCountRŠR‹(RdR‹RÄRæRfR¥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ÓRWtrandomtshuffleRitextend( 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ÝRfRRTtMap_FBDict_LastAreaRewardTickRØRŒRÒRÓRÔRÕRøRùRlRLR¼R»RnRwRVtGetPlayerReExpRïtAddExptGetFBAreaRewardExpR½tDef_PerPointValueR¾tPlayerAddZhenQiRcR¿t PlayerFamilytAddPlayerFamilyActiveValueRMtDef_AddFAVReason_FamilyInvadeRÀ(t
cfgKeyNameRt    needAliveRèRØtrewardIntervaltrewardFormatDictt getCntLimitt lastAwardTickRRûRdR€tgetCnttmultipletreLVtreExpR`taddExpttotalExpt    addZhenQit totalZhenQit addTechPointt    techPoint((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytDoLogicAreaReward1
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Ém
scCs|jtj|ƒS(N(RLRTR¿(RØR€((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetFBAreaRewardZhenQir
scCs|jtj|ƒS(N(RLRTRÀ(RØR€((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetFBAreaRewardTechPointu
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èR RRûRd((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytNotifyCopyMapPlayerFBHelpx
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‘RVR¥tGameMapRÐRÍRGRRŠRDR5tPlayerFBRMRÿRÌR†t ItemControlerRˆRÎR*RTRøRmRTRZRR­R>tmathR˜RgRÔRÓRÖRÕRDt    Help_stept
Help_wheeltHelp_wheelTotaltHelp_npct Help_npcTotaltHelp_npcTotalNeedtHelp_expt Help_expPointt
Help_moneyt
Help_scoreR6t Help_leaderIDt Help_isHelptHelp_helpCountt Help_relationt Help_robotJobt Help_isAutotHelp_hasRefreshBosstHelp_gsItemInfoR;R<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_FbActionChangeLineR0R2R8RcR<R=R?RARCRERGRJRORRRgRbR†RsR{RÃRÇRÊRìRýRRRR    R RRRRRR"t tttFlagTakeR1R8RCRHRJR5R\RaRgRiR~R˜R¤R¦R©R²R¶R¹RºR¼R¾R¿RÁRÇRËRÝRÞRáRæRïRõR÷RRRR    R R RR.RFtDef_TDCfg_SmallWheelSpaceR9R&R(R*R+R-R5R8R"RERLRQRŽRzR~R„R•RRªR™R¹RºRÇRÚRÞRÝRþRRR*R4RZR[RaRIRnRoRuRpR{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 "         <