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
SÞjc@sòddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZdZeddtƒ\ZZZZ ide 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„Z0d„Z1d„Z2d„Z3d„Z4d„Z5d„Z6de7d„Z8d„Z9d„Z:e7ddd„Z<d „Z=d!„Z>ddd"„Z?d#„Z@d$„ZAd%„ZBddd&„ZCd'„ZDdd(„ZEe j!eFd)„ZGeFd*d+„ZHd,„ZIdeFd-„ZJdeFdd.„ZKdeFd/„ZLdd0„ZMd1„ZNd2„ZOddd3„ZPd4„ZQd5„ZRd6„ZSd7„ZTd8„ZUd9„ZVd:„ZWeFd;„ZXd<„ZYd=„ZZd>„Z[d?„Z\ddd@„Z]dA„Z^dddB„Z_dC„Z`dddD„ZadE„ZbdddF„ZcdG„ZddddH„Zee7dI„ZfdJ„ZgdK„ZhdL„ZidM„ZjdN„ZkdddO„ZldP„ZmdQ„ZndddR„ZoddS„ZpdT„ZqdddU„ZrdV„ZsdW„ZtdX„ZudY„ZvdddZ„Zwd[„Zxddd\„Zyd]„Zzd^„Z{ddd_„Z|d`„Z}ddda„Z~db„Zdc„Z€dd„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 GetRenameTimeAscCs |j|ƒS(N(t    SetExtra1(Rt
renameTime((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt SetRenameTimeBscCs: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.pytOnMinuteDs  
cCstjƒrtƒndS(N(R    R
t__doFamilyOnHour(((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytFamilyOnHourCrossMs 
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 FamilyOnHourRs
 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.pyRYs"
 
 cCstjƒrtƒndS(N(R    R
t__doFamilyOnDay(((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytFamilyOnDayCrossps 
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 FamilyOnDayus
 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   % icCsŒ|jƒ}d}d}d}d}d\}    }
d} |rÕtjƒ} | j|ƒ} | rÌ| jƒ}| jƒ}| jƒ}    | jƒ}
| jƒ} | j    |ƒ}|rÒ|j
ƒ}|j ƒ}qÒqÕd}n|j |ƒt j||||    |
| ƒi|d6}|rR|ji|d6|d6|d6|d6|    d6|
d    6| d
6ƒn|red |d <n|rxd |d <nt|d|ƒdS(s> Ï൱ÓÚGameServerµ÷ÓàcurPlayer.MapServer_FamilyRefresh()
    ittFamilyIDtFmLVtJoinTimetFamilyLVt
FamilyNametEmblemIDt
EmblemWordtFamilyServerIDit isVoluntarilytisLogint FamilyRefreshN(is(R=RRRNtGetLVtGetNamet GetEmblemIDt GetEmblemWordt GetServerIDR_tGetFmLVt GetJoinTimet SetFamilyIDtPlayerViewCachetUpdPlayerViewFamilyInfotupdateRm(RHR:RwRxRcRpRrRqRsRtRuRvRdRWR<Rg((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytMapServer_FamilyRefreshös@               A  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=%sRxiR^t excludeIDList(R=RRtGetPlayerFamilyIDR    RRR…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.pytRefreshFamilyMemberAs$     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 GetGameWorldR~tCallPyPackFunct__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.pytFamilyPyPackForwardingVs@   $   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ÓKs   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ßZs2       (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(GRRRNtChPyNetSendPackttagMCRoleFamilyInfoRoR{RsRzRrtGetExpt FamilyLVExpt GetJoinReviewt
JoinReviewt GetJoinLVMint    JoinLVMinR~tServerIDR|RtR}Rut GetFightPowert
FightPowertGetFightPowerExt FightPowerExt GetBroadcastt    BroadcastRºt BroadcastLent GetLeaderIDtLeaderIDt
MemberListR6R"R#R=ttagMCRoleFamilyMembertPlayerIDR€RqRRÉtNameLentLVtGetJobtJobt
GetRealmLVtRealmLVtGetFacetFacet
GetFacePictFacePict
GetTitleIDtTitleIDRRptGetContribTotalt ContribTotalt GetContribDayt
ContribDaytGetDonateCntTotaltDonateCntTotaltGetDonateCntDayt DonateCntDayt
GetOffTimetOffTimetappendt MemberCountRtExtra1(
R:R^RRdRWR R;R<tmemIDtmemInfo((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRµsd            cCs=tjƒ}||_||_||_t|jƒ|_|S(N(R"ttagSCFamilyMemDeltTypeR6RÉRºR7(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ÈRSt 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 TagFamilyIDRSR    RtAutoJoinFamilytRequestJoinTagFamilytCancelJoinTagFamilyRY(RHR¦RGR³Rt tagFamilyIDR[((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRYs           cCs2|j}|dkr.tj|tjdƒndS(Nii(RSt
PlayerTaskt AddTaskValuetChConfigtTaskType_ReqOrJoinFamily(R?R¦R©R[((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt__OnRequesJoinFamily_Ret1s     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.pyRZ9s0 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.pyRjVsc 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&tGetFamilySettingRzRßRCR˜( RHRctrealmLVt mainServerIDRdR+R,t    indexListR;RtlvMinR((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR^[s<           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.pyRw†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˜tAddReqJoinPlayerIDtSendFamilyReqJoinInfoRKRwRzR"Rß( RHR:RcRdtreqFamilyIDListtmaxReqFamilyCntt    tagFamilyR{treqPlayerIDDicttmaxReqPlayerCntt    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 ReqJoinListtitemsREttagMCFamilyReqJoinPlayerR6tReqTimetIsOnLineR‚t FindViewCacheRRÉRºR7RzR8R9R:R;R<R=R>R?R@RARBR+R,R-R.R~R*RMtReqCnt( R:RdRWRŒtcrossPlayerMgrR RctreqTimeRHtreqInfot    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˜R{RˆRRRwRzR"R‡RßRLRMR9(RHR¦RGR³Rt tagPlayerIDR©RcR:RdRReRŒttagPlayerIDListRŸttagCrossPlayertofflinePlayerCanJoinRtjoinOKPlayerIDListRa((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ÊR{R9RL( 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(tOnChangeFamilyMemberLVR6Rp(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®RtChangeFamilyLeaderRMR!R"R#RwRztDef_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( R1R2R=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Å6s     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=RRRü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ÇIs      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(R2R_RKR1RaRbR    t
DebugLogExRkR!R"R#RRàRáRCRMRtsortRYR=RÛRÅR9R~t
PlayerMailt SendMailByKeyR{(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$as^   
 
      
            %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_RR"RàRáR    Rt DeleteMemberRRRRRtDef_FamilyMemberChange_Leavet__DoPlayerLeaveFamilyByIDR…RCR!RWRÿ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_KickRRRñRRRRtDef_FamilyMemberChange_KickOutRCRÿRDRERóR…R˜R!RWR9RL(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ó4sc    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.pytUpdateFamilyNameCs     "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_RRàRáR    RRaRbRRRRkRÓRÕtFamilyRemainNameRRRCRÞRDR6R"R#RER…R9RLRY(RHR¦RGR³RRRcR:RdRReRâtcdHourst    cdSecondstlastRenameTimeR,RÏRRŸR;R<RPtmemCrossPlayer((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyROsZ        
      cCs™tjƒj|ƒ}|jƒ}|j}|j}| sR|tjƒjƒkrltj    |t
|ƒƒdSt j t ji|d6|gt j|ƒdS(NRa(R    R´RÈR=Rot DataServerIDRšR~R¯R‹tGetTagFamilyInfoPackRht SendToServerRtS2S_ViewTagFamilyt dirType_All(R;R¦RGR?RcRat dataServerID((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnViewTagFamily“s         )cCs'|d}tj|t|ƒ|ƒdS(NRa(RCtSendFakePackByIDR(RlR³RcRa((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR¡s
cCs‰tjƒ}|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!ƒ|_"g|_#x t$|j%ƒƒD]÷}|j&|ƒ}tj'ƒ}|j(ƒ|_)|jƒ|_*t |j*ƒ|_+|j,ƒ|_-|jƒ|_.|j/ƒ|_0|j1ƒ|_2|j3ƒ|_4|j5ƒ|_6|j7ƒ|_8|jƒ|_|jƒ|_|jƒ|_|j#j9|ƒqcWt |j#ƒ|_:tj;ƒjƒ|_<|S(Ns&±¾·þÊý¾ÝÕÒ²»µ½Ä¿±ê¹«»á! tagFamilyID=%s(=RRRNR    R™R"ttagSCTagFamilyInfoR1RoR{RsRºt FamilyNameLenR2R3R_Rt
LeaderNamet LeaderNameLenR~tLeaderServerIDRzRrR*R|RtR}RuR+R,R-R.R/R0R1R4R!R"R#ttagSCTagFamilyInfoMemR=R6RÉR7RRpR8R9R:R;R<R=R>R?R@RARBRMRNRšR(RaRdRR t leaderMembertmIndexR<RQ((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR¦sX       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#R{RR1ttagMCFamilyViewRoRsRR2R3R_RRRR~RRzRrR&R'R(R)R*R|RtR}RuR+R,R-R.RNRMt FamilyCountRCR‹(RHR¦RGR³Rtmsgt    pageIndext    showCountRdR+RçR,t familyCountt    totalPaget
startIndextendIndexR R;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 GetDailyCnttNomalDictGetPropertyRdtDef_Player_Dict_FamilyDonateCntRt GetMoneyTypet GetMoneyValueR—RÌR¬RY( R;R¦RGR?Rct
donateTypeR€t dailyCntMaxR5RÏRR((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnFamilyMoneyDonate8s(          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( NiR5R4tFamilyMoneyDonateRÒit    resetTypetDaysM¼Ò×å¾èÏ×: donateType=%s,donateCnt=%s,%s,memDonateCntDay=%s,memDonateCntDay=%st    eventName(R7R=RMRRRNR_RR}R;R<RCRÞtGetAwardItemListtSetPlayerNomalDictRdR:RIR!RGtDef_UpperLimit_DWordR8tSetDonateCntTotalR    RtGivePlayerResourcesRY(RHR¦RGR³RR=RcR:RdRWReR5R€RÏRt awardItemListtmemDonateCntDaytmemDonateCntTotal((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR6QsH         
 
$      cCs|s
dSt|ƒdS(N(tSyncDonateCntInfo(R?R¦R©((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt__OnFamilyMoneyDonate_Rets
c    Cs<d\}}i|d6}t|||dddd|ƒdS(NitaddExpt__AddFamilyExpR§R(Ni(R®R¬(R?RNR¦RGR((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt AddFamilyExp…s  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(NiRNs4Ôö¼Ó¹«»á¾­Ñé: curLV=%s,curExp=%s,addExp=%s,updExp=%sR|is+    ¹«»áÉý¼¶: updLV=%s,updExp=%s,lvUPExp=%sR(R=RMRRRNRzR$R    RRR}t
GetNeedExptGetIpyGameDataNotLogR×tSetExpR9RLRY(RHR¦RGR³RRcR:RdRWtcurLVtcurExpRNtupdLVtupdExpR€tlvUPExp((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRO‹s<      
 
  
 
 !  c    Cs<d\}}i|d6}t|||dddd|ƒdS(NitaddContribValuet__AddFamilyContribR§R(Ni(R®R¬(R?RYR¦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(NiRYsJÔö¼Ó³ÉÔ±¹±Ï×: familyID=%s,addContribValue=%s,contribDay=%s,contribTotal=%sR^(R=RMRRRNR_RER!RCRdRFR7tSetContribTotalR    Rt__AddFamilyWeekdayContribR9( RHR¦RGR³RRcR:RdRWReRYt
contribDayRë((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRZ¶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žRtRaRbtChangeTimeNumToDatetimetweekdayRRR    RRPt GetOneActionRYt GetUserDictR­RRtSendFamilyAction(    R:RYRât curDatetimet
curWeekdaytdayContribActionRtdataDictRë((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR]Ñ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žRtRaRbR_R`RRR    RRPRaRYRbRRRc(R:RâRdReRfRRg((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR2äs    cCs4tjƒj|tjƒ}|jtƒ}|jƒS(N(RRR    RRPRaRYRb(R:RfR((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.pytOnQueryFamilyActionscCs;|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.pyRi
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(%RRR    R"ttagMCFamilyActionInfoRoRktFamilyActionListR6tCounttAtttagMCFamilyActiontGetTimetTimeR{RÉRºR7t    GetValue1tValue1t    GetValue2tValue2t    GetValue3tValue3t    GetValue4tValue4t    GetValue5tValue5t    GetValue6tValue6t GetUserDatatUseDatat
UseDataLenRMRCR‹R!(RHR:RRR R;tfamilyActionDataR((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyROs8              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"RlRoRkRmRpRqRrR{RÉRºR7RsRtRuRvRwRxRyRzR{R|R}R~RR€RRMRnRCR‹R!(    RRHttoFamilyIDListR‚R:RR Rt
toFamilyID((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRc7sD 
                  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 OnFamilyTalkas 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:R t channelTypetcontentt    bubbleBox((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRˆfs
                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.pytOnCrossFamilyTalkxs   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 serverIDListR R‘R’R“((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR”‚s*
                  cCsStjƒj|ƒ}|sdS|d}|d}|dkrOt||ƒndS(NRfRgRy(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ƒ} |jd dƒ} tj||||    |
| ƒtj|t    j
|ƒ|j ƒ} |j ƒ}tj |ƒ}tj|ƒ}| |kr<|j|ƒn|jƒ|kr^|j|ƒn||kr}tj||ƒn|| krœtj|| ƒ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 ƒtjkrqnt||ƒn|jƒ| ržt|ƒndS( NRoRpiRqRrRsRnRtRuRvRxRw(R    RšR·R=R­R‚RƒR—tNomalDictSetPropertyRdtDef_Player_Dict_FamilyJoinTimeRMt GetFamilyLVtGetFamilyMemberLVtGetFamilyServerIDRt GetFamilyNamet SetFamilyNametSetFamilyMemberLVtSetFamilyServerIDRLRYt SetFamilyLVtDef_Player_Dict_FamilyLVt__OnLeaveFamilyRSRát__OnEnterFamilytView_FamilyInfoRefreshtDo_MapServer_PlayerLogin(R?RgRGRcRt refreshFmLVtrefreshJoinTimetrefreshFamilyLVtrefreshFamilyNametrefreshEmblemIDtrefreshEmblemWordtrefreshFamilyServerIDRxt lastFamilyIDt lastFamilyLVtlastFmLVtlastFmServerIDtisLVUPRw((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR™¯sX 
           
 cCs5tj|ƒt|ƒtj|ƒtj|ƒdS(N(R tSync_FamilyCrossInfoRLR3RIR5(R?((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR¨ðs
 
  cCs*tj|tjƒtj|tjƒdS(N(Rbt UpdTaskValueRdRetChPlayertOnPlayerBaseInfoChangeRàtCDBPlayerRefresh_Family(R?RG((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR¦øsc Cs|jdƒ|jdƒ|jdƒ|jdƒtj|dƒ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    ƒ}|rHt|ƒ|kr;||n|d}n|d7}t    j
d
|ƒtj||||ƒ|rá|rátj||ƒ}    t|    |d ƒ}
t    j
d |||    |
fƒtj|||
d ƒntj|ƒtj||ƒtj|tjƒdS(Nis:__OnLeaveFamily: isVoluntarily=%s,leaveCnt=%s,kickedCnt=%sRgiiiÿÿÿÿis!    Ôö¼ÓÖ÷¶¯À뿪´ÎÊý: leaveCnt=%sis"    Ôö¼Ó±»ÌßÀ뿪´ÎÊý: kickedCnt=%sgY@sD    ¿Û³ý»õ±Ò: delMoneyType=%s,delMoneyPer=%s,nowMoney=%s,delMoney=%st LeaveFamily(t    SetPerExptSetFamilyHornortSetFamilyActiveValueR£R—R¢tSetLeaveFamilyTimeExRjRiR    RRRRRºtSetLeaveFamilyInfotGetMoneyRatPayMoneyR5tOnPlayerLeaveFamilytFBLogicRïR·R¸RàR¹( R?RwRGRmRnt_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 GetDonateTypeR9RdR:R—RšRYRL(R?tisResett
ipyDataMgrR;R€R=R5((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ÍR9RdR:RMR"ttagSCDonateCntInfot DonateCntListRºRnR¯R‹(R?t donateCntListRÏR;R€R=R5R ((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRL4    s       i(‘RÃRdR    RR—R¯R‚R"RR3RVR5RàRRSRÝRbRCRQRðRR R·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‰RXR9RRWRXR\RYRfRZRjR^RwR_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?R6RMRPROR[RZR]R2RhRjRiRORcRŠRˆR•R”RjR™R¨R¦R¥RBRL(((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt<module>s                           
 
                                     
                                            (    #    /            
        9     ,        :                             +         8                 .    `                  G            C         ,        :      D            8    U    .        %                        %*        
#    
    A            '