hxp
2018-09-29 60374569af779a2078b5aa37b50dec83fd29fcf2
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
A|®[c@sQddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlmZddlZdZejZdddddd    gZed
ƒ\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(tIntTypeitweekdaytyeartmonthtdaythourtminuteicCsÕ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ƒ}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((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyt!SendMapServerOperationActionState[s
   cECs d}tjtjƒd}tj|ƒ}tjƒ}|j}|dkrRdnd}d||f}|rˆ|t|krˆt    |fSd|j
|j |j |j|j f}tjj|tjƒ}    t}
i} i} tjƒ} tjƒ}tjd|    | ||
|fƒx~
tjD]s
}t|| |ƒ}tjd|t|ƒfƒg}g}i}d}xò    |D]ê    }|jƒ}|jƒ}|jƒ}tjd    ||jƒ|jƒ||||    fƒ|j ƒr¶|j ƒr¶t!|ƒt!|ƒ}}||dkr0tjd
||||fƒqpn|    tj"d ||ƒ}|    tj"d ||ƒ}d |j
|j |j f}d |j
|j |j f}tjd ||fƒn/||
kråtjd||||fƒqpnt#|dƒrt#|dƒr|j$ƒ}|j%ƒ}n g}g}t#|dƒrE|j&ƒni}t#|dƒrf|j'ƒni} t#|dƒr‡|j(ƒni}!t|ƒt|ƒkrÈtj)d||||fƒqpnt#|dƒsÝdn    |j*ƒ}"|"dkr0tjjd|tjƒ}#tjjd|tjƒ}$nHtjjd|tjƒ}#tjjd|tjƒtj"d dƒ}$t#|dƒsdn    |j+ƒ}%tjd|"|#|$|||%fƒg}&g}'i}(i})i}*t    }+t    },t    }-t    }.| s| rt|#}/|$}0|&j,|/ƒ|'j,|0ƒ|#|    ko=|$knrn|j,|/ƒ|j,|0ƒt-}+|    |$k}.qnnú|#|    ko‹|$knrn|    |$k}.xÏt.|ƒD]¾\}1}2||1}3d|    j
|    j |    j |2f}4d|    j
|    j |    j |3f}5tjj|4tjƒ}/tjj|5tjƒ}0|&j,|/ƒ|'j,|0ƒ|j,|/ƒ|j,|0ƒt-}+q©Wn|%rê|#rê|#tj"d|% ƒ}6|6j
|    j
krÐ|6j |    j krÐ|6j |    j krÐt-}-ntjd|6|-fƒntjd|&ƒtjd|'ƒtjd|ƒtjd |ƒxt.|&ƒD]\}7}/|'|7}0xy|j/ƒD]k\}8}9|/tj"d|8ƒ}:|:j
|    j
kr^|:j |    j kr^|:j |    j kr^|9|(|:<t-},q^q^Wxy| j/ƒD]k\}8}9|0tj"d|8ƒ}:|:j
|    j
krÚ|:j |    j krÚ|:j |    j krÚ|9|)|:<t-},qÚqÚW|!r;t|!ƒd!kr;|!d! \};}<t|!ƒd!kr|!d!ng}=|<|=g}9d.\}>}?xœ|;rF    |<rF    |>|?krF    |>d7}>|/tj"d|;|>ƒ}:|:|0krúPn|:j
|    j
kr®|:j |    j kr®|:j |    j kr®|9|*|:<t-},q®q®Wq;q;W|(s`    |)s`    |*rá    tjd#|j0ƒ|(fƒtjd$| j0ƒ|)fƒtjd%|!|*j0ƒfƒ|j1|(ƒ|j1|)ƒ|j1|*ƒn|+ rü    |, rü    |- rü    qpntjd&||-|+|.|,fƒ|+s(
|-rp| s<
|+rZ |. rZ |}i|tj26}@|#|    koi
|$knr% d}A|#}Bt#|d'ƒs
dn    |j3ƒ}C|Cs­
|rÓ
|rÓ
|    |#j4}A|Btj"d |Aƒ7}Bnt!t5j6|Bj7ƒƒƒ}D|A|@tj8<|D|@tj9<tjd(|C|B|Dfƒn|j:ƒ|j:ƒ|@| |<tjd)|@ƒqZ qpqpW|sv |sv |sv |r||||g| |<qqWtj;||| | gƒ}tjd*||fƒtjd+| ƒtjd,| ƒtjd-ƒ|r t<t-ƒnt-|fS(/NRiiis%s_%ss%d-%d-%d %02d:%02d:00sf===== ¼ÓÔØ±¾ÈÕÔËÓª»î¶¯ÐÅÏ¢: %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=%stGetStartTimeListtGetEndTimeListtGetNotifyInfoStarttGetNotifyInfoEndtGetNotifyInfoLoops_        »î¶¯ÅäÖÿªÊ¼¼°½áÊøÊ±¼ä¸öÊý²»Æ¥Åä! 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=%ss%d-%d-%d %s:00tminutess3        advanceNoticeDateTime=%s,isAdvanceNotice=%ss        startList=%ss        end  List=%ss        needStartList=%ss        need  EndList=%siids'        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_FormattMaxCustomServerDayt GetServerIDtIPY_DatatLogR    Rt%__GetOperationActionServerIpyDataListtlentNonetGetCfgIDt GetStartDatet
GetEndDatet
GetActMarktGetServerIDListtisdigittintt    timedeltathasattrR*R+R,R-R.tErrLogR/R0tappendtTruet    enumeratetitemstkeystupdatet ActKey_CfgIDR2R)ttimetmktimet    timetupletActKey_DayIndext    ActKey_IDtsortt SetConfigExtDispose_OperationActionState(EtisRefreshStatetkeyt openServerDayRt
serverTimetcurHourtreloadSignHourt
reloadSigntcurDateTimeStrt curDateTimetcustomMaxServerDayRtmapServerOperationActionDicttserverIDt
ipyDataMgrR$tcurServerActIpyDataListt needStartListt needEndListtneedNotifyDicttactivityIpyDataRtcfgIDt startDateStrt
endDateStrtstartServerDayt endServerDaytopenServerDateTimetendServerDateTimetstartHMStrListt endHMStrListtnotifyInfoDictStarttnotifyInfoDictEndtnotifyInfoLoopInfot    resetTypet startDayDatet
endDayDatetadvanceMinutest    startListtendListtstartNotifyDictt endNotifyDicttloopNotifyDictt
isActivitytisNotifytisAdvanceNoticetisEndt startDateTimet endDateTimethmIndext
startHMStrtendHMStrt startTimeStrt
endTimeStrtadvanceNoticeDateTimetdtIndext notifyMinutet
notifyInfotnotifyDateTimet loopMinutest loopNotifyKeytloopNotifyParamListt    loopCountt loopMaxCounttactivityInfoDicttdayIndext actIDDateTimet    isDayResttactID((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyRpsT     
(              )  !!!    ! ,!         
      6    
6
 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(tgetattrtxrangeRHttupleRIRRORRRPt
isinstanceRKtlistRCR:(RjRiR$t actGroupDictt actCfgCounttcfgIndexRtactMarkt serverIDTupletserverIpyDataDictt ipyDataListRktgeneralIpyDataListt    isGeneralt serverIDInfo((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyRBPs:  
 6
 cCs'ttƒ\}}|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Û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(7RR:RRRRR8R;R<RRRRRRR=R    RRDtindexRQt PlayerControlt WorldNotifyRRtSetDictRR3tDef_OperationActIDRZR4tSetDBGSTrig_ByKeytNeedWorldLVOperationActNameListt"Def_Notify_WorldKey_WorldAverageLvtDef_OActWorldLVtOperationActionName_BossRebornt GameWorldBosstResetBossRebornPointR R tResetFairyCeremonytActKey_WorldLVR
R tOperationActionName_CostRebatetSetBossRebornNeedPointRPRtOnFairyCeremonyEndRRRR R!RA(t reloadRefreshRRRR"R#RfR$R&RR€Rt
notifyDicttdIndexR‰RŠt    notifyKeyt    paramListR%tpreStateR'tdbOperationActIDKeytcurActIDtworldLVt
actWorldLV((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyR]us„ 
 
         
 
   '       $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("RCR*R+R3R4R5tChPyNetSendPackttagGCMultiExpRateInfotClearRtGetOperationActionDateStrRFt    StartDateRGtEndtDatet ActivityTimeRQttagGCMultiExpRateTimet    StartTimetEndtTimeROtActivityTimeCountt
GetLVLimittLimitLVt GetAddExpRatet
AddExpRatetGetPlayerManagerR tGetPlayerCounttGetPlayerByIndexRDt    GetInitOKt NetPackCommont SendFakePack(    RRR`tmultiExpRateInfotit    startTimetendTimettimeInfot playerManager((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyR ßs8$ 
              cCs|s
dStjtjƒd}tjƒ}|jƒtj|jƒ|ƒ|_    tj|j
ƒ|ƒ|_ |j ƒ|_ |jƒ|_|sútjƒ}xkt|jƒƒD]D}|j|ƒ}|dks¯|jƒ rãq¯ntj||ƒq¯Wntj||ƒdS(Ni(R3R4R5RÉttagGCMultiRealmPointInfoRËRRÌRFRÍRGRÎt GetMultipletMultipleRÔRÕRØR RÙRÚRDRÛRÜRÝ(RRR`tmultiRealmPointInfoRãRß((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyRs$ 
 c)
Cs5d}tjtjƒd}tj|ƒ}|rI|d|krI|dSg}tjƒ}t|jƒdƒ}t    t
j
ƒƒ}tj |t j ƒ}tjƒ}t|d}    tjdƒtjd|||fƒtjd|    ƒg}
g} ||    krtjd|ƒ} tjdt| ƒƒg} g}x­| D]¥}|jƒ}|jƒ}||
krx|
j|ƒn| j|ƒ|jƒ|kr>|j|ƒt}| j||jƒ|gƒtjd    |||fƒq>q>Wtjd
| ƒtjd |
ƒtjd |ƒn tjd ƒtjdƒtjƒ}|jƒ}xüt|ƒD]î}|j|ƒ}|jƒ}||
kr tjd|ƒq\n|jƒ}|sÙ|j|gƒtjd|ƒq\nd|kr||krtjd||jƒfƒq\nd|kr*|dn||}| 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<qrWq®W|j|||||gƒtjdt    |ƒ|||||fƒqbWtj+|||gƒ}tjdƒtjdƒ|dS(NtTodayDailyActionInfoiis ===== ¼ÓÔØ½ñÌìÈÕ³£»î¶¯ÐÅÏ¢ =====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:%02dR1sg    Ôö¼Ó±¾ÈÕÈÕ³£»î¶¯ÐÅÏ¢: isCustom=%s,dailyID=%s,openList=%s,overList=%s,goonStateDict=%s,notifyDict=%ss±¾ÈÕÈÕ³£»î¶¯ÐÅÏ¢¼ÓÔØÍê±Ï!s==============================================================(,R3R4R5R6R7RR8tstrRRKRVtChangeTimeNumToStrRtTYPE_Time_YmdFormattGameWorldProcesstGetOpenServerWeekdayR>RAtGetIpyGameDataListNotLogRCtGetIDt
GetDailyIDROtGetOpenServerDayRPtGetOpenTimeListR@tGetDailyActionCountR tGetDailyActionByIndextGetOpenTimeDictRSR:t GetNotifyInfoR;R<R=RRRLt GetDurationRRRR\()R_R`RèttodayActionInfotdayTimetweekDaytcurTimet
curDateStrtopenServerWeekdaytcurMaxCustomServerDaytcustomDailyIDListtdailyTimeInfoListtcustomIpyDataListt customIDListttodayCustomIDListt customIpyDatatdataIDtdailyIDtisCustomRjtdailyActionCountRßt dailyIpyDatat openTimeDictt openTimeListRtnotifyInfoDicttopenListtoverListt goonStateDictRÀt    OpenStateRRt openTimeStrt openDateTimet overDateTimetopenStateTimeListR’R“R”((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyt__GetTodayDailyActionInfos¨          !           
    $  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(RRRR8RRRCRRR¯R°R    t$Def_Notify_WorldKey_DailyActionStateRtDailyActionID_FamilyRobBossR¸t(SyncMapServer_HorsePetRobBossPlayerCountR R±RAt __DoLogic_GameServer_ActionState(ttodayDailyActionInfoR#Rût curHourMinutet
actionInfot dailyActionIDR&RRRRÀt    goonStateRt dateTimeInfoRÂRÃR%((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pytDispose_DailyActionStatesF       
               $   cCsstƒ}|sdStjƒ}xM|D]E}|d}tj|}|j|ƒ}|r&tj||ƒq&q&WdS(Ni(RRRR    RRR (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(R6R7RDR@R tGetFBStateTimeCounttGetFBStateTimeByIndexRñt GetDataMapIDtGetStartWeekdayt GetStartHourtGetStartMinutet
GetEndHourt GetEndMinuteRRORRR[tGetFBStateTimeCustomCounttGetFBStateTimeCustomByIndextGetOpenServerWeekRóR\RRA(R_tnotResetIDListtmapStateTimeDictRjRßtfbStateTimeIpyDataRt    dataMapIDt startWeekDayt    startHourt startMinutet
endWeekDaytendHourt    endMinutet startTimeListt endTimeDicttFBStateEndTimeNotResetIDListRâRátcustomStateTimeDictRtopenWeektopenDayt"FBStateEndTimeNotResetCustomIDList((siE:\SnxxServerCode\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|ƒgSt |d}tjdƒtjd|||||fƒtjd|ƒtjƒ}    g}
g} ||krOtjd|ƒ} tjd    t| ƒƒg} g}xµ| D]­}|jƒ}|jƒ}||
kr¢|
j|ƒn| j|ƒ|jƒ|krh|j|ƒt||}}}| j||||gƒtjd
||fƒqhqhWtjd | ƒ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=%ss"===== ¼ÓÔØ½ñÌ츱±¾×´Ì¬Ê±¼ä±í =====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==============================================================(R3R4R5R6R7RR8RRRRîRïRNR>RAR@RðRCRñR'RORóRPR R%R&R:R(R\(R_R`RBRft
curWeekDayRbt    curMinuteRÿRRjtcustomMapIDListtfbStateTimeInfoListRRRRRR3R    R4R7RßR2((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyt__GetTodayFBStateTimeInfost $                         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(+RAR3R4R5RR8RRRRîRïtDebugLogRRHRñR'R)R*R+R,tGetNotifyInfoDictR;RLRRRR)tsecondsR¯R°R:RPt GetCanEntert GetStateValueR    tDef_Notify_WorldKey_FBCanEnterRR R±tSaveFBOpenRecordRAtDef_Notify_WorldKey_FBFuncStateR(#R<R@R`RfRDRbREt
curTimeWHMRÿR#RGR    R4R7RRR3R5R6R8R9t startTimeWHMt
endTimeWHMRR‰t 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(RR8RRR    t*Def_UniversalGameRecType_LimitFBOpenRecordtGetUniversalRecMgrt GetTypeListRDtrangetCounttAtt    GetValue1tevalt GetStrValue1tAddRect    SetValue1t SetStrValue1RëRORCR t Def_Notify_WorldKey_FBOpenRecord( tmapIDRýt    curDayStrt fbOpenRecordtrecTypetuniversalRecMgrtrecTypeListDatat findRecDataR®tuniversalRecDatatrecMapIDt
recordList((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyROÂs8                
 cCs‚i}tj}tjƒ}|j|ƒ}xQt|jƒƒD]=}|j|ƒ}|jƒ}t    |j
ƒƒ}|||<q=W|S(N( R    R]RR^R_R`RaRbRcRdRe(RlRmRnRoR®RqRrRs((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(RRR6R@R R%R&R'RLROR    RNRR RPt*Def_Notify_WorldKey_FBEnterTimeLimiitMapIDRtRi( tfbEnterTimeLimitMapIDListt sendMapIDListR#RjRßR2R3RZtcanEnterR[t fbFuncStateRl((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_ByDays cCsÊtjƒr=tjtjƒs"dStjtjƒtƒdStƒtjtjƒ}tjtj    ƒ}t
j dƒ}||dkr‹dS||dks«||dkr¶t ƒdStjtjƒdS(Nt#ActionControlByDayInitOpenServerDayiii( RR{R3R4tDef_MergeServerOpenActionDaytSetDBGSTrig_ServerTimetSendBroadcastMergeOpenActionDaytDoLogic_ActionByDayKeyOnDaytDef_ServerLastOpenActionDayR5t ReadChConfigtGetEvalChConfigtNewRingOpenActionDay(tlastOpenActionDayR`t initDayList((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pytDoLogic_ServerLastOpenActionDay's"  cCstjtjdƒtƒdS(Ni(R3R³R„tOpenActionDay_Reset(((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyR‡JscCsdS(N((((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyR‹WscCsÙ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( RQtATTR_CALL_TIMERMRPRRARŸttypeRRtDef_Cmp_Greatert Def_Cmp_Lowert Def_Cmp_Equ(RýRâR®tcallObjt
curCallObjtwday((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pytCompareActTimejs$  cCsH|s
tStj|dƒ|ko;tj|dƒknrDtStS(Nii(RPRtGetDateTimeByStrR:(RýtactSect((siE:\SnxxServerCode\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    RPRtDef_FBMapID_FamilyPartytPlayerFamilyPartytFamilyPartyStateChangetDef_FBMapID_FamilyWartGameWorldFamilyWartOnFamilyWarStateChangetDef_FBMapID_XMZZt
PlayerXMZZtOnXMZZStateChangetDef_FBMapID_FamilyInvadetPlayerFamilySWRHtOnSWRHStateChangeRRR¸tOnHorsePetRobBossActionChange(R%tisOpen((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyR scCs3tjtjƒ}tjtjdi|d6ƒdS(NitDay(R3R4R€tMergeBroadcasttSendBroadcastMergeR(tmergeServerOpenActionDay((siE:\SnxxServerCode\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;(R3R4R5tDef_IsMixServertDef_MixServerDayR…R†RRAtDef_TeHuiRepeatOrderKeytDef_TeHuiRepeatNumKeytGameWorldAverageLvtOpenWorldAverageLvRëR    RµRQR³tToIntDefRCR®RRRRt__ChangeDA_ActionSign(R`t isMixServert mixServerDayt repeatDayInfotstartRepeatOpenDaytstartRepeatMixDayt
repeatListtDef_RepeatOrderKeytDef_RepeatNumKeyt repeatOrdert preRepeatNumtworldAverageLVRßt
repeatInfotneedWorldAverageLVt insertIndextnextRepeatIndext nextRepeatNumR#tnextRepeatDictR%tsignIDtcurDaytbeginDaytbeginHtbeginMtendDaytendHtendM((siE:\SnxxServerCode\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{RIR3R4R5R¬R­R…R†t__DoActionGoOnByDayKeyCheck(R`R´RµtallActionGoOnInfo((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyR|: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-(    RR8RRR”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ÎNs&   
 
$$)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( tGetBeginEndTimeByDayRKRVRRAR±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³rs'      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((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyRӍs(>RR;RR…R¯R    R3R§R°RœR™R6RŸR¢R¸R RîRÉRÜttypesRRVR>RítTime_YmdFormatRŒR`R9RRRR(RPRRBR:R]RDR RRR"R#RARHR\RORtRzR~RŠR‡R‹R”R—RR‚RƒR|RÎR³RÓ(((siE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldActionControl.pyt<module>sj                                 à    % j "     u    ?        7    H    c    $         $        #             $        .    
    b        $