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
Y;gc@s·ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlm Z ddl!Z!ej"Z#ddddddgZ$e%d    ƒ\Z&Z'Z(d
„Z)d „Z*e+d „Z,d „Z-d„Z.d„Z/e0e0d„Z1d„Z2d„Z3e4d„Z5e+d„Z6e+d„Z7d„Z8d„Z9d„Z:d„Z;d„Z<d„Z=d„Z>d„Z?d„Z@d„ZAd „ZBd!d"„ZCdS(#iÿÿÿÿN(tIntTypetweekdaytyeartmonthtdaythourtminuteicCs’tjƒrdStdtƒ\}}|s/dS|t}|rCdStj|kr||tjd}|r|t||ƒq|ntj|kr¸|tjd}|r¸t    j
||ƒq¸ntj |krô|tj d}|rôt j ||ƒqôntj|kr-|tjd}|r-t||ƒq-ntj|kri|tjd}|ritj||ƒqintj|krŽtj|tjƒndS(Nt
needReloadi(t    GameWorldt IsCrossServert__GetOperationActionInfotFalsetOperationAction_TodayInfot ShareDefinetOperationActionName_ExpRatetSync_OperationAction_ExpRatet!OperationActionName_FairyCeremonytPlayerFairyCeremonyt"Sync_OperationAction_FairyCeremonyt$OperationActionName_NewFairyCeremonytPlayerNewFairyCeremonyt%Sync_OperationAction_NewFairyCeremonytOperationActionName_RealmPointtSync_OperationAction_RealmPointt"OperationActionName_FeastRedPackettPlayerFamilyRedPackettSync_FeastRedPackett!OperationActionName_LuckyTreasuretPlayerUniversalGameRectSendUniversalGameRecInfot&Def_UniversalGameRecType_LuckyTreasure(t    curPlayertisReloadtOperationActionInfotoperationActionDicttipyData((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyt OnPlayerLoginCs> 
cCs¾tjƒtjƒrdStƒ\}}|t}|r=dSxztjD]o}|j|iƒ}|tj    krŸxE|j
ƒD]}tj tj ||ƒq{WqGtj tj ||ƒqGWdS(N( tCrossActionControltSendMapServerCrossActionStateRR    R
tOperationAction_MapServerInfoR tOperationActionNameListtgettMultiActNumOperationActNameListtvaluestSendMapServerMsgExt'Def_Notify_WorldKey_OperationActionInfo(R R!tmapServerInfoDicttactNametsendMapServerMsgDicttactNumMapMsgDict((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyt!SendMapServerOperationActionStateqs
 
cCsD|rt|dƒr|jƒS|tjkr9tjdStjdS(sW »ñÈ¡ÔËÓª»î¶¯·Ö×é±àºÅ
        ¼ÓÈëÁË·Ö×é±àºÅ¸ÅÄµ«ÓÉÓÚÓÐЩ»î¶¯Åä±í»¹ÊǾɹæÔòÅäÖã¬ÎªÁË×ö¹æÔò¼æÈݾÉÅä±í£¬¼õÉÙÅäÖñí¸Ä¶¯¼°´úÂë¸Ä¶¯ÕâÀï×öÏÂ×ÔÊÊÓ¦·ÖÅäĬÈÏ·Ö×é±àºÅ
        »î¶¯ÀàÐͶ¨Ò壺
        1-ĬÈÏ£¨½ö¿ÉÅäÖÿª·þÌì¡¢ÈÕÆÚ¡¢ÖÜÑ­»·W¿ªÍ·+Êý×Ö£¬ÓÅÏȼ¶ ¿ª·þÌì > ÈÕÆÚ > ÖÜx£©
                                        ·Ç¿ª·þÅäÖõĿª·þǰXÌì²»¿ª£¬²»ÊܺϷþÓ°Ï죬¹¦ÄÜÅäÖñí¿ÉÅäÖÃǰXÌìºó½»²æ¿É¿ª£¬Ã¿ÈÕÖØÖõĻǰXÌìºóĬÈϿɿª
        2-ºÏ·þ£¨½ö¿ÉÅäÖÃMix¿ªÍ·+Êý×Ö£¬ÈçMix1´ú±íºÏ·þµÚ1Ì죬ÒÔ´ËÀàÍÆ£©
        3-½ÚÈÕ£¨½ö¿ÉÅäÖÃÈÕÆÚ£¬²»ÊÜ¿ª·þ¡¢ºÏ·þÓ°Ï죩
        
        »î¶¯·Ö×é±àºÅ = »î¶¯ÀàÐÍ * 10 + ²»Í¬½çÃæ±àºÅ
    t    GetActNumi
(thasattrR3R tFeastOperationActionNameListt ActType_FeasttActType_OpenComm(R/R#((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pytGetOperationActNum‹s
 
 cCs|dS(Ni
((tactNum((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pytGetOperationActType sc
Cstjƒjtjƒtjƒjtjƒ}tjdt|ƒƒxÆ|jƒD]¸\}}x©|jƒD]›\}}|\}}}}    |j    ƒ}
|
j
|ƒ|
j |ƒ|
j |ƒ|
j |ƒ|
j|ƒ|
j|    ƒtjd||||||    fƒqkWqRWdS(Ns$±£´æÔËÓª»î¶¯ÊÀ½çµÈ¼¶ÏÞÖÆ¿ªÆôÐÅÏ¢: %ss\    actName=%s,cfgID=%s,recStartDateStr=%s,recEndDateStr=%s,recLimitWorldLV=%s,recWorldLV=%s(RtGetUniversalRecMgrtDeleteR t,Def_UniversalGameRecType_ActWorldLVLimitInfot GetTypeListtLogtlentitemstAddRect SetStrValue1t SetStrValue2t SetStrValue3t    SetValue1t    SetValue2t    SetValue3( tactWorldLVLimitInfot recDataListR/tcfgLimitInfoDicttcfgIDt    limitInfotrecStartDateStrt recEndDateStrtrecLimitWorldLVt
recWorldLVtrecData((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyt__SaveActWorldLVLimitInfo¤s            "c
    Csi}tjƒjtjƒ}tjd|jƒƒxÇt|jƒƒD]³}|j|ƒ}|j    ƒ}|j
ƒ}|j ƒ}|j ƒ}|j ƒ}|jƒ}    ||kr¾i||<n||||    g|||<tjd||||||    fƒqHW|S(Ns$¼ÓÔØÔËÓª»î¶¯ÊÀ½çµÈ¼¶ÏÞÖÆ¿ªÆôÐÅÏ¢: %ss\    actName=%s,cfgID=%s,recStartDateStr=%s,recEndDateStr=%s,recLimitWorldLV=%s,recWorldLV=%s(RR;R>R R=R?tCounttxrangetAtt GetStrValue1t GetStrValue2t GetStrValue3t    GetValue1t    GetValue2t    GetValue3(
RIRJtindexRRRNROR/RLRPRQ((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyt__GetActWorldLVLimitInfo¶s"            czCsÃd}tjtjƒd}tjtjƒ}tjtjƒd}tj|ƒ}tjƒ}|j    }|dkrzdnd}    ||||    g}
|r²|t
|
kr²t |fS|sÂt |fSd|j |j |j|j    |jf} tjj| tjƒ} tjddƒ} tjddƒ}tjddƒ}i}i}tjƒ}tjƒ}tjƒ}| jƒd}tjtjƒ}tƒ}i}tjd    | |||||||
fƒtjd
||fƒx_tjD]T}||kri||<ntjd |||fƒt||||ƒ}tjd t |ƒƒt!|| |ƒ\}}}}}xË|D]Ã} t"| d ƒs‹gn    | j#ƒ}!t"| dƒs¬gn    | j$ƒ}"t"| dƒsÍgn    | j%ƒ}#| j&ƒ}$| j'ƒ}%| j(ƒ}&t)|| ƒ}'t*|'ƒ}(tjd|$|'|%|&|||| |!|"|#f ƒd})d}*|tj,kr®|'||kri|'tj-6|||'<n|j.|iƒj.|'ƒ}+n|j.|ƒ}+|%sód|j |j |jf}%tjd|%ƒn|&s)d|j |j |jf}&tjd|&ƒn|%j/dƒ},|,r$|$|kr’||$\}-}.}/}0}1tjd|$|-|%|.|&|/|0|1fƒqpn|$|kr¾tjd|$|%|&fƒqpn|$|kr ||$\}2}%}&}3}4tjd|$|%|&|2|3|4fƒqpntj0| ƒ\}%}&n|(tj1krH    |%j/dƒoN|&j/dƒ}5|, o†|5 o†|%j2dƒdko†|&j2dƒdk}6|%j3ƒrs|&j3ƒrst4|%ƒt4|&ƒ}7}8||8dkrítjd|$|%|&|fƒqpn| tj5d|7|ƒ}9| tj5d|8|ƒ}:d|9j |9j |9jf}%d|:j |:j |:jf}&tjd|%|&fƒq |5s…|6s…|,r(    ||kr´tjd|$|%|&|fƒqpn|$|kr||$\};}<}/}0}1tjd|$|;|%|<|&|/|0|1fƒqpn|$|krAtjd|$|%|&t6||$ƒfƒqpn|5rvtj0| ƒ\}%}&tjd |%|&fƒn| tj5dd|ƒ}=| tj5d||ƒ}>tjjd!|%|>j    |>j|>j7ftjƒ}?|=|?koò|>knrE    t"| d"ƒs dn    | j8ƒ}@|@ rN|| krNtjd#|$|=|?|>fƒqpn|@ r¹|| kr¹tjjd$|>j |>j |>jftjƒtj5ddƒ})tjd%|$|)fƒn|| kr%    tjjd$|>j |>j |>jftjƒtj5ddƒ}*d|*j |*j |*jf}*q%    qE    q tjd&|$|%|&fƒqpnÅ|(tj9kr—
|%j/d'ƒ sw    |&j/d'ƒ r—    tjd(|$|%|&fƒqpn|s½    tjd)|$|%|&fƒqpnt4|%d*ƒt4|&d*ƒ}A}B||Bdkr
tjd+|$|%|&|fƒqpn| tj5d|A|ƒ}9| tj5d|B|ƒ}:d|9j |9j |9jf}%d|:j |:j |:jf}&tjd,|%|&fƒnv|(tj:kró
|%j2dƒdksÐ
|&j2dƒdkr tjd-|$|%|&fƒqpq ntjd.|$|'fƒqpt"| d/ƒrF t"| d0ƒrF | j;ƒ}C| j<ƒ}Dn d1}Cd1}Dt"| d2ƒr‹ t"| d3ƒr‹ | j=ƒ}E| j>ƒ}Fn g}Eg}Ft"| d4ƒr² | j?ƒni}Gt"| d5ƒrÓ | j@ƒni}Ht"| d6ƒrô | jAƒni}It |Eƒt |Fƒkr5 tjBd7||$|E|Ffƒqpnt"| d"ƒsJ dn    | j8ƒ}@t"| d8ƒsk dn    | jCƒ}J|Jdkr¾ tjjd9|%tjƒ}Ktjjd9|&tjƒ}LnŸ|Jdkr tjjd9|%tjƒ}Ktjjd:|&tjƒtj5ddƒ}LnHtjjd:|%tjƒ}Ktjjd:|&tjƒtj5ddƒ}Lt"| d;ƒsr dn    | jDƒ}Mtjd<|J|K|L|E|F|Mfƒd}N|K}O|MrÓ |Ktj5d=|M ƒ}N|N}On|Gsß dntE|GjFƒƒ}P|Pdkr+|Ktj5d=|Pƒ}Q|Q|Okr+|Q}Oq+n| |OksC| |LkrVtjd>ƒqpn|+rž| |Kkrž|+d}Rtjd?|Rj&ƒ|$|M|P|Ofƒqpn|+rÝ| |LkrÝ|+d}Rtjd@|Rj&ƒ|$fƒqpnt"| dAƒsòdn    | jGƒ}S|SrätjdB|S|fƒd1}T|j.|iƒ}U|$|Ukr^dC}T|U|$\}V}W}X}Yn$dD}T|%|&|S|f\}V}W}X}Y||kr›i||<n|V|W|X|Yg|||$<|X|YkrätjdE|X|Y|Tfƒqpqäng}Zg}[i}\i}]i}^i}_|K| ko|Lkn}`| |Lk}at }bt }c|E sJ|F rs|K}d|L}e|ZjH|dƒ|[jH|eƒn¯x¬tI|EƒD]ž\}f}g|F|f}hdF| j | j | j|gf}idF| j | j | j|hf}jtjj|itjƒ}dtjj|jtjƒ}e|ZjH|dƒ|[jH|eƒq€W|Nr|Nj | j krg|Nj | j krg|Nj| jkrgtJ}cntjdG|N|cfƒntjdH|ZƒtjdI|[ƒgg}k}l|Cr„|@r/|kjHtjjdF| j | j | j|Cftjƒƒ|ljHtjjdF| j | j | j|Dftjƒƒq„|kjHtjjdJ|%|Cftjƒƒ|ljHtjjdJ|&|DftjƒƒntjdK|kƒtjdL|lƒxtI|ZƒD]\}m}d|[|m}exy|GjKƒD]k\}n}o|dtj5d=|nƒ}p|pj | j krÖ|pj | j krÖ|pj| jkrÖ|o|\|p<tJ}bqÖqÖWxy|HjKƒD]k\}n}o|etj5d=|nƒ}p|pj | j krR|pj | j krR|pj| jkrR|o|]|p<tJ}bqRqRW|Ir³t |Iƒdkr³|Id \}q}rt |Iƒdkr|Idng}s|r|sg}odY\}t}uxœ|qr¾|rr¾|t|ukr¾|td7}t|dtj5d=|q|tƒ}p|p|ekrrPn|pj | j kr&|pj | j kr&|pj| jkr&|o|^|p<tJ}bq&q&Wq³q³W|\sØ|]sØ|^rYtjdN|GjFƒ|\fƒtjdO|HjFƒ|]fƒtjdP|I|^jFƒfƒ|_jL|\ƒ|_jL|]ƒ|_jL|^ƒntjdQ|$|`|a|b|cfƒ|tj,krÄ||kr¡i||<n| |Z|[|_|k|lg|||'<n| |Z|[|_|k|lg||<|`rpi|$tjM6|'tj-6}v|tjNkr2tOjP|K|L|KjQƒ|vtjR<n|*rY|*|vtjS<tjdR|*ƒn| |KjQ}w|K}x|@s~|Er—|Fr—|xtj5d|wƒ7}xn|)r¦|)}xnt4tTjU|xjVƒƒƒ}y|w|vtjW<|y|vtjX<tjdS|@|x|yfƒtjdT|vƒ|tj,kr&|v|||'<q3|v||<qpqpWqãWtjY||
||gƒ}tZ|ƒtjdU|
|fƒtjdV|ƒtjdW|ƒtjdXƒ|r¹t[tJƒntJ|fS(ZNR!iiis%d-%d-%d %02d:%02d:00tOperationActionit    MixServers£===== ¼ÓÔØ±¾ÈÕÔËÓª»î¶¯ÐÅÏ¢: %s, serverGroupID=%s,openServerDay=%s,customMaxServerDay=%s,isMixServer=%s,mixServerDay=%s,maxCustomServerDayMix=%s,reloadSign=%s =====s    ½ñÈÕÖÜ%s, curWorldLV=%ss5¼ÓÔØÔËÓª»î¶¯: actName=%s,platform=%s,serverGroupID=%ss    ¿É´¦ÀíÌõÊý=%stGetPlatformListtGetServerGroupIDListtGetServerGroupIDListExcepts¢    cfgID=%s,actNum=%s,startDateStr=%s,endDateStr=%s,openServerDay=%s,isMixServer=%s,mixServerDay=%s,curDateTime=%s,platformList=%s,serverGroupIDList=%s,Except=%ss%d-%d-%ds7        ¿ªÊ¼ÈÕÆÚΪ¿Õ£¬Ä¬ÈÏÿÌ죬½ñÈÕΪ: startDateStr=%ss5        ½áÊøÈÕÆÚΪ¿Õ£¬Ä¬ÈÏÿÌ죬½ñÈÕΪ: endDateStr=%stLsa        °´ÈÕÆÚÑ­»·µÄÔÚ°´ÈÕÆÚ¿ªÆôµÄʱ¼äÄÚ£¬²»´¦Àí! cfgID=%s,%s(%s) ~ %s(%s) in ymdCfgID=%s,%s ~ %ssd        °´ÈÕÆÚÑ­»·µÄδµ½¿ªÆôÑ­»·ÈÕÆÚ»òÒѽáÊøÑ­»·ÈÕÆÚ£¬²»´¦Àí! cfgID=%s,startDateStr=%s,endDateStr=%ss        °´ÈÕÆÚÑ­»·µÄ»¹Î´Ñ­»·µ½µ±Ç°ÅäÖ㬲»´¦Àí! cfgID=%s,startDateStr=%s,endDateStr=%s,loopCfgIDList=%s,loopIndex=%s,loopTimes=%stWs-sR        µ±Ç°¿ª·þÌ쳬¹ý»î¶¯½áÊø¿ª·þÌ죬²»´¦Àí! cfgID=%s,%s ~ %s < openServerDay(%s)tdayss!        ¿ª·þÌìת»¯ÎªÈÕÆÚ: %s ~ %ssR        °´ÈÕÆÚ/ÖÜ¿ªµÄÔÚ¿ª·þ¶¨ÖÆÏÞÖÆÌìÄÚ£¬²»´¦Àí! cfgID=%s,%s ~ %s,openServerDay=%ssk        ³£¹æ»î¶¯£¬°´ÐÇÆÚ¿ªÆôµÄÔÚ°´ÈÕÆÚ¿ªÆôµÄʱ¼äÄÚ£¬²»´¦Àí! cfgID=%s,%s(%s) ~ %s(%s) in ymdCfgID=%s,%s ~ %ssr        ³£¹æ»î¶¯£¬°´ÐÇÆÚ¿ªÆôµÄδµ½¿ªÆôÑ­»·ÈÕÆÚ»òÒѽáÊøÑ­»·ÈÕÆÚ£¬²»´¦Àí! cfgID=%s,startDateStr=%s,endDateStr=%s, %ss         ÐÇÆÚXת»¯ÎªÈÕÆÚ: %s ~ %ss%s %02d:%02d:%02dt GetIsDayResets‹        °´ÈÕÆÚ/ÖÜ¿ªµÄ¿ªÊ¼ÈÕÆÚÔÚ¿ª·þ¶¨ÖÆÏÞÖÆÌìÄÚ£¬²»´¦Àí! cfgID=%s,curServerOpenDateTime=%s<=curStartDateTime=%s<=customMaxServerDateTime=%ss%d-%d-%d 00:00:00so        ¿ª·þÌìºó¿É¿ªÆôµÄ·ÇÿÈÕÖØÖû! »î¶¯IDÈÕÆÚÌØÊâÉèÖÃΪ¿ª·þ¶¨ÖÆÌì½áÊøºóÒ»Ìì! cfgID=%s,actIDDateTimeSpec=%ssX        ¿ª·þ³£¹æ»î¶¯£¬ÅäÖÃʱ¼ä¸ñʽ²»Ö§³Ö£¬²»´¦Àí! cfgID=%s,startDateStr=%s,endDateStr=%stMixsN        ºÏ·þ»î¶¯£¬ÅäÖ÷ǺϷþÌ죬²»´¦Àí! cfgID=%s,startDateStr=%s,endDateStr=%ss.        ·ÇºÏ·þ·þÎñÆ÷£¬²»´¦Àí! cfgID=%s,%s ~ %sisQ        µ±Ç°ºÏ·þÌ쳬¹ý»î¶¯½áÊøºÏ·þÌ죬²»´¦Àí! cfgID=%s,%s ~ %s < mixServerDay(%s)s!        ºÏ·þÌìת»¯ÎªÈÕÆÚ: %s ~ %ssL        ½ÚÈջ£¬ÅäÖ÷ÇÈÕÆÚ£¬²»´¦Àí! cfgID=%s,startDateStr=%s,endDateStr=%ss:        ·Ç·¨ÅäÖã¬Î´Öª»î¶¯ÀàÐÍ£¬²»´¦Àí! cfgID=%s,actNum=%stGetJoinStartTimetGetJoinEndTimettGetStartTimeListtGetEndTimeListtGetNotifyInfoStarttGetNotifyInfoEndtGetNotifyInfoLoops_        »î¶¯ÅäÖÿªÊ¼¼°½áÊøÊ±¼ä¸öÊý²»Æ¥Åä! actName=%s,cfgID=%s,startHMStrList=%s,endHMStrList=%st GetResetTypes %s 05:00:00s %s 00:00:00tGetAdvanceMinutessf        resetType=%s,startDayDate=%s,endDayDate=%s,startHMStrList=%s,endHMStrList=%s,advanceMinutes=%stminutess        ·Ç»î¶¯Ê±¼ä£¡²»´¦Àí£¡s¦        ÒѾ­´æÔÚÐèÒª´¦ÀíµÄÅäÖÃID(%s)£¡ µ±Ç°ÐèÒªÌáǰ֪ͨ»ò¹ã²¥µÄ»î¶¯Î´´ïµ½»î¶¯¿ªÊ¼Ê±¼ä£¬²»´¦Àí£¡cfgID=%s,advanceMinutes=%s,minNotifyStartMinute=%s,startDayDateJudge=%ssM        ÒѾ­´æÔÚÐèÒª´¦ÀíµÄÅäÖÃID(%s)£¡ µ±Ç°¸ÕºÃ½áÊøµÄʱ¼äµã£¬²»´¦Àí£¡cfgID=%stGetLimitWorldLVs%        limitWorldLV=%s,curWorldLV=%stOldtNewsi        »î¶¯Ê±¼äÄÚ£¬µ«·þÎñÆ÷ÊÀ½çµÈ¼¶Î´´ïµ½¿ªÆô»î¶¯ÊÀ½çµÈ¼¶£¬²»´¦Àí£¡recLimitWorldLV=%s > recWorldLV=%s %ss%d-%d-%d %s:00s3        advanceNoticeDateTime=%s,isAdvanceNotice=%ss        startList=%ss        end  List=%ss%s %s:00s        joinStartTimeList=%ss        joinEndTime  List=%sids'        startNotifyDict: minutes=%s, %ss'        end  NotifyDict: minutes=%s, %ss'        loop NotifyDict: lopInfo=%s, %ss]        ÐèÒª´¦ÀíµÄÔËÓª»î¶¯ÐÅÏ¢: cfgID=%s,isActTime=%s,isEnd=%s,isNotify=%s,isAdvanceNotice=%ss        startDateSync=%ss.        isDayRest=%s,actIDDateTime=%s,actID=%ss        activityInfoDict=%ss8±¾ÈÕÔËÓª»î¶¯ÐÅÏ¢¼ÓÔØÍê±Ï!reloadSign=%s,isRefreshState=%ss    operationTodayActionDict=%ss#    mapServerOperationActionDict=%ss==============================================================(iid(\tPlayerDBGSEventtGetDBGSTrig_ByKeyt Def_ServerDaytDef_IsMixServertDef_MixServerDayt IpyGameDataPYt GetConfigExRt GetServerTimeRtOperationAction_ReloadSignR RRRRtdatetimetstrptimetChConfigtTYPE_Time_FormattGetFuncEvalCfgt
GetFuncCfgt GetPlatformtGetServerGroupIDtIPY_DataRR t"Def_Notify_WorldKey_WorldAverageLvR^R?R(t%__GetOperationActionServerIpyDataListR@t&__GetOperationActionDisableIpyDataInfoR4RaRbRctGetCfgIDt GetStartDatet
GetEndDateR8R:tNoneR*t ActKey_ActNumR)t
startswithtGetOperationActionDateStrR7tcounttisdigittintt    timedeltatstrtsecondRgtActType_MixServerR6RiRjRlRmRnRoRptErrLogRqRrtmintkeysRttappendt    enumeratetTrueRAtupdatet ActKey_CfgIDtOperationActionName_LoginAwardtGameWorldAverageLvtGetWorldLVListByTimeRftActKey_WorldLVListtActKey_StartDateSyncttimetmktimet    timetupletActKey_DayIndext    ActKey_IDt SetConfigExRStDispose_OperationActionState(ztisRefreshStateRtkeyt openServerDayt isMixServert mixServerDayR!t
serverTimetcurHourtreloadSignHourt
reloadSigntcurDateTimeStrt curDateTimetstartDateInCustomCanOpenListtcustomMaxServerDaytmaxCustomServerDayMixtoperationTodayActionDicttmapServerOperationActionDicttplatformt serverGroupIDt
ipyDataMgrt
curWeekdayt
curWorldLVtactWorldLVLimitInfoOldtactWorldLVLimitInfoNewR/tcurServerActIpyDataListtcoverDisableLoopIpyDataInfotdisableLoopCfgIDDicttotherLoopCfgIDDicttcoverDisableWeekIpyDataInfotdisableWeekCfgIDDictR#t platformListtserverGroupIDListtserverGroupIDListExceptRLt startDateStrt
endDateStrR9tactTypetactIDDateTimeSpect startDateSynctcurActTodayInfot actByLoopYmdt loopStartDatet loopEndDatetymdCfgIDt ymdStartDatet
ymdEndDatet loopCfgIDListt    loopIndext    loopTimest    actByWeekt    actByDatetstartServerDayt endServerDaytopenServerDateTimetendServerDateTimet startWeekDatet endWeekDatetcurServerOpenDateTimetcustomMaxServerDateTimetcurStartDateTimet    isDayResttstartMixServerDaytendMixServerDaytjoinStartTimeStrtjoinEndTimeStrtstartHMStrListt endHMStrListtnotifyInfoDictStarttnotifyInfoDictEndtnotifyInfoLoopInfot    resetTypet startDayDatet
endDayDatetadvanceMinutestadvanceNoticeDateTimetstartDayDateJudgetminNotifyStartMinutetminNotifyStartDateTimetactivityIpyDatat limitWorldLVt recInfoTypetworldLVLimitInfoRNRORPRQt    startListtendListtstartNotifyDictt endNotifyDicttloopNotifyDictt
notifyDictt    isActTimetisEndtisNotifytisAdvanceNoticet startDateTimet endDateTimethmIndext
startHMStrtendHMStrt startTimeStrt
endTimeStrtjoinStartTimeListtjoinEndTimeListtdtIndext notifyMinutet
notifyInfotnotifyDateTimet loopMinutest loopNotifyKeytloopNotifyParamListt    loopCountt loopMaxCounttactivityInfoDicttdayIndext actIDDateTimetactID((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyR
Ésˆ     
 
(              ! !!!        )            8            !   % !*      !!!    !!  /,!            
    
!              
 6     8;),
6
 6
 "  
 6
     ##        
  c Cs?t|d|ƒs(tjd|ƒgSg}t|d|ƒƒ}xôt|ƒD]æ}t|d|ƒ|ƒ}t|dƒs…gn    |jƒ}t|dƒs¦gn    |jƒ}    t|dƒsÇgn    |jƒ}
|rë||krëqQn|
rt} x‡|
D]} t    | t
ƒr| |ksst    | t ƒs=t    | t ƒrþt | ƒdkrþ| d|kon| d    knrþt} PqþqþW| rqQqn|    s¦|j|ƒqQxŽ|    D]†} t    | t
ƒrÎ| |ks"t    | t ƒsìt    | t ƒr­t | ƒdkr­| d|ko| d    knr­|j|ƒPq­q­WqQW|S(
Ns
Get%sCounts,ûÓиÃÔËÓª»î¶¯ÀàÐͶÔÓ¦»î¶¯Ê±¼ä±í! actName=%ss Get%sByIndexRaRbRciii(R4RRštgetattrRURaRbRcR t
isinstanceR•tlistttupleR@RŸR( RÀR¾R¿R/RÅt actCfgCounttcfgIndexR#RËRÌRÍtisExcepttserverGroupIDInfo((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyRŠzs>!!! 6     6  c) Cs€i}i}i}i}i}d|j|j|jf}tj|tjƒ}    xM|D]E}
|
jƒ} |
jƒ} |
j    ƒ} t
||
ƒ}| j dƒrD||kr·g||<n||}tj |
ƒ\} } tj| tjƒ}tj| tjƒ}||    ks|    |kr+| | g|| <q›|j | ||gƒqV| j dƒr tj| | |ƒ\}}}||    ks‰|    |krœ| | g|| <q›| | f}||krÁi||<n||}||krg|||g}}||g||<n||\}}|j | ƒqV| jdƒdkrV||krNg||<n||}tj| tjƒ}tj| tjƒ}|j | ||gƒqVqVWi}i}i}x||jƒD]n\}}|j|gƒ}||krõg||<n||}x*|jƒD]\}} |\} } | \}}|\}}}|dt|ƒ}!d}"x^t|ƒD]P\}#}$|#|!kr|$}"|j |$||gƒqf|| | |!|g||$<qfWxk|D]c\}%}}||koç|kns||ko|knrÁ|||%||g||"<qÁqÁWq Wq¾Wi}&x4|jƒD]&\}}|j|gƒ}|j|gƒ}'xó|D]ë\}(}}xk|D]c\}%}}||ko¶|kns×||koÒ|knr|||%||g|&|(<qqWxk|'D]c\}$}}||ko$|knsE||ko@|knrþ|||$||g|&|(<qþqþWqzWqCW||||&|fS(Ns%d-%d-%dReRds-iii(RRRRtChangeStrToDatetimeR‚tTYPE_Time_YmdFormatRŒRRŽR8R‘R’RtGetOperationActionLoopDateR“RAR)R@Rž()R/R¸RÅtactNumYMDIpyDataInfotactNumLoopIpyDataInfotactNumWeekIpyDataInfoRÊRÇtcurDateTimeYmdStrtcurDateTimeYmdR#RLRÎRÏR9tweekIpyDataListRãRäRÕRÖRÜtloopKeytloopIpyDataDictRÚt loopDateInfotymdIpyDataListRØRÙtnowLoopYMDIpyDataInfoRÈRÆtloopIpyDataListtloopInfoRÛt curLoopCfgIDR]t    loopCfgIDR×RÉtloopIpyDatListt    weekCfgID((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyR‹¤sš      
 
 
 
   8(8 8(c(Csà
tjƒrtj|ƒdSttƒ\}}|p8|}|t}|t}tjƒ}tj    ƒ}t
j
j d|j |j |j|j|jftjƒ}x8
tjD]-
}||krÃq«n|tjkrå||jƒ}n ||g}xã    |D]Û    }    d}
tj} d} |    jtjdƒ} ||krÃg}|tjkrn| ||krx||| }qxn
||}t|tƒrÃt|ƒdkrÃ|\} }}}}}xNt|ƒD]@\}}||}||koë|knr¾|d}
Pq¾q¾W|rsx€t|ƒD]W\}}||}||koB|knrTtj} Pq||krtj } qqWn|
r‚tjntj} ||krÀ||\}}t!j"d||ƒqÀqÃntj#|}|tjkrð|d| 7}n|j$|ƒ}tj%|}|tjkr,|d| 7}n|j$|ƒ}| r`||
kr`|| kr`qùntj&d|| ||
|| fƒ|j'||
ƒ|j'|| ƒt(j)|} t(j*|}!|tjkrë| d| 7} |!d| 7}!nt(j+| ƒ}"|    jtj,dƒ}#|    jtj-dƒ}$|"|#krÅtj&d|"|#fƒt(j.| |#ƒ|"rô|tj/kr‚t0j1| | |$ƒqô|tj2kr§t3j1| | |$ƒqô|tj4krÌt5j1| | |$ƒqô|tj6krôt7j1| | |$ƒqôn|#r£|tj8kr?t(j+tj9ƒ}%t(j.|!|%ƒtj&d|%ƒn|tj:kr[t;j<ƒqÂ|tj=krwt>j?ƒqÂ|tj@kr“tAjBƒqÂ|tjCkr¾| r tDjE| |$ƒq qÂ|tjFkrÝtGjH| ƒqÂ|tjIkrütJjK| ƒqÂ|tj/krt0jK| ƒqÂ|tj2kr=t3jK| | ƒqÂ|tj4kr_t5jK| | ƒqÂ|tj6krt7jK| | ƒqÂ|tjLkrÂtMjK| ƒqÂqÜ|tjIkrÜtJj1| ƒqÜntj&d    |"|#fƒ|
rp|tj/krt0jN| | |$ƒqp|tj2kr)t3jN| | ƒqp|tj4krKt5jN| | ƒqp|tj6krpt7jN| | ƒqpn|#r`|"|#kr`|| kr`tj&d
|| fƒ| tjkr·q`| tj kr`|tj/krët0jO| | |$ƒq]|tj2krt3jO| | |$ƒq]|tj4kr5t5jO| | |$ƒq]|tj6kr]t7jO| | |$ƒq]q`n| r¥|tj8kr¥t(j+|!ƒ}&|&|    tjP<tj&d |&ƒn|tjQkrÐ|rh
| rh
tR| ƒqh
n˜|tj:krþ|rh
| rh
t;jStTƒqh
nj|tjUkri    ||
krh
|
rh
d || f}'tj&d |'ƒtjVtjW|'tXtYjYƒƒƒqh
nÿ|tj=kr¼    |r”    | r”    t>jZ| ƒn||
krh
|
dkrh
t>j[ƒqh
n¬|tj@kr
|rç    | rç    tAj\| ƒn||
krh
|
dkrh
tAj]ƒqh
nY|tj^kr:
|rh
| rh
t_| ƒqh
n.|tjCkrh
|rh
| rh
tDj`| ƒqh
n|
|    tja<| |    tjb<tjVtjc||    ƒtj&d|    ƒ|tjkrÊ
|    ||| <qù|    ||<qùWq«WdS(Ns%d-%d-%d %d:%d:00iiis_%ssTÔËÓª»î¶¯±ä¸ü: actName=%s,actNum=%s,preState=%s,state=%s,preStateJoin=%s,stateJoin=%ss'    dbActID±ä¸ü: dbActID=%s,curActID=%ss&    ¼Ç¼»î¶¯¿ªÆôʱÊÀ½çµÈ¼¶: worldLV=%ss'    dbActID²»±ä: dbActID=%s,curActID=%ss.    ²ÎÓë״̬±ä¸ü: preStateJoin=%s,stateJoin=%ss    »î¶¯ÊÀ½çµÈ¼¶: actWorldLV=%ss%s|%ss    Æï³èÊ¢Ñ翪ʼ: relatedID=%ss    sendMapServerMsgDict: %s(dRR    R%tDispose_CrossActStateR
R R R't GetGameWorldR~R€RRRRRRR‚RƒR R(R*R+tActStateJoin_NoneRR)RRR R@RžtActStateJoin_StarttActStateJoin_Endt PlayerControlt WorldNotifyt!Def_WorldKey_OperationActionStatet GetDictByKeyt%Def_WorldKey_OperationActionStateJoinR?tSetDictRwtDef_OperationActIDtDef_OActWorldLVRxR«RªtSetDBGSTrig_ByKeytOperationActionName_BossTrialtPlayerActBossTrialtOnActEndtOperationActionName_XianXiaMJtPlayerActXianXiaMJtOperationActionName_GubaotPlayerActGubaot!OperationActionName_HorsePetTraintPlayerActHorsePetTraintNeedWorldLVOperationActNameListR‰tOperationActionName_BossRebornt GameWorldBosstResetBossRebornPointRRtResetFairyCeremonyRRtResetNewFairyCeremonyRRtOnResetFeastRedPackettOperationActionName_FlashSalet PlayerStoretResetFlashSaleBuyCntt"OperationActionName_GarbageSortingtPlayerActGarbageSortingt
OnActStartt#OperationActionName_FamilyCTGAssisttPlayerActFamilyCTGAssisttOnActInStateRefresht OnActJoinEndtActKey_WorldLVRRtSetBossRebornNeedPointRŸt!OperationActionName_HorsePetFeastR,t(Def_Notify_WorldKey_ActionBossRebornSignR•R§RtOnFairyCeremonyEndRtOnNewFairyCeremonyEndRRRt ActKey_StatetActKey_StateJoinR-((t reloadRefreshR R!R¼R.t    gameWorldR¸R/tcurActMapInfoDictListR0tstatet    stateJoinR#R9ttodayActInfoListRþRÿRRRtdIndexRR    tjIndextjoinStartDateTimetendJoinDateTimet    notifyKeyt    paramListtdictNametpreStatet dictNameJoint preStateJointdbOperationActIDKeytdbOperationActWorldLVKeytdbActIDtcurActIDRtworldLVt
actWorldLVt    relatedID((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyR­ sX   
 
          
!
 
 
        #         )      c
Cs|s
dSt|jƒƒt|jƒƒkr2dStj|ƒ\}}tjƒ}|jƒ||_||_    g|_
x^t |jƒƒD]J\}}|jƒ|}tj ƒ}||_ ||_|j
j|ƒq‹Wt|j
ƒ|_|jƒ|_|jƒ|_|sytjƒ}    xkt|    jƒƒD]D}|    j|ƒ}|dks.|jƒ rbq.ntj||ƒq.Wntj||ƒdS(N(R@RlRmRR’tChPyNetSendPackttagGCMultiExpRateInfotCleart    StartDatetEndtDatet ActivityTimeRžttagGCMultiExpRateTimet    StartTimetEndtTimeRtActivityTimeCountt
GetLVLimittLimitLVt GetAddExpRatet
AddExpRatetGetPlayerManagerRUtGetPlayerCounttGetPlayerByIndexRt    GetInitOKt NetPackCommont SendFakePack(
R#RRÎRÏtmultiExpRateInfotit    startTimetendTimettimeInfot playerManager((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyRþs8$ 
                      cCsø|s
dStj|ƒ\}}tjƒ}|jƒ||_||_|jƒ|_|j    ƒ|_
|j ƒ|_ |sätj ƒ}xkt|jƒƒD]D}|j|ƒ}|dks™|jƒ rÍq™ntj||ƒq™Wntj||ƒdS(N(RR’RttagGCMultiRealmPointInfoRƒR„R…t GetMultipletMultipleR‹RŒt GetPointLimitt
LimitPointRRURR‘RR’R“R”(R#RRÎRÏtmultiRealmPointInfoRšR–((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyR s& 
         c- Csßd}tjtjƒd}tjtjƒ}tjtjƒd}|||g}tj|ƒ}|r€|d|kr€|dSg}tjƒ}t    |j
ƒdƒ}t t j ƒƒ}    tj |    tjƒ}
tjƒ} tjddƒ} tjddƒ} tjdƒtjd| ||fƒtjd| ƒtjd    ||| fƒg}g}|| kr“tjd
| ƒ}|sŠg}ntjd t|ƒƒg}g}x­|D]¥}|jƒ}|jƒ}||krî|j|ƒn|j|ƒ|jƒ|kr´|j|ƒd}|j||jƒ|gƒtjd |||fƒq´q´Wtjd |ƒtjd|ƒtjd|ƒn|rš|| kršg}tjƒ}x»t|jƒƒD]§}|j|ƒ}|jƒ}|jƒ}||kr|j|ƒn|jƒ|krÊ|j|ƒd}|j||jƒ|gƒtjd|||fƒqÊqÊWtjd|ƒtjd|ƒn tjdƒtjdƒtjƒ}|j ƒ}x+t|ƒD]}|j!|ƒ}|jƒ}|t"j#gkr#tjd|ƒqÙn||krFtjd|ƒqÙn|j$ƒ}|s|j|gƒtjd|ƒqÙnd|krº||krºtjd||j%ƒfƒqÙnd|krÐ|dn||}d}|j|||gƒqÙWtjdƒx—|D]\}}}|jƒ}|j&ƒ}g}g} i}!i}"d}#x|D]\}$}%d|
|$|%df}&t'j'j(|&tj)ƒ}'|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<qWqZW|j||| |!|"gƒtjd|||| |!|"fƒqWtj0|||gƒ}tjd|ƒtjd ƒ|dS(!NtTodayDailyActionInfoiiR_R`s ===== ¼ÓÔØ½ñÌìÈÕ³£»î¶¯ÐÅÏ¢ =====s$¿ª·þÊÇÐÇÆÚ%s, ¿ª·þµÚ%sÌì, µ±Ç°ÐÇÆÚ%ss×î´óÓÐЧ¶¨ÖÆ¿ª·þÌì: %ss,ÊÇ·ñºÏ·þ: %s, ºÏ·þÌì: %s, ×î´ó¶¨ÖƺϷþÌì: %stDailyActionCustoms    ¶¨ÖƵĿª·þÈÕ³£»î¶¯ÌõÊý: %ss@    Ôö¼Ó±¾ÈÕ¿ª·þÈÕ³£»î¶¯ÐÅÏ¢: customType=%s,dailyID=%s,dataID=%ss"    ¶¨ÖƵĿª·þÈÕ³£ÅäÖñíIDÁбí: %ss     ¶¨ÖƵĿª·þÈÕ³£»î¶¯IDÁбí: %ss!    ½ñÌì¶¨ÖÆµÄ¿ª·þÈÕ³£±íIDÁбí=%sis@    Ôö¼Ó±¾ÈպϷþÈÕ³£»î¶¯ÐÅÏ¢: customType=%s,dailyID=%s,dataID=%ss     ¶¨ÖƵĺϷþÈÕ³£»î¶¯IDÁбí: %ss!    ½ñÌì¶¨ÖÆµÄºÏ·þÈÕ³£±íIDÁбí=%ss0    ³¬¹ý×î´ó¶¨ÖÆ¿ª·þÌ죬²»¶¨ÖÆ£¬×ß³£¹æÈÕ³£ÅäÖã¡s    ´¦Àí³£¹æÈÕ³£»î¶¯ÅäÖÃs$    ²»ÐèÒª´¦ÀíµÄÈÕ³£»î¶¯! dailyID=%ss:    ³£¹æ»î¶¯IDÅäÖÃÊǽñÌìµÄ¶¨ÖƻID£¬²»´¦Àí£¡: dailyID=%ss(    Ôö¼Ó±¾ÈÕ³£¿ªÈÕ³£»î¶¯ÐÅÏ¢: dailyID=%st0s5    ²»ÊÇÈÕ³£»î¶¯¿ªÆôÐÇÆÚ: dailyID=%s,openWeekLimit=%ss    -----------------------s%s %02d:%02d:%02dRssm    Ôö¼Ó±¾ÈÕÏÞʱÈÕ³£»î¶¯ÐÅÏ¢: customType=%s,dailyID=%s,openList=%s,overList=%s,goonStateDict=%s,notifyDict=%ss%±¾ÈÕÈÕ³£»î¶¯ÐÅÏ¢¼ÓÔØÍê±Ï! loadSign=%ss==============================================================(1RwRxRyRzR{R|R}RR~R—RR•R§tChangeTimeNumToStrR‚R'tGameWorldProcesstGetOpenServerWeekdayR…R?tGetIpyGameDataListNotLogR@tGetIDt
GetDailyIDRtGetOpenServerDaytGetOpenTimeListRˆRUtGetDailyActionCustomMixCounttGetDailyActionCustomMixByIndextGetMixServerDaytGetDailyActionCounttGetDailyActionByIndexR tDailyActionID_CrossBattlefieldtGetOpenTimeDictRœt GetNotifyInfoR€RRƒRRR–t GetDurationR)RAR¬(-R¯R°R±R²tloadSignR¡ttodayActionInfotdayTimetweekDaytcurTimet
curDateStrtopenServerWeekdaytcurMaxCustomServerDayR»tcustomDailyIDListtdailyTimeInfoListtcustomIpyDataListt customIDListttodayCustomIDListt customIpyDatatdataIDtdailyIDt
customTypeRÀR–tdailyActionCountt dailyIpyDatat openTimeDictt openTimeListR#tnotifyInfoDicttopenListtoverListt goonStateDictRt    OpenStateRRt openTimeStrt openDateTimet overDateTimetopenStateTimeListRRR((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyt__GetTodayDailyActionInfo;sÞ              !     !           
     cCs$tjƒrtjƒntƒ}|s,dStjƒ}tjƒ}|j|jf}xÇ|D]¿}|d}d}t    |ƒdkrŽd}nÎ|d\}}}    }
||kr¹d}nq||krÎd}n\xY|    j
ƒD]K\} } x<| D]4} | d|ko| dknrî| }PqîqîWqÛW||
kr\|
|\}}t j d||ƒnt j|}|j|ƒ}||krŠq]n|rÒ|t jkrÒtjƒtjt j|ttjƒƒƒqÒntj||ƒ|j||ƒtjd|||fƒt|||ƒq]WdS(Niis7ÈÕ³£»î¶¯×´Ì¬±ä¸ü: dailyActionID=%s,state=%s,dictName=%s(RR    R%tDispose_CrossDailyActionStateRÓR;R~RRR@RAR?R@R t$Def_Notify_WorldKey_DailyActionStateRBtDailyActionID_FamilyRobBossRSt(SyncMapServer_HorsePetRobBossPlayerCountR,ReR•R§RDR?t __DoLogic_GameServer_ActionState(ttodayDailyActionInfoRkR·t curHourMinutet
actionInfot dailyActionIDRmRËRÌRÍRt    goonStateRÒt dateTimeInfoRtRuRvt beforeState((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pytDispose_DailyActionStateÌsN         
               $    
)cCsÕtjƒ}tjƒr%tjƒnIxFtjD];}tj|}|j|ƒ}|r/tj    ||ƒq/q/Wt
ƒ}|sdSxM|D]E}|d}tj |}|j|ƒ}|rˆtj    ||ƒqˆqˆWdS(Ni( RR;R    R%t"SendMapServerCrossDailyActionStateR tCrossDailyActionIDListt)Def_Notify_WorldKey_CrossDailyActionStateRBR,RÓRÕ(RkRÜRvRmRÙRÛ((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pytSendMapServerDailyActionStates$         
 cCsd}tj|ƒ}|dkr™i}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ƒi}xÖt|jƒƒD]Â}|j|ƒ}|jƒ}|jƒ}|jƒ}|j
ƒ|j ƒ}    }
|j ƒ|j ƒ} } |j|gigƒ\}}|j||    |
gƒ|| | g||<||g||<qWg}x_|jƒD]Q\}}|\}}x6|jƒD](\}}||kr|j|ƒqqWqÜW|jƒtj||||gƒ}tjdƒtjd|ƒtjd|ƒtjd|ƒn|S(NtFBStateEndTimeNotResets1¼ÓÔØ¸±±¾×´Ì¬½áÊøÊ±¼ä²»ÐèÒªÖØÖÃ״ֵ̬µÄÊý¾ÝIDÁбí:s    ²»ÐèÒªÖØÖõij£¹æ³£¹æID: %ss    ²»ÐèÒªÖØÖõĿª·þ¶¨ÖÆID: %ss    ²»ÐèÒªÖØÖõĺϷþ¶¨ÖÆID: %s(R|R}RRˆRUtGetFBStateTimeCounttGetFBStateTimeByIndexR¨t GetDataMapIDtGetStartWeekdayt GetStartHourtGetStartMinutet
GetEndHourt GetEndMinuteR)RRAtsorttGetFBStateTimeCustomCounttGetFBStateTimeCustomByIndextGetOpenServerWeekRªtGetFBStateTimeCustomMixCounttGetFBStateTimeCustomMixByIndexR®R¬RR?(R¯tnotResetIDListtmapStateTimeDictRÀR–tfbStateTimeIpyDataRÃt    dataMapIDt startWeekDayt    startHourt startMinutet
endWeekDaytendHourt    endMinutet startTimeListt endTimeDicttFBStateEndTimeNotResetIDListR™R˜tcustomStateTimeDictRÂtopenWeektopenDayt"FBStateEndTimeNotResetCustomIDListtcustomMixStateTimeDictt
openMixDayt%FBStateEndTimeNotResetCustomMixIDList((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyt!__GetFBStateEndTimeNotResetIDList*s„    &   
 
 
 c    Csd}tjtjƒd}tjtjƒ}tjtjƒd}|||g}tj|ƒ}|r€|d|kr€|dStjtjƒd}tjƒ}|j    ƒd|j
|j }}}    t j ƒ}
|
dkrótjd|
ƒgStjddƒ} tjddƒ} tjdƒtjd|
||||    fƒtjd    | ƒtjd
||| fƒtjƒ} g}g}|| krÅtjd |
ƒ}|s´g}ntjd t|ƒƒg}g}xµ|D]­}|jƒ}|jƒ}||kr|j|ƒn|j|ƒ|jƒ|krÞ|j|ƒd||}}}|j||||gƒtjd ||fƒqÞqÞWtjd|ƒtjd|ƒtjd|ƒn|rÔ|| krÔg}tjƒ} xÃt| jƒƒD]¯}| j|ƒ}|jƒ}|jƒ}||krE|j|ƒn|jƒ|krü|j|ƒd||}}}|j||||gƒtjd||fƒqüqüWtjd|ƒtjd|ƒn tjdƒtjdƒxét| jƒƒD]Õ}| j|ƒ}|jƒ}|jƒ}||krWtjd||fƒqnd|jƒ|jƒ}}}||kr¦tjd||||fƒqn|j||||gƒtjd||fƒqWtj|||gƒ}tjd|ƒtjdƒ|dS(NtTodayFBStateTimeInfoiis.»ñÈ¡¿ª·þÊÇÐÇÆÚ¼¸Êý¾Ý´íÎó£¡openServerWeekday=%sR_R`s"===== ¼ÓÔØ½ñÌ츱±¾×´Ì¬Ê±¼ä±í =====s0¿ª·þÊÇÐÇÆÚ%s, ¿ª·þµÚ%sÌì, µ±Ç°ÐÇÆÚ%s,%sµã%s·Ö £¡s×î´óÓÐЧ¶¨ÖÆ¿ª·þÌì: %ss,ÊÇ·ñºÏ·þ: %s, ºÏ·þÌì: %s, ×î´ó¶¨ÖƺϷþÌì: %stFBStateTimeCustoms    ¶¨ÖƵĿª·þ¸±±¾»î¶¯ÌõÊý: %ss9    ½ñÌìÒª´¦ÀíµÄ¿ª·þ¸±±¾×´Ì¬ÅäÖÃ: customType=%s,dataID=%ss    ¶¨ÖƵĿª·þ¸±±¾±íIDÁбí: %ss    ¶¨ÖƵĿª·þ¸±±¾µØÍ¼Áбí: %ss!    ½ñÌì¶¨ÖÆµÄ¿ª·þ¸±±¾±íIDÁбí=%sis9    ½ñÌìÒª´¦ÀíµÄºÏ·þ¸±±¾×´Ì¬ÅäÖÃ: customType=%s,dataID=%ss    ¶¨ÖƵĺϷþ¸±±¾µØÍ¼Áбí: %ss!    ½ñÌì¶¨ÖÆµÄºÏ·þ¸±±¾±íIDÁбí=%ss4    ³¬¹ý×î´ó¶¨ÖÆ¿ª·þÌ죬²»¶¨ÖÆ£¬×ß³£¹æ¸±±¾×´Ì¬Ê±¼ä£¡s    ´¦Àí³£¹æ¸±±¾×´Ì¬Ê±¼äÅäÖÃs;    dataID=%s,dataMapID=%s, ÔÚ¶¨ÖƵĸ±±¾µØÍ¼ÁбíÀï,²»´¦Àí£¡sU    dataID=%s,dataMapID=%s, ²»ÊDZ¾ÌìµÄ¸±±¾»î¶¯,²»´¦Àí£¡ curWeekDay=%s,startWeekDay=%ss5    ½ñÌìÒª´¦ÀíµÄ¸±±¾×´Ì¬ÅäÖÃ: customType=%s,dataID=%ss)±¾ÈÕ¸±±¾»î¶¯×´Ì¬ÐÅÏ¢¼ÓÔØÍê±Ï! loadSign=%ss==============================================================( RwRxRyRzR{R|R}RR~RRRR¥R¦RšR…R?RˆR§R@R¨RèRRªRURòRóR®RæRçRéR¬(R¯R°R±R²RµR    R¸t
curWeekDayR´t    curMinuteR»R¼R»RÀtcustomMapIDListtfbStateTimeInfoListR¿RÀRÁRÂRÃR÷RÅRøRûR–Rö((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyt__GetTodayFBStateTimeInfoys¢ $                                 c# CsÂtƒ\}}}tjƒ}|jƒd|j|j}}}|d|d|}tjƒ}tƒ}    xN|    D]F\}
} } } | jƒ}| j    ƒ}| j
ƒ| j ƒ}}| j ƒ| j ƒ}}| dkrå|} n| dkrú|} n| d|d|}| d|d|}| jƒ}|rÔ|tjd| |ƒ}tj|j|j|j||dƒ}||}|jdd|jd}||krÔ||\}}tjd||ƒqÔntt}}||kröt}n¤||krQ|
dkr||ksE|
d    kr2||ksE|
rš||kršt}qšnI|r~||kr~||kpx||k}n||ko•|kn}|r¯d}d}n$|rt| jƒ}| jƒ}nqttj|} |j| ƒ|krEtj| |ƒ|j | |ƒ|r(t!|ƒntj"d
||| fƒntj#|}!|j|!ƒ}"|"|krttj|!|ƒ|j |!|ƒtj"d |||!fƒt$|!||"ƒqtqtWdS( Nii'idiRfiii<is>¸±±¾ÊÇ·ñ¿É½øÈë±ä¸ü: dataMapID=%s,updCanEnter=%s,canEnterKey=%ss=¸±±¾×´Ì¬±ä¸ü: dataMapID=%s,updStateValue=%s,fbFuncStateKey=%s(%RRR~RRRR;RR¨RèRêRëRìRítGetNotifyInfoDictR€R–RRRRftsecondsR?R@R RŸt GetCanEntert GetStateValueR tDef_Notify_WorldKey_FBCanEnterRBR,RDtSaveFBOpenRecordR?tDef_Notify_WorldKey_FBFuncStateRØ(#RRRR¸R R´R t
curTimeWHMRkRRÅRøRûR#RÃR÷RùRúRüRýt startTimeWHMt
endTimeWHMRÊRt diffDateTimet
diffMinuteRtRutisUpdatetisResett updCanEntert updStateValuet canEnterKeytfbFuncStateKeyRß((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pytDispose_FBStateTimeØsv $                      '
                  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(RR~RRR t*Def_UniversalGameRecType_LimitFBOpenRecordR;R>RtrangeRTRVRZtevalRWRBRFRCR—RR@R,t Def_Notify_WorldKey_FBOpenRecord( tmapIDR¹t    curDayStrt fbOpenRecordtrecTypetuniversalRecMgrtrecTypeListDatat findRecDataR]tuniversalRecDatatrecMapIDt
recordList((siE:\SnxxServerCode\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 R#RR;R>R$RTRVRZR%RW(R)R*R+R,R]R.R/R0((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pytGetFBOpenRecordbs      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(RR;R|RˆRURæRçRèRRR RRBR,Rt*Def_Notify_WorldKey_FBEnterTimeLimiitMapIDR1R&( tfbEnterTimeLimitMapIDListt sendMapIDListRkRÀR–RöR÷R tcanEnterR!t fbFuncStateR)((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pytSendMapServerFBFuncStateos.          cCsÙ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( RžtATTR_CALL_TIMER4RŸRR?RttypeRR‚tDef_Cmp_Greatert Def_Cmp_Lowert Def_Cmp_Equ(R¹R™R]tcallObjt
curCallObjtwday((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pytCompareActTime•s$  cCsH|s
tStj|dƒ|ko;tj|dƒknrDtStS(Nii(RŸRtGetDateTimeByStrR (R¹tactSect((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyt IsAtActTime¹s &icCsC|tjtjkr)tj||ƒn|tjtjkrOtj    |ƒnð|tjtj
krxt j ||ƒnÇ|tjtj kr¡tj||ƒnž|tjtjkrÇtj|ƒnx|tjtjkrítj|ƒnR|tjtjgkrtj|ƒn)|tjtjgkr?tj|ƒndS(N(R RÕtDailyActionID_FamilyPartytPlayerFamilyPartytFamilyPartyStateChangeRR‚tDef_FBMapID_FamilyWartGameWorldFamilyWartOnFamilyWarStateChangetDef_FBMapID_XMZZt
PlayerXMZZtOnXMZZStateChangetDef_FBMapID_FamilyInvadetPlayerFamilySWRHtOnSWRHStateChangeRÖRStOnHorsePetRobBossActionChangetDailyActionID_CrossReamPKt CrossRealmPKt$OnCrossRealmPKDailyActionStateChangetDailyActionID_FamilyBoss1tPlayerFamilyBosstOnAllFamilyBossStateChangetDailyActionID_HorsePetBosstPlayerHorsePetBosstOnHorsePetBossStateChange(RvtisOpenRß((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyRØÌs"(DR‚R€RR?R RwRRRHRER|RKRNRSRRRR_R\RIRLRNRPRR£RURXR%R¥RR“RYttypesRR§R'tTime_YmdFormatR8R$RR R'R$R2RR8R:RSR^RŸR
RŠR‹R R­RRRÓRàRäRRR"RR1R7R@RCRØ(((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyt<module>sx                                        .                 ÿ²    *    h ò "     ‘    D        O    _    f    $         &    $