hwj35
2025-06-16 12bfd1cd414e0fa14310a800df8288a844d6489f
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
Öãgc@sÏddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZedƒ\ZZZd„Zd„Zd„Zd„Zed„Zd„Zd    „Zd
„Zd „Z e!d „Z"e#d „Z$d„Z%d„Z&dd„Z'd„Z(d„Z)d„Z*d„Z+d„Z,d„Z-d„Z.d„Z/dS(iÿÿÿÿNicCsdS(N((t    curPlayer((seE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossActionControl.pyt OnPlayerLogin/sc Cs­tjƒsdStjƒjtjƒtjs3dStjdƒtjƒj    tjƒ}xNtjj
ƒD]=\}}x.|j
ƒD] \}}|j tj ƒs¥qn|j tj dƒ}|j tj dƒ}|j tjdƒ}|j tjdƒ}|j tjdƒ}    |jƒ}
|
j|ƒ|
jt|    ƒƒ|
j|ƒ|
j|ƒ|
j|ƒ|
j|ƒ|
j|ƒtjd|||||||    fƒqWqhWdS(Ns±£´æ¿ç·þÔËÓª»î¶¯ÐÅϢͨÓüǼ: itsY    actName=%s,cfgID=%s,state=%s,stateJoin=%s,actID=%s,templateID=%s,serverIDRangeList=%s(t    GameWorldt IsCrossServertGetUniversalRecMgrtDeletet ShareDefinet%Def_UniversalGameRecType_CrossActInfot
PyGameDatatg_crossActInfoDicttLogt GetTypeListtitemstgett ActKey_StatetActKey_StateJoint    ActKey_IDtActKey_TemplateIDtActKey_ServerIDRangeListtAddRect SetStrValue1t SetStrValue3tstrt    SetValue1t    SetValue2t    SetValue3t    SetValue4t    SetValue5( t recDataListtactNamet actInfoDicttcfgIDtactInfotstatet    stateJointactIDt
templateIDtserverIDRangeListtrecData((seE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossActionControl.pyt OnServerClose2s6                 %cCsnt||ƒ}|sdS|jtjƒ}|jtjƒ}|satjd|||fƒdS|jdƒS(NsVActKey_IpyDataInfoΪ¿Õ, ÕÒ²»µ½¿ç·þ»î¶¯ËùÊô·ÖÇø! actName=%s, serverGroupID=%s, cfgID=%stZoneID(tGetCrossActInfoByServerGroupIDRRt ActKey_CfgIDtActKey_IpyDataInfoRtErrLog(Rt serverGroupIDRR t ipyDataInfo((seE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossActionControl.pytGetCrossActZoneIDUs    c Cstj}|rü||krü||}xÔ|jƒD]Ã}|jtjdƒsSq2n|jtjƒ}|sqq2nx|D]y}t|tƒr™||ksít|t    ƒs·t|t
ƒrxt |ƒdkrx|d|koè|dknrx|SqxWq2Wnt j d||fƒdS(s»ñÈ¡×Ó·þIDËùÊô¿ç·þ»î¶¯ÐÅÏ¢£¬ ¿ç·þ¡¢×Ó·þͨÓÃ
        @param serverGroupID: ·þÎñÆ÷ID»ò·þÎñÆ÷·ÖID
                                ¿ç·þ»î¶¯±íÅäÖõÄÊÇ·þÎñÆ÷ID£¬¶ø×Ó·þºÏ·þºóÒÔÖ÷·þµÄ·þÎñÆ÷ID×÷Ϊ·þÎñÆ÷×éID£¬ËùÒÔÁ½ÖÖ·þÎñÆ÷IDÔڴ˺¯ÊýÖÐͨÓÃ
        @return: None or ActKey_IpyDataInfo
    iiis>ÕÒ²»µ½·þÎñÆ÷×éID¶ÔÓ¦¿ç·þ»î¶¯·ÖÇø! actName=%s, serverGroupID=%sN(R    R
tvaluesRRRRt
isinstancetintttupletlisttlenRtDebugLog(RR.tcrossActInfoDicttcurActInfoDictRR&t    groupInfo((seE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossActionControl.pyR*bs     
 6cCs‹tƒ}||krdS||}||kr3dS||}|r‡|jtjiƒ}|sbdS|jddƒ}||kr‡dSn|S(NR)i(tGetCrossActInfoDictRRR,(RR tzoneIDR8R9R!t ipyDataDictt    ipyZoneID((seE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossActionControl.pytGetCrossActInfoByCfgID}s     
 
 cCstƒ}||krdS||}xU|jƒD]G}|jtjiƒ}|sUdS|jddƒ}||kr0|Sq0WdS(NR)i(R;R1RRR,(RR<R8R9R!R=R>((seE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossActionControl.pytGetCrossActInfoByZoneIDs     
 cCs—tƒ}||krgSg}||}xg|jƒD]Y}|jtjiƒ}|s[dS|jddƒ}|r6||kr6|j|ƒq6q6W|S(NR)i(R;R1RRR,tappend(RR8t
zoneIDListR9R!R=R<((seE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossActionControl.pytGetCrossActZoneIDListŸs     
cCs§tjdkr it_tjƒjtjƒ}tjd|j    ƒƒxVt
|j    ƒƒD]?}|j |ƒ}|j ƒ}|j ƒ}|r™t|ƒng}|jƒ}|jƒ}|jƒ}|jƒ}    |jƒ}
|sçqZn|tjkritj|<ntj|} i|tj6|tj6|    tj6|tj6|tj6|
tj6} i} | j| ƒ| | tj<| | |<tjd||| fƒqZWntjS(Ns$¼ÓÔØÍ¨ÓüǼÖеĿç·þÔËÓª»î¶¯ÐÅÏ¢: %ss    actName=%s,cfgID=%s, %s(R    R
tNoneRRR RRR tCounttxrangetAtt GetStrValue1t GetStrValue3tevalt    GetValue1t    GetValue2t    GetValue3t    GetValue4t    GetValue5RRRR+RRtupdatet ActKey_DBInfo(RtindexR'Rt    strValue3R&R R"R$R%R#RtdbInfoR!((seE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossActionControl.pyR;¯s8            !   
!cCsÝg}i}t|d|ƒƒ}xvt|ƒD]h}t|d|ƒ|ƒ}|jƒ}||kr€g||<|j|ƒn||}    |    j|ƒq/Wg}
x5|D]-}||}    t} g} g} xµ|    D]­}|jƒ}| j|ƒ|jƒ}||krb||rb||}|
j|ƒ|tjkrb|tj    }t
j d||fƒqbn|sqt } qÑ| j |ƒqÑW| r·t|    ƒdkr·t
jd|| fƒq¨ng}x©tt| ƒƒD]•}| |\}}x|t|ƒD]n}| |\}}||ko |knr5|j|ƒn||koL|knró|j|ƒqóqóWqÐW|rt
jd|| |fƒq¨nxC|    D];}|jƒ}||krÄ||rÄq–n|
j|ƒq–Wq¨W|
S(Ns
Get%sCounts Get%sByIndexsC    Ê¹ÓÃÒѾ­ÔڻÖеļǼµÄÇø·þ·Ö×é: cfgID=%s,serverIDRangeList=%sis]    Í¬×é»î¶¯·þÎñÆ÷IDÅäÖÃÒì³££¬ÓÐÈ«·þ¿ª·ÅµÄ£¬Ö»ÄÜÅäÖÃ1Ìõ£¬²»´¦Àí! actGroupName=%s,cfgIDList=%ss_    Í¬×é»î¶¯·þÎñÆ÷IDÅäÖÃÒì³££¬Óн»²æ£¬²»´¦Àí! actGroupName=%s,cfgIDList=%s,errorServerIDList=%s(tgetattrRFtGetActGroupNameRAtFalsetGetCfgIDtGetServerIDRangeListRtCrossActLockServerGroupIDListRRR tTruetextendR6R-(t
ipyDataMgrRRt groupNameListR:t actCfgCounttcfgIndextipyDatat actGroupNametgroupIpyDataListtparseIpyDataListtallOpent    cfgIDListtallServerIDRangeListR R&R!terrorServerIDListtitcheckIDAtcheckIDBtjt    serverIDAt    serverIDB((seE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossActionControl.pyt__GetParseIpyDataListÒsj  
 
 
 
                cJCs^d}tj|ƒ}tjƒ}d|j|j|jf}|j}|dkrXdnd}d||f}|rŽ|t|krŽt    |fSd||j|j
f}t j j |t jƒ}    i}
i} tjƒ} tjdƒtjd|    |fƒtƒ} tjd    | ƒx· tjD]¬ }tjd
|ƒt| d |ƒs`tjd |ƒqn| j|iƒ}t| ||ƒ}xD |D]< }|jƒ}|jƒ}|jƒ}|jƒ}tjd |||||    fƒ|s|}tjd|ƒn|s!|}tjd|ƒn|jdƒo<|jdƒ}|rttj|ƒ\}}tjd||fƒnt|dƒr­t|dƒr­|jƒ}|jƒ}n d}d}t|dƒròt|dƒrò|j ƒ}|j!ƒ}n g}g}t|dƒr|j"ƒni}t|dƒr:|j#ƒni}t|dƒr[|j$ƒng}t%|ƒt%|ƒkr™tjd||||fƒnt|dƒs®dn    |j&ƒ}t|dƒsÏdn    |j'ƒ}|dkr"t j j d|t jƒ} t j j d|t jƒ}!nŸ|dkryt j j d|t jƒ} t j j d |t jƒt j(d!dƒ}!nHt j j d |t jƒ} t j j d |t jƒt j(d!dƒ}!tjd"|| |!||fƒ|    | ksù|    |!kr,t    }"||ks|| r2tjd#ƒq‹q2nt)}"tjd$||"fƒg}#g}$i}%i}&i}'i}(|sœ| })|!}*|#j*|)ƒ|$j*|*ƒnÅxÂt+|ƒD]´\}+},|+t%|ƒkrËPn||+}-d%|    j|    j|    j|,f}.d%|    j|    j|    j|-f}/t j j |.t jƒ})t j j |/t jƒ}*|#j*|)ƒ|$j*|*ƒq©Wtjd&|#ƒtjd'|$ƒgg}0}1|rd|r|0j*t j j d%|    j|    j|    j|ft jƒƒ|1j*t j j d%|    j|    j|    j|ft jƒƒqd|0j*t j j d(||ft jƒƒ|1j*t j j d(||ft jƒƒntjd)|0ƒtjd*|1ƒx t+|#ƒD]ý\}2})|$|2}*xs|j,ƒD]e\}3}4|)t j(d+|3ƒ}5|5j|    jkr¶|5j|    jkr¶|5j|    jkr¶|4|%|5<q¶q¶Wxs|j,ƒD]e\}3}4|*t j(d+|3ƒ}5|5j|    jkr,|5j|    jkr,|5j|    jkr,|4|&|5<q,q,W|r“t%|ƒdkr“|d \}6}7t%|ƒdkrÙ|dng}8|7|8g}4d=\}9}:x–|6rŒ    |7rŒ    |9|:krŒ    |9d7}9|    t j(d+|6|9ƒ}5|5|*krF    Pn|5j|    jkrú|5j|    jkrú|5j|    jkrú|4|'|5<qúqúWq“q“W|%s¦    |&s¦    |'r]
tjd-t%|%j-ƒƒt.|%j-ƒƒfƒtjd.t%|&j-ƒƒt.|&j-ƒƒfƒtjd/t%|'j-ƒƒt.|'j-ƒƒfƒ|(j/|%ƒ|(j/|&ƒ|(j/|'ƒn||
krv
i|
|<n||#|$|(|0|1g|
||<|| krµ
ggg| |<n| |\};}<|| krÞ
i| |<n| |}||kr i||<n||}=i}>t0j1|d0ƒ}?x:|?D]2}@|@d>krB q* nt2||@ƒƒ|>|@d2<q* W|>j/i|d36|d46ƒtjd5|>ƒ|=j/i|tj36|>tj46ƒtj5|=ksË |tj6krá |j7ƒ|=tj5<nd?\}A}B}C|"r€ x±|D]©}D|Djƒ}E|Djƒ}F|F|kr+ Pn|E|<kr= qý n|<j8|Eƒ|E|krp ||E}Gd|Gtj9<n|E|;kr‚ qý n|;j*|Eƒtjd6|E|Ffƒqý W||<krÆ |<j*|ƒn|    | j:}B| }H|së |r |r |Ht j(d!|Bƒ7}Hnt;t<j=|Hj>ƒƒƒ}Atjd7||H|Afƒt|d8ƒrœ |j?ƒ}I|Bt%|Iƒkrp |Id9n|I|B}Cqœ n||;krœ |;j*|ƒn|=j/i|Atj96|Ctj@6|BtjA6ƒq‹WqWtjB|||
| gƒ}tjd:||fƒtjd;|
ƒtjd<| ƒtjd    | ƒtjdƒ|rTtCt)ƒnt)|fS(@Nt CrossActInfos%d-%d-%diis%s %ss%s %02d:%02d:00s==============================================================s1¼ÓÔØ±¾ÈÕ¿ç·þÔËÓª»î¶¯ÐÅÏ¢: %s, reloadSign=%s =====s    crossActInfoDict=%ss¼ÓÔØ¿ç·þÔËÓª»î¶¯: actName=%ss
Get%sCounts4    Ã»Óиÿç·þÔËÓª»î¶¯ÀàÐͶÔÓ¦»î¶¯Ê±¼ä±í! actName=%ssJ    cfgID=%s,actGroupName==%s,startDateStr=%s,endDateStr=%s,curDateTime=%ss7        ¿ªÊ¼ÈÕÆÚΪ¿Õ£¬Ä¬ÈÏÿÌ죬½ñÈÕΪ: startDateStr=%ss5        ½áÊøÈÕÆÚΪ¿Õ£¬Ä¬ÈÏÿÌ죬½ñÈÕΪ: endDateStr=%stWs         ÐÇÆÚXת»¯ÎªÈÕÆÚ: %s ~ %stGetJoinStartTimetGetJoinEndTimeRtGetStartTimeListtGetEndTimeListtGetNotifyInfoStarttGetNotifyInfoEndtGetNotifyInfoLoops_        »î¶¯ÅäÖÿªÊ¼¼°½áÊøÊ±¼ä¸öÊý²»Æ¥Åä! actName=%s,cfgID=%s,startHMStrList=%s,endHMStrList=%st GetIsDayResett GetResetTypeis %s 05:00:00is %s 00:00:00tdayssT        resetType=%s,startDayDate=%s,endDayDate=%s,startHMStrList=%s,endHMStrList=%ss        ·Ç»î¶¯Ê±¼ä£¡²»´¦Àí£¡s9        ÐèÒª´¦ÀíµÄ¿ç·þÔËÓª»î¶¯ÐÅÏ¢: cfgID=%s,isActTime=%ss%d-%d-%d %s:00s        startList=%ss        end  List=%ss%s %s:00s        joinStartTimeList=%ss        joinEndTime  List=%stminutesids        startNotifyDict: %s, %ss        end  NotifyDict: %s, %ss        loop NotifyDict: %s, %stGetRYit    StartDatetEndDates        ipyDataDict=%ssK        Ç°Ãæ´æÔڻµÄ·Ö×飬ÔòÇ¿ÖÆ½áÊø»î¶¯£¡ befCfgID=%s,befActGroupName=%ss/        isDayReset=%s,actIDDateTime=%s,actID=%stGetTemplateIDListiÿÿÿÿs<±¾ÈÕ¿ç·þÔËÓª»î¶¯ÐÅÏ¢¼ÓÔØÍê±Ï!reloadSign=%s,isRefreshState=%ss    actTimeInfoDict=%ss    actCfgIDInfoDict=%s(iid(sGetNotifyInfoStartsGetNotifyInfoEndsGetNotifyInfoLoopsGetServerIDRangeList(iii(Dt IpyGameDataPYt GetConfigExRt GetServerTimetyeartmonthtdaythourtCrossAct_ReloadSignRWtminutetdatetimetstrptimetChConfigtTYPE_Time_FormattIPY_DataR R;RtCrossActNameListthasattrR-RRoRXRVt GetStartDatet
GetEndDatet
startswithtGetOperationActionDateStrRrRsRtRuRvRwRxR6RyRzt    timedeltaR[RAt    enumerateR tkeystsortedRPtCommFunctget_class_methodRUR+R,RRZRYtremoveRR{R3ttimetmktimet    timetupleR€RtActKey_DayIndext SetConfigExtDispose_CrossActState(JtisRefreshStatetkeyRpt
serverTimet
curDateStrtcurHourtreloadSignHourt
reloadSigntcurDateTimeStrt curDateTimetactTimeInfoDicttactCfgIDInfoDictR]R8RR9RdRaR Rbt startDateStrt
endDateStrt    actByWeektjoinStartTimeStrtjoinEndTimeStrtstartHMStrListt endHMStrListtnotifyInfoDictStarttnotifyInfoDictEndtnotifyInfoLoopInfot
isDayResett    resetTypet startDayDatet
endDayDatet    isActTimet    startListtendListtstartNotifyDictt endNotifyDicttloopNotifyDictt
notifyDictt startDateTimet endDateTimethmIndext
startHMStrtendHMStrt startTimeStrt
endTimeStrtjoinStartTimeListtjoinEndTimeListtdtIndext notifyMinutet
notifyInfotnotifyDateTimet loopMinutest loopNotifyKeytloopNotifyParamListt    loopCountt loopMaxCountt endCfgIDListt actCfgIDListtcurCfgActInfoDictR=tmethodst method_nameR$tdayIndexR%t
befIpyDatatbefCfgIDtbefActGroupNametbefCfgActInfoDictt actIDDateTimettemplateIDList((seE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossActionControl.pyt__GetCrossActInfos’     
              !!!    !!  /,          
  8;),
66"  
 6///        
 
  !       
     ,   c= Cs¢ ttƒ\}}|p|}|t}|t}tƒ}tjƒ}tjjd|j    |j
|j |j |j ftjƒ}g}g}i}    g}
xO
tjD]D
} | |ks£| |ks£| |krÓq£n|| } || \} }| |}xí    |D]å    }|| krqþn| |\}}}}}}t}d}tj}|jƒ}|jƒ}|jƒ}t|dƒr†|jƒnd}d}||| kr³i|| |<n|| |}|| krÉxTt|ƒD]F\}} ||}!| |ko|!knrÚ|d}| }PqÚqÚW|r=||dk}n|r®x€t|ƒD]W\}"}#||"}$|#|ko}|$knrtj}PqP||$krPtj}qPqPWqÉ|r½tjntj}n|jtjdƒ}%|jtjdƒ}&|jtj ƒ}'|jtj!iƒ}(|(jtj"dƒ})|(jtj#dƒ}*|(jtj$dƒ}+|(jtjdƒ},|(jtjdƒ}-|(jtj dƒ}.t}/|+|kr¿|.|'kr¿t}/nd}0|rá|rát%j&t%j'| |fƒ}0|0rL|0|%ks|) rLtj(d| ||%|0|)fƒt%j)t%j'| |fdƒd}0nt*|||ƒ\}1}2}3|1dkrØ|2|)krØ|3|)krØ|0 rØtj+d| ||%|3|)fƒt%j)t%j'| |f|%ƒ|%}0n|2}n||kra|2 ra|0 ra|'dkra||\}4}5d}6g}7g}8|8j,tj-|6|4|5g|'gƒt.j/|7|8ƒqan| r™|)|kr™|*|kr™|,|%kr™|/ r™qþntj(d| ||||)|||,|%|/|*|f ƒ||tj"<||tj#<i|%tj6|tj"6|&tj6|tj$6|'tj 6|tj#6}(|0r@|0|tj0<n|(|tj!<| |    krfi|    | <n||    | |<|,|%ks†|/r?tj(d    | ||||,|%|/|-fƒ|0rË|
j,| |fƒn| tj1krðt2j3||-|ƒn| tj4krt5j6||||ƒnó| tj7kr@t8j6||||ƒnË| tj9krht:j6||||ƒn£| tj;krt<j6||||ƒn{| tj=kr¸t>j6||||ƒnS| tj?kràt@j6||||ƒn+|j,| ||||||,|%|/|-g
ƒt}9|j,| ||)|||||9|%|-g
ƒni|)|kr¨t}9tj(d
| ||||)||9|-fƒ|j,| ||)|||||9|%|-g
ƒn|rj    | tj4krÓt5jA|||ƒqj    | tj7krøt8jA|||ƒqj    | tj9kr    t:jA|||ƒqj    | tj;krB    t<jA|||ƒqj    | tj=krj    t>jA|||ƒqj    n|%r
|,|%kr
|*|kr
tj(d |*|fƒ|tjkr±    q
|tjkr
| tj4krå    t5jB|||ƒq|
| tj7kr
 
t8jB|||ƒq|
| tj9kr/
t:jB|||ƒq|
| tj;krT
t<jB|||ƒq|
| tj=kr|
t>jB|||ƒq|
q
ntjCtjD| || ƒ| rþ|rþ|| |=|| sÆ
|| =ntj(d | ||fƒqþqþWq£W|    r g}7tEjFtjG|    |7ƒnx‰|D]}:|:\
} }}}}}},}%}/}-tj(d    | ||||,|%|/|-fƒ| tjHkr ddlI};|;j3||ƒq q Wx´|D]¬}:|:\
} }})}}}}}9}%}-tj(d
| ||||)||9|-fƒ| tjJkr' ddlK}<|<jL||9|ƒq£ | tj?kr£ t@jM||%|)|ƒq£ q£ WxH|
D]@\} }tj(d | |fƒt%j)t%j'| |fdƒqZ WdS(Ns%d-%d-%d %d:%d:00it GetActFlowIDiiÿÿÿÿs]°´Á÷³Ì×ߵĻÁ÷³ÌÉÏ´ÎÒì³££¬ÐÂ»î¶¯ÖØÖÃ״̬! %s,zoneID=%s,actID=%s,errStateActID=%s,dbState=%ssJ°´Á÷³Ì×ߵĻÁ÷³ÌÒÑÒì³£! %s,zoneID=%s,actID=%s,flowStatePre=%s,dbState=%ss¢¿ç·þÔËÓª»î¶¯×´Ì¬: actName=%s,cfgID=%s,groupName=%s,zoneID=%s,dbState=%s -> state=%s,isEnd=%s, dbActID=%s -> actID=%s,forceReset=%s, dbStateJoin=%s -> stateJoin=%sso    »î¶¯ID±ä¸ü: actName=%s,cfgID=%s,groupName=%s,zoneID=%s,dbActID=%s -> actID=%s,forceReset=%s,dbTemplateID=%ssr    »î¶¯×´Ì¬±ä¸ü: actName=%s,cfgID=%s,groupName=%s,zoneID=%s,dbState=%s -> state=%s,actIDChange=%s,dbTemplateID=%ss-    ²ÎÓë״̬±ä¸ü: dbStateJoin=%s,stateJoin=%ss;    ÒƳý½áÊøµÄ»î¶¯: actName=%s,cfgID=%s,crossActInfoDict=%ss4»î¶¯½áÊøÖØÖð´Á÷³Ì×ߵĻÁ÷³ÌÒ쳣״̬! %s,zoneID=%s(NRàRWtCrossAct_TodayInfotCrossAct_CfgIDInfoR;RRƒRŠR‹R„R…R†R‡R‰RŒRRRR[tActStateJoin_NoneRXRVt    GetZoneIDRRáRDR–tActStateJoin_StarttActStateJoin_EndRRRRRQRRR+tPlayerDBGSEventtGetDBGSTrig_ByKeytDef_ActFlowStateErrorR tSetDBGSTrig_ByKeytGetActTimeFlowStateR-RAtCrossNotify_CrossActt PlayerControlt CrossNotifyExtActKey_StateErrortCrossActName_CTGBillboardtCrossActCTGBillboardt OnActIDChangetCrossActName_BossTrialtPlayerActBossTrialtOnCrossActIDChangetCrossActName_XianXiaMJtPlayerActXianXiaMJtCrossActName_GubaotPlayerActGubaotCrossActName_HorsePetTraintPlayerActHorsePetTraintCrossActName_LianqitPlayerActLianqitCrossActName_FamilyGCZtCrossFamilyGCZtOnCrossActInStateRefreshtOnCrossActJoinEndtSendMapServerMsgExt Def_Notify_WorldKey_CrossActInfot CrossRealmMsgtSendMsgToClientServertCrossServerMsg_CrossActInfotCrossActName_AllRechargetCrossActAllRechargetCrossActName_LuckyCloudBuytCrossLuckyCloudBuytOnLuckyCloudBuyStateChangetOnCrossActStateChange(=t reloadRefreshtisReloadRpR«R¬R8Rªt actChangeListtactStateChangeListtsysnCrossActInfoDicttflowStateErrorResetListRt timeInfoDictRÔRÕRfR RaR¼R½RÁRÉRÊtisEndR"R#t    groupNameR<t    actFlowIDtactStartDataTimeRtdIndexRÂRÃtjIndextjoinStartDateTimetendJoinDateTimeR$R%R&RTtdbStatet dbStateJointdbCfgIDtdbActIDt dbTemplateIDtdbServerIDRangeListt
forceResett errStateActIDtflowStateIndext    flowStatet flowStatePret    notifyKeyt    paramListtcountrytserverGroupIDListtcrossNotifyListt actIDChanget
changeInfoR    R ((seE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossActionControl.pyR¡'sl 
 
     $
 
         ! 
 
 
               +          "2    ,  !         +.      .  
 
% $       $      !cCsDtjtj||fƒ}|r@tjd|||fƒtStS(Ns1»î¶¯Á÷³Ì״̬ÒÑÒì³£! %s,zoneID=%s,errStateActID=%s(RèRéRêRR-R[RW(RR<R$((seE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossActionControl.pytIsActFlowStateErrors
cCsXtjd|ƒ}|sdSd}d}d}x t|ƒD]ý\}}|jƒ|jƒ|jƒ}    }
} |jƒ|jƒ|jƒ} } }|    dd|
d| d}| dd| d|d}|t    j
d|ƒ}|t    j
d|ƒ}||ks||kr%|j ƒ}q;n|j ƒ}|}Pq;W|sKd}n|||fS(    Nt ActTimeFlowiiÿÿÿÿiiii<tseconds( RtGetIpyGameDataListR–t GetStartDayt GetStartHourtGetStartMinutet    GetEndDayt
GetEndHourt GetEndMinuteRŠR•t GetStateValue(RRRªt ipyDataListR'R&R%RRt timeIpyDatatstartDayt    startHourt startMinutetendDaytendHourt    endMinutet startSecondst
endSecondsRÂRÃ((seE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossActionControl.pyRì%s,&&  
    icCsQtƒ\}}|rdStƒ}|r1|gng}tjtj||ƒdS(sP Í¬²½¿ç·þÔËÓª»î¶¯ÐÅÏ¢µ½×Ó·þÎñÆ÷
    @param serverGroupID: Îª0ʱͬ²½ËùÓÐ×Ó·þ
    N(RàR;RRRR(R.Rt_RR+((seE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossActionControl.pytSync_CrossActInfoToClientServerKs    cCshtjd|ƒtjdks'| r3it_nxË|jƒD]½\}}xP|jƒD]B\}}|tjkr„itj|<ntj|}|||<qYW|tjkrÊddl}|j    dƒntj
tj ||ƒ|tj kr@t jƒq@q@Wx`tjjƒD]O\}}x@|jƒD]2\}}|jtjdƒs*tj||=q*q*WqWdS(Ns.===== ÊÕµ½¿ç·þ·þÎñÆ÷ͬ²½µÄ¿ç·þÔËÓª»î¶¯×´Ì¬: %siÿÿÿÿi(RR R    R
RDR RR
R tSync_LuckyCloudBuyRoundInfoRRRÿRtClientServer_CrossActInfoRR(RRtsyncActInfoDictR t syncActInfoRR R!((seE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossActionControl.pyR]s(   cCsÚtjdkriStjj|iƒ}|s2iStj|ƒ}x’|jƒD]„}|jtjdƒsoqNntj    |kr„qNn|tj    }|s›|Sx4|D],\}}||koÅ|knr¢|Sq¢WqNWiS(Ni(
R    R
RDRRtGetPlayerServerIDR1RRR(RRRtplayerServerIDR!R&RmRn((seE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossActionControl.pytGetPlayerCrossActInfo}s$  cCs]tjdkrdStj}x:tjD]/}|j|iƒ}tjtj||ƒq&WdS(N(    R    R
RDRRRRRR(RRR((seE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossActionControl.pytSendMapServerCrossActionState“s    c    Cs‡d}ttjƒƒ}tj|tjƒ}|}tj|ƒ}|rq|d|krqtjd|ƒ|dSg}tj    ƒ}t
|j ƒdƒ}tj dƒtj d|ƒg}tj ƒ}    xÜt|    jƒƒD]È}
|    j|
ƒ} | jƒ} | jƒ} | s6|j| gƒtj d| ƒqÜnd| krq|| krqtj d    | | jƒfƒqÜnd| kr‡| dn| |}|j|| gƒqÜWtj d
ƒx‘|D]‰\}}|jƒ} |jƒ}g}g}i}i}d}x|D]\}}d |||df}tjj|tjƒ}|j|j|jfƒ|tjd |jƒƒ}|j|j|jfƒ|j|gƒ}|j||fƒ|||<xF|jƒD]8\}}|tjd |ƒ}|||j|jf<qÉWqW|j| ||||gƒtj d | ||||fƒq¼Wtj|||gƒ}tj d|ƒtj dƒ|dS(NtTodayCrossDailyActionInfois/ÒѾ­¼ÓÔØ¹ý±¾ÈÕ¿ç·þÈÕ³£»î¶¯´¦ÀíÐÅÏ¢£¡loadSign=%sis$===== ¼ÓÔØ½ñÌì¿ç·þÈÕ³£»î¶¯ÐÅÏ¢ =====s
µ±Ç°ÐÇÆÚ%ss,    Ôö¼Ó±¾ÈÕ³£¿ª¿ç·þÈÕ³£»î¶¯ÐÅÏ¢: dailyID=%st0s9    ²»ÊÇ¿ç·þÈÕ³£»î¶¯¿ªÆôÐÇÆÚ: dailyID=%s,openWeekLimit=%ss    -----------------------s%s %02d:%02d:%02dR|s_    Ôö¼Ó±¾ÈÕ¿ç·þÈÕ³£»î¶¯ÐÅÏ¢: dailyID=%s,openList=%s,overList=%s,goonStateDict=%s,notifyDict=%ss)±¾ÈÕ¿ç·þÈÕ³£»î¶¯ÐÅÏ¢¼ÓÔØÍê±Ï! loadSign=%ss==============================================================( R3RœRtChangeTimeNumToStrRŒtTYPE_Time_YmdFormatRR‚R7RƒRtweekdayR RŽRFtGetCrossDailyActionCounttGetCrossDailyActionByIndext
GetDailyIDtGetOpenTimeDictRAR—t GetNotifyInfoRŠR‹RR‡R‰R•t GetDurationRR R (R£tcurTimeR¥tloadSigntTodayDailyActionInfottodayActionInfotdayTimetweekDaytdailyTimeInfoListR]Rit dailyIpyDatatdailyIDt openTimeDictt openTimeListRatnotifyInfoDicttopenListtoverListt goonStateDictRÁt    OpenStateR‡R‰t openTimeStrt openDateTimet overDateTimetopenStateTimeListRÌRÍRÎ((seE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossActionControl.pyt__GetTodayCrossDailyActionInfo¢sp         
     cCsRtƒ}|sdStjƒ}tjƒ}|j|jf}i}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|| krR| |\}}g}tj    |d||ƒnt
j |}|j |ƒ}||kr€qJn|rá|t jkr©tt j|ƒn|t
jkrátjt
j|ttjƒƒƒqán|||<tj||ƒ|j||ƒtjd|||fƒqJW|rNg}tjt
j||ƒndS(Niis;¿ç·þÈÕ³£»î¶¯×´Ì¬±ä¸ü: dailyActionID=%s,state=%s,dictName=%s(RmRt GetGameWorldRƒR‡R‰R6R RîtWorldNotifyCrossRt)Def_Notify_WorldKey_CrossDailyActionStatet GetDictByKeyRŒtDef_CrossDailyMapt__openCrossDailyMaptCrossDailyActionID_YaomoBossRt(Def_Notify_WorldKey_ActionBossRebornSignR3RœtSetDictR RRt$CrossServerMsg_CrossDailyActionState(ttodayDailyActionInfot    gameWorldR]t curHourMinutetsysnCrossDailyActionStateDictt
actionInfot dailyActionIDR"ReRfRgRÁt    goonStateRlt dateTimeInfoR(R)R+tdictNamet beforeState((seE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossActionControl.pytDispose_CrossDailyActionStateösV       
               $    )
c
Cs|tjkrdStj|}tjƒ}|rt|d|ƒri}x—tt|d|ƒƒƒD]y}t|d|ƒ|ƒ}|jƒ}|jƒ}|j    ƒ}||krÄg||<n||}    |    j
||gƒqhWx-|j ƒD]\}}    t j ||    ƒqòWndS(Ns
Get%sCounts Get%sByIndex(RŒtDef_CrossZoneMapTableNameRRŽRtrangeRURåtGetMapIDt GetCopyMapIDRAR tPlayerFBtSendMapOpenFBEx(
tmapIDt zoneTypeNameR]t realMapInfoRRRaR<t    realMapIDt    copyMapIDtcopyPropertyList((seE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossActionControl.pyRsAs$  #     
cCsstƒ}|sdStjƒ}xM|D]E}|d}tj|}|j|ƒ}|r&tj||ƒq&q&WdS(Ni(RmRRnRRpRqR(RxRyR|R}R€R"((seE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossActionControl.pyt"SendMapServerCrossDailyActionStateUs      
 cCsttjƒ}xa|jƒD]S\}}tj|}tj||ƒ|j||ƒtjd|||fƒqWdS(Ns?ÊÕµ½¿ç·þÈÕ³£»î¶¯×´Ì¬±ä¸ü: dailyActionID=%s,state=%s,dictName=%s(RRnR RRpRRvR (tmsgDataRyR}R"R€((seE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossActionControl.pyRwfs  (0RRRîRRòRõRøRúRüRþRèRRR    R‡RŒR™RŠRœR„RˆRâRãRR(R0R*RDR?R@RCR;RoR[RàRWR¡R/RìRERRLRMRmR‚RsRRw(((seE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\CrossActionControl.pyt<module>sT                           #                      #    E ÿ ö        &                  T    K