hxp
2018-09-11 0ae77de85c30c4957d28159d141ffe1d2e39d0bc
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
]®—[c@sKddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlmZddlZejZddddddgZed    ƒ\ZZZd
„Zd „Zed „Z d „Z!d„Z"e#d„Z$dd„Z&dd„Z'd„Z(d„Z)d„Z*d„Z+d„Z,d„Z-d„Z.d„Z/d„Z0d„Z1d„Z2d„Z3d„Z4d„Z5d „Z6d!„Z7d"„Z8d#„Z9d$„Z:d%„Z;d&„Z<dS('iÿÿÿÿN(tIntTypetweekdaytyeartmonthtdaythourtminuteicCsÕtƒ\}}|t}|r#dStj|kr\|tjd}|r\t||ƒq\ntj|kr˜|tjd}|r˜tj||ƒq˜ntj|krÑ|tjd}|rÑt    ||ƒqÑndS(Ni(
t__GetOperationActionInfotOperationAction_TodayInfot ShareDefinetOperationActionName_ExpRatetSync_OperationAction_ExpRatet!OperationActionName_FairyCeremonytPlayerFairyCeremonyt"Sync_OperationAction_FairyCeremonytOperationActionName_RealmPointtSync_OperationAction_RealmPoint(t    curPlayertisReloadtOperationActionInfotoperationActionDicttipyData((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyt OnPlayerLogin>s"
cCs¥tƒ\}}|t}|r#dStjƒ}xotjD]d}tj|}|j|ƒ}|rs|j    |iƒni}||tj
<tj tj ||ƒq9WdS(N( RtOperationAction_MapServerInfot    GameWorldt GetGameWorldR    tOperationActionNameListtChConfigt!Def_WorldKey_OperationActionStatet GetDictByKeytgett ActKey_StatetSendMapServerMsgExt'Def_Notify_WorldKey_OperationActionInfo(RRtmapServerInfoDictt    gameWorldtactNametdictNametstatetsendMapServerMsgDict((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyt!SendMapServerOperationActionStateYs
   c) Cs3d}tjtjƒd}tj|ƒ}|rK|t|krKt|fStjƒ}d|j    |j
|j |j |j f}tjj|tjƒ}tjd||fƒi}i}tjƒ}    tjƒ}
xótjD]è} t|
|    | ƒ} g} g}i}d}xn| D]f}|jƒ}|jƒ}t|dƒrjt|dƒrj|jƒ}|jƒ}n g}g}t|dƒr‘|jƒni}t|dƒr²|jƒni}t |ƒt |ƒkrótj!d    | |j"ƒfƒqng}g}t}t}| s| rÉtjjd
|tjƒ}tjjd
|tjƒtj#d dƒ}|}|}|j$|ƒ|j$|ƒ||kož|knrï| j$|ƒ|j$|ƒt%}qïn&tjjd
|tjƒ}tjjd |tjƒ}||ko|knrïxÏt&|ƒD]¾\} }!|| }"d |j    |j
|j |!f}#d |j    |j
|j |"f}$tjj|#tjƒ}tjj|$tjƒ}|j$|ƒ|j$|ƒ| j$|ƒ|j$|ƒt%}q*Wnxt&|ƒD]\}%}||%}xy|j'ƒD]k\}&}'|tj#d|&ƒ}(|(j    |j    kr|(j
|j
kr|(j |j kr|'||(<t%}qqWxy|j'ƒD]k\}&}'|tj#d|&ƒ}(|(j    |j    kr›|(j
|j
kr›|(j |j kr›|'||(<t%}q›q›WqüW| r"| r"qntjd| |j"ƒ|j(ƒfƒ|r| sm|jƒ|jƒkry|}qyqqW|s•| s•|s•|rÜ|| ||g|| <t)|| |ƒ|| <qÜqÜWtj*||||gƒ}tjd|ƒtjd|ƒtjd|ƒ|r)t+t%ƒnt%|fS(NRis%d-%d-%d %02d:%02d:00s*¼ÓÔØ±¾ÈÕÔËÓª»î¶¯ÐÅÏ¢: %s, openServerDay=%stGetStartTimeListtGetEndTimeListtGetNotifyInfoStarttGetNotifyInfoEnds5»î¶¯ÅäÖÿªÊ¼¼°½áÊøÊ±¼ä¸öÊý²»Æ¥Åä! actName=%s,cfgID=%ss %s 00:00:00tdayss %s 23:59:59s%d-%d-%d %s:00tminutess>    ±¾ÈÕÐèÒª´¦ÀíµÄÔËÓª»î¶¯ÐÅÏ¢: actName=%s,cfgID=%s,actMark=%ss*±¾ÈÕÔËÓª»î¶¯ÐÅÏ¢¼ÓÔØÍê±Ï!isRefreshState=%ss    operationActionDict=%ss#    mapServerOperationActionDict=%s(,tPlayerDBGSEventtGetDBGSTrig_ByKeyt Def_ServerDayt IpyGameDataPYt GetConfigExtOperationAction_OpenServerDaytFalseRt GetServerTimeRRRRRtdatetimetstrptimeRtTYPE_Time_FormattLogt GetServerIDtIPY_DataR    Rt%__GetOperationActionServerIpyDataListtNonet GetStartDatet
GetEndDatethasattrR)R*R+R,tlentErrLogtGetCfgIDt    timedeltatappendtTruet    enumeratetitemst
GetActMarkt%__GetOperationActionMapServerInfoDictt SetConfigExtDispose_OperationActionState()tisRefreshStatetkeyt openServerDayRt
serverTimetcurDateTimeStrt curDateTimeRtmapServerOperationActionDicttserverIDt
ipyDataMgrR$tcurServerActIpyDataListt needStartListt needEndListtneedNotifyDicttactivityIpyDataRt startDateStrt
endDateStrtstartHMStrListt endHMStrListtnotifyInfoDictStarttnotifyInfoDictEndt    startListtendListt
isActivitytisNotifyt startDayDatet
endDayDatet startDateTimet endDateTimethmIndext
startHMStrtendHMStrt startTimeStrt
endTimeStrtdtIndext notifyMinutet
notifyInfotnotifyDateTime((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyRns²
 (      !!,     
 
6
 6
& c Cs¸i}t|d|ƒƒ}xt|ƒD]‚}t|d|ƒ|ƒ}|jƒ}t|jƒƒ}|j|iƒ}    |    j|gƒ}
|
j|ƒ|
|    |<|    ||<q)Wg} xü|jƒD]î\}}    g} t} xÀ|    jƒD]²\}}
|s|
} qçnx‘|D]‰}t    |t
ƒr-||kst    |t ƒsKt    |tƒr t |ƒdkr |d|ko||dknr | |
7} t } Pq q WqçW| rÂ| | 7} qÂqÂW| S(Ns
Get%sCounts Get%sByIndexiii(tgetattrtxrangeRJttupletGetServerIDListRRFRIRGt
isinstancetinttlistRBR5(RVRUR$t actGroupDictt actCfgCounttcfgIndexRtactMarkt serverIDTupletserverIpyDataDictt ipyDataListRWtgeneralIpyDataListt    isGeneralt serverIDInfo((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyR=îs:  
 6
 cCsU|s
iS|jƒ}tjjd|tjƒ}||j}|dkrltjd||||fƒiStt    j
|j ƒƒƒ}i}|t j krÅi|jƒt j6|jƒt j6}n4|t jkrÑ|jƒ}|r8d|j|j|jf}    tjj|    tjƒ}
tt    j
|
j ƒƒƒ}n|jƒ} |t| ƒkr`| dn| |} i|t j6|jƒt j6|jƒt j6|jƒt j6|jƒt j6| t j6| t j6}n(|t j kr£|jƒ}|rDd|j|j|jf}    tjj|    tjƒ}
tt    j
|
j ƒƒƒ}n|j!ƒ} |t| ƒkrl| dn| |}i|t j6|j"ƒt j#6|t j$6}nV|t j%kri|t j6|j&ƒt j6|jƒt j6|jƒt j6|jƒt j6}nô|t j'kr×|jƒ}|rxd|j|j|jf}    tjj|    tjƒ}
tt    j
|
j ƒƒƒ}n|j(ƒ}|t|ƒkr |dn||}i|t j6|j"ƒt j#6|t j)6}n"|t j*krùi|t j6}n|t j+krQi|jƒt j6|j,ƒt j-6|jƒt j6|jƒt j6}n|S(Ns %s 00:00:00isV        ²»´¦ÀíÔËÓªµØÍ¼Êý¾Ý: startDateStr=%s,curDateTime=%s,startDayDate=%s,dayIndex=%ss%d-%d-%d 00:00:00iÿÿÿÿ(.R?R7R8RR9R-RtDebugLogRxttimetmktimet    timetupleR    R
t
GetLVLimittActKey_LVLimitt GetAddExpRatetActKey_AddExpRatetOperationActionName_CostRebatet GetIsDayResetRRRtGetTemplateIDListRBt    ActKey_IDtActKey_StartDateR@tActKey_EndDatetActKey_IsDayResettActKey_TemplateIDtActKey_TemplateIDListtOperationActionName_SpringSaletGetShopTypeListRDt ActKey_CfgIDtActKey_ShopTypeListtOperationActionName_BossRebornt GetTemplateIDt OperationActionName_FlashGiftbagtGetGiftbagTypeListtActKey_GiftbagTypeListR Rt GetMultipletActKey_RealmPointMulti(RSR$RR\RftdayIndextactIDR"t
isDayResett actIDDateStrt actIDDateTimettemplateIDListt
templateIDt shopTypeListt todayShopTypetgiftbagTypeListt todayGiftbag((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyRKs‚         & 
  &    & cCs3ttƒ\}}|p|}|t}|t}tjƒ}tjƒ}tjjd|j    |j
|j |j |j ftjƒ}x¨tjD]}d}d}    ||kr||\}    }
} } ||
krä|
j|ƒd}nf|| krùd}nQxNt|
ƒD]@\} }| | }||ko3|knr| d}PqqW|| kr| |\}}tjd||ƒqntj|}|j|ƒ}| r´||kr´qŽn|j||ƒ|rÜ|j|iƒni}tj|}|jtjƒ}|dkr®|r®tj|ƒ|kr®tj||ƒ|tj krstjtj!ƒ}tjtj"||ƒn|tj#krt$j%ƒq®|tj&kr®t'j(ƒq®n|dkrï|tj krïtjtj"|ƒ}||tj)<n|tj*kr|rç|    rçt+|    ƒqçnÍ|tj,kr;|rç|    rçqçn¬|tj#kri|rç|    rçt$j-t.ƒqçn~|tj&kr¼|r”|    r”t'j/|    ƒn||krç|dkrçt'j0ƒqçn+|tj1krç|rç|    rçt2|    ƒqçn||tj3<tj4tj5||ƒtj6d|||||fƒqŽWdS(Ns%d-%d-%d %d:%d:00iis=ÔËÓª»î¶¯±ä¸ü: actName=%s,preState=%s,state=%s,dictName=%s, %s(7RR5RRRRR6R7R8RRRRRRR9R    RR>tindexRHt PlayerControlt WorldNotifyRRtSetDictRR/tDef_OperationActIDRR0tSetDBGSTrig_ByKeytNeedWorldLVOperationActNameListt"Def_Notify_WorldKey_WorldAverageLvtDef_OActWorldLVR™t GameWorldBosstResetBossRebornPointR R tResetFairyCeremonytActKey_WorldLVR
R RŒtSetBossRebornNeedPointRGRtOnFairyCeremonyEndRRRR R!R:(t reloadRefreshRRRR"R#RSR$R&RRbRct
notifyDicttdIndexRhRit    notifyKeyt    paramListR%tpreStateR'tdbOperationActIDKeytcurActIDtworldLVt
actWorldLV((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyRMds„ 
 
         
 
   '       $cCs„|s
dSt|jƒƒt|jƒƒkr2dStjƒ}|jƒ|jƒ|_|jƒ|_    g|_
x^t |jƒƒD]J\}}|jƒ|}tj ƒ}||_ ||_|j
j|ƒq‚Wt|j
ƒ|_|jƒ|_|jƒ|_|sptjƒ}xkt|jƒƒD]D}|j|ƒ}|dks%|jƒ rYq%ntj||ƒq%Wntj||ƒdS(N(RBR)R*tChPyNetSendPackttagGCMultiExpRateInfotClearR?t    StartDateR@tEndtDatet ActivityTimeRHttagGCMultiExpRateTimet    StartTimetEndtTimeRFtActivityTimeCountRˆtLimitLVRŠt
AddExpRateRtGetPlayerManagerRttGetPlayerCounttGetPlayerByIndexR>t    GetInitOKt NetPackCommont SendFakePack(RRtmultiExpRateInfotit    startTimetendTimettimeInfot playerManager((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyR Îs6$ 
              cCsà|s
dStjƒ}|jƒ|jƒ|_|jƒ|_|jƒ|_|j    ƒ|_
|sÌt j ƒ}xkt |jƒƒD]D}|j|ƒ}|dks|jƒ rµqntj||ƒqWntj||ƒdS(N(RÄttagGCMultiRealmPointInfoRÆR?RÇR@RÈRžtMultipleRˆRÎRRÐRtRÑRÒR>RÓRÔRÕ(RRtmultiRealmPointInfoRÛR×((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyRïs" 
 c'
Cspd}tjtjƒd}tj|ƒ}|rI|d|krI|dSg}tjƒ}t|jƒdƒ}t    t
j
ƒƒ}tj |t j ƒ}tjƒ}tjd||||fƒg}    g}
tjd||ƒ} | rg} xk| D]c} | jƒ}| jƒ}||    kr/|    j|ƒn|
jt| jƒ| gƒ| j|ƒqõWtjdt| ƒ| |    fƒntjƒ}|jƒ}xüt|ƒD]î}|j|ƒ}|jƒ}||    krètjd|ƒq¤n|jƒ}|s!|j|gƒtjd|ƒq¤nd    |kr\||kr\tjd
||jƒfƒq¤nd    |krr|d    n||}|
jt||gƒq¤Wtjd ƒx|
D]•\}}}|jƒ}|jƒ}g}g}i}i}d}x|D]\}}d |||df} t j j!| t j"ƒ}!|j|!j#|!j$fƒ|!t j%d |j&ƒƒ}"|j|"j#|"j$fƒ|j'|gƒ}#|#j|!|"fƒ|#||<xF|j(ƒD]8\}$}%|!t j%d |$ƒ}&|%||&j#|&j$f<qºWqöW|j|||||gƒtjdt    |ƒ|||||fƒqªWtj)|||gƒ}tjdƒ|dS(NtTodayDailyActionInfoiis<¼ÓÔØ±¾ÈÕÈÕ³£»î¶¯ÐÅÏ¢: %s, µ±Ç°ÐÇÆÚ%s,¿ª·þµÚ%sÌì,¿ª·þÊÇÐÇÆÚ%stDailyActionCustoms@    ±¾µØ¶¨ÖÆÈÕ³£»î¶¯ÌõÊý: %s, ÅäÖñíIDÁбí=%s, ¶¨ÖƻIDÁбí=%ss:    ³£¹æ»î¶¯IDÅäÖÃÊǽñÌìµÄ¶¨ÖƻID£¬²»´¦Àí£¡: dailyID=%ss(    Ôö¼Ó±¾ÈÕ³£¿ªÈÕ³£»î¶¯ÐÅÏ¢: dailyID=%st0s5    ²»ÊÇÈÕ³£»î¶¯¿ªÆôÐÇÆÚ: dailyID=%s,openWeekLimit=%ss    -----------------------s%s %02d:%02d:%02dR.sg    Ôö¼Ó±¾ÈÕÈÕ³£»î¶¯ÐÅÏ¢: isCustom=%s,dailyID=%s,openList=%s,overList=%s,goonStateDict=%s,notifyDict=%ss±¾ÈÕÈÕ³£»î¶¯ÐÅÏ¢¼ÓÔØÍê±Ï!(*R/R0R1R2R3RR6tstrRRxR…tChangeTimeNumToStrRtTYPE_Time_YmdFormattGameWorldProcesstGetOpenServerWeekdayR:tGetIpyGameDataListNotLogtGetIDt
GetDailyIDRFRGtGetOpenTimeListRBR<tGetDailyActionCountRttGetDailyActionByIndextGetOpenTimeDicttkeysR5t GetNotifyInfoR7R8R9RRREt GetDurationRRIRL('RORPRßttodayActionInfotdayTimetweekDaytcurTimet
curDateStrtopenServerWeekdaytcustomDailyIDListtdailyTimeInfoListtcustomIpyDataListt customIDListt customIpyDatatdataIDtdailyIDRVtdailyActionCountR×t dailyIpyDatat openTimeDictt openTimeListtisCustomRtnotifyInfoDicttopenListtoverListt goonStateDictR»t    OpenStateRRt openTimeStrt openDateTimet overDateTimetopenStateTimeListRpRqRr((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyt__GetTodayDailyActionInfosŒ      #         
    $ cCsºtƒ}|sdStjƒ}tjƒ}|j|jf}xv|D]n}|d}d}t|ƒdkrud}nÎ|d\}}}    }
||kr d}nq||krµd}n\xY|    jƒD]K\} } x<| D]4} | d|koú| dknrÕ| }PqÕqÕWqÂW||
krC|
|\}}tj    d||ƒnt
j |}|j |ƒ|krkqDntj ||ƒ|j||ƒtjd|||fƒt||ƒqDWdS(Niis7ÈÕ³£»î¶¯×´Ì¬±ä¸ü: dailyActionID=%s,state=%s,dictName=%s(R RRR6RRRBRIR¬R­R    t$Def_Notify_WorldKey_DailyActionStateRR R®R:t __DoLogic_GameServer_ActionState(ttodayDailyActionInfoR#Ròt curHourMinutet
actionInfot dailyActionIDR&RRRR»t    goonStateR t dateTimeInfoR½R¾R%((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pytDispose_DailyActionStatems@       
               $   cCsstƒ}|sdStjƒ}xM|D]E}|d}tj|}|j|ƒ}|r&tj||ƒq&q&WdS(Ni(R RRR    R RR (RR#RRR%R&((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pytSendMapServerDailyActionState§s      
 cCs8d}tj|ƒ}|dkr4i}tjƒ}xÞt|jƒƒD]Ê}|j|ƒ}|jƒ}|jƒ}|j    ƒ|j
ƒ|j ƒ}}    }
||j ƒ|j ƒ} } } |j|gigƒ\}}|j||    |
gƒ| | | g||<||g||<qFWg}x_|jƒD]Q\}}|\}}x6|jƒD](\}}||krL|j|ƒqLqLWq'W|jƒi}xét|jƒƒD]Õ}|j|ƒ}|jƒ}|jƒ}|jƒ|jƒ}}|j
ƒ|j ƒ}    }
|j ƒ|j ƒ} } |j|gigƒ\}}|j|||    |
gƒ||| | g||<||g||<qŸWg}x_|jƒD]Q\}}|\}}x6|jƒD](\}}||kr°|j|ƒq°q°Wq‹W|jƒtj|||gƒ}tjdƒtjd|ƒtjd|ƒn|S(NtFBStateEndTimeNotResets1¼ÓÔØ¸±±¾×´Ì¬½áÊøÊ±¼ä²»ÐèÒªÖØÖÃ״ֵ̬µÄÊý¾ÝIDÁбí:s    ²»ÐèÒªÖØÖõij£¹æID: %ss    ²»ÐèÒªÖØÖõ͍֯ID: %s(R2R3R>R<RttGetFBStateTimeCounttGetFBStateTimeByIndexRèt GetDataMapIDtGetStartWeekdayt GetStartHourtGetStartMinutet
GetEndHourt GetEndMinuteRRFRItsorttGetFBStateTimeCustomCounttGetFBStateTimeCustomByIndextGetOpenServerWeektGetOpenServerDayRLRR:(ROtnotResetIDListtmapStateTimeDictRVR×tfbStateTimeIpyDataRüt    dataMapIDt startWeekDayt    startHourt startMinutet
endWeekDaytendHourt    endMinutet startTimeListt endTimeDicttFBStateEndTimeNotResetIDListRÚRÙtcustomStateTimeDictRûtopenWeektopenDayt"FBStateEndTimeNotResetCustomIDList((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyt!__GetFBStateEndTimeNotResetIDList¸s\    &   
 
 c*    CsZtƒ\}}tjtjƒd}tjƒ}|jƒd|j|j}}}|d|d|}t    j
ƒ}tj d|||||fƒtj d|ƒtj d|ƒtj ƒ}    t jƒ}
g} g} t jd||ƒ} | rg}x|| D]t}|jƒ}|jƒ}|| kr?| j|ƒnt||}}}| j||||gƒ|j|ƒqWtj dt| ƒ|fƒnxŒt|
jƒƒD]x}|
j|ƒ}|jƒ}|jƒ}|| krïq°nt|jƒ|jƒ}}}| j||||gƒq°Wx'| D]\}}}}|jƒ}|jƒ}|jƒ|jƒ}}|jƒ|jƒ}}|d    kr¤|}n|d    kr¹|}n|d|d|}|d|d|}|jƒ}|r“|tj d
||ƒ}tj|j!|j"|j#||d    ƒ}||} | j$d d | j%d }!|!|kr“||!\}"}#t&j'd    |"|#ƒq“ntt}$}%||krµt}$n†||krò|rÓ||ksæ| r;||kr;t}%q;nI|r||kr||kp||k}$n||ko6|kn}$|%rPd    }&d    }'n$|$r3|j(ƒ}&|j)ƒ}'nq3t*j+|}(|    j,|(ƒ|&krætj-|(|&ƒ|    j.|(|&ƒ|&rÉt/|ƒntj0d||&|(fƒnt*j1|})|    j,|)ƒ|'kr3tj-|)|'ƒ|    j.|)|'ƒtj0d||'|)fƒt2|)|'ƒq3q3WdS(Nii'idsE¸±±¾×´Ì¬Ê±¼ä±í״̬´¦Àí...¿ª·þÊÇÐÇÆÚ%s,¿ª·þµÚ%sÌì, µ±Ç°ÐÇÆÚ%s,%sµã%s·Ös#    FBStateEndTimeNotResetIDList=%ss)    FBStateEndTimeNotResetCustomIDList=%stFBStateTimeCustoms)    ¶¨ÖƸ±±¾»î¶¯ÌõÊý: %s, ÅäÖñíIDÁбí=%siR-iii<s>¸±±¾ÊÇ·ñ¿É½øÈë±ä¸ü: dataMapID=%s,updCanEnter=%s,canEnterKey=%ss=¸±±¾×´Ì¬±ä¸ü: dataMapID=%s,updStateValue=%s,fbFuncStateKey=%s(3R6R/R0R1RR6RRRRåRæR„RR2R<RçRèRRFRGRBRtRRR5RRRRRtGetNotifyInfoDictR7RERRRR-tsecondsR¬R­t GetCanEntert GetStateValueR    tDef_Notify_WorldKey_FBCanEnterRR R®tSaveFBOpenRecordR:tDef_Notify_WorldKey_FBFuncStateR(*R1R5RPRSt
curWeekDaytcurHourt    curMinutet
curTimeWHMRöR#RVtcustomMapIDListtfbStateTimeInfoListRùRúRûRüR(RR)R,R×R'RR*R+R-R.t startTimeWHMt
endTimeWHMRRht diffDateTimet
diffMinuteR½R¾tisUpdatetisResett updCanEntert updStateValuet canEnterKeytfbFuncStateKey((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pytDispose_FBStateTimeïs¨ $                             '
        %         c Cs|tjƒ}d|j|jf}i}tj}tjƒ}|j|ƒ}d}x`t    |j
ƒƒD]L}|j |ƒ}    |    j ƒ}
|
|kr›|    }nt |    jƒƒ||
<qeW|sú|jƒ}|j|ƒ|jt|gƒƒ|g||<nkt |jƒƒ} || kra| j|ƒt| ƒdkrA| d=n|jt| ƒƒ| ||<ndStjtj|ƒdS(Ns%02d%02dii(RR6RRR    t*Def_UniversalGameRecType_LimitFBOpenRecordtGetUniversalRecMgrt GetTypeListR>trangetCounttAtt    GetValue1tevalt GetStrValue1tAddRect    SetValue1t SetStrValue1RâRFRBR t Def_Notify_WorldKey_FBOpenRecord( tmapIDRôt    curDayStrt fbOpenRecordtrecTypetuniversalRecMgrtrecTypeListDatat findRecDataR«tuniversalRecDatatrecMapIDt
recordList((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyR=is8                
 cCs‚i}tj}tjƒ}|j|ƒ}xQt|jƒƒD]=}|j|ƒ}|jƒ}t    |j
ƒƒ}|||<q=W|S(N( R    RPRRQRRRSRTRURVRWRX(R_R`RaRbR«RdReRf((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pytGetFBOpenRecords      c Cs=g}g}tjƒ}tjƒ}xãt|jƒƒD]Ï}|j|ƒ}|jƒ}|jƒr€||kr€|j    |ƒn||kr7t
j |}|j |ƒ}|rÁtj ||ƒnt
j|}    |j |    ƒ}
|
rötj |    |
ƒn|j    |ƒq7q7Wtj t
j|ƒtƒ} tj t
j| ƒdS(N(RRR2R<RtRRRR:RFR    R<RR R>t*Def_Notify_WorldKey_FBEnterTimeLimiitMapIDRgR\( tfbEnterTimeLimitMapIDListt sendMapIDListR#RVR×R'R(RMtcanEnterRNt fbFuncStateR_((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pytSendMapServerFBFuncStatešs.          cCstjƒrdStƒdS(N(Rt IsMergeServertDispose_ActionGoOnByDayKey(ttick((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pytDispose_Action_GoOn_ByDay¾s cCsÊtjƒr=tjtjƒs"dStjtjƒtƒdStƒtjtjƒ}tjtj    ƒ}t
j dƒ}||dkr‹dS||dks«||dkr¶t ƒdStjtjƒdS(Nt#ActionControlByDayInitOpenServerDayiii( RRnR/R0tDef_MergeServerOpenActionDaytSetDBGSTrig_ServerTimetSendBroadcastMergeOpenActionDaytDoLogic_ActionByDayKeyOnDaytDef_ServerLastOpenActionDayR1t ReadChConfigtGetEvalChConfigtNewRingOpenActionDay(tlastOpenActionDayRPt initDayList((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pytDoLogic_ServerLastOpenActionDayÎs"  cCstjtjdƒtƒdS(Ni(R/R°RwtOpenActionDay_Reset(((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyRzñscCsdS(N((((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyR~þscCsÙxÏttƒD]Á\}}||dkr/q nt||ƒtkrUtjdƒdSt||ƒ}t|ƒtkr|ƒd}|||kr dSq n|||kr³q n|||krÊt    j
St    j SWt    j S(Ns-s###ϵͳʱ¼ä»ñµÃÒì³££¬ÎÞ´ËÊôÐÔi( RHtATTR_CALL_TIMERARGRR:RsttypeRRtDef_Cmp_Greatert Def_Cmp_Lowert Def_Cmp_Equ(RôRÚR«tcallObjt
curCallObjtwday((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pytCompareActTimes$  cCsH|s
tStj|dƒ|ko;tj|dƒknrDtStS(Nii(RGRtGetDateTimeByStrR5(RôtactSect((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyt IsAtActTime5s &cCsÈ|tjtjkr&tj|ƒnž|tjtjkrLtj|ƒnx|tjtj    krut
j ||ƒnO|tjtj kržt j||ƒn&|tjtjkrÄtj|ƒndS(N(R    R>RtDef_FBMapID_FamilyPartytPlayerFamilyPartytFamilyPartyStateChangetDef_FBMapID_FamilyWartGameWorldFamilyWartOnFamilyWarStateChangetDef_FBMapID_XMZZt
PlayerXMZZtOnXMZZStateChangetDef_FBMapID_FamilyInvadetPlayerFamilySWRHtOnSWRHStateChangeR tDailyActionID_FamilyRobBossR´tOnHorsePetRobBossActionChange(R%tisOpen((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyRGscCs3tjtjƒ}tjtjdi|d6ƒdS(NitDay(R/R0RstMergeBroadcasttSendBroadcastMergeR(tmergeServerOpenActionDay((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyRuuscCsXtjtjƒ}tjtjƒ}tjtjƒ}tjdƒ}|\}}}||ksr|rƒ||krƒtjdƒdStj    }tj
}t j ƒtj|ƒ}    |    sºdn    t |    ƒ}    tj|ƒ}
|
sádn    t |
ƒ}
tjtjƒ} tjd|||fƒtjd|||    |
| fƒ||ksW|ræ||kræd}    xYt|dƒD]H\} } | dkr‰Pn| d}| |kr¥qmnd    |    | f}    qmWtj|tj|    ƒƒtjd
|    ƒnt|    ƒt|ƒkrôtjd ƒxæt|dƒD]Ò\} } | dkr7Pnt | ƒ|    krOqn| d}| |krkqn|
|    kr­|    j|
ƒ}|    |d t | ƒ|    |d}    n t | ƒ}    tj|tj|    ƒƒtjd | ||    fƒPqWn|    s tjd ƒdS|
rQ|
|    krQ|    j|
ƒd}|t|    ƒkrHdn|}nd}tj|    |ƒ}tj||ƒ|dks˜|t|ƒkr­tjd|ƒdStjd|ƒtjƒ}||dd}xu|jƒD]g\}}|j|ƒ|krqénd\}}}}}}}t||||||||||ƒ
qéWdS(NtActionControlByDayKeyRepeatsûÓÐÕýʽ½øÈëÖÜÆÚÑ­»·£¬²»´¦Àí!ts=´¦ÀíÖÜÆÚÑ­»·: openServerDay=%s,isMixServer=%s,mixServerDay=%ss_    startRepeatOpenDay=%s,startRepeatMixDay=%s,repeatOrder=%s,preRepeatNum=%s,worldAverageLV=%sii    is%s%ss"    ¿ªÊ¼Ñ­»·, Éú³ÉÑ­»·±àºÅ˳Ðò: %ss2    »¹Ã»È«²¿¿ªÊ¼Ñ­»·£¬ÅжÏÊÇ·ñÓж¯Ì¬Ð²åÈëµÄÑ­»·..sC        ±àºÅ%s, needWorldAverageLV=%s,²åÈëÑ­»·,¸üÐÂÑ­»·±àºÅ˳Ðò: %ss    Ã»ÓпÉÑ­»·µÄ»î¶¯!s'    ÏÂÒ»¸öÑ­»·±àºÅ´íÎó!nextRepeatNum=%ss*    ¹ýÌì±ä¸üÑ­»·»î¶¯×´Ì¬, nextRepeatNum=%sii;(iiiiiii;(R/R0R1tDef_IsMixServertDef_MixServerDayRxRyRR:tDef_TeHuiRepeatOrderKeytDef_TeHuiRepeatNumKeytGameWorldAverageLvtOpenWorldAverageLvRâR    R²RHR°tToIntDefRBR«RRIRt__ChangeDA_ActionSign(RPt isMixServert mixServerDayt repeatDayInfotstartRepeatOpenDaytstartRepeatMixDayt
repeatListtDef_RepeatOrderKeytDef_RepeatNumKeyt repeatOrdert preRepeatNumtworldAverageLVR×t
repeatInfotneedWorldAverageLVt insertIndextnextRepeatIndext nextRepeatNumR#tnextRepeatDictR%tsignIDtcurDaytbeginDaytbeginHtbeginMtendDaytendHtendM((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyRvsˆ         
     
 
  '  ! )cCs‘tjƒrdStjdƒtjtjƒ}tjtjƒ}tjtjƒ}tj    dƒ}|s|t
|d|ƒnt
|d|ƒdS(Ns´¦ÀíÌØ»Ý״̬ÐÅÏ¢...tActionControlByDayKeyGoOnii( RRnR„R/R0R1R R¡RxRyt__DoActionGoOnByDayKeyCheck(RPR¨R©tallActionGoOnInfo((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyRoás  cCsItjƒ}tjƒ}x*|D]"}|d\}}}|d\}}    }
||ks||kriqn|d} |d} |j| ƒ| kr˜qndddd||g} dddd|    |
g}||kròt|| ƒtjkròqn||krt||ƒtjkrqnt|| | ||||||    |
ƒ
qWdS(Niiiis-(    RR6RRR‡RR‚RR§(tgoOnListRºRôR#t goOnControlR»R¼R½R¾R¿RÀR%R¹t    beginTimeRÙ((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyRÂõs&   
 
$$)c
    Csåt||||||||    ƒ\}
} ttjƒƒ} tjd|||
| | fƒ|j||ƒ|jtj||
ƒ|jtj|| ƒtj    |} |j| | ƒtj
| | ƒtj
||ƒt ||ƒdS(NsG»î¶¯×´Ì¬±ä¸ü: dictName=%s,signID=%s,beginTime=%s,endTime=%s,actionID=%s( tGetBeginEndTimeByDayRxR…RR:R®R    t'Def_Notify_WorldKey_DayAction_BeginTimet%Def_Notify_WorldKey_DayAction_EndTimet Def_Notify_WorldKey_DayAction_IDR R(R#R%R¹RºR»R¼R½R¾R¿RÀRÆRÙtactionIDt actionIDKey((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyR§s'      cCsØtd||ƒ}tj|ƒ}    t|    ƒjdƒd}
d|
d ||f}
tj|
tjƒ} td||ƒ} tj| ƒ} t| ƒjdƒd}d|d ||f}tj|tjƒ}| |fS(Nis.s%s %02d:%02d:00i
s%s %02d:%02d:59(    tmaxRtGetDatetimeBySubDaysRâtsplittChangeTimeStrToNumRR9tGetDatetimeByDiffDays(R%RºR»R¼R½R¾R¿RÀt beginDiffDayst beginDateTimetbeginDateTimeStrt beginTimeNumt endDiffDaysRitendDateTimeStrt
endTimeNum((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyRÇ4s(=RR7RRxR¬R    R/R›R¤RRŒR2R’R•R´R RåRÄRÔttypesRR…RätTime_YmdFormatRRSR4RRRR(RGRR=RKR5RMR>R RR RRR6ROR=RgRmRqR}RzR~R‡RŠRRuRvRoRÂR§RÇ(((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyt<module>sh                                 €    %    Q j !     e    :        7    z    $         $        #             $        .    
    b        $