hxp
2025-08-25 b7154533a3f9db72d0dfc28f21b19ee4aadf1b51
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
C4¬hc@sáddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZdZdZ dZ!dZ"dZ#dZ$dZ%d    Z&d
Z'd Z(d Z)d Z*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6dZ7dZ8dZ9dZ:d Z;dZ<dZ=dZ>dZ?dZ@d ZAd!ZBd ZCdZDdZEd"ZFd#ZGd$ZHdZId%ZJd&ZKdZLd'ZMd(ZNd)ZOd*ZPeQd+ƒ\ZRZSd,„ZTd-„ZUd.„ZVeWd/„ZXdd0„ZZd1d2„Z[d1d3„Z\d1d4„Z]d5„Z^d6„Z_d7„Z`d8„Zad9„Zbd:eWecd;„Zdd<„Zed1dd:ecd=„Zfd1d:d>„Zgd1d?„Zhd@„ZidA„ZjdB„ZkdC„ZldD„ZmdE„ZnddF„ZodG„Zpd:dH„ZqdI„ZrdJ„ZsdK„ZtdL„ZudM„ZvdejwdN„ZxejwdO„ZyidP„ZzidQ„Z{dR„Z|dS„Z}dT„Z~dU„ZdV„Z€dW„ZdX„Z‚ddY„ZƒecdZ„Z„ecd[„Z…d\„Z†d]„Z‡d^„Zˆd_„Z‰d`„ZŠda„Z‹db„ZŒdc„Zdd„ZŽd1eWde„Zd1eWdf„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žeQduƒ\ZŸZ Z¡Z¢dv„Z£eWdw„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:decd…„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Ñecd¥„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 SetGameFBDatapscCs#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 GetGameFBDataqscCst|ƒ}tjd|ƒS(NtFBFunc(tGetRecordMapIDt IpyGameDataPYtGetIpyGameDataNotLog(tmapID((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyt GetFBIpyDatass 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.pytGetFBLineIpyDatavs
  cCs,|st||ƒ}n|s"dS|jƒS(N(R<tNonetGetEnterPosInfo(R7RR;((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetFBLineEnterPosInfo~sicCs#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%tj||ƒStjd||ƒ}|rY|jtj|ƒ}n+tj    |tj
|t |gƒ}|r„t S||kr”t St S(NitFBGeneralTrain( tChConfigtDef_FBMapID_Maint PlayerControltIsMainLevelPassR5R6tNomalDictGetPropertytDef_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(R^R7RRIR;t reqEnterCnttisNotifyt    isTeamAsktplayerIDtcanEntert
notifyMarktcurLVt
lvLimitMint
lvLimitMax((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytCheckCanEnterFBComm¹sN  !
           
c
Cs
|jƒ}|stdfS|jtj|ƒ}t||ƒ}|||kr[tdfStjƒj|ƒ}    |    t    j
kr‰t dfS|    t    j krç|j ƒs®t dfS| r|jƒ sÚ|jtjƒdkrt dfSn|tjkrt dfStdfS(NttGeRen_chenxin_268121itTeamSingleEnter(t GetDayTimesR]RXRTtDef_Player_Dict_EnterFbCntDaytGetEnterFBMaxCntR+tGetMaptGetMapFBTypeByMapIDt IPY_GameWorldt    fbtSingleR\tfbtTeamt GetHelpPointt    GetTeamIDt GetDictByKeytDef_PlayerKey_TeamMemCounttDef_NoLimitEnterCntMap(
R^R7RRIRwRytmaxTimestenterCnttmaxCnttfbType((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyRmð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+tErrLogRfRXRTR…tlentGetItemManagertGetPackR‰trptItemt
ItemCommontGetItem_FromPack_ByID_ExExtGetTicketPriceRVt HaveMoneyExRMtTYPE_Price_Gold_Paper_MoneytbooltDebugLog(R^R7RR;RwRytticketIDtticketCostCntListR’tcostCntt totalCostCnttitemPacktenought    indexListthasBindtlackCntt ticketPricet    costMoneyt costMoneyList((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyRu!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(RuR=R\RVtPayMoneyRTtDef_Cost_EnterFBR]R™RšR‰R›Rœt
ReduceItem( R^R7RR’tisEnoughR©tdelCntRªR®tinfoDictt    moneyTypetmoneyNumR§((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytDelFBEnterTicketIs'
 
cCs|j||tjƒS(N(RXRTtDef_PDictType_FB(R^tkeyt defaultValue((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetFBPDictValue^scCstj|||tjƒdS(N(RVtNomalDictSetPropertyRTR¼(R^R½tvalue((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytSetFBPDictValuefsc Csptjdƒ}|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|ƒtS(s¶¯Ì¬¸üи±±¾NPC³É³¤µÈ¼¶
    tNPCAttrStrengthenNiisMNPC³É³¤¶¯Ì¬µÈ¼¶±ä¸ü: isLeave=%s,totalLV=%s,playerCnt=%s,averageLV=%s,maxLV=%s(t ReadChConfigtGetEvalChConfigR4R+R‡tGetMapIDt    NPCCommontNPCAttr_DynNPCLVMaptGetMapCopyPlayerManagertxrangetGetPlayerCounttGetPlayerByIndexR=tIsEmptyRfRqt    GetGameFBt SetGameFBDictRTtDef_FB_NPCStrengthenAverageLVtDef_FB_NPCStrengthenMaxLVRjR]( RztisLeavetattrStrengthenInfoR7tmaxLVttotalLVt    playerCnttcopyMapPlayerManagertiR^R}t    averageLVtgameFB((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytUpdFBLineNPCStrengthenLVjs<  
 
 
     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ËtmaxRÏRTtDef_FB_NPCStrengthenPlayerCntRjt GetNPCManagerRÊt GetNPCCountt GetNPCByIndextGetIDtGetTypeR‰t ntFunctionNPCtntPettDoNPCAttrStrengthenR\R]( RzRÒ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+Rj(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ÎRóRTRô(((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(R^((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û(R^tdelSign((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytSetHadDelTicketás"cCs|jtj||fƒS(N(RXRTtDef_Player_Dict_CustomMapStep(R^R7R((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(R^R7RR((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Ì(R^t playerManager((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetCurSingleFBPlayerîs
 cCsE|r tjS|jƒr>tjƒjtjƒdkr>tjStjS(Ni(    RTtFB_JoinType_HelpRR+RÎRótDef_FB_TeamPlayerCounttFB_JoinType_MultitFB_JoinType_Single(R^t 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ÎRóRTt Def_FB_GradeRgtDoFBHelptintt GetFBStepTickR˜RÝRÏR¢t Sync_TimeTickR]RÉRÊRËRÌ(Rt gradeTimeListR^ttimeTypetlowestRÚ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_ClientCustomSceneStepTickRR˜RÝtSetDictR+R¢t Notify_FBHelpt
Help_gradeRR]( R^RRRRRt
fbStepTickRRRRR ((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytUpdateCustomFBGrade9s2   
 
       cCsh|ji|t6|t6t|ƒt6ƒtj|dtƒ}|j|ƒt    j
d||j ƒƒdS(Nt ensure_asciisNotifyFBOver: %s( tupdatetOver_dataMapIDt Over_lineIDRt Over_isPasstjsontdumpsR\t    Frm_FBEndR+R¢Rf(R^RRRtoverDicttoverMsg((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyt NotifyFBOver_s
( cCsT|ji|t6ƒtj|dtƒ}|j|ƒtjd||jƒƒdS(NR)sNotifyFBHelp: %s(    R*t Help_lineIDR.R/R\t
Frm_FBHelpR+R¢Rf(R^RthelpDictthelpMsg((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyt NotifyFBHelpgs
 cCs*tj|dtƒ}|jd|ƒdS(NR)s%s(R.R/R\R0(R^tmsgDict((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytNotify_FB_OversscCs0tj|dtƒ}|jdt|ƒƒdS(NR)s%s(R.R/R\R5tstr(R^R6((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyR%xscCsg}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˜RtdictRœ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(titemsRG(t    moneyDictt    moneyListR¹RM((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetJsonMoneyListšscCsBg}x5|jƒD]'\}}|ji|d6|d6ƒqW|S(NtNPCIDtkillCnt(RNRG(tnpcDicttkillListtnpcidRS((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetJsonNPCKillList¡scCsBg}x5|jƒD]'\}}|ji|d6|d6ƒqW|S(NRRtHPPer(RNRG(RTRURVRX((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(NR<tIsBindR=ii(RãRTtDef_ItemType_MoneyRâRœtCheckItemIsEquipt GetJsonItemR*tg_fbPickUpItemDictRGR\R?RBtgetR]R=R+tGetMapItemManagerRÊtGetMapItemCounttGetMapItemByIndexRÍt
GetOwnerIDRf(R^tcurItemRtoverFunct mapItemTypeRztisEquiptjsonItemtisInR 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˜ttagMCDynamicBarriertAPosXtAPosYtBPosXtBPosYtAngleRGR=t NetPackCommont SendFakePackR+RÉtrangeRËRÌ( tbarrierPointListtstateR^tbarrierStatePacktposInfotaPosXtaPosYtbPosXtbPosYtangletbarriert 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.pytOpenOrCloseDoorExÿs*       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 InitBillBoardFscCsX|jƒ}|jƒ}tjƒj|ƒ}|j|ƒ|j|ƒ|jdƒdS(Ni(RftGetNameR+RÎtGetFbBillBoardPlayert SetPlayerIDt SetPlayerNametSetPoint(R^t curPlayerIDt curPlayerNametplayerBillBoard((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytInitBillBoardPlayerNs     cCsmtjƒj|jƒƒ}|dkrCt|jƒ|dƒ}nt|jƒ|dƒ}|j|ƒ|S(Niiÿÿi(R+RÎR›RftmintGetPointRÝRž(R^RRÁR¡tpoint((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytAddorReduceBillBoard^s   cCs,tjƒj|jƒƒ}|j|ƒdS(N(R+RÎR›Rft
SetCountry(R^tcountryR¡((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytSetCountryBillBoardns cCs%tjƒj|jƒƒ}|jƒS(N(R+RÎR›RfR¤(R^R¡((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetPlayerBillBoardPointxscCs%tjƒj|jƒƒ}|jƒS(N(R+RÎR›RftGetBillboardIndex(R^R¡((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 SetFBStepTickRjR,t GetPropertyID(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ÌRftSync_FbSystemMessage(tkeepTimetmsgTypetmsgRRØR^((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ÌRfR(R´tmsgTickR’t
isContinueRRëR^((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ÎRóRTtMap_FBDict_PrevFBTimeTypeR]R\RjRÏRÉR|RËRÌRfR(    R´R¶t isSendPrevMsgR’R·t prevMsgTypeRRëR^((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_PlayerManager scCs›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‹RjR,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.pytCheckFBStateCanEnterDs
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‰tgnotPetR_RÇtSyncNPCCntInfoRÉRËRÌRâ(
R7t    npcIDListR^t
npcCntDictRêRëRìR’RRØ((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyt
Sync_FBNPCbs0   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âRG(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    gotPlayerRG(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ØR^((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ïtgotNPCRG(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(    R÷R=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(    R÷R=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(R÷R=RãR‰RäRåR‰(RäRùtnpcCntRìR’((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyt GetFBNPCCnts  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.pytSetRandomRefreshMapNPC8s    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(trMarktfileNumtsignRRxRÚ((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytOpenTDNPCRefreshTs 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ÏRTR    R
R R R RRRR(Rt
isResetNPCRÚ((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytCloseTDNPCRefreshjs cCs;tjƒ}x(|D] }|jtj|ƒstSqWtS(N(R+RÎRóRTRR\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ÎRóRTRR\R](RRÚ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ÎRóRTRRR\R](RRÚRRý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ÎRóRTR R R    R\RÄRÅR˜tDef_TDCfg_NextWheelTime(
RRRÚt    startTickt curWheelNumRtrefreshCfgListt 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ÎRóRTR RÏR RRR    R
RR¢(RRRxRÚR!t nextWheelNumRtsignKey((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ÅR_R˜tDef_TDCfg_NotifyMarkRVtFBNotify(
RÚRtwheelNumRtrefreshNPCDicttrefreshNPCListRVR"R#R|((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_FromRefreshMarkRRót
IsGameBossRÝRÏRR¢(
RìRÁRÚRtcurMarkNPCBossCntKeytbossCnttisBosstcurMarkNPCCntKeyRý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ÎRóRTR R    RÄRÅR˜RtDef_TDCfg_PrepareTimeRRÝR R=R¸RR](R^RR´RtmsgIDRÚR!RR"R#t nextWheelTimet prepareTimetcurWheelStartTickR%tnextWheelRemainTickR ((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytSync_TDNextWheelTickûs0  
 
 
 
 
 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ÅR_(    RRt npcCountDictR-R.t wheelNPCListtsmallWhellNPCInfoR’tnpcCount((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetTDCfgNPCCntInfos  &cCsÖt|ƒ}|sdS|jƒ}|jƒ}d}|jƒ}d}|jtj|ƒ}|jtj|ƒ}    |jtj|ƒ}
|jtj    |ƒ} t
j ||ƒ} || |||    ||
| } | S(Ni( R8R„tGetExtraTimesMWPriIDtGetExtraTimesVIPPriIDRXRTtDef_Player_Dict_BuyFbCntDaytDef_Player_Dict_RecoverFbCnttDef_Player_Dict_ItemAddFbCnttDef_Player_Dict_RegainFbCnttPlayerGoldInvestt GetAddFBCnt(R^R7RIR‘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    ƒ}    d}
|jtj
|ƒ} |jtj |ƒ} |jtj |ƒ} | |
||| | g}t j|ƒ}d}xKt|ƒD]=\}}||7}td||ƒ||<||krPqqW|\}}}}}}|jƒ}d}td|| ƒ}||||||g|||
|d|ggS(NitFBCntRegainIntervalii'(R8RXRTR…R„R5tGetFuncEvalCfgR;RCRDRERFRGtcopytdeepcopyt    enumerateRÝtGetBuyTimesVIPPriID(R^R7RIR’R‘tmaxRegainFbCnttrecoverIntervalDictRKRLRMRNRORPRQtcntListtrCntListtsumCntRØtcntt rRecoverFbCntt    rExtraCntt
rCommonCntt rRegainFbCnttrBuyCntt rItemAddCnttbuyTimesVIPPriIDt    canBuyCnttnoBuyCnt((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetFBDetailCntInfo;s8   
 
  cCsBt|ƒ}|jtj|ƒ}|dkr>tj||ƒS|S(Ni(R4RXRTR…R+tGetDataByDigitPlace(R^tfbIDtlineBitR’((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetEnterFBCountcs
  cCszt|ƒ}|jtj|ƒ}tj|tj|||ƒt||ƒtj|d|||gƒt||ƒdS(NtAddActivityCount_1(    R4RXRTRGRVRÀtSync_FBPlayerFBInfoDataRkt!OnFBCountChangeEffectRecoverCount(R^titemIDR7taddCntRQ((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytAddFBCntByItemjs   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…RXR+RjR£tChangeDataByDigitPlaceRVRÀR†R\tPlayerActivitytOnEnterFBActivityt PlayerSuccesstAddEnterFBSuccesstDef_Player_Dict_EnterFbCntTotaltDef_UpperLimit_DWordR¢RfRoRpR](R^RktaddCountRltisFreet
addCountExt enterCntKeyR’tcurLineEnterCntt updEnterCnttupdValueR“R5tenterCntTotalKeyt enterCntTotal((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytAddEnterFBCountys6    
     #  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(NRTiis¸±±¾Ê±¼ä»Ö¸´´ÎÊýÒÑ´ïµ±ÈÕÉÏÏÞ!s¸±±¾Ê±¼ä»Ö¸´´ÎÊýÒÑ´ï³£¹æ´ÎÊý!sV¸±±¾»¹¿É°´Ê±¼ä»Ö¸´´ÎÊý!curTime=%s,regainStartTime=%s,passTime=%s,updRegainTotalTime=%s(R5RUR;RXRTRHRVRÀt$Def_Player_Dict_FbCntRegainStartTimet$Def_Player_Dict_FbCntRegainTotalTimeR+R¢RttimeR8R„RmR†tNotifyFBCntRegainInfo(R^R7R[tmaxCanRecoverCnttrecoverIntervaltcurRegainFbCnttcurTimeRIt maxFreeTimesR’R“tremainCanEnterCnttregainStartTimetpassTimetupdRegainTotalTime((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyRp™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(NRTii(RR‡R5RURNRXRTRHR8R„RmR†R…R†R£RVRÀRp(R^RŒR[tmapIDStrt 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(NRTii(R5RUtkeysRR‡R;RottagMCFBCntRegainRqt    DataMapIDRXRTR…R†RÝt
RemainTimeRHt    RegainCntRGttagMCFBCntRegainRemainTimetInfoListR˜tCntRzR{( R^t syncMapIDListR[R’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ÆR4RXRTR…R†RÎRýRâtFBPlayerDict_IsHelpFightR]R\(R^R7R’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§(R^((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetIsHelpFightsc    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_EnterFbCntWeekRXRVRÀRGRo(    R^t
onWeekTypet    mapIDInfot
ipyDataMgrRØR`R7t    weekTimestenterCntWeekKey((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytFBOnWeeks"    cCs`tjd|jƒƒtj||ƒg}tjƒ}xñt|jƒƒD]Ý}|j    |ƒ}|j
ƒ}|j ƒ}| r¬|j ƒ r¬|j ƒ r¬|jƒ r¬qKn|jƒ|krÄqKnt||ƒ}tj|}    |j|    ƒ}
tj||    dƒtj|} |j| ƒ} tj|| dƒtj|} |j| ƒ}tj|| dƒtj|}|j|ƒ}tj||dƒtj|}|j|ƒ}tj||dƒtj|tj|dƒtj|tj|dƒtjd||| |||||
fƒ|j|ƒqKW|r\t||ƒt||ƒt ||ƒndS(Ns¸±±¾¹ýÌì´¦Àí,FBOnDay...ish    ÖØÖÃ:mapID=%s,dayTimes=%s,buyCnt=%s,recoverCnt=%s,itemAddCnt=%s,regainFBCnt=%s,maxCnt=%s,enterCnt=%s(!R+RjRfRgtOnFBPlayerOnDayR5RªRÊR«R¬R­R„RYRDRCtGetDayResetTypeR†RTR…RXRVRÀRERFRGRHR…R†R¢RGRotSync_FBPlayerFBBuyCountRˆ(R^t    onDayTypeR²R³RØR`R7tdayTimesR“R~R’t    buyCntKeyROt recoverCntKeyR–t itemAddCntKeyRQtregainFBCntKeyt regainFBCnt((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytFBOnDay9sL   .            cCsCtj|ƒt|ƒt|ƒt|ƒt|ƒt|ƒdS(N(RgtOnFBPlayerOnLoginRotSyncFBEnterTickR¹RˆtCheckFBPlayerOffine(R^((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ô(R^tmapidR`t OfflineTimetleaveServerSecond((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyRĆs    c    Cs"tjƒj|ƒ}|j}|tjkrVtj|ƒ}|sVtjdƒdSnt    |ƒ}|sldSd}|t
j ||ƒ7}tjd||fƒ|dkrÀtjd|ƒdS|j tj |ƒ}|jƒ}    t||ƒ}
t||ƒ} |tjkr6|    r6|
| |    kr6tjdƒdS||kr`tjd|||fƒdStjddiƒ} | jt|ƒd    ƒ} t| ƒ} tjdd
iƒ}|jt|ƒtjƒ}| dkrótjd ||| fƒdStj||| ƒ}|sdSi|d 6}xG|D]?\}}tj|||tj|ƒs&tjd | ƒdSq&Wtj|tj ||dƒt||gƒtj|d|gƒt||ƒ|tjkrtj|ƒ}|rtjddƒ}|j ƒg}tj!d|g||ƒqndS(NsûÓаéÂÂÎÞ·¨¹ºÂòÇéÔµ¸±±¾´ÎÊý!is'¹ºÂò¸±±¾½øÈë´ÎÊý: mapID=%s,canBuyCnt=%ssmapID:%s ²»¿ÉÒÔ¹ºÂò½øÈë´ÎÊýsµ±Ç°´ÎÊýÒÑÂú£¬ÎÞÐ蹺Âò¡£¡£s5¹ºÂò´ÎÊýÒѾ­ÓÃÍêmapID=%s,hasBuyCnt=%s >= canBuyCnt=%st BuyFBCntCostit0is@ûÓÐÅäÖùºÂò¸±±¾´ÎÊýÏûºÄ»õ±ÒÊý! mapID=%s,costType=%s,costGold=%sR¯sÏÉÓñ²»×ã!costGold=%stFBEnterTimeBuytLoveFBitBuyLoveFBCntCoupleMail("R+tGetPlayerManagerRÌtFBIDRTtDef_FBMapID_LoveRVt GetCoupleIDR¢R8RItGetAddFBBuyCntRXRER„R†RmtDef_FBMapID_SealDemonR5RUR_R;tevalRMR RŸR³tDef_Cost_BuyFBCntRÀR¹RkRpt GetPlayerNamet SendMailByKey(t playerIndext
clientDataRR^R7tcoupleIDR`Rgt    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sj        %      cCstj|tjƒS(N(t EventReporttWriteFuncCMEAcceptableRMtGameFuncID_RunDaily(R^((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytDoFuncOpen_RunDailyØscCstj|tjƒS(N(RæRçRMtGameFuncID_RunFamily(R^((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytDoFuncOpen_RunFamilyÙsc
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ÎRótMap_FBDict_NotifyOpenRVt WorldNotifyRÏ(t openTimeListt    notifyMsgtnotifyTimeListR7t mergeMinOSDt mergeMaxOSDt mergeMapInfoRŒtnextTimetcurYeartcurMonthtcurDaytcurHourtnextYeart    nextMonthtnextDaytnextHourtstartTimeStrFormattmaxNotifyMinutet remaindMinuteRõtminutet startTimeStrt    startTimeR•Røt msgParamList((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyt FBOpenNotifyäs:**  
          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(NRìis%s-%s-%s %s:%s:%sRíi(R+tGetCurrentTimeRïRñRòRóRôRõRöRTR÷RøR]R\(RûtprepareSecondsRŒtprevTimeRRRRtprevYeart    prevMonthtprevDaytprevHourR
RõR RRtpastTimet pastSeconds((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytCheckIsFBPrepareTime s" ** 
    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ƒƒ} t j||| ƒ}|sCdSi|d6}x6|D].\}}t j|||tj|ƒsWdSqWWtj    dd    iƒj
|tjƒ}||    }tjƒj|ƒ}|sçtjd
|ƒdStj|ƒ}|j|||    d    ƒ|j||
| d    ƒtj    dd iƒj
|dƒ}|tjkr7tjƒ}x8t|jƒƒD]½}|j |ƒ}|s”qsn|j!ƒ|kr¬qsnt"j#||||ƒt j |d |j$ƒ|    d    gƒt%||    d    |ƒ|jƒ|jƒkrst&j'|t(j)d    |gƒqsqsWndt"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úRUR_RVRkR‰tTYPE_Price_Silver_MoneyRÖt GetMoneyCountRŸR³RTtDef_Cost_FBEncouragetDef_SkillID_FBEncourageBufft GetGameDatatGetSkillBySkillIDRjt SkillCommont GetBuffTypeRýtDef_FBMapID_AllFamilyBossRÉRÊRËRÌRÀt    BuffSkillt    DoAddBuffRštSendFBEncourageInfoRwtDoAddSuccessProgressRMtSuccType_FBEncourageR](R^R½t encourageTypeRR&tcurMapIDR`R“RÚt encourageLVtencourageCntKeyt encourageCntRÔt encourageCostR®R¸R¹tmoneyCntt
buffTypeIDt skillBuffIDt    skillBufftbuffTypet
addHurtNumRRëtplayer((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytFbEncourageBuffKsp    
!   $
! #&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=%sRisFbEncourageBuff   ÕÒ²»µ½¼¼ÄÜ%s(RâR+RjRÎRúR‡RÆR4R5RUR_RTR'R(R)R*R+R-R.R/( R^R½RR&RŸRÚR4R7R9R:R;R<((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(NRisClearEncourageBuff() TruesClearEncourageBuff() False( R@tsetR5RUtvaluesR-tDelBuffBySkillIDRVtRefreshPlayerAttrByBuffR+RjR]R\(R^RR9t 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(NRRœsFbEncourageCnt_%s(RÆR4R5tGetIpyGameDataByConditionR]RottagMCFBEncourageInfoRqR R+RÎRâtGetInspireTypettagMCFBEncourageCntt    MoneyTypeRút EncourageCntRGR˜R¡RzR{( R^tlvR&R3t ipyDataListt encourageInfoR5RÚR`t inspireTypetpackData((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyR/¿s(   
            cCstd|jtjƒƒS(Ni(RÝRŽRTt Def_PlayerKey_AreaRewardMultiple(R^((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetAreaRewardMultipleÙscCs|jtj|ƒdS(N(R$RTRR(R^RÁ((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytSetAreaRewardMultipleàscCst||ƒdkS(Ni(t GetFBEnterCD(R^R7((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyRoé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( R4R5RURqR¿RTtDef_PDict_LastEnterFBTickR+tChangeTimeStrToNumtGetCurrentDataTimeStrRÝR¢(    R^R7t enterCDDictt lvLimitDicttcdTickt lastEnterTickttimeNumR%t    curCDTick((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyRUðs&   
     cCs”tjƒjƒ}t|ƒ}tjddƒ}||kr@dStjtjƒƒ}t|t    j
||ƒtj d||fƒt ||ƒdS(NRVis%UpdateFBEnterTick mapID=%s,timeNum=%s( R+R‡RÆR4R5RURXRYRÂRTRWR¢RÃ(R^R7RZR^((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ÆR_RGRNR˜tremovetpopt SetConfigEx(R7RatmIDToDataMapIDDictt
dMapIDDictR³RØR`tdMapIDtmIDtmIDListtdMIDListt    unMIDListtunMIDRt    mapIDList((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyR4    s@           cCs”tjdƒ}|sg}tjƒ}xQt|jƒƒD]=}|j|ƒ}|jƒ}||kr:|j|ƒq:q:Wtjd|ƒ}n|S(NtGeneralTrainMapIDList(    R5RbRªRÊtGetFBGeneralTrainCounttGetFBGeneralTrainByIndexR­RGRg(RqR³RØR`Rj((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetGeneralTrainMapIDListC    s   cCstƒ}|tjS(N(RtRTtClientCustomSceneList(Rp((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetClientCustomSceneS    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(NRViis&ÐÞÕýÍæ¼Ò¸±±¾CDʱ¼ä mapID=%s,timeNum=%s(R5RUR+RXRYRottagMCFBEnterTickListRqt EnterTickListRšR¿RTRWRÂR¢RfttagMCFBEnterTickR¯t LastEnterTickRGR˜R¡RzR{(R^t    syncMapIDRZR^t    enterListR7R]t 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RR@RottagMCPlayerFBInfoDataRqR˜t    FBDataCntt
FBDataListt tagMCFBInfoRÑRXRTR…tEnterCntRyt EnterCntTotalRFt
RecoverCntRGt
ItemAddCntRYt
PassLineIDR|tDef_FBStar_MaxKeyCntR[t    PassGradeRGt PassGradeCntRzR{(
R^R²R³RØRpt
fbInfoDataRkR¤tkeyNumt
gradeValue((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyRo    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¬RYRGR­RottagMCBuyEnterInfoRqtFBInfot tagMCBuyInfoRÑRXRTREtBuyCountR˜tFBCountRzR{(R^RpR³RØR`RŠRkR¤((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ÊRGtrandomtshuffleRXtextend( 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(RzRÉ((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 ƒ}    xßt |    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!| |ƒqºqºWdS(    Niis¸øÕ½³¡¸£Àû tick=%s,needAlive=%siitExptZhenQitFB("R+RÎR,R5t
GetFuncCfgRURóRTtMap_FBDict_LastAreaRewardTickRÏR¢RÉRÊRËRÌRéRêRfRLR¡R RSRqRVtGetPlayerReExpRÖtAddExptGetFBAreaRewardExpR¢tDef_PerPointValueR£tPlayerAddZhenQiR]R¤(t
cfgKeyNameRt    needAliveRÚRÉtrewardIntervaltrewardFormatDictt getCntLimitt lastAwardTickRRëR^RztgetCnttmultipletreLVtreExpREtaddExpttotalExpt    addZhenQit totalZhenQi((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytDoLogicAreaReward
sR         $ 
cCs;|jtj|ƒ}|jtj|ƒ}|tj|S(N(RLRTR¢R£R¯(RÉRzR R ((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyR®5
scCs|jtj|ƒS(N(RLRTR¤(RÉRz((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetFBAreaRewardZhenQi:
scCs|jtj|ƒS(N(RLRTR¥(RÉRz((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetFBAreaRewardTechPoint=
si'c    Cs­tjƒ}|jtjƒ}|||kr2dS|jtj|ƒ|rX||ƒntjƒ}xBt|jƒƒD].}|j    |ƒ}|s˜qwn|||ƒqwWdS(N(
R+RÎRóRTtDef_FB_NotifyFBHelpTickRÏRÉRÊRËRÌ(    Rt
fbHelpFunctintervalt befLogicFuncRÚRRRëR^((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytNotifyCopyMapPlayerFBHelp@
s   cCstjƒjƒdS(Ni †(R+R,R±(((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pytGetCrossDynamicLineMapZoneIDR
scCstjƒjƒddS(Ni †id(R+R,R±(((syD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\FBCommon.pyt GetCrossDynamicLineMapFuncLineIDV
s(ÙR+R‰RVRœtGameMapRÇRÄR-RoRzR*R5tPlayerFBRMRæt PlayerFamilyRut ItemControlerRwt GameFuncCommR*RéRgRTRIRïR’R.tmathR‡RVRÅRÄRÇRÆR4t    Help_stept
Help_wheeltHelp_wheelTotaltHelp_npct Help_npcTotaltHelp_npcTotalNeedtHelp_expt Help_expPointt
Help_moneyt
Help_scoreR&t 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_FbActionChangeLineR0R2R8R]R<R=R?RARCRERGRJRORRRaR\R€RmRuR»R¿RÂRÛRíRòRõRöRùRüRÿRRRR Rt tttFlagTakeR!R(R3R8R:R%RLRQRWRYRnRˆR”R–R™R¢R¦R©RªR¬R®R¯R²R¸R¼RÎRÏRÒR×RàRæRèRóRõR÷RúRüRþRRR7tDef_TDCfg_SmallWheelSpaceR*RRRRRR&R)RR6R=RBR†RiRmRsR„RpR™RˆR¨R©R¶RÁRÅRÄRåRéRëRRR?R@RFR/RSRTRoRUR`R4RtRvRÃRoR¹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    1(         %    "                                        1&                              + % % "                
                          %                !        %                                                         "         (          )    ,                  B             ;         ;    + L                                  '             % 7 "         4