hzr
2025-04-24 c4e9044c78de1972d478d6cc2f07de257acec57c
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
ÿëõgc@s\ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZejƒadZdad„Zd„Zd„Zd„Zdd„Zdd    „Zd
„Zd „Zd „Zd „Z d„Z!d„Z"d„Z#d„Z$d„Z%d„Z&d„Z'd„Z(d„Z)d„Z*d„Z+d„Z,d„Z-d„Z.d„Z/d„Z0d„Z1d„Z2d „Z3ddd!„Z4ddd"„Z5ddd#„Z6d$„Z7d%„Z8d&„Z9d'„Z:d(„Z;d)„Z<d*Z=d+„Z>d,„Z?d-„Z@d.„ZAd/„ZBd0„ZCd1„ZDd2„ZEd3„ZFd4„ZGd5„ZHd6„ZId7„ZJd8„ZKd9„ZLd:„ZMd;„ZNd<„ZOd=„ZPd>„ZQd?„ZRd@„ZSdA„ZTdB„ZUddCdD„ZVdE„ZWdF„ZXdG„ZYdH„ZZdI„Z[dJ„Z\dK„Z]dL„Z^ej_dM„Z`ej_dN„Zaej_dO„Zbej_dP„ZcdQ„ZddR„ZedS„ZfdT„ZgdU„ZhdV„ZidW„ZjdX„ZkdY„ZldZ„Zmdejod[„Zpdd\„Zqdd]„Zrd^„Zsd_„Ztd`„Zuda„Zvddb„Zwddc„Zxdd„Zyezdde„Z{dddf„Z|dg„Z}ddh„Z~e    jodi„Zezdj„Z€dk„Zdl„Z‚dm„Zƒdn„Z„do„Z…dp„Z†dq„Z‡ddr„Zˆddds„Z‰ddt„ZŠdS(uiÿÿÿÿNticCsb|jdƒ}t|ƒdkr%dSx6|D].}t||ƒtkrKdSt||ƒ}q,W|S(Ns.i(tsplittlentNonethasattrtTruetgetattr(t
curCallObjtcallNametcallListt curCallName((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytParseNameGetObj>s cCs9t||ƒ}|dkrdSt|ƒtkr5dS|S(N(R RtcallableR(RR((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyt GetExecFuncQs  cCsttj|ƒƒS(N(tinttmathtceil(tx((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyt GetFloatUpperascCsttj|t|ƒƒƒS(N(RRRtfloat(Rtdiv((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyt GetIntUpperiscCs-yt|ƒ}|SWntk
r(|SXdS(N(Rt
ValueError(tinputtdefValuetresult((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytToIntDefqs
  cCs-yt|ƒ}|SWntk
r(|SXdS(N(RR(RRR((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytToFloatys
  cCsH|jƒ|jƒkrtS|jƒdks@|jƒdkrDtStS(Ni(t
GetCountryRtFalse(tsrcObjtdesObj((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyt IsSameCountry†s
$cCs|jƒdkrdStS(NiiZ(iiZ(t
GetGMLevelR(t    curPlayer((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytIsGM“scCs&ttƒƒ}|jdƒd}|S(Ns.i(tstrt GetServerTimeR(t
curTimeStr((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetCurrentDataTimeStržscCsb|jƒjdƒd}ytjj|tjƒSWn(tk
r]}td||fƒdSXdS(Ns.is%s : %s(tstripRtdatetimetstrptimetChConfigtTYPE_Time_Formatt BaseExceptiontLog(ttimeStrte((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetDateTimeByStr§scCs_|jƒjdƒd}ytjj||ƒSWn(tk
rZ}td||fƒdSXdS(Ns.is%s : %s(R(RR)R*R-R.(R/t
timeFormatR0((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetDateTimeByFormatStr¶scCs
tjƒS(N(t GameWorldDatatGetGameWorldEventManager(((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyR5ÄscCstS(N(R4(((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyt GetGameWorldÌscCs
tjƒS(N(R4tGetPlayerManager(((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyR7ÔscCs
tjƒS(N(R4tGetTeamManager(((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyR8ÜscCs
tjƒS(N(R4tGetTruckManager(((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetTruckManangeräscCs
tjƒS(N(R4tGetFamilyManager(((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyR;ìscCs
tjƒS(N(R4tGetBillboardManager(((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyt GetBillboardôscCs
tjƒS(N(R4tGetAllMailList(((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetMailManagerýscCs
tjƒS(N(R4tGetFamilyTechMgr(((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetFamilyTechManagerscCs
tjƒS(N(R4t GetVSRoomMgr(((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetVSRoomManager scCs
tjƒS(N(R4tGetVsRewardMgr(((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetVsRewardManagerscCs
tjƒS(N(R4tGetFamilyActionMgr(((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetFamilyActionManagerscCs
tjƒS(N(R4tGetFBPassRecMgr(((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetFBPassRecManager&scCs
tjƒS(N(R4tGetUniversalRecMgr(((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyRJ.scCs
tjƒS(N(R4tGetBourseManager(((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyRK6scCs
tjƒS(N(R4tGetCompensationMgr(((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyRL>scCs%tƒrt|ƒdSt|ƒdS(N(t__GetPsycoIsOpent PsycoReloadt
__DoReload(ttick((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytDoReloadGs
    
 
cCs¥xztjjƒD]i\}}yFtƒjdƒdkrW|dkrWtd|ƒwnt|ƒWqtk
rxqqXqWtƒjddƒt    dt
ƒƒdS(NtReloadit
PyGameDatas    ²»ÖضÁ %ssReload Begin : time = %s(s
PyGameData( tsystmodulestitemsR6t GetDictByKeytDebugLogtreloadt    ExceptiontSetDictR.R'(RPtnamet
reloadPath((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyROUs$  cCstjd|||fƒdS(Ns%s    %s    %s(tLogUItMsg(tmsgtplayerIDtpar((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyR.hscCstjd|||fƒdS(Ns%s    %s    ###Error:%s(R^R_(R`RaRb((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytErrLogrscCs1tƒjƒsdStjd|||fƒdS(Ns%s    %s    PyDebug:%s(R6t GetDebugLevelR^R_(R`RaRb((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyRX{scCsÎtsÊtjƒ}|d}tjj|ƒsOtd|ƒtd|ƒ‚ntjƒ}|j    |ƒd\}}|j
||ƒs¡td|||fƒdSt |j ||ƒƒat dtƒntS(    NsT\ZoneServerGroup\rungate\InterfaceServer\MultiServerWarProxyServer\Config\config.inisÎÞ·¨ÕÒµ½Îļþ = %stConfigtServerIDs#%s ÕÒ²»µ½ÅäÖÃ: section=%s,option=%sis¶ÁÈ¡ MergeServerID=%s(ReRf(t MergeServerIDR+tGetServerRootPathtostpathtisfileRcRZt ConfigParsertreadt
has_optionRtgetR.(trootPathtmergeServerIniFiletmergeServerInitsectiontoption((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetMergeServerID†s 
   cCs tƒjƒS(N(R6tGetServerVersion(((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyRv¡scCsttjddƒdƒS(NtplatformtGroupIDi(Rt ReadChConfigtGetPyMongoConfig(((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetServerGroupID¤sc
Cstjdƒ}|dkrôtjƒdtƒ}tjj|ƒsXt    dd|ƒqôt
|dƒ}|j ƒ}|j ƒt |ƒ}i}xA|jƒD]3\}}t|ƒ}x|D]}    |||    <q»WqœWtjd|ƒtd|ƒn|sþ|S|j||ƒS(NtServerIDMainServerDicts\MixServerMap_%s.jsontGetMainServerIDErrorsfile can not found. %strbs¼ÓÔØ ServerIDMainServerDict=%s(t IpyGameDataPYt GetConfigExRR+t    GetDBPatht GetPlatformRiRjRktSendGameErrorExtopenRmtclosetevalRVRt SetConfigExR.Ro(
tserverIDR|tfilePathtfileObjtcontenttMixServerMapDicttmainServerIDStrt serverIDListt mainServerIDtsID((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetMainServerID¨s&  
   cCstjdƒ}|j|dƒS(Nt DBPlatformNumi(RytGetDBEvalChConfigRo(RwtplatformNumDict((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetPlatformServerNumÁscCstjddƒS(NRwt PlatformName(RyRz(((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyR‚Îss@cCst|jƒƒS(N(tGetAccIDServerIDtGetAccID(R"((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetPlayerServerIDåscCs7|jtƒ}t|ƒdkr%dSt|ddƒS(Niiiÿÿÿÿi(RtDef_AccID_Split_SignRR(taccIDtinfoList((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyR—æscCs9|jƒ}|jtƒ}t|ƒdkr1dS|dS(NiRiÿÿÿÿ(R˜RRšR(R"R›Rœ((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetPlayerServerSIDês cCs3ttjdd|ƒdƒ}|dkr/|SdS(NRws%sMainServerIDi(RRyRzR(t accIDPlatformR((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetPlayerMainServerIDðs c
Cs´|dkrtS|stSx“|D]‹}t|tƒrZ|d|koU|dkns¨t|tƒr|d|koˆ|dkns¨t|tƒr!||kr!tSq!WtS(Nii(RRRt
isinstancettupletlistR(RˆRŽt serverIDInfo((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytCheckServerIDInListøs  33cCs|jƒjƒS(N(tGetAccountInfot GetOperator(R"((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetPlayerPlatformscCs,|jtƒ}|d }tj|ƒ}|S(Niþÿÿÿ(RRštjoin(t    gameAccIDRœt
paInfoListt platformAccID((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetPlatformAccIDs
cCst|ƒ}|jddƒS(Nt channel_codeR(t GetUserDataRo(R"t userDataDict((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetPlayerChannelCode"s cCsd|jƒ}|siSyt|ƒ}Wntd|ƒiSXt|tƒs`td|ƒiS|S(Nsdata error UserData = %sstype error UserData = %s(R®R†RcR tdict(R"tplayerUserDataStrtcurPlayerUserData((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyR®+s cCs"| s|jƒ rdS|jƒS(Ni(t    GetInitOKt GetRealMapID(t    tagPlayer((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetQueryPlayerMapIDAscCsc|dks|dks| r#dS|jƒ}|s9dS|t|ƒkrU|dn||}|S(Niiÿÿÿÿ(RtGetTemplateIDListR(tipyDatatcfgIDtdayIndexttemplateIDListt
templateID((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyt GetTemplateIDIs &cCsD|dkrdS|sdS|t|ƒkr6|dn||}|S(Niiÿÿÿÿ(RR(R¼R»R½((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetTemplateIDByListRs  &cCs|jdƒ}t|ddƒ}|d}t|tjƒ}|jdƒ}t|ƒdkrj|dn|d}t|tjƒ}    ||krÔ||j}
|
|d} |    |j|d} t| | ƒ} nd} |tj    | d|ƒ} | tj    d|dƒ}| || fS(Nt_iitdays(
RRtChangeStrToDatetimeR+tTYPE_Time_YmdFormatRRÁtminR)t    timedelta(t startDateStrt
endDateStrt curDateTimetstartSplitListtloopDayststartLoopDateStrtstartLoopDateTimet endSplitListtendLoopDateStrtendLoopDateTimetpassDayst    loopTimest loopTimeMaxt startDateTimet endDateTime((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetOperationActionLoopDateZs 
&  cCsUtjjƒ}|jƒ}|jƒ}|sLd|j|j|jf}n|sqd|j|j|jf}n|jdƒdkr¬d|kr¬|jdƒ r¬||fS|j    ƒrt
j t
j ƒd}|tj dt|ƒ|ƒ}|tj dt|ƒ|ƒ}n|jdƒrt
j t
jƒd}|tj dt|d    ƒ|ƒ}|tj dt|d    ƒ|ƒ}n’|jdƒrÚ|jƒd}|jd
ƒ}|d }    t|    dƒ}
|tj d|
|ƒ}t|ƒdkr)|d} t| tjƒ} | |kr)| }q)n|jƒd} |jd
ƒ}|d }t|dƒ}|tj d|| ƒ}t|ƒdkr|d}t|tjƒ}||kr¿|}n||kr×|}q×qn9|jdƒrt|||ƒ\}}}n |}|}d|j|j|jf}d|j|j|jf}||fS( Ns%d-%d-%ds-itWtLiRÁtMixis|i(R)ttodayt GetStartDatet
GetEndDatetyeartmonthtdaytcountt
startswithtisdigittPlayerDBGSEventtGetDBGSTrig_ByKeyt Def_ServerDayRÅRtDef_MixServerDaytweekdayRRRÂR+RÃRÕ(R¹RÈRÆRÇtdiffDayRÓRÔt
curWeekdaytstartWeekDateInfot startWeekInfot startWeekdayRËRÌt startWeekDaytendWeekDateInfot endWeekInfot
endWeekdayRÎRÏRÀ((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetOperationActionDateStrrs^  1
  #$'
 
 
 
      cCs tjjƒS(N(R)RÙ(((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyR%½scCstjjtjjƒƒdS(Ni(R)t isocalendarRÙ(((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyt GetWeekOfYearÀscCs9tƒ}t|ƒ}|dks-|dkr1dS||S(N(R%R1R(tcompareTimeStrt curDataTimetcompareDataTime((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyt__GetPastTimeDeltaÉs
     cCs1t|ƒ}|dkr*td|ƒdS|jS(NsGetPastDay Err dateTimeStr = %si(RöRRcRÁ(t dateTimeStrt pastTimeDelta((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyt
GetPastDayØs
  cCs@t|ƒ}|dkr*td|ƒdS|jd|jdS(Ns GetPastHour Err dateTimeStr = %siii(RöRRcRÁtseconds(R÷Rø((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyt GetPastHouræs
  cCsDt|ƒ}|dkr*td|ƒdS|jddd|jS(Ns#GetPastSeconds Err dateTimeStr = %siii<(RöRRcRÁRú(R÷Rø((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetPastSecondsôs
  cCsqt|ƒ}tj|j|j|jdddƒ}t|ƒ}tj|j|j|jdddƒ}||jS(Ni(tChangeTimeNumToDatetimeR)RÜRÝRÞRÁ(ttimeAttimeBt    dateTimeAt    dateTimeB((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyt GetDiff_Dayÿs
 ' 'cCsWtƒ}|j|ƒ}|dkr(tS||tj|krCtS|j||ƒtS(Niÿÿÿÿ(R6t GetTickByTypeRR+tTYPE_Tick_Timet SetTickByTypeR(tkeyRPtworldMgrtlastTick((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytSetWorldDictKey s     cCs]t|ƒ}|j|ƒ}|s5|j||ƒtS|||krItS|j||ƒtS(N(R$RWR[RR(R"RRRPtcurPlayerKeyValue((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytSetPlayerDictKey!s cCsbd|}|j|ƒ}|s3|j||ƒtS||tj|krNtS|j||ƒtS(NsPlayer_Tick_%s(RWR[RR+tTYPE_Player_Tick_TimeR(R"ttickTypeRPtdictKeyR((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytRefurbishPlayerTick6s
icCs*tƒj|d|tj|f|ƒdS(Ns%s%s%s(R6tSendMapServerMsgt ShareDefinetDef_Notify_Separator(tkeyNametvaluetmapIDtrouteServerIndex((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytSendMapServerMsgExOs&cCs‚g}xutjjƒD]d\}}|tjkr7qntj|d}||krZqn|j|ƒt||||ƒqWdS(Ni(RStg_commMapLineRouteDictRVtg_commMapLineInfotappendR(RRt sendMapIDListt mapLineInfoRt    realMapID((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytSendCommMapServerMsgSs  cCsTt|d|ddƒ}tt||dƒdƒ}t|||ƒ}||fS(Nii(tmaxRÄ(t viewPageIndext singePageCntttotalCnttendIndext
startIndex((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyt GetViewPageBeginIndexAndEndIndexfscCstƒtjd|ƒS(NRÁ(R%R)RÅ(tdiffDays((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetDatetimeByDiffDayssscCs|S(N((tfunc((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyt GetPsycoFunc{scCs tjdƒS(Nt PsycoSwitch(RytGetEvalChConfig(((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyRMˆscCs~ttj|ƒsdSg}x7tjjƒD]&}|j||jdƒdgƒq,Wttj    d|ƒt
dt ƒƒdS(Ns.iÿÿÿÿRsPsycoReload Begin : time = %s( R    R+tTYPE_ReloadScriptRTRUtkeysRRt
TravelFiletGameServerPathR.R'(RPtmoduleNameListt
moduleName((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyRNs$cCsØxÑtj||ƒD]¼}|jdƒr/qn|jdƒd}xN|D]F\}}||krgqIntjj|ƒ}|s…qInt|ƒqIWtjj    ||d|ƒrt
||d|d|ƒqqWdS(Ns.is\( RitlistdirRàRRTRURoRYRjtisdirR.(t
scriptPathR‰R0tfileNamet curModuleNamet
reloadNameR1tmodule((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyR.¡s #cCsMt|dƒd}t|dƒdd}t|dƒd}|||fS(Nièii<(R(t    inputTimet curTimeHourt curTimeMinutet curTimeSecond((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytChangeInputTime¿scCstj|tj|ƒƒS(N(ttimetstrftimet    localtime(ttimeNumR2((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytChangeTimeNumToStrÉscCs.tj|tj|ƒƒ}tjj||ƒS(N(R>R?R@R)R*(RAR2R/((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyRýÏscCs.tjj||ƒjƒ}ttj|ƒƒS(N(R)R*t    timetupleRR>tmktime(R/R2((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytChangeTimeStrToNumÖscCstjj||ƒS(N(R)R*(R/R2((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyRÂÚscCstjjƒtjd|ƒS(NRÁ(R)RÙRÅ(R&((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetDatetimeBySubDaysáscCsetƒ}|jtjkr5d|j|j|jfS|tjddƒ}d|j|j|jfS(Ns%d-%s-%sRÁiÿÿÿÿs%s-%s-%s(    R%thourRtDef_OnEventHourRÜRÝRÞR)RÅ(tcurDatetpreDate((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetDailyDateSträs
    cCsttjddƒdƒS(NtMerget IsMergeServeri(RRyRz(((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyt IsCrossServerìscCstjddƒptƒS(NRLt MergeServerIP(RyRzRN(((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytIsCrossRealmOpenðscCs tƒrtjddƒStjS(NRLt CrossZoneName(RNRyRzRStg_crossZoneName(((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetCrossZoneNameôs    cCsYtƒrtƒStj\}}}|s/tƒSttjƒƒ}|||}t|ƒS(N(RNR'RStg_crossServerTimeInfoRR>RB(tlastCrossServerTimetlastServerTimeRÀtcurTimetcrossServerTime((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetCrossServerTimeStrús    cCsO|jƒjƒ}|jƒjƒ}tjdƒ}t|jddƒƒ}|S(Nt AreaNameInfotNameExprR(R¥R¦t    GetAreaIDRyR+R†Ro(R"toperatortareaIDt areaNameInfotareaName((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyt GetAreaNames
cCst|ƒ}tj|ƒS(N(RatCommFunct    GetStrCrc(R"R`((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyt
GetAreaCrcs c CsÈttjdƒƒ}|\}}}}}||ksB|dkrZtd||fƒdSt||ƒ}    |    r~|    \}}n|t|ƒ}
t|
ƒ|krÄtd||
t|
ƒ|fƒdS|
S(NtRoleNameFormatisMGetPlayerFullName serverID=%s error! maxServerID=%s, check RoleNameFormat.txtRsMGetPlayerFullName playerName=%s,È«Ãû=%s len=%s > %s, check RoleNameFormat.txt(R†Ryt GetChConfigRctGetDictValueByRangeKeyR¡R( R"t
playerNameRˆtroleNameFormatt
nameFormatt    paramListtmaxLent maxServerIDtspecServerDicttnameFormatInfotfullName((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetPlayerFullNames cCsöi}x‚|D]z}t|ƒdkr7|\}}}n*t|ƒdkr |\}}d}nq ||f}|j|dƒ|||<q Wg}x^|jƒD]P\}}|\}}|dkrØ|j||gƒqž|j|||gƒqžW|S(Niii(RRRoRVR(titemListtitemDicttitemInfotitemIDt    itemCountt isAuctionItemRt    mItemList((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyt MergeItemList.s"         cCs4|s
|Stjd|ddƒ}t|||ƒS(Niiÿÿÿÿ(trandomtrandinttGetResultByRiseList(trandListRt maxRateValuetrate((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetResultByRandomListHscCs0x)|D]!}||dkr#qn|dSW|S(Nii((triseListtpointRt    smallList((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyR|Ss
     cCs’g}d}xO|D]G}||d7}|j|t|ƒdkrL|dn|dgƒqW|sh|Stjd|ddƒ}t|||ƒS(Niiiiÿÿÿÿ(RRRzR{R|(t
weightListRR}tweighttinfoR((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetResultByWeightList^s 7cCs|td|ƒdS(Ni
(tpow(tnumValuet    dataIndex((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetDataByDigitPlacemscCsY|dks'|dks'|tjkr+|St||ƒ}|td|ƒ||7}|S(Nii    i
(RtDef_PDictDigitCntR‹Rˆ(R‰RŠt    dataValuet    lastTagLV((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytChangeDataByDigitPlacevs
'cCs|d|>@rdSdS(s¸ µÃµ½Ä³¸ö×Ö½ÚÖµÖÐijһλ(Bit)µÄÖµ
    @param dataValue: ´ýȡֵµÄ×Ö½ÚÖµ
    @param index: ´ý¶ÁȡλµÄÐòºÅ£¬´ÓÓÒÏò×ó0¿ªÊ¼£¬0-7Ϊһ¸öÍêÕû×Ö½ÚµÄ8¸öλ
    @return: ·µ»Ø¶ÁÈ¡¸ÃλµÄÖµ£¬0»ò1
    ii((Rtindex((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyt GetBitValuescCs|r|d|>BS|d|>@S(sß ¸ü¸Äij¸ö×Ö½ÚÖµÖÐijһλ(Bit)µÄÖµ
    @param dataValue: ×¼±¸¸ü¸ÄµÄ×Ö½ÚÔ­Öµ
    @param index: ´ý¸ü¸ÄλµÄÐòºÅ£¬´ÓÓÒÏò×ó0¿ªÊ¼£¬0-7Ϊһ¸öÍêÕû×Ö½ÚµÄ8¸öλ
    @param val: Ä¿±êλԤ¸ü¸ÄµÄÖµ£¬0»ò1
    @return: ·µ»Ø¸ü¸Äºó×Ö½ÚµÄÖµ
    i((RRtval((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyt SetBitValue‰s cCsT||kr||Sx9|jƒD]+\}}t|tƒr!||kr!|Sq!W|S(N(RVR R¡(tattrDicttfindKeyt defaultValueRR((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetDictValueByKey–s  cCs~||kr||Sxc|jƒD]U\}}t|tƒr!t|ƒdkr!|d|kom|dknr!|Sq!W|S(Niii(RVR R¡R(tsrcDictR•R–trangeKeyR((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyRg£s  EcCsftj|ƒ}xC|jƒD]5\}}||kr:qn||j|ƒ||<qW|j|ƒ|S(N(tcopytdeepcopyRVtpoptupdate(tadicttbdictRR((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytCombineSumDict®s  cCsp||kr||St|jƒƒ}|dkrZx%|D]}||kr9||Sq9Wn|rl||dS|S(Niiÿÿÿÿ(tsortedR-(t    orderDicttordert isDefaultLastR–t    orderListtdOrder((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetOrderValueByDict½s    c CsÌg}|s|Stjd|ƒ}|sLtd|||||f|ƒ|SxY|D]Q}|jƒ}    ||    krwqSn|jƒ}
|
r§|dkr§||
kr§qSn|jƒ} |jƒ} |jƒ} |dkrù|t    j
krù| rù|| 7}n8|dkr'|t    j kr'| r'|| 7}n
|| 7}|j ƒ}|r£|dkr£|j ƒ}|jƒg}x(|D] }||krˆPn||}qrW||7}n|SWtd|||||f|ƒ|S(s»ñÈ¡Íæ¼Ò»î¶¯°ñµ¥Áì½±½±Àø
    @param playerID: Áì½±Íæ¼ÒID
    @param billID: ÉϰñID£¬²»Ò»¶¨ÊÇÍæ¼ÒID£¬±ÈÈçÏÉÃËID
    @param billRank: ÉϰñÃû´Î
    @param awardTemplateID: »î¶¯½±ÀøÄ£°æID
    @param billValue: °ñµ¥ÉϰñÖµ£¬Noneʱ²»´¦Àí
    @param fmLV: »î¶¯Ê±µÄÏÉÃ˳ÉÔ±µÈ¼¶£¬Noneʱ²»´¦Àí
    tActBillboardAwardTempsY»î¶¯°ñµ¥½±ÀøÄ£°æÕÒ²»µ½Ä£°æ! billID=%s,billRank=%s,awardTemplateID=%s,billValue=%s,fmLV=%ssY»î¶¯°ñµ¥½±ÀøÄ£°æÕÒ²»µ½½±Àø! billID=%s,billRank=%s,awardTemplateID=%s,billValue=%s,fmLV=%sN(RtGetIpyGameDataListRctGetRankt GetNeedValueRtGetAwardItemListtGetLeaderAwardItemListtGetEliteAwardItemListtIPY_GameServert    fmlLeadert    fmlMembertGetValueAwardExR-tsort(RatbillIDtbillRanktawardTemplateIDt    billValuetfmLVtplayerAwardItemListt ipyDataListR¹trankt    needValuet awardItemListtleaderAwardItemListteliteAwardItemListt valueAwardExtvalueAwardExListtawardItemExListtvalueEx((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetActBillboardTempAwardÊsJ           ! ! 
 
   cCs^i}tjd|ƒ}|rZx9|D].}|jƒ}|jƒ}||t|ƒ<q%Wn|S(NtActGuess(RR©t
GetAwardIDtGetRightRankListR¡(tguessTemplateIDtrightRankAwardIDDicttguessIpyDataListR¹tawardIDt rightRankList((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetActGuessRightRankAwardIDDicts   cCsàg}xbt|ƒD]T\}}|d}    t|ƒ|krE||nd}
|
|kr|j|    ƒqqWt|ƒ} |j| dƒ} | |kr¢g|| <n|| } | j|ƒtd||| | t| ƒfƒdS(sgͳ¼Æ»î¶¯¾º²Â½á¹û
    @param playerID: ²ÎÓ뾺²ÂµÄÍæ¼ÒID
    @param playerGuessIDList: Íæ¼Ò¾º²ÂÑ¡ÔñµÄID˳ÐòÁбí
    @param finalRankIDList: »î¶¯×îÖÕÅÅÃû˳ÐòÁбí
    @param rightRankAwardIDDict: GetActGuessRightRankAwardIDDict ·µ»ØÖµ
    @param statGuessRetDict: Í³¼Æ½á¹û {awardID:[²ÂÖеÄÍæ¼ÒID, ...], ...}
    @param actName: »î¶¯Ãû³Æ£¬¿ÉÑ¡²ÎÊý£¬Êä³öÈÕÖ¾ÓÃ
    iisC    %sͳ¼ÆÍæ¼Ò¾º²Â½á¹û: playerID=%s,rightRankTuple=%s,awardID=%s,%sN(t    enumerateRRR¡RoRX(RatplayerGuessIDListtfinalRankIDListRÉtstatGuessRetDicttactNameRÌRtfinalIDR»tguessIDtrightRankTupleRËtrightPlayerIDList((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytStatActGuessRet s    
"    
 cCs$tjd|dƒ|kr dSdS(Nii(RzR{(RtmaxRate((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyt    CanHappen+scCs¼tƒrtdd|ƒdS|r0t|ƒn|jtjƒjtƒƒ}|rd|j|ƒnTt    ƒ}xHt
|j ƒƒD]4}|j |ƒ}|dkr§q€n|j|ƒq€WdS(sתÂëºóÔÙ·¢DebugAnsweriN(RNtDebugAnswerCrossRXtdecodeRtDef_Game_Character_EncodingtencodetGetCharacterEncodingt DebugAnswerR7txrangetGetActivePlayerCounttGetActivePlayerAtR(R"ttexttisLogt playerManagertitplayer((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyRß1s          cCs—|\}}|sjtƒ}xHt|jƒƒD]4}|j|ƒ}|dkrUq.n|j|ƒq.WdStƒj|ƒ}|s†dS|j|ƒdS(N(R7RàRáRâRRßtFindPlayerByID(tmsgDataRaRãRåRæRçR"((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytCrossServerMsg_DebugAnswerHs       cCsot|ƒ|jtjƒjtƒƒ}ddl}||g}|rO|gng}|jtj||ƒdS(Niÿÿÿÿ(    RXRÛRRÜRÝRÞt CrossRealmMsgtSendMsgToClientServerRê(Rat serverGroupIDRãRëtdataMsgtserverGroupIDList((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyRÚXs
  cCstjd|ƒS(NtChinMap(RtGetIpyGameData(R((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytGetMapbscCstjd|ƒS(NtChinNPC(RRñ(tnpcID((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyt
GetNPCDatadscCs7tjdƒ}t|ƒdkr/tdƒdS|dS(Nt EncodingTexisEncodingTex.txt Error len != 2tutf8i(RyR+RRc(t encodingList((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyRÞgs
 
cCs^tjdƒ}t|ƒdkr/tdƒ|Sy |jtjƒjtƒƒSWn|SX|S(NRöisEncodingTex.txt Error len != 2(    RyR+RRcRÛRRÜRÝRÞ(t    inputTextRø((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyt    GbkToCodeqs
 cCs^tjdƒ}t|ƒdkr/tdƒ|Sy |jtƒƒjtjƒSWn|SX|S(NRöisEncodingTex.txt Error len != 2(    RyR+RRcRÛRÞRÝRRÜ(RùRø((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyt    CodeToGBK€s
 cCs<t||ƒtƒjƒr+t|ƒ‚n td|ƒdS(NtGameServerRaiseException(RcR6RdRZt SendGameError(terrorMsgRa((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pytRaiseExceptionŽs
  cCsPtd||f|ƒtƒjƒr?td||fƒ‚n t||ƒdS(NsSendGameErrorEx: %s -> %ss%s -> %s(RcR6RdRZRý(terrTypetmsgInfoRa((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyRƒ—s
 cCstjddƒ}tjddƒ}tjddƒ}|d|||f}|rm|dtj|ƒ}ntƒjd    d    d    d    d
|ƒd S( sx ÏòÔËά·¢ËÍÓʼþ£¬ÓÃÓÚÐèÒª½ô¼±´¦ÀíµÄÐÅÏ¢
    @param errType: ´íÎóÀàÐÍ£¬×Ô¶¨Òå¼´¿É
    @param msgInfo: ´íÎóÐÅÏ¢£¬¿ÉÑ¡
    t EventReportt OpenStateUrlRwRxtconnectt USER_DB_NAMEs!?Type=%s&groupID=%s&userDBName=%ss &MsgInfo=%sRiN(RyRzturllibt
quote_plusR6tEventReport_EventReport(RRtgetUrltgroupIDt
userDBName((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyRýŸs(‹R¯R^R+RRSRyRâRlt
GameConfigRRbR)RiRRTR>RzRšRt IPY_GameWorldR4tServerRootPathRgR R RRRRR R#R'R1R3R5R6R7R8R:R;R=R?RARCRERGRIRJRKRLRQROR.RcRXRuRvR{R‘R•R‚RšR™R—RRŸR¤R§R¬R°R®R·R¾R¿RÕRðR%RòRöRùRûRüRR    R RRRR%R'R)RMRNR.R=R,RBRýRERÂRFRKRNRPRSRYRaRdRqRyRtDef_MaxRateValueR€R|R‡R‹RR‘R“R—RgR RR§RÄRÍR×RÙRßRêRÚRòRõRÞRúRûRÿRƒRý(((sME:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\GameWorld.pyt<module>s
                                                                                                                                                        
                                                                                                  K                                                                                
                                                                    6