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
ò[c@sWddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlmZddlZejZddddddgZed    ƒ\ZZZd
„Zd „Ze 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<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((sY.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyt OnPlayerLogin?s"
cCs™tƒ\}}|t}|r#dStjƒ}xctjD]X}tj|}|j|ƒ}|j    |iƒ}||tj
<tj tj ||ƒq9WdS(N( RtOperationAction_MapServerInfot    GameWorldt GetGameWorldR    tOperationActionNameListtChConfigt!Def_WorldKey_OperationActionStatet GetDictByKeytgett ActKey_StatetSendMapServerMsgExt'Def_Notify_WorldKey_OperationActionInfo(RRtmapServerInfoDictt    gameWorldtactNametdictNametstatetsendMapServerMsgDict((sY.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyt!SendMapServerOperationActionStateZs
   cGCsë d}tjtjƒd}tj|ƒ}tjƒ}|j}|dkrRdnd}d||f}|rˆ|t|krˆt    |fSd|j
|j |j |j|j f}tjj|tjƒ}    tjddƒ}
i} i} tjƒ} tjƒ}tjd|    | ||
|fƒxL tjD]A }t|| |ƒ}tjd    |t|ƒfƒg}g}i}d}xÀ
|D]¸
}|jƒ}|jƒ}|jƒ}tjd
||jƒ|jƒ||||    fƒ|j ƒrÂ|j ƒrÂt!|ƒt!|ƒ}}||dkr<tjd ||||fƒq|n|    tj"d ||ƒ}|    tj"d ||ƒ}d |j
|j |j f}d |j
|j |j f}tjd||fƒn¦||
krñtjd||||fƒq|n|    tj"d |
|ƒ}tjjd||j|j |j#ftjƒ}||krhtjd|||fƒq|nt$|dƒr¡t$|dƒr¡|j%ƒ}|j&ƒ} n g}g} t$|dƒrÈ|j'ƒni}!t$|dƒré|j(ƒni}"t$|dƒr
|j)ƒni}#t|ƒt| ƒkrKtj*d|||| fƒq|nt$|dƒs`dn    |j+ƒ}$|$dkr³tjjd|tjƒ}%tjjd|tjƒ}&nŸ|$dkr
tjjd|tjƒ}%tjjd|tjƒtj"d dƒ}&nHtjjd|tjƒ}%tjjd|tjƒtj"d dƒ}&t$|dƒsgdn    |j,ƒ}'tjd|$|%|&|| |'fƒg}(g})i}*i}+i},t    }-t    }.t    }/t    }0| sÚ|  rN|%}1|&}2|(j-|1ƒ|)j-|2ƒ|%|    ko|&knrH|j-|1ƒ|j-|2ƒt.}-|    |&k}0qHnú|%|    koe|&knrH|    |&k}0xÏt/|ƒD]¾\}3}4| |3}5d|    j
|    j |    j |4f}6d|    j
|    j |    j |5f}7tjj|6tjƒ}1tjj|7tjƒ}2|(j-|1ƒ|)j-|2ƒ|j-|1ƒ|j-|2ƒt.}-qƒWn|'rÄ|%rÄ|%tj"d|' ƒ}8|8j
|    j
krª|8j |    j krª|8j |    j krªt.}/ntjd |8|/fƒntjd!|(ƒtjd"|)ƒtjd#|ƒtjd$|ƒxt/|(ƒD]\}9}1|)|9}2xy|!j0ƒD]k\}:};|1tj"d|:ƒ}<|<j
|    j
kr8|<j |    j kr8|<j |    j kr8|;|*|<<t.}.q8q8Wxy|"j0ƒD]k\}:};|2tj"d|:ƒ}<|<j
|    j
kr´|<j |    j kr´|<j |    j kr´|;|+|<<t.}.q´q´W|#rt|#ƒdkr|#d \}=}>t|#ƒdkrg    |#dng}?|>|?g};d1\}@}Axœ|=r 
|>r 
|@|Akr 
|@d7}@|1tj"d|=|@ƒ}<|<|2krÔ    Pn|<j
|    j
krˆ    |<j |    j krˆ    |<j |    j krˆ    |;|,|<<t.}.qˆ    qˆ    WqqW|*s:
|+s:
|,r»
tjd&|!j1ƒ|*fƒtjd'|"j1ƒ|+fƒtjd(|#|,j1ƒfƒ|j2|*ƒ|j2|+ƒ|j2|,ƒn|- rÖ
|. rÖ
|/ rÖ
q|ntjd)||/|-|0|.fƒ|-s |/r|| s |-r4 |0 r4 |}i|tj36}B|%|    koC |&knrÿ d}C|%}Dt$|d*ƒsi dn    |j4ƒ}E|Es‡ |r­ | r­ |    |%j5}C|Dtj"d |Cƒ7}Dnt!t6j7|Dj8ƒƒƒ}F|C|Btj9<|F|Btj:<tjd+|E|D|Ffƒn|j;ƒ|j;ƒ|B| |<tjd,|Bƒq4 q|q|W|sP |sP |sP |r(||||g| |<q(q(Wtj<||| | gƒ}tjd-||fƒtjd.| ƒtjd/| ƒtjd0ƒ|rá t=t.ƒnt.|fS(2NRiiis%s_%ss%d-%d-%d %02d:%02d:00tOperationActionsf===== ¼ÓÔØ±¾ÈÕÔËÓª»î¶¯ÐÅÏ¢: %s, serverID=%s,openServerDay=%s,customMaxServerDay=%s,reloadSign=%s =====s&¼ÓÔØÔËÓª»î¶¯: actName=%s,¿É´¦ÀíÌõÊý=%ssb    cfgID=%s,mark=%s,serverIDList=%s,startDateStr=%s,endDateStr=%s,openServerDay=%s,curDateTime=%ssR        µ±Ç°¿ª·þÌ쳬¹ý»î¶¯½áÊø¿ª·þÌ죬²»´¦Àí! cfgID=%s,%s ~ %s < openServerDay(%s)tdayss%d-%d-%ds!        ¿ª·þÌìת»¯ÎªÈÕÆÚ: %s ~ %ssO        °´ÈÕÆÚ¿ªµÄÔÚ¿ª·þ¶¨ÖÆÏÞÖÆÌìÄÚ£¬²»´¦Àí! cfgID=%s,%s ~ %s,openServerDay=%ss%s %02d:%02d:%02dsm        °´ÈÕÆÚ¿ªµÄ¿ªÊ¼ÈÕÆÚÔÚ¿ª·þ¶¨ÖÆÏÞÖÆÌìÄÚ£¬²»´¦Àí! cfgID=%s,curStartDateTime=%s,customMaxServerDateTime=%stGetStartTimeListtGetEndTimeListtGetNotifyInfoStarttGetNotifyInfoEndtGetNotifyInfoLoops_        »î¶¯ÅäÖÿªÊ¼¼°½áÊøÊ±¼ä¸öÊý²»Æ¥Åä! actName=%s,cfgID=%s,startHMStrList=%s,endHMStrList=%st GetResetTypes %s 05:00:00is %s 00:00:00tGetAdvanceMinutessf        resetType=%s,startDayDate=%s,endDayDate=%s,startHMStrList=%s,endHMStrList=%s,advanceMinutes=%ss%d-%d-%d %s:00tminutess3        advanceNoticeDateTime=%s,isAdvanceNotice=%ss        startList=%ss        end  List=%ss        needStartList=%ss        need  EndList=%sids'        startNotifyDict: minutes=%s, %ss'        end  NotifyDict: minutes=%s, %ss'        loop NotifyDict: lopInfo=%s, %ss^        ÐèÒª´¦ÀíµÄÔËÓª»î¶¯ÐÅÏ¢: cfgID=%s,isAdvanceNotice=%s,isActivity=%s,isEnd=%s,isNotify=%st GetIsDayResets.        isDayRest=%s,actIDDateTime=%s,actID=%ss        activityInfoDict=%ss8±¾ÈÕÔËÓª»î¶¯ÐÅÏ¢¼ÓÔØÍê±Ï!reloadSign=%s,isRefreshState=%ss    operationActionDict=%ss#    mapServerOperationActionDict=%ss==============================================================(iid(>tPlayerDBGSEventtGetDBGSTrig_ByKeyt Def_ServerDayt IpyGameDataPYt GetConfigExRt GetServerTimeRtOperationAction_ReloadSigntFalseRRRRtdatetimetstrptimeRtTYPE_Time_Formatt
GetFuncCfgt GetServerIDtIPY_DatatLogR    Rt%__GetOperationActionServerIpyDataListtlentNonetGetCfgIDt GetStartDatet
GetEndDatet
GetActMarktGetServerIDListtisdigittintt    timedeltatsecondthasattrR+R,R-R.R/tErrLogR0R1tappendtTruet    enumeratetitemstkeystupdatet ActKey_CfgIDR3R*ttimetmktimet    timetupletActKey_DayIndext    ActKey_IDtsortt SetConfigExtDispose_OperationActionState(GtisRefreshStatetkeyt openServerDayRt
serverTimetcurHourtreloadSignHourt
reloadSigntcurDateTimeStrt curDateTimetcustomMaxServerDayRtmapServerOperationActionDicttserverIDt
ipyDataMgrR$tcurServerActIpyDataListt needStartListt needEndListtneedNotifyDicttactivityIpyDataRtcfgIDt startDateStrt
endDateStrtstartServerDayt endServerDaytopenServerDateTimetendServerDateTimetcustomMaxServerDateTimetcurStartDateTimetstartHMStrListt endHMStrListtnotifyInfoDictStarttnotifyInfoDictEndtnotifyInfoLoopInfot    resetTypet startDayDatet
endDayDatetadvanceMinutest    startListtendListtstartNotifyDictt endNotifyDicttloopNotifyDictt
isActivitytisNotifytisAdvanceNoticetisEndt startDateTimet endDateTimethmIndext
startHMStrtendHMStrt startTimeStrt
endTimeStrtadvanceNoticeDateTimetdtIndext notifyMinutet
notifyInfotnotifyDateTimet loopMinutest loopNotifyKeytloopNotifyParamListt    loopCountt loopMaxCounttactivityInfoDicttdayIndext actIDDateTimet    isDayResttactID((sY.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyRosf     
(              )   !!!    !  /,!         
      6    
6
 6
 "  
 6
    !   
 
 
  c Cs tjƒ}i}t|d|ƒƒ}xìt|ƒD]Þ}t|d|ƒ|ƒ}|jƒ}t|dƒsugn    |jƒ}    |    r¼||    kr¼tjd||    ||jƒfƒq5nt    |j
ƒƒ}
|j |iƒ} | j |
gƒ} | j |ƒ| | |
<| ||<q5Wg} xü|j ƒD]î\}} g}t}xÀ| j ƒD]²\}
} |
sm| }qOnx‘|
D]‰}t|tƒr•||ksét|tƒs³t|t    ƒrtt|ƒdkrt|d|koä|dknrt| | 7} t}PqtqtWqOW|r*| |7} q*q*W| S(Ns
Get%sCounts Get%sByIndextGetPlatformListsC·Ç±¾Æ½Ì¨»î¶¯£¬²»È¡£¡platform=%s,platformList=%s,actName=%s,cfgID=%siii(Rt GetPlatformtgetattrtxrangeRIROR£RBRFttupleRJRRQRTRRt
isinstanceRLtlistRDR;(RlRkR$tplatformt actGroupDictt actCfgCounttcfgIndexRtactMarkt platformListt serverIDTupletserverIpyDataDictt ipyDataListRmtgeneralIpyDataListt    isGeneralt serverIDInfo((sY.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyRCXsD  !# 
 6
 cCsvttƒ\}}|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||ƒ|j|iƒ}tj|}|jtjƒ}|dkr¢|r¢tj|ƒ|kr¢tj||ƒ|tj krgtjtj!ƒ}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#kr]|r*|    r*t$j-t.ƒq*nÍ|tj&kr°|rˆ|    rˆt'j/|    ƒn||kr*|dkr*t'j0ƒq*nz|tj1krÛ|r*|    r*t2|    ƒq*nO|tj3kr*|    r*||kr*|jtj4dƒ}t5j6|    ||ƒq*n||tj7<tj8tj9||ƒtj:d|||||fƒqŽWdS(Ns%d-%d-%d %d:%d:00iis=ÔËÓª»î¶¯±ä¸ü: actName=%s,preState=%s,state=%s,dictName=%s, %s(;RR;RRRRR9R<R=RRRRRRR>R    RREtindexRSt PlayerControlt WorldNotifyRRtSetDictRR4tDef_OperationActIDR\R5tSetDBGSTrig_ByKeytNeedWorldLVOperationActNameListt"Def_Notify_WorldKey_WorldAverageLvtDef_OActWorldLVtOperationActionName_BossRebornt GameWorldBosstResetBossRebornPointR R tResetFairyCeremonytActKey_WorldLVR
R tOperationActionName_CostRebatetSetBossRebornNeedPointRRRtOnFairyCeremonyEndRRtOperationActionName_FlashSaleR[t PlayerStoretResetFlashSaleBuyCntRR R!RB(t reloadRefreshRRRR"R#RhR$R&RR„R…t
notifyDicttdIndexRRŽt    notifyKeyt    paramListR%tpreStateR'tdbOperationActIDKeytcurActIDtworldLVt
actWorldLVRŸ((sY.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyR_‚sŒ 
 
         
 
   '       $c    Cs²|s
dSt|jƒƒt|jƒƒkr2dStjtjƒd}tjƒ}|jƒt    j
|j ƒ|ƒ|_ t    j
|j ƒ|ƒ|_g|_x^t|jƒƒD]J\}}|jƒ|}tjƒ}||_||_|jj|ƒq°Wt|jƒ|_|jƒ|_|jƒ|_|sžt    jƒ}xkt|jƒƒD]D}|j|ƒ}|dksS|jƒ r‡qSnt j!||ƒqSWnt j!||ƒdS(Ni("RDR+R,R4R5R6tChPyNetSendPackttagGCMultiExpRateInfotClearRtGetOperationActionDateStrRGt    StartDateRHtEndtDatet ActivityTimeRSttagGCMultiExpRateTimet    StartTimetEndtTimeRQtActivityTimeCountt
GetLVLimittLimitLVt GetAddExpRatet
AddExpRatetGetPlayerManagerR¦tGetPlayerCounttGetPlayerByIndexREt    GetInitOKt NetPackCommont SendFakePack(    RRRbtmultiExpRateInfotit    startTimetendTimettimeInfot playerManager((sY.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyR ñs8$ 
              cCs|s
dStjtjƒd}tjƒ}|jƒtj|jƒ|ƒ|_    tj|j
ƒ|ƒ|_ |j ƒ|_ |jƒ|_|jƒ|_|s    tjƒ}xkt|jƒƒD]D}|j|ƒ}|dks¾|jƒ ròq¾ntj||ƒq¾Wntj||ƒdS(Ni(R4R5R6RÔttagGCMultiRealmPointInfoRÖRR×RGRØRHRÙt GetMultipletMultipleRßRàt GetPointLimitt
LimitPointRãR¦RäRåRERæRçRè(RRRbtmultiRealmPointInfoRîRê((sY.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyRs& 
 c)
CsAd}tjtjƒd}tj|ƒ}|rI|d|krI|dSg}tjƒ}t|jƒdƒ}t    t
j
ƒƒ}tj |t j ƒ}tjƒ}tjddƒ|d}    tjdƒtjd|||fƒtjd|    ƒg}
g} ||    kr)tjd|ƒ} tjd    t| ƒƒg} g}x­| D]¥}|jƒ}|jƒ}||
kr„|
j|ƒn| j|ƒ|jƒ|krJ|j|ƒt}| j||jƒ|gƒtjd
|||fƒqJqJWtjd | ƒtjd |
ƒtjd |ƒn tjdƒtjdƒtjƒ}|jƒ}xüt|ƒD]î}|j|ƒ}|jƒ}||
kr¬tjd|ƒqhn|jƒ}|så|j|gƒtjd|ƒqhnd|kr ||kr tjd||jƒfƒqhnd|kr6|dn||}| jt ||gƒqhWtjdƒ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ƒqnWtj+|||gƒ}tjdƒtjdƒ|dS(NtTodayDailyActionInfoiiR)s ===== ¼ÓÔØ½ñÌìÈÕ³£»î¶¯ÐÅÏ¢ =====s(    ¿ª·þÊÇÐÇÆÚ%s, ¿ª·þµÚ%sÌì, µ±Ç°ÐÇÆÚ%ss    ×î´óÓÐЧ¶¨ÖÆ¿ª·þÌì: %stDailyActionCustoms    ±¾Öܶ¨ÖƵÄÈÕ³£»î¶¯ÌõÊý: %ss:    Ôö¼Ó±¾ÈÕÈÕ³£»î¶¯ÐÅÏ¢: isCustom=%s,dailyID=%s,dataID=%ss"    ±¾Öܶ¨ÖƵÄÈÕ³£ÅäÖñíIDÁбí: %ss     ±¾Öܶ¨ÖƵÄÈÕ³£»î¶¯IDÁбí: %ss    ½ñÌì¶¨ÖÆµÄÈÕ³£±íIDÁбí=%ss0    ³¬¹ý×î´ó¶¨ÖÆ¿ª·þÌ죬²»¶¨ÖÆ£¬×ß³£¹æÈÕ³£ÅäÖã¡s    ´¦Àí³£¹æÈÕ³£»î¶¯ÅäÖÃs:    ³£¹æ»î¶¯IDÅäÖÃÊǽñÌìµÄ¶¨ÖƻID£¬²»´¦Àí£¡: dailyID=%ss(    Ôö¼Ó±¾ÈÕ³£¿ªÈÕ³£»î¶¯ÐÅÏ¢: dailyID=%st0s5    ²»ÊÇÈÕ³£»î¶¯¿ªÆôÐÇÆÚ: dailyID=%s,openWeekLimit=%ss    -----------------------s%s %02d:%02d:%02dR2sg    Ôö¼Ó±¾ÈÕÈÕ³£»î¶¯ÐÅÏ¢: isCustom=%s,dailyID=%s,openList=%s,overList=%s,goonStateDict=%s,notifyDict=%ss±¾ÈÕÈÕ³£»î¶¯ÐÅÏ¢¼ÓÔØÍê±Ï!s==============================================================(,R4R5R6R7R8RR9tstrRRLRXtChangeTimeNumToStrRtTYPE_Time_YmdFormattGameWorldProcesstGetOpenServerWeekdayR?RBtGetIpyGameDataListNotLogRDtGetIDt
GetDailyIDRQtGetOpenServerDayRRtGetOpenTimeListRAtGetDailyActionCountR¦tGetDailyActionByIndextGetOpenTimeDictRUR;t GetNotifyInfoR<R=R>RRRMt GetDurationRRTR^()RaRbRõttodayActionInfotdayTimetweekDaytcurTimet
curDateStrtopenServerWeekdaytcurMaxCustomServerDaytcustomDailyIDListtdailyTimeInfoListtcustomIpyDataListt customIDListttodayCustomIDListt customIpyDatatdataIDtdailyIDtisCustomRltdailyActionCountRêt dailyIpyDatat openTimeDictt openTimeListRtnotifyInfoDicttopenListtoverListt goonStateDictRËt    OpenStateRRt openTimeStrt openDateTimet overDateTimetopenStateTimeListR–R—R˜((sY.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyt__GetTodayDailyActionInfo.s¨          !           
    $  cCsßtƒ}|sdStjƒ}tjƒ}|j|jf}x›|D]“}|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 |ƒ|krkqDn|r|t
j krtjƒqntj||ƒ|j||ƒtjd|||fƒt||ƒqDWdS(Niis7ÈÕ³£»î¶¯×´Ì¬±ä¸ü: dailyActionID=%s,state=%s,dictName=%s(R$RRR9RRRDRTR·R¸R    t$Def_Notify_WorldKey_DailyActionStateRtDailyActionID_FamilyRobBossRÀt(SyncMapServer_HorsePetRobBossPlayerCountR R¹RBt __DoLogic_GameServer_ActionState(ttodayDailyActionInfoR#Rt curHourMinutet
actionInfot dailyActionIDR&RRRRËt    goonStateR#t dateTimeInfoRÍRÎR%((sY.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pytDispose_DailyActionState£sF       
               $   cCsstƒ}|sdStjƒ}xM|D]E}|d}tj|}|j|ƒ}|r&tj||ƒq&q&WdS(Ni(R$RRR    R%RR (R)R#R+R,R%R&((sY.\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(R7R8RERAR¦tGetFBStateTimeCounttGetFBStateTimeByIndexRþt GetDataMapIDtGetStartWeekdayt GetStartHourtGetStartMinutet
GetEndHourt GetEndMinuteRRQRTR]tGetFBStateTimeCustomCounttGetFBStateTimeCustomByIndextGetOpenServerWeekRR^RRB(RatnotResetIDListtmapStateTimeDictRlRêtfbStateTimeIpyDataRt    dataMapIDt startWeekDayt    startHourt startMinutet
endWeekDaytendHourt    endMinutet startTimeListt endTimeDicttFBStateEndTimeNotResetIDListRíRìtcustomStateTimeDictRtopenWeektopenDayt"FBStateEndTimeNotResetCustomIDList((sY.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyt!__GetFBStateEndTimeNotResetIDListós\    &   
 
 cCs›d}tjtjƒd}tj|ƒ}|rI|d|krI|dStjtjƒd}tjƒ}|jƒd|j|j    }}}t
j ƒ}|dkr¼tj d|ƒgStj ddƒ|d}tjdƒtjd|||||fƒtjd|ƒtjƒ}    g}
g} ||kr[tjd    |ƒ} tjd
t| ƒƒg} g}xµ| D]­}|jƒ}|jƒ}||
kr®|
j|ƒn| j|ƒ|jƒ|krt|j|ƒt||}}}| j||||gƒtjd ||fƒqtqtWtjd | ƒtjd |
ƒtjd|ƒn tjdƒtjdƒxét|    jƒƒD]Õ}|    j|ƒ}|jƒ}|jƒ}||
krÞtjd||fƒqˆnt|jƒ|jƒ}}}||kr-tjd||||fƒqˆn| j||||gƒtjd ||fƒqˆWtj||| gƒ}tjdƒtjdƒ|dS(NtTodayFBStateTimeInfoiis.»ñÈ¡¿ª·þÊÇÐÇÆÚ¼¸Êý¾Ý´íÎó£¡openServerWeekday=%sR)s"===== ¼ÓÔØ½ñÌ츱±¾×´Ì¬Ê±¼ä±í =====s4    ¿ª·þÊÇÐÇÆÚ%s, ¿ª·þµÚ%sÌì, µ±Ç°ÐÇÆÚ%s,%sµã%s·Ö £¡s    ×î´óÓÐЧ¶¨ÖÆ¿ª·þÌì: %stFBStateTimeCustoms    ±¾Öܶ¨ÖƵĸ±±¾»î¶¯ÌõÊý: %ss3    ½ñÌìÒª´¦ÀíµÄ¸±±¾×´Ì¬ÅäÖÃ: ÊÇ·ñ¶¨ÖÆ=%s,dataID=%ss    ±¾Öܶ¨ÖƵÄÅäÖñíIDÁбí: %ss    ±¾Öܶ¨ÖƵĸ±±¾µØÍ¼Áбí: %ss    ½ñÌì¶¨ÖÆµÄ±íIDÁбí=%ss4    ³¬¹ý×î´ó¶¨ÖÆ¿ª·þÌ죬²»¶¨ÖÆ£¬×ß³£¹æ¸±±¾×´Ì¬Ê±¼ä£¡s    ´¦Àí³£¹æ¸±±¾×´Ì¬Ê±¼äÅäÖÃs?    dataID=%s,dataMapID=%s, ÔÚ±¾Öܶ¨ÖƵĸ±±¾µØÍ¼ÁбíÀï,²»´¦Àí£¡sT    dataID=%s,dataMapID=%s, ²»ÊDZ¾ÌìµÄ¸±±¾»î¶¯,²»´¦Àí£¡curWeekDay=%s,startWeekDay=%ss±¾ÈÕ¸±±¾»î¶¯×´Ì¬ÐÅÏ¢¼ÓÔØÍê±Ï!s==============================================================(R4R5R6R7R8RR9RRRRûRüRPR?RBRARýRDRþR4RQRRRR¦R2R3R;R5R^(RaRbRORht
curWeekDayRdt    curMinuteR R RltcustomMapIDListtfbStateTimeInfoListRRRRRR@RRARDRêR?((sY.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyt__GetTodayFBStateTimeInfo*st $                         c#    Cstƒ\}}tjtjƒd}tjƒ}|jƒd|j|j}}}|d|d|}t    j
ƒ}tj d|||||fƒtj d|ƒtj d|ƒtj ƒ}    t ƒ}
xA|
D]9\} } } }|jƒ}|jƒ}tj d| ||fƒ|jƒ|jƒ}}|jƒ|jƒ}}| dkr`|} n| dkru|} n| d|d|}| d|d|}|jƒ}|rO|tjd    | |ƒ}tj|j|j|j||dƒ}||}|jd
d |jd }||krO||\}}tjd||ƒqOntt}}||krqt}n†||kr®| r||ks¢| r÷||kr÷t}q÷nI|rÛ||krÛ||kpÕ||k}n||koò|kn}|r d}d} n$|rÕ|j ƒ}|j!ƒ} nqÕt"j#|}!|    j$|!ƒ|kr¢tj%|!|ƒ|    j&|!|ƒ|r…t'|ƒntj(d |||!fƒnt"j)|}"|    j$|"ƒ| krÕtj%|"| ƒ|    j&|"| ƒtj(d|| |"fƒt*|"| ƒqÕqÕWdS(Nii'idsF¸±±¾×´Ì¬Ê±¼ä±í״̬´¦Àí...¿ª·þÊÇÐÇÆÚ%s, ¿ª·þµÚ%sÌì, µ±Ç°ÐÇÆÚ%s,%sµã%s·Ös#    FBStateEndTimeNotResetIDList=%ss)    FBStateEndTimeNotResetCustomIDList=%ss&    isCustom=%s,dataID=%s,dataMapID=%siR*iii<s>¸±±¾ÊÇ·ñ¿É½øÈë±ä¸ü: dataMapID=%s,updCanEnter=%s,canEnterKey=%ss=¸±±¾×´Ì¬±ä¸ü: dataMapID=%s,updStateValue=%s,fbFuncStateKey=%s(+RNR4R5R6RR9RRRRûRütDebugLogRRURþR4R6R7R8R9tGetNotifyInfoDictR<RMRRRR*tsecondsR·R¸R;RRt GetCanEntert GetStateValueR    tDef_Notify_WorldKey_FBCanEnterRR R¹tSaveFBOpenRecordRBtDef_Notify_WorldKey_FBFuncStateR((#RIRMRbRhRQRdRRt
curTimeWHMR R#RTRRARDRRR@RBRCRERFt startTimeWHMt
endTimeWHMRRt diffDateTimet
diffMinuteRÍRÎtisUpdatetisResett updCanEntert updStateValuet canEnterKeytfbFuncStateKey((sY.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pytDispose_FBStateTimers~ $                       '
        %         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(RR9RRR    t*Def_UniversalGameRecType_LimitFBOpenRecordtGetUniversalRecMgrt GetTypeListREtrangetCounttAtt    GetValue1tevalt GetStrValue1tAddRect    SetValue1t SetStrValue1RøRQRDR t Def_Notify_WorldKey_FBOpenRecord( tmapIDR
t    curDayStrt fbOpenRecordtrecTypetuniversalRecMgrtrecTypeListDatat findRecDataR¶tuniversalRecDatatrecMapIDt
recordList((sY.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyR\Õs8                
 cCs‚i}tj}tjƒ}|j|ƒ}xQt|jƒƒD]=}|j|ƒ}|jƒ}t    |j
ƒƒ}|||<q=W|S(N( R    RjRRkRlRmRnRoRpRqRr(RyRzR{R|R¶R~RR€((sY.\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(RRR7RAR¦R2R3R4RYRQR    R[RR R]t*Def_Notify_WorldKey_FBEnterTimeLimiitMapIDRRv( tfbEnterTimeLimitMapIDListt sendMapIDListR#RlRêR?R@RgtcanEnterRht fbFuncStateRy((sY.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pytSendMapServerFBFuncStates.          cCstjƒrdStƒdS(N(Rt IsMergeServertDispose_ActionGoOnByDayKey(ttick((sY.\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( RRˆR4R5tDef_MergeServerOpenActionDaytSetDBGSTrig_ServerTimetSendBroadcastMergeOpenActionDaytDoLogic_ActionByDayKeyOnDaytDef_ServerLastOpenActionDayR6t ReadChConfigtGetEvalChConfigtNewRingOpenActionDay(tlastOpenActionDayRbt initDayList((sY.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pytDoLogic_ServerLastOpenActionDay:s"  cCstjtjdƒtƒdS(Ni(R4R»R‘tOpenActionDay_Reset(((sY.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyR”]scCsdS(N((((sY.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyR˜jscCsÙ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( RStATTR_CALL_TIMERORRRRBR¥ttypeRRtDef_Cmp_Greatert Def_Cmp_Lowert Def_Cmp_Equ(R
RíR¶tcallObjt
curCallObjtwday((sY.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pytCompareActTime}s$  cCsH|s
tStj|dƒ|ko;tj|dƒknrDtStS(Nii(RRRtGetDateTimeByStrR;(R
tactSect((sY.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyt IsAtActTime¡s &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%R&RÀtOnHorsePetRobBossActionChange(R%tisOpen((sY.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyR(³scCs3tjtjƒ}tjtjdi|d6ƒdS(NitDay(R4R5RtMergeBroadcasttSendBroadcastMergeR(tmergeServerOpenActionDay((sY.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyRáscCsXtjtjƒ}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;(R4R5R6tDef_IsMixServertDef_MixServerDayR’R“RRBtDef_TeHuiRepeatOrderKeytDef_TeHuiRepeatNumKeytGameWorldAverageLvtOpenWorldAverageLvRøR    R½RSR»tToIntDefRDR¶RRTRt__ChangeDA_ActionSign(Rbt isMixServert mixServerDayt repeatDayInfotstartRepeatOpenDaytstartRepeatMixDayt
repeatListtDef_RepeatOrderKeytDef_RepeatNumKeyt repeatOrdert preRepeatNumtworldAverageLVRêt
repeatInfotneedWorldAverageLVt insertIndextnextRepeatIndext nextRepeatNumR#tnextRepeatDictR%tsignIDtcurDaytbeginDaytbeginHtbeginMtendDaytendHtendM((sY.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyRësˆ         
     
 
  '  ! )cCs‘tjƒrdStjdƒtjtjƒ}tjtjƒ}tjtjƒ}tj    dƒ}|s|t
|d|ƒnt
|d|ƒdS(Ns´¦ÀíÌØ»Ý״̬ÐÅÏ¢...tActionControlByDayKeyGoOnii( RRˆRVR4R5R6R¹RºR’R“t__DoActionGoOnByDayKeyCheck(RbRÁRÂtallActionGoOnInfo((sY.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyR‰Ms  cCsItjƒ}tjƒ}x*|D]"}|d\}}}|d\}}    }
||ks||kriqn|d} |d} |j| ƒ| kr˜qndddd||g} dddd|    |
g}||kròt|| ƒtjkròqn||krt||ƒtjkrqnt|| | ||||||    |
ƒ
qWdS(Niiiis-(    RR9RRR¡RRœR›RÀ(tgoOnListRÓR
R#t goOnControlRÔRÕRÖR×RØRÙR%RÒt    beginTimeRì((sY.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyRÛas&   
 
$$)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( tGetBeginEndTimeByDayRLRXRRBR¹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((sY.\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øtsplittChangeTimeStrToNumRR>tGetDatetimeByDiffDays(R%RÓRÔRÕRÖR×RØRÙt beginDiffDayst beginDateTimetbeginDateTimeStrt beginTimeNumt endDiffDaysRŽtendDateTimeStrt
endTimeNum((sY.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyRà s(>RR<RR’R·R    R4R´R½R©R¦R7R¬R¯RÀR RûRÔRçRÈttypesRRXRútTime_YmdFormatR™RmR:RRRR(RRRRCR;R_RER RR$R/R0RNRURiR\RR‡R‹R—R”R˜R¡R¤R(RRR‰RÛRÀRà(((sY.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyt<module>sj                                  é    * o "     u    ?        7    H    c    $         $        #             $        .    
    b        $