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
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
ÆÚþic@sæddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZdZeddtƒ\ZZZZide j 6de j!6de j"6Z#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„Z3d„Z4d„Z5de6d„Z7d„Z8d„Z9e6ddd„Z;d „Z<d!„Z=ddd"„Z>d#„Z?d$„Z@d%„ZAddd&„ZBd'„ZCdd(„ZDe j eEd)„ZFeEd*d+„ZGd,„ZHdeEd-„ZIdeEdd.„ZJdeEd/„ZKdd0„ZLd1„ZMd2„ZNddd3„ZOd4„ZPd5„ZQd6„ZRd7„ZSd8„ZTd9„ZUd:„ZVeEd;„ZWd<„ZXd=„ZYd>„ZZd?„Z[ddd@„Z\dA„Z]dddB„Z^dC„Z_dddD„Z`dE„ZadddF„ZbdG„ZcdddH„Zde6dI„ZedJ„ZfdK„ZgdL„ZhdM„ZidN„ZjdddO„ZkdP„ZldQ„ZmdddR„ZnddS„ZodT„ZpdddU„ZqdV„ZrdW„ZsdX„ZtdY„ZudddZ„Zvd[„Zwddd\„Zxd]„Zyd^„Zzddd_„Z{d`„Z|ddda„Z}db„Z~dc„Zdd„Z€de„Zdddf„Z‚dg„Zƒdgdh„Z„di„Z…dddj„Z†dk„Z‡dddl„Zˆdm„Z‰dn„ZŠdo„Z‹dp„ZŒdq„Zdr„ZŽds„ZdS(uiÿÿÿÿNi!iit    MemberMaxtEliteMaxtDeputyLeaderMaxcCs
|jƒS(N(t    GetExtra1(tfamily((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt GetRenameTime@scCs |j|ƒS(N(t    SetExtra1(Rt
renameTime((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt SetRenameTimeAscCs:tjƒrntjƒ s(tjƒr,dStjƒdS(N(t    GameWorldt IsCrossServert IsMainServertDBFamilyt IsFamilyCrosstPlayerFamilyEmblemtCheckExpireEmblem(((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnMinuteCs  
cCstjƒrtƒndS(N(R    R
t__doFamilyOnHour(((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytFamilyOnHourCrossLs 
cCs5tjƒ stjƒr*tjdƒdStƒdS(Ns-·ÇÓÎÏ··þ»ò±¾·þÒÑ¿ç·þ»¥Í¨Á˲»´¦Àí FamilyOnHour(R    R R R tDebugLogR(((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt FamilyOnHourQs
 c
Cs'tjddƒ}tjddƒ}tjƒr›tjƒ r›tjddƒ}|d}tjƒj    t
j ƒd}||kr›|d}|d}q›ntj d||fƒtj ƒ}xb|jƒD]T}|j|ƒ}x<td|jƒƒD]%}|j|ƒ}    t|    ||ƒqöWqËWdS(NtFamilyLeaderAutoChangeiiiis/×Ô¶¯´«Î»Ê±³¤É趨: needHours=%s,priorityHours=%s(t IpyGameDataPYt
GetFuncCfgR    R R R tGetFuncEvalCfgt    DBDataMgrtGetEventTrigMgrtGetValuet ShareDefinet Def_ServerDayRt GetFamilyMgrtGetZoneIDListThisServertGetZoneFamilyMgrtrangetGetCounttGetAtt__AutoChangeLeader(
t    needHourst priorityHourst openServerSett befServerDayt    serverDayt familyManagertzoneIDtzoneMgrtiR((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRXs"
 
 cCstjƒrtƒndS(N(R    R
t__doFamilyOnDay(((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytFamilyOnDayCrossos 
cCs5tjƒ stjƒr*tjdƒdStƒdS(Ns,·ÇÓÎÏ··þ»ò±¾·þÒÑ¿ç·þ»¥Í¨Á˲»´¦Àí FamilyOnDay(R    R R R RR.(((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt FamilyOnDayts
 cCsåtjƒ}xÒ|jƒD]Ä}|j|ƒ}x¬td|jƒƒD]•}|j|ƒ}|jƒ}t|ƒt    j
|ƒt j
|ƒxCt |jƒƒD]/}|j|ƒ}|j dƒ|jdƒqœWt|ƒqDWqWdS(Ni(RRRR R!R"R#tGetIDtResetCurWeekdayContribtPlayerFamilyZhenbaogetOnDaytPlayerFamilyTaofatxranget SetContribDaytSetDonateCntDaytBroadcast_FamilyInfo(R*R+R,R-RtfamilyIDtindextmember((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR.~s  
   cCs4tjƒs&tjd|jƒƒdSt|ƒdS(Ns"¹«»á»¹ÊôÓÚ±¾·þ£¬²»´¦Àí³ÉÔ±¿ç·þ¹ýÌì(R R R    Rt GetPlayerIDt__doPlayerOnDay(t    curPlayer((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytPlayerOnDayCross“s
 
cCs4tjƒr&tjd|jƒƒdSt|ƒdS(Ns"¹«»áÒѾ­¿ç·þÁË£¬²»´¦Àí³ÉÔ±±¾·þ¹ýÌì(R R R    RR=R>(R?((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt PlayerOnDay›s
 
cCs(tj|ƒtj|ƒt|ƒdS(N(R3RAR5tResetDailyDonateCnt(R?((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR>£s  
cCsOtjƒr&tjd|jƒƒdStjƒj|jƒƒ}t|ƒdS(Ns@¹«»áÒÑ¿ç·þ²»´¦Àí£¬ÓÉËùÊô¿ç·þ·þÎñÆ÷´¦Àí³ÉÔ±µÇ¼Âß¼­ OnPlayerLogin(    R R R    RR=t CrossPlayertGetCrossPlayerMgrtFindCrossPlayertOnCrossPlayerLogin(R?ttickt crossPlayer((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt OnPlayerLogin©s  
cCs¸t|ƒt|tƒ|jƒ}|s-dStjƒj|ƒ}|sLdSt||tj    ƒt
j |t j gƒtjƒršt
j |t jgƒntj|ƒtj|ƒdS(N(tPlayerLoginRefreshFamilytSync_RequestAddFamilyInfotFalset GetFamilyIDRRt
FindFamilytSendFamilyActionInfoRtDef_ActionType_WeekdayContribt
PlayerTalktNotifyTalkCachet IPY_GameWorldttcFamilyR    R
t    tcCountryR5RFtGameLogic_FamilyAtkDefBat(RHR:t    curFamily((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRF±s
     cCs™|jƒ}|sdSt|ƒt|tƒt||tjƒtj|t    j
gƒt j ƒr{tj|t    j gƒntj|ƒtj|ƒdS(N(RMtSync_FamilyInfoRKtTrueRORRPRQRRRSRTR    R
RUR5tOnCrossPlayerEnterFamilyRV(RHR:((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt__onCrossPlayerEnterFamilyÃs 
    cCsOtjƒr&tjd|jƒƒdStjƒj|jƒƒ}t|ƒdS(NsA¹«»áÒÑ¿ç·þ²»´¦Àí£¬ÓÉËùÊô¿ç·þ·þÎñÆ÷´¦Àí³ÉÔ±ÀëÏßÂß¼­ OnPlayerLogout(    R R R    RR=RCRDREtOnCrossPlayerLogout(R?RH((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnPlayerLogoutÑs  
cCs|jƒ}|jƒ}|s"dStjƒ}|j|ƒ}|sGdS|j|ƒ}|s`dS|jttjƒƒƒt    |d|gƒdS(NtchangeMemIDList(
R=RMRRRNt
FindMembert
SetOffTimetintttimeR9(RHtplayerIDR:t    familyMgrRt    curMember((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR\Ùs   cCsb|jƒ}i|d6|d6}tjƒrQtjtj||jƒg|ƒn t||ƒdS(NtdoTypetdoData(R=R    R
tCrossMsgtSendToClientServerRtC2S_FamilyMapPlayertGetMainServerID(RHRfRgRctdataMsg((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytSendToFamilyMapPlayerìs   % icCsp|jƒ}d}d}d}d}d\}    }
|rÃtjƒ} | j|ƒ} | rº| jƒ}| jƒ}| jƒ}    | jƒ}
| j|ƒ} | rÀ| j    ƒ}| j
ƒ}qÀqÃd}n|j |ƒt j ||||    |
ƒi|d6}|r6|ji|d6|d6|d6|d6|    d6|
d    6ƒn|rId
|d <n|r\d
|d <nt|d |ƒdS(s> Ï൱ÓÚGameServerµ÷ÓàcurPlayer.MapServer_FamilyRefresh()
    ittFamilyIDtFmLVtJoinTimetFamilyLVt
FamilyNametEmblemIDt
EmblemWordit isVoluntarilytisLogint FamilyRefreshN(is(R=RRRNtGetLVtGetNamet GetEmblemIDt GetEmblemWordR_tGetFmLVt GetJoinTimet SetFamilyIDtPlayerViewCachetUpdPlayerViewFamilyInfotupdateRm(RHR:RvRwRcRpRrRqRsRtRuRdRWR<Rg((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytMapServer_FamilyRefreshõs<              :  cCs |jƒ}tjƒ}|j|ƒ}tjd||fƒ|j|ƒt||dtƒ|}|sndS|j    |ƒ}|s‡dS|j
|ƒ}|s dS|j dƒ|j |ƒt |ƒt|d|gd|gƒt|tƒrtj|t|ƒƒndS(Ns7PlayerLoginRefreshFamily playerID=%s,refreshFamilyID=%sRwiR^t excludeIDList(R=RRtGetPlayerFamilyIDR    RRRƒRYRNR_R`tRefreshMemberByIDRXR9tGetFamilyMemberHasPowtFamilyPowerID_CallRCt SendFakePacktGetPack_FamilyReqJoinInfo(RHRcRdtrefreshFamilyIDR:RRe((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRJs,     
cCs¹tjƒrntjƒ s(tjƒr,dS|jƒ}|sBdStjƒ}|j|ƒ}|sgdS|j    ƒ}|j
|ƒ}|sŒdS|j |ƒt |d|gd|gƒdS(NR^R„( R    R
R R R RMRRRNR=R_R†R9(RHR:RdRRcR<((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytRefreshFamilyMember>s$     gà?c Csº|jƒ}tjƒjƒ}|dkr>tj|dƒdS|dkr_tjd|ƒdS|dksƒ|tjƒj    ƒkr»t
|||d|ƒ}    |r·t ||||    ƒndSt j ƒj|ƒ}
|
sä|
jƒ røtj|dƒdS|rN|j|ƒ} | r;|| |dkr;tj|dƒdS|j||ƒni|d    6} |rt|jƒ| d
<n|r‡|| d<n|ršd | d <ntjtj| |g|ƒdS( NiþÿÿÿtCrossInTransDatais¹«»á¹¦ÄÜÒì³£! crossServerID=%st    reqDataExt ServerNoOpenièt RequestLatertfuncNametpackBuffit
needResult(R=RRtGetCurCrossServerIDt PlayerControlt
NotifyCodeR    tErrLogt GetGameWorldt GetServerIDtCallPyPackFunct__doFamilyPyPackRettCrossMgrtGetSSServerMgrt GetSSServert IsServerOpent GetDictByKeytSetDictt    GetBufferRhtSendToCrossServerRtS2C_FamilyPyPack( R?t
clientDataRGR‘R“treqCDRŽRct crossServerIDtisOKtssServertreqTickRl((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytFamilyPyPackForwardingSs@   $   cCs®|d}|jdƒ}|jdƒ}d}|rPtj|ƒ}|sPdSnt|||||ƒ}d|krª|jdƒ||d<tjtj    ||g|ƒndS(NR‘R’RŽR“R¨(
tgettNonet NetPackCommontReadRecPyPackDataRštpopRhRiRtC2S_FamilyPyPackRet(Rlt fromServerIDRcR‘R’RŽR¥R¨((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR¤‚s
 
cCs–tjƒj|ƒ}|sdS|d}|jdƒ}|j|dƒd}|rptj|ƒ}|spdSn|jdƒ}t||||ƒdS(NR‘R’iR¨(    R    tGetPlayerManagertFindPlayerByIDR¬R¡R­R®R¯R›(RlRcR?R‘R’R¥R¨((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR±“s
c    Csˆtjƒj|ƒ}|s3tjd||ƒdSt|ƒ}|sZtjd|ƒdStjƒjƒ}||||||ƒ}|S(Ns ÕÒ²»µ½¸ÃCrossPlayer! playerID=%ss¹«»á·â°ü¹¦Äܺ¯ÊýÃû²»´æÔÚ! %s(RCRDRER    R—t GetCallFuncR˜tGetTick(    RcR¥R‘R²RŽRHtcallFuncRGR¨((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRš¥s cCs4d|}t|ƒ}|s dS||||ƒdS(Ns%s_Ret(Rµ(R?R¥R‘R¨R·((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR›µs 
 cCs½d}d|kr‡|jdƒ}t|ƒdkr¹|\}}t|ƒ}t||ƒr„t||ƒ}t|ƒr|}qq„q¹n2tƒ}||kr¹t||ƒr¹||}n|S(Ns.i(R­tsplittlent
__import__thasattrtgetattrtcallabletglobals(R‘R·tpartst
moduleNamet    func_nametmoduletfunctgDict((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRµ¿s         cCs´tjƒj|ƒ}|j}tjdtj|ƒƒt||ƒsKdStjddƒ}tjddƒ}|r—|r—t    j
|||ƒs—dSnt |||dt dƒdS(NsOnCreateFamily: %st CreateFamilyiit__OnCreateFamilyi( R    R³tGetPlayerByIndextNameRt    CodeToGbktCheckInputFamilyNameRRR•t    HaveMoneyR«RY(R;R¥RGR?t    inputNamet    needMoneyt    moneyType((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnCreateFamilyÝs     c    Cs,|j}|j}|j}tjdtj|ƒƒ|}|jƒ}    |jƒ}
tj    ƒ} |
r£| j
|
ƒ} | r£| j |    ƒr t j |dƒdSq£nt|||ƒr¹dS|jƒ} | j|| ƒ} | dkr÷tjd|    ƒdS| jƒ}| j|ƒ}|r$|jƒnd}| jdƒtjƒ}| sV||krhtj|ƒ}ntjd||    || |fƒ| j|ƒ| j|ƒtjddƒ}tjddƒ}|rò|ròt j |dd    i||6ƒnt!| |    |t"j#ƒ|r|j$ƒnt%j&| ƒt'S(
Ns__OnCreateFamily: %stGeRen_chenxin_85890s ´´½¨¼Ò×åʧ°ÜiÿÿÿÿisC´´½¨¹«»á: familyID=%s,playerID=%s,emblemID=%s,serverID=%s,zoneID=%sRÅit costMoneyDict((RÈRtRuR    RRÉR=RMRRRNR_RCR–tCheckFamilyNameExistsR™t    AddFamilyR­R—R1tGetZoneFamilyMgrByFamilyIDt    GetZoneIDtSetLVRtGetDefaultFamilyEmblemIDListtrandomtchoicetLogt SetEmblemIDt SetEmblemWordRRtCostPlayerResourcestDoPlayerJionFamilytIPY_PlayerDefinet    fmlLeadertSortR3tOnZhenbaogeResetRY(RHR¥RGR²RŽRÌtemblemIDt
emblemWordtfullFamilyNameRctplayerFamilyIDRdRWtserverIDt newFamilyIDR,R+t emblemIDListRÍRÎ((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRÆðsP               
            cCs:tjƒj|ƒ}tj|ƒ}tjddƒ}||ksN|dkritjd||fƒdStjddƒ}t|ƒ|krÎtjd|t|ƒ|fƒtj    |d|d|gƒdSt
j |ƒrñtj    |d    ƒdSt|ƒdkst|ƒt kr6tj    |dt dt gƒdSt S(
s¼ì²éÍæ¼ÒÊäÈëµÄ¹«»áÃûÊÇ·ñºÏ·¨£¬½¨ÃË¡¢¸ÄÃûͨÓÃ
    ¡¾×¢¡¿¸Ãº¯Êý½öÔÚÓÎÏ··þÑéÖ¤Ãû×ÖµÄͨÓúϷ¨ÐÔ£¬È糤¶È¡¢Ãô¸Ð´ÊµÈ£¬¹«»áÃûÖØÃûÇëÔÚ¹«»áËùÔÚÊý¾Ý·þÑéÖ¤
    @return: None-²»ºÏ·¨£»·Ç¿Õ-ºÏ·¨µÄ¹«»áÈ«Ãû
    tFamilyNameFormatiisF¹«»áÈ«Ãû serverID=%s error! maxServerID=%s, check FamilyNameFormat.txtNis?¹«»áÈ«Ãû familyName=%s, len=%s > %s, check FamilyNameFormat.txtt NameLenLimitt NameSensitive(R    R˜t GetCharTrimtGetPlayerServerIDRRR—R¹R•R–t    DirtyListtIsWordForbiddentDef_CreatFamily_MaxStrRY(R?RÌt
familyNameRçt maxServerIDtmaxLen((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRÊ)s$ $cCsntjƒ}|j|ƒ}|dkr8tjdƒtS|j|ƒ}|j|ƒrjtj    |dƒtSt
S(Nis ÑéÖ¤¹«»áÖØÃûʱ·ÖÇøÒì³£Ò²ÊÓÎªÖØÃût
NameExists( RRtGetZoneIDInThisServerR    R—RYR tFindFamilyByNameRCR–RL(RHRòR²RdR+R,((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRÒHs   c
Csgtjƒ}t|tƒr3|}|j|ƒ}n|}|sCdS|jƒ}|j|ƒ}|j|ƒ|j|ƒ|t    j
kr—|j |ƒn|r¼t |d|gd|gƒn|j |ƒ|rét||ƒt|ƒn|t    j
kr tj|d|jƒgd|gƒntjƒjƒ}    t|jƒ|tjtjtj|dg|    ƒdS(sN¼ÓÈë¼Ò×壬֧³ÖÀëÏßÍæ¼Ò¼ÓÈë
    @param crossPlayer: Èç¹ûÊÇÀëÏßÍæ¼ÒÔòΪNone
    NR^R„tXW_JZ_EnterFamilyi(RRt
isinstanceRaRNR1t    AddMembertSetFmLVR†RßRàt SetLeaderIDR9tDelPlayerReqJoinFamilyIDAllRƒR[RCt FamilyNotifyt GetPlayerNameR    R˜R¶tAddFamilyActionNoteRtDef_ActionType_FamilyEventt"Def_FamilyActionEvent_MemberChangetDef_FamilyMemberChange_Join(
RRcRHtjionFamilySetLvtbroadcastFamilyChangeRdR:RWR<RG((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRÞWs2       (Rnc Cs²|tjkr tjdƒtStjƒj||ƒ}|jƒ}|sNtS|j    |ƒ|j
|ƒxCt |dƒD]2\}    }
t |d|    ƒ} | rx| |
ƒqxqxWt S(sͳһÌí¼Ó¼Ò×åActionÊý¾Ý
    s¼Ç¼¼Ò×åÐÐΪÀàÐÍ:%s ´íÎóis
SetValue%s(RtDef_ActionTypeListR    R—RLRtGetFamilyActionMgrtGetFamilyActiont    AddActiontSetNamet SetUserDatat    enumerateR¼RY( tcurNameR:t
actionTypetactionDataListRGt isClearNonetuseDatat familyActiont
actionDatatnumtvaluetsetFunc((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRƒs    cCsKtjddiƒ}t|ƒ|kr+tS|t|ƒ}|jƒ|kS(Nt FamilyPoweri(RRtstrRLR}(R<tpowerIDt    powerDictt needMemberLV((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR‡™s
cCs<|jƒ}|sdSt|||ƒ}tj||ƒdS(N(RMtGetPack_FamilyInfoRCR‰(RHt syncMemIDListt    isSyncMemR:t
clientPack((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRX¡s  cCs)t|||ƒ}tj|||ƒdS(N(RRCtSendFakePackByFamily(R:R^RR„R((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR9ªsc
CsÃtjƒ}|j|ƒ}|s%dStjƒ}||_|jƒ|_|jƒ|_    |j
ƒ|_ |j ƒ|_ |jƒ|_|jƒ|_|jƒ|_|jƒ|_|jƒ|_|jƒ|_|jƒ|_t|jƒ|_|jƒ|_g|_ |ržxŒt!|j"ƒƒD]u}|j#|ƒ}|j$ƒ}|r[||kr[q"ntj%ƒ}    |j$ƒ|    _&|j'ƒ|    _(|j)ƒ|    _*t|    j*ƒ|    _+|jƒ|    _,|j-ƒ|    _.|j/ƒ|    _0|j1ƒ|    _2|j3ƒ|    _4|j5ƒ|    _6|jƒ|    _|jƒ|    _|j7ƒ|    _8|jƒ|    _|j9ƒ|    _:|j;ƒ|    _<|j=ƒ|    _>|j?ƒ|    _@|jAƒ|    _B|j jC|    ƒq"Wnt|j ƒ|_D|jEƒ|_F|S(N(GRRRNtChPyNetSendPackttagMCRoleFamilyInfoRoRzRsRyRrtGetExpt FamilyLVExpt GetJoinReviewt
JoinReviewt GetJoinLVMint    JoinLVMinR™tServerIDR{RtR|Rut GetFightPowert
FightPowertGetFightPowerExt FightPowerExt GetBroadcastt    BroadcastR¹t BroadcastLent GetLeaderIDtLeaderIDt
MemberListR6R"R#R=ttagMCRoleFamilyMembertPlayerIDR~RqRÿRÈtNameLentLVtGetJobtJobt
GetRealmLVtRealmLVtGetFacetFacet
GetFacePictFacePict
GetTitleIDtTitleIDR}RptGetContribTotalt ContribTotalt GetContribDayt
ContribDaytGetDonateCntTotaltDonateCntTotaltGetDonateCntDayt DonateCntDayt
GetOffTimetOffTimetappendt MemberCountRtExtra1(
R:R^RRdRWRR;R<tmemIDtmemInfo((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR²sd            cCs=tjƒ}||_||_||_t|jƒ|_|S(N(R!ttagSCFamilyMemDeltTypeR5RÈR¹R6(t delPlayerIDt
playerNametdelTypeR((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytGetPack_FamilyDelìs              cCsdS(N((R;R¥RG((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnRequestJoinFamilyByPlayerüs cCsWtjƒj|ƒ}|j}|dkr=t|ƒr=dSnt|||dtƒdS(Nit__OnRequesJoinFamily(R    R³RÇRRt CheckInJoinCDR«RY(R;R¥RGR?t requestType((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnRequesJoinFamilys      cCsx|j}|j}tjd||fƒ|dkrX|sHt|ƒqtt||ƒn|dkrtt||ƒntS(Ns3__OnRequesJoinFamily: tagFamilyID=%s,requestType=%sii(t TagFamilyIDRRR    RtAutoJoinFamilytRequestJoinTagFamilytCancelJoinTagFamilyRY(RHR¥RGR²RŽt tagFamilyIDRZ((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRXs           cCs2|j}|dkr.tj|tjdƒndS(Nii(RRt
PlayerTaskt AddTaskValuetChConfigtTaskType_ReqOrJoinFamily(R?R¥R¨RZ((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt__OnRequesJoinFamily_Ret.s     c        CsMtj|ƒ}|stStj|ƒ\}}}d}|r•|dkrMtStjddƒ}|rêt|ƒ|kr…||dn|d}qênU|dkr¥tStjddƒ}|rêt|ƒ|krÝ||dn|d}n|rI|d}tƒ|}||krItj    d||||tj
|ƒ||fƒt SntS(Nit FamilyLeaveiiÿÿÿÿii<sb¼ÓÈ빫»áCDÖÐ: leaveCnt=%s,kickedCnt=%s,lastVoluntarily=%s,leaveFamilyTime=%s(%s),passTimes=%s < %s( R•tGetLeaveFamilyTimeExRLtGetLeaveFamilyInfoRRR¹t GetFamilyTimeR    RtChangeTimeNumToStrRY(    R?tleaveFamilyTimetleaveCntt    kickedCnttlastVoluntarilyt joinCDMinutetjoinCDMinuteListtcdTimest    passTimes((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRY6s0 0 -
      &cCs8tjƒr(tjƒr(tjƒjƒSttjƒƒS(N(    R    R R R RœRt GetCrossTimeRaRb(((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRiSsc Csb|jƒrdS|jƒ}|jƒ}tjd||ƒ|jƒ}tjƒ}|j|ƒ}|dkrsdS|j    |ƒ}t
|j ƒƒ}t j |ƒx|D]•}|j|ƒ}    |    sÉq¨n|    jƒ}
|
rí||
kríq¨n|    jƒrÿq¨nt|    jƒdƒ} |    j ƒ| kr,q¨nt|    ||ƒdSWtjdƒtj|dƒdS(Ns!Íæ¼ÒÒ»¼ü×Ô¶¯¼ÓÈë¼Ò×壡 realmLV=%siRsûÓпÉ×Ô¶¯½øÈëµÄ¹«»á!tQuickEnterFamilyFail(RMR=R:R    RRkRRRöR R!R"RØtshuffleR#R'R%tGetFamilySettingRyRÞRCR–( RHRctrealmLVt mainServerIDRdR+R,t    indexListR;RtlvMinR((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR]Xs<           cCsS|s
dStjd|ƒ}|s&dSd|}t||ƒsCdSt||ƒƒS(NitFamilysGet%s(RtGetIpyGameDataR»R¼(tfamilyLVt    fieldNametipyDatatattrName((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRvƒs
c Cs+|jƒ}|jƒr6tjd|jƒ|ƒdStjƒ}|j|ƒ}||krutjd||ƒdStjddƒ}t    |ƒ|kr½tjdt    |ƒ|f|ƒdS|j
|ƒ}|sÖdS|j ƒ}|j ƒ|krtjd|j ƒ|f|ƒdS|j ƒrÌ|jƒ}||kr—tjddƒ}    t    |ƒ|    kr—tjdt    |ƒ|f|ƒtj|d    ƒdSn|j|ƒt|ƒtj|d
ƒt|ƒdSt|jƒd ƒ}
|jƒ|
krtjd |jƒ|
f|ƒdSt|||ƒdS( Ns%ÒѾ­Óй«»á²»ÄÜÔÙÉêÇë¼ÓÈë! familyID=%ss%ÒѾ­ÔÚÉêÇë¼ÓÈ빫»áÁбíÖÐ! familyID=%st FamilyReqJoinis"ÒѾ­´ïµ½×î´óÉêÇë¼ÓÈ빫»áÊý! %s, %ss-¹Ùְδ´ïµ½¸Ã¹«»á¼ÓÈë×îµÍÏÞÖÆ! realmLV=%s < %sisÄ¿±ê¹«»áÉêÇë¼ÓÈëÊýÒÑÂú! %s, %stjiazu_pan_141056tjiazu_pan_500807Rs*Ä¿±ê¹«»á³ÉÔ±ÒÑÂú! familyLV=%s,memberMax=%s(R=RMR    RRRtGetPlayerReqJoinFamilyIDListRRR¹RNR'R:R%tGetReqJoinPlayerInfoRCR–tAddReqJoinPlayerIDtSendFamilyReqJoinInfoRKRvRyR"RÞ( RHR:RcRdtreqFamilyIDListtmaxReqFamilyCntt    tagFamilyRztreqPlayerIDDicttmaxReqPlayerCntt    memberMax((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR^sN            
 
 cCsetjƒ}|jƒ}|j|ƒ}|r=|j|ƒn|j||ƒt|ƒt|ƒdS(N(RRR=RNtDelReqJoinPlayerIDtDelPlayerReqJoinFamilyIDR‡RK(RHR:RdRcRŠ((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR_Çs  
 
cCs~|jƒ}tjƒ}|j|ƒ}| r9| r9dStjƒ}|jƒ||_t|jƒ|_    t
j ||ƒdS(N( R=RRR„R!t tagMCNotifyRequestJoinFamilyInfotCleartRequestJoinFamilyIDListR¹t RequestCountRCR‰(RHtisForceRcRdRˆR((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRKÓs   
    cCs6tjƒ}|j|ƒrtS|j|ƒr2tStS(N(RRR…RYR„RL(RcRd((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytIsFamilyNeedViewPlayerâs  cCs#tj|t|ƒdttƒdS(N(RCR RŠR­R‡Rˆ(R:((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR‡ðsc Cs°tjƒ}|j|ƒ}|s%dS|jƒ}tjƒ}tjƒ}g|_xE|j    ƒD]7\}}|j
|ƒ}tj ƒ}    ||    _ ||    _ |r¤dnd|    _tj|ƒ}
|
rm|
jƒ|    _t|    jƒ|    _|
jƒ|    _|
jƒ|    _|
jƒ|    _|
jƒ|    _|
jƒ|    _|
jƒ|    _ |
j!ƒ|    _"|
j#ƒ|    _$|
j%ƒ|    _&n|jj'|    ƒt|jƒdkr_Pq_q_Wt|jƒ|_(|S(Niiid()RRRNR…RCRDR!ttagMCFamilyReqJoinInfot ReqJoinListtitemsREttagMCFamilyReqJoinPlayerR5tReqTimetIsOnLineR€t FindViewCacheRÿRÈR¹R6RyR7R8R9R:R;R<R=R>R?R@RAR*R+R,R-R™R)RLtReqCnt( R:RdRWR‹tcrossPlayerMgrRRctreqTimeRHtreqInfot    viewCache((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRŠõs@                 cCs,tjƒj|ƒ}t|||dƒdS(Nt__OnJoinFamilyReply(R    R³RÇR«(R;R¥RGR?((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnJoinFamilyReply#scCs7|j}|j}tjd||fƒ|jƒ}|jƒ}|dkrQdStjƒ}    |    j|ƒ}
|
svdS|
j    |ƒ} | sdSt
| t ƒs²tjd|ƒdStjd|||f|ƒ|
j ƒ} | j ƒ} |r|| krtjd|ƒdS|g} n| s1tjdƒdStjƒ}|s°x\| D]T}|
j|ƒ|j|ƒ}|sxqJnt|ƒtj|d|
jƒgƒqJWt|ƒdStjdd    ƒ}t|
jƒd
ƒ}g}x*| D]"}|
jƒ|krtj|d ƒPn|j|ƒ}|sX|sXtjd ||ƒtj|d ƒqäqXn|
j|ƒ|
j    |ƒržtjd||ƒtj|dƒqän|    j|ƒ}|rãtjd||f|ƒtj|dƒqänt|
||dtƒ|j|ƒqäWt|ƒ|r3t|d|d|ƒndS(Ns+__OnJoinFamilyReply: tagPlayerID=%s,isOK=%sisûÓÐÕÐÈËȨÏÞ£¬ÎÞ·¨ÉóºËÈËÔ±ÈëÃË!s0ÉóºËÈëÃËÉêÇë: tagPlayerID=%s,familyID=%s,isOK=%ss ²»´æÔÚ¸ÃÉêÇëÈËÔ±! tagPlayerID=%ss ûÓÐÉêÇëÈËÔ±!tjiazu_pan_592934RiRtjiazu_lhs_202580s$ÀëÏßÍæ¼ÒÎÞ·¨¼ÓÈ빫»á! tagPlayerID=%stjiazu_hwj35_367906sÒѾ­ÊDZ¾Ã˳ÉÔ±! tagPlayerID=%stXW_JZ_InviteErr_Repeats/ÒѾ­¼ÓÈëÆäËû¹«»á! tagPlayerID=%s,tagFamilyID=%sRR^R„( t TagPlayerIDtIsOKR    RR=RMRRRNR_R‡RˆR…tkeysRCRDRŽRERKR–RzR‡RRRvRyR"R…RÞRLRLR9(RHR¥RGR²RŽt tagPlayerIDR¨RcR:RdRReR‹ttagPlayerIDListRžttagCrossPlayertofflinePlayerCanJoinRtjoinOKPlayerIDListR`((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR¢(sˆ                    
 
      
cCs,tjƒj|ƒ}t|||dƒdS(Nt__OnChangeFamilyJoin(R    R³RÇR«(R;R¥RGR?((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnChangeFamilyJoinˆsc Csý|j}|j}tjd||fƒ|jƒ}|jƒ}|dkrQdStjƒ}    |    j|ƒ}
|
svdS|
j    |ƒ} | sdSt
| t ƒs²tjd|ƒdStjd|||f|ƒ|
j |ƒ|
j |ƒt|dtƒdS(Ns0__OnChangeFamilyJoin: joinReview=%s,joinLVMin=%sis ûÓÐÕÐÈËȨÏÞs4ÐÞ¸ÄÕÐÈËÉèÖÃ: familyID=%s,joinReview=%s,joinLVMin=%sR(R&R(R    RR=RMRRRNR_R‡Rˆt SetJoinReviewt SetJoinLVMinR9RL( RHR¥RGR²RŽt
joinReviewt    joinLVMinRcR:RdRRe((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR°s,              cCs,tjƒj|ƒ}t|||dƒdS(Nt__OnChangeFamilyBroadcast(R    R³RÇR«(R;R¥RGR?((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnChangeFamilyBroadcast­sc Cså|j}|jƒ}|jƒ}|dkr1dStjƒ}|j|ƒ}    |    sVdS|    j|ƒ}
|
sodSt|
tƒs’t    j
d|ƒdS|    j |ƒt    j
dt    j |    j ƒƒt    j |ƒf|ƒt|dtƒdS(NisûÓÐÐ޸Ĺ«¸æÈ¨ÏÞs¸ü¸Ä¹«»á¹«¸æ: Family=%s,¹«¸æ=%sR(tMsgR=RMRRRNR_R‡tFamilyPowerID_BroadcastR    Rt SetBroadcastRÉRzR9RL( RHR¥RGR²RŽt    broadcastRcR:RdRRe((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR¶²s&         2cCs,tjƒj|ƒ}t|||dƒdS(Nt__OnChangeFamilyEmblem(R    R³RÇR«(R;R¥RGR?((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnChangeFamilyEmblemÐscCs)|j}|j}tj|||ƒdS(N(RtRuRR½(RHR¥RGR²RŽtchangeEmblemIDRä((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR¼Õs        cCs,tjƒj|ƒ}t|||dƒdS(Nt__OnChangeFamilyMemLV(R    R³RÇR«(R;R¥RGR?((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnChangeFamilyMemLVãscCst||j|jƒdS(N(tOnChangeFamilyMemberLVR5Rp(RHR¥RGR²RŽ((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR¿èscCs«|s
dS|jƒ}|jƒ}|dkr2dStjƒ}|j|ƒ}|sWdS|j|ƒ}|spdS|dks‹|tjkr tj    d|ƒdS|sÜt
|t ƒs¹dS||krÜtj    d|ƒdSn|j|ƒ}    |    dkrtj    d||ƒdS|s|j ƒtjkr||j ƒkrTtj    d||ƒdS|    j ƒ|j ƒkrtj    d|    j ƒ|ƒdSqn|g}
|tjkrÅt||    ƒ|
j|ƒn¼d} xKt|jƒƒD]7} |j| ƒ} | j ƒ|kr qÞn| d7} qÞWt|jƒtj|d    ƒƒ}| |krttj|d
ƒtj    d || |fƒdSt|    |ƒ|r—|jd    ƒnt|d |
ƒtS( sαä¸ü³ÉԱְλ
    @param curPlayer: ²Ù×÷µÄÍæ¼Ò
    @param tagID: Ä¿±ê³ÉÔ±ID
    @param changeFmlv: ÐÞ¸ÄΪxxְλ
    @param isGMOP: ÊÇ·ñÊÇGMºǫ́·¢ÆðµÄ£¬Èç¹ûÊÇGM·¢ÆðµÄ£¬Ò»°ãcurPlayer´«ÈëµÄΪĿ±ê³ÉÔ±IDʵÀý
    Nis²»´æÔÚ¸ÃְλµÈ¼¶! changeFmlv=%ss²»ÄÜÈÎÃâ×Ô¼ºµÄ¼Ò×åְλs*¸ü¸Ä¼Ò×å³ÉԱְλʱĿ±ê³ÉÔ±²»´æÔÚ! tagID=%ss+Ð޸ĵÄְλ²»ÄܱÈ×Ô¼º¸ß»òƽ¼¶! changeFmlv=%ss0Ð޸ĵÄÄ¿±ê³ÉԱְλ²»ÄܱÈ×Ô¼º¸ß»òƽ¼¶! tagFmlv=%siRntjiazu_chenxin_31379s?Ŀǰ¸ÃְλµÄÈËÊýÒѾ­´ïµ½ÉÏÏÞ! changeFmlv=%s,fmLVMemCnt=%s >= %sR^(R=RMRRRNR_RßRàR    RR‡tFamilyPowerID_ChangeFmlvR­R}tChangeFamilyLeaderRLR!R"R#RvRytDef_FmlSetAttrNameR¬RCR–tChangeFamilyMemberLvRºR9RY(RHttagIDt
changeFmlvtisGMOPRcR:RdRRet    tagMemberR^t
fmLVMemCntR;t familyMembertmaxCnt((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRÁìsl      
     !  cCs—|jƒ}|jƒ}|jƒ}||kr4dS|j|ƒ}|r\t|tjƒn|j|ƒt|tjƒt    j
d|||fƒdS(Ns9¼Ò×åÉèÖÃÐÂ×峤! familyID=%s,newLeaderID=%s,befLeaderID=%s( R1R1R=R_RÆRßt    fmlMemberRüRàR    RÚ(Rt newLeaderMemR:t befLeaderIDt newLeaderIDt befLeaderMem((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRÄ3s     cCsê|jƒ}|jƒ}|jƒ}|jƒ}|j|ƒtjƒj|ƒ}|rt||ƒt    |t
ƒrtj |t |ƒƒqnt jƒjƒ}t||tjtjtj||g|ƒtj|d||gƒdS(NtXW_JZ_AppointFamily(RMR=RÿR}RûRCRDRERƒR‡RˆR‰RŠR    R˜R¶RRRRtDef_FamilyMemberChange_FMLVRþ(RÊtchangeFamilyLVR:RÇtmemNamet befFamilyLVR­RG((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRÆFs      cCsI|jƒ}|j|ƒ}|s%dS|jƒ}|s;dS|jƒ}ttjƒƒ}||}|d}    |    |kr¢tjd||tj|ƒ|    |ƒdSg}
xÎt    d|j
ƒƒD]·} |j | ƒ} | j ƒt jkrîq¾n| jƒ} | r| }|| }|d}n|}d}d}| j ƒ}| jƒ}|r¾||kr¾|
j|||| gƒq¾q¾W|
s”tjd|ƒdS|
jdtƒ|
dd}|s¼dS|jƒ}tjd||tj|ƒ|    |fƒt||ƒt|d||gƒ|jƒ}tjd    |g|jƒgd
|ƒdS( Ng ¬@s\ÃËÖ÷ÀëÏß䳬¹ýÏÞÖÆÐ¡Ê±£¬²»´¦Àí×Ô¶¯´«Î»£¡familyID=%s,leaderID=%s,offTime=%s,passHours=%s < %sis!ûÓпɴ«Î»µÄÄ¿±ê³ÉÔ±! familyID=%streverseiÿÿÿÿsL¹«»á×Ô¶¯´«Î»: familyID=%s,leaderID=%s,offTime=%s,passHours=%s,newLeaderID=%sR^Rt
toServerID(R1R_RJR1RaRbR    t
DebugLogExRjR!R"R#R}RßRàRBRLRtsortRYR=RÚRÄR9R™t
PlayerMailt SendMailByKeyRz(RWR%R&tleaderIDt    leaderMemtoffTimeR:tcurTimetpassTimet    passHourst priorityListR-R<t
memOffTimetsortTimet memPassTimet memPassHourstfmLVt contribTotalttoMemberRÑRÙ((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR$^s^   
 
      
            %cCsdS(N((R;R¥RG((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnGetFamilyInfo¡scCs,tjƒj|ƒ}t|||dƒdS(Nt__OnMemLeaveFamily(R    R³RÇR«(R;R¥RGR?((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt OnLeaveFamily­sc Cs…|jƒ}|jƒ}|dkr(dStjƒ}|j|ƒ}|sMdS|j|ƒ}    |    sfdS|    jƒ}
|jƒdkr§|
tj    kr§t
j d|ƒdSt
j d||ƒ|j |ƒt |jƒ|tjtjtjg|ƒt|||ƒt|ddƒtj|t||jƒdƒƒtj|d|jƒgƒt|dtƒ|jƒdkrt|ƒdSdS(Niis%×峤ÔÚ³ÉÔ±ÈËÊý´óÓÚ1ʱ²»ÄÜÖ±½ÓÍ˳ö¼Ò×åsÀ뿪¼Ò×å! familyID=%stXW_JZ_LeaveFamilyR(R=RMRRRNR_R}R"RßRàR    Rt DeleteMemberRRÿRRRtDef_FamilyMemberChange_Leavet__DoPlayerLeaveFamilyByIDRƒRCR RVRþR9RLt DoDelFamily( RHR¥RGR²RŽRcR:RdRReR}((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRí²s8     !     "
cCs@|s
dS|jƒ}tjƒ}tj|ƒ|j|ƒdS(N(R1RRRVt OnDelFamilyt    DelFamily(RR:Rd((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRóÞs    cCs,tjƒj|ƒ}t|||dƒdS(Nt__OnDeleteFamilyMember(R    R³RÇR«(R;R¥RGR?((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnDeleteFamilyMemberòscCsõ|j}tjd|ƒ|jƒ}||kr6dS|jƒ}|dkrRdStjƒ}|j|ƒ}    |    swdS|    j|ƒ}
|
sdSt    |
t
ƒs°tjdƒdS|    j|ƒ} | sÉdS|
j ƒ} | j ƒ} | | krtjd|| | f|ƒdS| j ƒ}| jƒ}|    j |ƒt||tjtjtjg|ƒtj|d|gƒtjƒj|ƒ}t|    ||ƒ|rÅt|dƒtj|d|
j ƒgƒntj|t||dƒƒt|dtƒdS(Ns%__OnDeleteFamilyMember tagMemberID=%sis ûÓÐÌßÈËȨÏÞ!sCÖ»ÄÜÌß±È×Ô¼ºÖ°Î»µÍµÄ³ÉÔ±! tagMemberID=%s,tagFmlv(%s) >= curFmlv(%s)RïtXW_JZ_LeaveFamilyKickR(tMemberIDR    RR=RMRRRNR_R‡tFamilyPowerID_KickR}RÿRðRRRRtDef_FamilyMemberChange_KickOutRCRþRDRERòRƒR–R RVR9RL(RHR¥RGR²RŽt tagMemberIDRcR:RdRReRÊtcurFmlvttagFmlvt tagPlayerNameR«R­((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRö÷sP                 cCs$tj||ƒtj||ƒdS(N(R5tOnFamilyMemberLeaveRV(RWt leavePlayerIDRH((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRò1sc    Cs™tjƒj|ƒ}|j}t||ƒs>tjdƒdStjddƒ\}}|r||r|tj    |||ƒ r|dSt
|||dt dƒdS(NsÃû×ÖÑéÖ¤²»Í¨¹ýt FamilyRenameit__UpdateFamilyNamei( R    R³RÇtNewNameRÊRRRR•RËR«RY(R;R¥RGR?tnewNameRÎt
moneyValue((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytUpdateFamilyName@s     "c    Cs4|j}|jƒ}|jƒ}|dkr1dStjƒ}|j|ƒ}    |    sVdS|    j|ƒ}
|
sodS|
jƒtj    kr˜t
j d|ƒdSt t j ƒƒ} tjddƒ} | r| d} t|    ƒ}|r| || krt
j dt
j|ƒ| fƒdSnt|||ƒr+dS|j|ƒ}|sDdS|j|    |ƒsZdS| rpt|    | ƒntjddƒ\}}|r´|r´tj|ddi||6ƒntjƒ}x]t|    jƒƒD]I}|    j|ƒ}|jƒ}|j|ƒ}|sqÓnt||ƒqÓWt|d    t ƒt!S(
Nis·ÇÃËÖ÷²»¿É¸ÄÃû!Riis*¹«»á¸ÄÃûCDÖÐ! lastRenameTime=%s,cdHours=%siRÑR("RR=RMRRRNR_R}RßRàR    RRaRbRRRRjRÒRÔtFamilyRemainNameRRRCRÝRDR6R"R#RERƒR9RLRY(RHR¥RGR²RŽRRcR:RdRReRátcdHourst    cdSecondstlastRenameTimeR,RÎRRžR;R<ROtmemCrossPlayer((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRLsZ        
      cCs™tjƒj|ƒ}|jƒ}|j}|j}| sR|tjƒjƒkrltj    |t
|ƒƒdSt j t ji|d6|gt j|ƒdS(NR`(R    R³RÇR=Rot DataServerIDR˜R™R®R‰tGetTagFamilyInfoPackRht SendToServerRtS2S_ViewTagFamilyt dirType_All(R;R¥RGR?RcR`t dataServerID((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnViewTagFamilys         )cCs'|d}tj|t|ƒ|ƒdS(NR`(RCtSendFakePackByIDR(RlR²RcR`((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRžs
cCsotjƒ}|j|ƒ}|s6tjd|ƒdStjƒ}|jƒ|_|j    ƒ|_
t |j
ƒ|_ |j ƒ|_|j|jƒ}|rÌ|jƒ|_t |jƒ|_|jƒ|_n|jƒ|_|jƒ|_|jƒ|_|jƒ|_|jƒ|_|jƒ|_|j ƒ|_!t |j!ƒ|_"|j#ƒ|_$tj%ƒjƒ|_&|S(Ns&±¾·þÊý¾ÝÕÒ²»µ½Ä¿±ê¹«»á! tagFamilyID=%s('RRRNR    R—R!ttagSCTagFamilyInfoR1RoRzRsR¹t FamilyNameLenR1R2R_Rÿt
LeaderNamet LeaderNameLenR™tLeaderServerIDRyRrR)R{RtR|RuR*R+R,R-R.R/R0R"RMR˜R (R`RdRRt leaderMember((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR£s4  cCs,tjƒj|ƒ}t|||dƒdS(Nt__OnViewFamilyPage(R    R³RÇR«(R;R¥RGR?((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnViewFamilyPageÉscCse|j}|j}t|jdƒ}tjƒ}|j|ƒ}    |    dkr`tjd|ƒdS|j    ƒ}
|j
|    ƒ} | j t ƒ| j ƒ} d} |sÜ||}||d}| dkrþtj| |ƒ} qþn"d}d}d} d}| d}tjƒ}||_t|jƒ|_||_||_| |_| j|
ƒ|_g|_xót||dƒD]Þ}|| kr…Pn| j|ƒ}|s qon|rÙ||jƒksÖ|t|jƒƒkroqÙqontjƒ}|d|_|jƒ|_|jƒ|_t|jƒ|_|j ƒ|_!|j"|j!ƒ}|rU|j#ƒnd|_$t|j$ƒ|_%|r‚|j&ƒn    |j&ƒ|_'|j(ƒ|_)|j*ƒ|_+|j,ƒ|_-|j&ƒ|_.|j/ƒ|_0|j1ƒ|_2|j3ƒ|_4|j5ƒ|_6|j ƒ|_7|jj8|ƒt|jƒ|_9|j9|kroPqoqoWt:j;||ƒdS(Ni2is1ÕÒ²»µ½·þÎñÆ÷IDÔÚ±¾·þÖеĹ«»á·ÖÇø! fromServerID=%siiRn(<R¸t    PageIndextmint    ShowCountRRRöR    R—RMR RáRYR"t GetIntUpperR!ttagMCFamilyViewListR¹tMsgLent    TotalPaget GetFamilyRanktRankt
FamilyListR!R#RzRR1ttagMCFamilyViewRoRsRR1R2R_RÿRRR™RRyRrR%R&R'R(R)R{RtR|RuR*R+R,R-RMRLt FamilyCountRCR‰(RHR¥RGR²RŽtmsgt    pageIndext    showCountRdR+RæR,t familyCountt    totalPaget
startIndextendIndexRR;Rt
familyViewR((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRÎs„             
 
                      *  !c
Cstjƒj|ƒ}|jƒ}|j}tjd|ƒ}|sFdS|jƒ}|jt    j
|ƒ}||kr•tj d|||f|ƒdS|j ƒ}    |j ƒ}
|     s»|
r¿dStj||    |
ƒsØdSi|d6} t|||dtdd| ƒdS(Nt FamilyDonates6½ñÈÕ¾èÏ×´ÎÊýÒÑ´ïÉÏÏÞ! donateType=%s,donateCnt=%s >= %st    donateCntt__OnFamilyMoneyDonateiRŽ(R    R³RÇR=t
DonateTypeRR|t GetDailyCnttNomalDictGetPropertyRctDef_Player_Dict_FamilyDonateCntRt GetMoneyTypet GetMoneyValueR•RËR«RY( R;R¥RGR?Rct
donateTypeRt dailyCntMaxR2RÎRRŽ((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnFamilyMoneyDonate#s(          cCs³|j}|jƒ}|jƒ}|dkr1dStjƒ}|j|ƒ}    |    sVdS|    j|ƒ}
|
sodS|sydSd|kr‰dS|d} tjd|ƒ} | s¯dS| j    ƒ} | j
ƒ}| sÕ| rÙdSt j |ddi|| 6ƒ| j ƒ}| d7} t j|i| tj|6ddƒ|
jƒd}t|
jƒdtjƒ}|
j|ƒ|
j|ƒtjd    || |||f|ƒt j||d
dƒtS( NiR2R1tFamilyMoneyDonateRÑit    resetTypetDaysM¼Ò×å¾èÏ×: donateType=%s,donateCnt=%s,%s,memDonateCntDay=%s,memDonateCntDay=%st    eventName(R4R=RMRRRNR_RR|R8R9RCRÝtGetAwardItemListtSetPlayerNomalDictRcR7RHRRFtDef_UpperLimit_DWordR8tSetDonateCntTotalR    RtGivePlayerResourcesRY(RHR¥RGR²RŽR:RcR:RdRWReR2RRÎRt awardItemListtmemDonateCntDaytmemDonateCntTotal((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR3<sH         
 
$      cCs|s
dSt|ƒdS(N(tSyncDonateCntInfo(R?R¥R¨((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt__OnFamilyMoneyDonate_Retjs
c    Cs<d\}}i|d6}t|||dddd|ƒdS(NitaddExpt__AddFamilyExpR¦RŽ(Ni(R­R«(R?RKR¥RGRŽ((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt AddFamilyExpps  cCsk|jƒ}|jƒ}|dkr(dStjƒ}|j|ƒ}|sMdS|jƒ}    |jƒ}
|sodS|d} |    } |
| } tjd|    |
| | f|ƒt    j
d|    ƒ}|j ƒ}xs|r<| |kr<t    j d| dƒ}|süPn| d7} | |8} |j ƒ}tjd| | |f|ƒqÊW|j | ƒ|j| ƒt|dtƒtS(NiRKs4Ôö¼Ó¹«»á¾­Ñé: curLV=%s,curExp=%s,addExp=%s,updExp=%sR{is+    ¹«»áÉý¼¶: updLV=%s,updExp=%s,lvUPExp=%sR(R=RMRRRNRyR#R    RRR|t
GetNeedExptGetIpyGameDataNotLogRÖtSetExpR9RLRY(RHR¥RGR²RŽRcR:RdRWtcurLVtcurExpRKtupdLVtupdExpRtlvUPExp((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRLvs<      
 
  
 
 !  c    Cs<d\}}i|d6}t|||dddd|ƒdS(NitaddContribValuet__AddFamilyContribR¦RŽ(Ni(R­R«(R?RVR¥RGRŽ((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytAddFamilyContrib›s  c Cs|jƒ}|jƒ}|dkr(dStjƒ}|j|ƒ}|sMdS|j|ƒ}    |    sfdS|spdS|d}
|    jƒ|
} t|    jƒ|
t    j
ƒ} |    j | ƒ|    j | ƒt jd||
| | f|ƒt||
ƒt|d|gƒdS(NiRVsJÔö¼Ó³ÉÔ±¹±Ï×: familyID=%s,addContribValue=%s,contribDay=%s,contribTotal=%sR^(R=RMRRRNR_RDRRBRcRCR7tSetContribTotalR    Rt__AddFamilyWeekdayContribR9( RHR¥RGR²RŽRcR:RdRWReRVt
contribDayRê((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRW¡s,    
    c    CsÜtjƒr!tjƒjƒ}nttjƒƒ}tj|ƒ}|jƒd}t    j
ƒj |t j ƒ}|jtƒ}|jƒ}|jt|ƒdƒ|}||t|ƒ<tjd||fƒt|gƒdS(Niis0¸üй«»áÖÜX×ܹ±Ï×: curWeekday=%s,contribTotal=%s(R    R
RœRRsRaRbtChangeTimeNumToDatetimetweekdayRRRRRPt GetOneActionRYt GetUserDictR¬RRtSendFamilyAction(    R:RVRát curDatetimet
curWeekdaytdayContribActionRtdataDictRê((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRZ¼s   cCsÉtjƒr!tjƒjƒ}nttjƒƒ}tj|ƒ}|jƒd}t    j
ƒj |t j ƒ}|jtƒ}|jƒ}d|t|ƒ<tjd|||jƒfƒt|gƒdS(Niis/ÖØÖù«»áÖÜX×ܹ±Ï×: familyID=%s,curWeekday=%s,%s(R    R
RœRRsRaRbR\R]RRRRRPR^RYR_RRR`(R:RáRaRbRcRRd((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR2Ïs    cCs4tjƒj|tjƒ}|jtƒ}|jƒS(N(RRRRRPR^RYR_(R:RcR((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytGetFamilyWeekdayContribDictàscCs,tjƒj|ƒ}t|||dƒdS(Nt__OnQueryFamilyAction(R    R³RÇR«(R;R¥RGR?((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnQueryFamilyActionðscCs;|j}|j}|s'|jƒ}nt|||ƒdS(N(t
ActionTypeRoRMRO(RHR¥RGR²RŽRR:((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRfõs         cCs||s
dStjƒj||ƒ}tjƒ}||_||_g|_xðt|j    ƒƒD]Ü}|j
|ƒ}tj ƒ}|j ƒ|_ |jƒ|_t|jƒ|_|jƒ|_|jƒ|_|jƒ|_|jƒ|_|jƒ|_|jƒ|_|jƒ|_t|jƒ|_ |jj!|ƒq\Wt|jƒ|_    |rht"j#||ƒdSt"j$||ƒdS(N(%RRRR!ttagMCFamilyActionInfoRoRhtFamilyActionListR6tCounttAtttagMCFamilyActiontGetTimetTimeRzRÈR¹R6t    GetValue1tValue1t    GetValue2tValue2t    GetValue3tValue3t    GetValue4tValue4t    GetValue5tValue5t    GetValue6tValue6t GetUserDatatUseDatat
UseDataLenRLRCR‰R (RHR:RRRR;tfamilyActionDataR((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyROýs8              c    Cs°t|tƒs|g}n|s%dS|d}|jƒ}|jƒ}tjƒ}||_||_g|_xÕ|D]Í}tj    ƒ}|j
ƒ|_ |j ƒ|_ t|j ƒ|_|jƒ|_|jƒ|_|jƒ|_|jƒ|_|jƒ|_|jƒ|_|jƒ|_t|jƒ|_|jj|ƒquWt|jƒ|_ |rrt!j"||ƒdS|rœx1|D]}t!j#||ƒqWnt!j#||ƒdS(Ni($RùtlistRMt GetActionTypeR!RiRoRhRjRmRnRoRzRÈR¹R6RpRqRrRsRtRuRvRwRxRyRzR{R|R}R~RLRkRCR‰R (    RRHttoFamilyIDListRR:RRRt
toFamilyID((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR`"sD 
                  cCs<d\}}i|jƒd6}t|||dd|ƒdS(Nit
talkBuffert__OnFamilyTalkRŽ(Ni(R­R¢R«(R?R:ttalkPackRGR¥RŽ((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt OnFamilyTalkLs c Cs•|d}|jƒ}|jƒ}| s0| r4dStjƒ}|j|ƒtj||ƒ|j}    |j}
|j    } t
j |    ||
| |ƒdS(NR„( R=RMR!t    tagMCTalktReadDataRCR t ChannelTypetContentt    BubbleBoxRQt DoTalkCache( RHR¥RGR²RŽR„RcR:Rt channelTypetcontentt    bubbleBox((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR…Qs
                cCsktjƒjƒ}|dkr/tjdƒdSd\}}i|jƒd6}t|||dd|ƒdS(Nis±¾·þ¹«»áδ»¥Í¨£¬²»ÔÊÐí¿ç·þÁÄÌìR„t __OnCrossTalkRŽ(Ni(RRR”R    RR­R¢R«(R?R†RGR§R¥RŽ((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnCrossFamilyTalkcs   cCsß|d}|jƒ}|s dStjƒ}|j|ƒ}|dkr\tjd|ƒdS|j|ƒ}    |    jƒ}
|
sdStj    ƒ} | j
|ƒt j | |
ƒ| j } | j} | j}tj| || |ƒdS(NR„is1ÕÒ²»µ½·þÎñÆ÷IDÔÚ¿ç·þÖеĹ«»á·ÖÇø! fromServerID=%s(R=RRRöR    R—R tGetZoneServerIDListR!RˆR‰RCtSendFackPackToServerListRŠR‹RŒRQR(RHR¥RGR²RŽR„RcRdR+R,t serverIDListRRŽRR((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR‘ms*
                  cCsStjƒj|ƒ}|sdS|d}|d}|dkrOt||ƒndS(NRfRgRx(R    R³R´tDo_MapServer_FamilyRefresh(RlRcR?RfRg((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRjs
 
 cCs_tjƒjƒ}|jƒ}|d}|jddƒ}|jddƒ}|jddƒ}|jddƒ}|jddƒ}    |jd    dƒ}
|jd
dƒ} tj||||    |
ƒtj|t    j
|ƒ|j ƒ} |j ƒ} tj |ƒ}| |kr|j|ƒn|jƒ|kr:|j|ƒn||krYtj||ƒn| |krµt}| r†|dkr†t}n|j|ƒtj|t    j|ƒ|rµqµn| dkrø|j ƒdkrø|jd dƒ}t|||ƒnF| dkr>|j ƒdkr>|j ƒtjkr.nt||ƒn|jƒ| r[t|ƒndS( NRoRpiRqRrRsRnRtRuRwRv(R    R˜R¶R=R¬R€RR•tNomalDictSetPropertyRctDef_Player_Dict_FamilyJoinTimeRMt GetFamilyLVtGetFamilyMemberLVRt GetFamilyNamet SetFamilyNametSetFamilyMemberLVRLRYt SetFamilyLVtDef_Player_Dict_FamilyLVt__OnLeaveFamilyRSRàt__OnEnterFamilytView_FamilyInfoRefreshtDo_MapServer_PlayerLogin(R?RgRGRcR‹t refreshFmLVtrefreshJoinTimetrefreshFamilyLVtrefreshFamilyNametrefreshEmblemIDtrefreshEmblemWordRwt lastFamilyIDt lastFamilyLVtlastFmLVtisLVUPRv((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR–šsP 
          
 cCs5tj|ƒt|ƒtj|ƒtj|ƒdS(N(R tSync_FamilyCrossInfoRIR3RIR5(R?((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR£Ös
 
  cCstj|tjƒdS(N(Rat UpdTaskValueRcRd(R?RG((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR¡Þsc Csÿ|jdƒ|jdƒ|jdƒ|jdƒ|jdƒtj|tƒƒtj|ƒ\}}}t    j
d|||fƒt j ddƒd}}|rt j ddƒ}|ræt|ƒ|krÙ||n|d}n|d7}t    j
d|ƒn\t j dd    ƒ}|rEt|ƒ|kr8||n|d}n|d7}t    j
d
|ƒtj||||ƒ|rÞ|rÞtj||ƒ}    t|    |d ƒ}
t    j
d |||    |
fƒtj|||
d ƒntj|ƒtj||ƒdS(Nis:__OnLeaveFamily: isVoluntarily=%s,leaveCnt=%s,kickedCnt=%sRfiiiÿÿÿÿis!    Ôö¼ÓÖ÷¶¯À뿪´ÎÊý: leaveCnt=%sis"    Ôö¼Ó±»ÌßÀ뿪´ÎÊý: kickedCnt=%sgY@sD    ¿Û³ý»õ±Ò: delMoneyType=%s,delMoneyPer=%s,nowMoney=%s,delMoney=%st LeaveFamily(t    SetPerExptSetFamilyHornortSetFamilyActiveValuetSetLastWeekFamilyActiveValueRžR•tSetLeaveFamilyTimeExRiRhR    RRRRR¹tSetLeaveFamilyInfotGetMoneyRatPayMoneyR5tOnPlayerLeaveFamilytFBLogicRî( R?RvRGRlRmt_t delMoneyTypet delMoneyPertdelMoneyPerListtnowMoneytdelMoney((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR ãs:     )
)
  cCs t}tjƒ}xtt|jƒƒD]`}|j|ƒ}|jƒ}|jtj    |ƒ}|r%t
j |tj    |dƒt }q%q%W|rœt |ƒndS(Ni(RLRtIPY_DataR!tGetFamilyDonateCounttGetFamilyDonateByIndext GetDonateTypeR6RcR7R•R—RYRI(R?tisResett
ipyDataMgrR;RR:R2((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRB    s    cCs²g}tjƒ}xXt|jƒƒD]D}|j|ƒ}|jƒ}|jtj|ƒ}|j    |ƒq%W|swdSt
j ƒ}||_ t |j ƒ|_tj||ƒdS(N(RRÁR!RÂRÃRÄR6RcR7RLR!ttagSCDonateCntInfot DonateCntListR¹RkR®R‰(R?t donateCntListRÆR;RR:R2R((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRI    s       i(RºRcR    RR•R®R€R!RR3RVR5RßRRSRÜRaRCRQRïRR RhRœRØRbRñR!RˆRÃR¹RúRÎt fmlCounsellort fmlViceLeaderRÅRRRRRRR/R0R.R@RAR>RIRFR[R]R\RmRLRƒRJRŒR­R«R¤R±RšR›RµRÏRÆRÊRÒRYRÞRR‡RXR9RRVRWR[RXReRYRiR]RvR^R_RKR•R‡RŠR£R¢R±R°R·R¶R½R¼RÀR¿RÁRÄRÆR$RìRîRíRóR÷RöRòRRRRRRRR<R3RJRMRLRXRWRZR2ReRgRfROR`R‡R…R’R‘RjR–R£R¡R RBRI(((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt<module>s                          
 
                                     
                                            &    #    /            
        9     ,        :                             +         8                 .    `                  G            C         ,        :      D            &    U    .        %                        %*        
#    
    <            %