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
ƒic@sDddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZddlZdZeddhƒ\ZZZZide j6de j6de j6Z 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„Z1dd„Z2d„Z3d„Z4e5ddd„Z7d„Z8d „Z9ddd!„Z:d"„Z;d#„Z<d$„Z=ddd%„Z>d&„Z?dd'„Z@e jeAd(„ZBeAd)d*„ZCd+„ZDdeAd,„ZEdeAdd-„ZFdeAd.„ZGdd/„ZHd0„ZId1„ZJddd2„ZKd3„ZLd4„ZMd5„ZNd6„ZOd7„ZPd8„ZQeAd9„ZRd:„ZSd;„ZTd<„ZUd=„ZVddd>„ZWd?„ZXddd@„ZYdA„ZZdddB„Z[dC„Z\dddD„Z]dE„Z^dddF„Z_e5dG„Z`dH„ZadI„ZbdJ„ZcdK„ZddL„ZedddM„ZfdN„ZgdddO„ZhddP„ZidQ„ZjdddR„ZkdS„ZldddT„ZmdU„ZndddV„ZodW„ZpdX„ZqdddY„ZrdZ„Zsddd[„Ztd\„Zuddd]„Zvd^„Zwdd_„Zxd`„Zyda„Zzdb„Z{dc„Z|dd„Z}de„Z~df„Zdg„Z€dS(iiÿÿÿÿ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 SetRenameTime>scCs: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.pytOnMinute@s  
cCstjƒrtƒndS(N(R    R
t__doFamilyOnHour(((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytFamilyCrossCenterOnHourIs 
cCs(tjƒ stjƒrdStƒdS(N(R    R R R R(((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt FamilyOnHourNscCsotjƒ}x\|jƒD]N}|j|ƒ}x6td|jƒƒD]}|j|ƒ}t|ƒqDWqWdS(Ni(t    DBDataMgrt GetFamilyMgrtGetZoneIDListThisServertGetZoneFamilyMgrtrangetGetCounttGetAtt__AutoChangeLeader(t familyManagertzoneIDtzoneMgrtiR((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRUs cCstjƒrtƒndS(N(R    R
t__doFamilyOnDay(((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytFamilyCrossCenterOnDay_s 
cCs2tjƒ stjƒrdStƒtjƒdS(N(R    R R R R tCheckCrossFamilyTransData(((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt FamilyOnDayds
 
cCsÛtjƒ}xÈ|jƒD]º}|j|ƒ}x¢td|jƒƒD]‹}|j|ƒ}|jƒ}tj    |ƒt
j    |ƒxCt |jƒƒD]/}|j|ƒ}|j dƒ|j dƒq’Wt|ƒqDWqWdS(Ni(RRRRRRRtGetIDtPlayerFamilyZhenbaogetOnDaytPlayerFamilyTaofatxranget SetContribDaytSetDonateCntDaytBroadcast_FamilyInfo(RRRRRtfamilyIDtindextmember((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR os     cCs4tjƒs&tjd|jƒƒdSt|ƒdS(Ns"¹«»á»¹ÊôÓÚ±¾·þ£¬²»´¦Àí³ÉÔ±¿ç·þ¹ýÌì(R R R    tDebugLogt GetPlayerIDt__doPlayerOnDay(t    curPlayer((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytPlayerCrossCenterOnDayƒs
 
cCs4tjƒr&tjd|jƒƒdSt|ƒdS(Ns"¹«»áÒѾ­¿ç·þÁË£¬²»´¦Àí³ÉÔ±±¾·þ¹ýÌì(R R R    R/R0R1(R2((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt PlayerOnDay‹s
 
cCs(tj|ƒtj|ƒt|ƒdS(N(R%R4R'tDo_MapServer_PlayerOnDay(R2((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR1“s  
cCsCt|ƒtjƒrdStjƒj|jƒƒ}t|ƒdS(N(tDo_MapServer_PlayerLoginR R t CrossPlayertGetCrossPlayerMgrtFindCrossPlayerR0tOnCrossPlayerLogin(R2ttickt crossPlayer((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt OnPlayerLogin™s 
 
cCst|ƒt|tƒdS(N(tPlayerLoginRefreshFamilytSync_RequestAddFamilyInfotFalse(R<((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR:¢s
 cCs9tjƒrdStjƒj|jƒƒ}t|ƒdS(N(R R R7R8R9R0tOnCrossPlayerLogout(R2R<((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(
R0t GetFamilyIDRRt
FindFamilyt
FindMembert
SetOffTimetintttimeR+(R<tplayerIDR,t    familyMgrRt    curMember((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRA±s   cCsb|jƒ}i|d6|d6}tjƒrQtjtj||jƒg|ƒn t||ƒdS(NtdoTypetdoData(R0R    R
tCrossMsgtSendToClientServert ShareDefinetC2S_FamilyMapPlayertGetMainServerID(R<RMRNRJtdataMsg((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytSendToFamilyMapPlayerÄs   % ic Cs+|jƒ}d}d}d}d \}}|r±tjƒ}    |    j|ƒ}
|
r¨|
jƒ}|
jƒ}|
jƒ}|
jƒ}|
j|ƒ} | r®| j    ƒ}q®q±d}n|j
|ƒi|d6} |r| j i|d6|d6|d6|d6|d6ƒn|rd    | d
<nt |d | ƒd S(s> Ï൱ÓÚGameServerµ÷ÓàcurPlayer.MapServer_FamilyRefresh()
    ittFamilyIDtFmLVtFamilyLVt
FamilyNametEmblemIDt
EmblemWordit isVoluntarilyt FamilyRefreshN(is( R0RRREtGetLVtGetNamet GetEmblemIDt GetEmblemWordRFtGetFmLVt SetFamilyIDtupdateRU( R<R,R]RJRXRYRZR[R\RKt    curFamilyR.RN((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytMapServer_FamilyRefreshÍs2             3 cCs|jƒ}tjƒ}|j|ƒ}tjd||fƒ|j|ƒt||ƒ|}|shdS|j|ƒ}|sdS|j    |ƒ}|sšdS|j
dƒ|j |ƒt |ƒt |d|gd|gƒt|tƒrtj|t|ƒƒndS(Ns7PlayerLoginRefreshFamily playerID=%s,refreshFamilyID=%siRCt excludeIDList(R0RRtGetPlayerFamilyIDR    R/RdRgRERFRGtRefreshMemberByIDtSync_FamilyInfoR+tGetFamilyMemberHasPowtFamilyPowerID_CallR7t SendFakePacktGetPack_FamilyReqJoinInfo(R<RJRKtrefreshFamilyIDR,RRL((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR>ís,      
cCstjƒrntjƒ s(tjƒr,dS|jƒ}|sBdStjƒ}|j|ƒ}|sgdS|j    ƒ}|j
|ƒ}|sŒdS|j |ƒdS(N( R    R
R R R RDRRRER0RFRj(R<R,RKRRJR.((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytRefreshFamilyMembers"     gà?c Cs}|jƒ}tjƒjƒ}|dkr>tj|dƒdS|dkr_tjd|ƒdS|dksƒ|tjƒj    ƒkr»t
|||d|ƒ}    |r·t ||||    ƒndS|r|j dƒ}
|
rþ||
|dkrþtj|dƒdS|j d|ƒni|d    6} |r7|jƒ| d
<n|rJ|| d<n|r]d | d <ntjtj| |g|ƒdS( NiþÿÿÿtFamilyInTransDatais¹«»á¹¦ÄÜÒì³£! crossServerID=%st    reqDataExtFamilyPyPackForwardingTickièt RequestLatertfuncNametpackBuffit
needResult(R0RRtGetCurCrossServerIDt PlayerControlt
NotifyCodeR    tErrLogt GetGameWorldt GetServerIDtCallPyPackFunct__doFamilyPyPackRett GetDictByKeytSetDictt    GetBufferROtSendToCrossServerRQtS2C_FamilyPyPack( R2t
clientDataR;RvRxtreqCDRsRJt crossServerIDtisOKtreqTickRT((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytFamilyPyPackForwarding$s8   $   cCs®|d}|jdƒ}|jdƒ}d}|rPtj|ƒ}|sPdSnt|||||ƒ}d|krª|jdƒ||d<tjtj    ||g|ƒndS(NRvRwRsRxR‰(
tgettNonet NetPackCommontReadRecPyPackDataRtpopRORPRQtC2S_FamilyPyPackRet(RTt fromServerIDRJRvRwRsR†R‰((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR…Ns
 
cCs–tjƒj|ƒ}|sdS|jddƒ|d}|jdƒ}d}|rptj|ƒ}|spdSn|jdƒ}t||||ƒdS(NRtiRvRwR‰(    R    tGetPlayerManagertFindPlayerByIDR‚RŒRRŽRR€(RTRJR2RvRwR†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(R7R8R9R    R|t GetCallFuncR}tGetTick(    RJR†RvR’RsR<tcallFuncR;R‰((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRps cCs4d|}t|ƒ}|s dS||||ƒdS(Ns%s_Ret(R•(R2R†RvR‰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(RvR—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“tGetPlayerByIndextNameR/t    CodeToGbktCheckInputFamilyNamet IpyGameDataPYt
GetFuncCfgRzt    HaveMoneyR‹tTrue(R-R†R;R2t    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ƒ}| jdƒtjƒ}| s/||krAtj|ƒ}ntjd||    || fƒ| j|ƒ| j|ƒtjddƒ}tjddƒ}|rÈ|rÈt j|ddi||6ƒnt| |    |t j!ƒ| j"|ƒ}|oü|j#ƒt$j%| ƒt&S(    Ns__OnCreateFamily: %stGeRen_chenxin_85890s ´´½¨¼Ò×åʧ°Üis9´´½¨¹«»á: familyID=%s,playerID=%s,emblemID=%s,serverID=%sR¥it costMoneyDict('R¨R[R\R    R/R©R0RDRRRERFR7R{tCheckFamilyNameExistsR~t    AddFamilyRR|R$tSetLVRtGetDefaultFamilyEmblemIDListtrandomtchoicetLogt SetEmblemIDt SetEmblemWordR«R¬tCostPlayerResourcestDoPlayerJionFamilytIPY_PlayerDefinet    fmlLeadertGetZoneFamilyMgrByFamilyIDtSortR%tOnZhenbaogeResetR®(R<R†R;R’RsR¯temblemIDt
emblemWordtfullFamilyNameRJtplayerFamilyIDRKRftserverIDt newFamilyIDt emblemIDListR°R±R((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR¦»sL               
          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 GetCharTrimtGetPlayerServerIDR«R¬R|R™RzR{t    DirtyListtIsWordForbiddentDef_CreatFamily_MaxStrR®(R2R¯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|R®RtFindFamilyByNameR7R{R@(R<RÔR’RKRR((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRµs   c
CsQtjƒ}t|tƒr3|}|j|ƒ}n|}|sCdS|jƒ}|j|ƒ}|j|ƒ|j|ƒ|j    |j
ƒ|j
ƒƒ|t j kr´|j |ƒn|rÐt|d|gƒn|j|ƒ|r
t||ƒt|ƒtj|ƒntjƒjƒ}    t|jƒ|tjtjtj|dg|    ƒdS(sN¼ÓÈë¼Ò×壬֧³ÖÀëÏßÍæ¼Ò¼ÓÈë
    @param crossPlayer: Èç¹ûÊÇÀëÏßÍæ¼ÒÔòΪNone
    NRCi(RRt
isinstanceRHRER$t    AddMembertSetFmLVRjtSetFightPowerTotaltGetFightPowerTotalRÀRÁt SetLeaderIDR+tDelPlayerReqJoinFamilyIDAllRgR?R'tOnCrossPlayerEnterFamilyR    R}R–tAddFamilyActionNotet GetPlayerNameRQtDef_ActionType_FamilyEventt"Def_FamilyActionEvent_MemberChangetDef_FamilyMemberChange_Join(
RRJR<tjionFamilySetLvtbroadcastFamilyChangeRKR,RfR.R;((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR¿ s2      
    RVc 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(RQtDef_ActionTypeListR    R|R@RtGetFamilyActionMgrtGetFamilyActiont    AddActiontSetNamet SetUserDatat    enumerateRœR®( tcurNameR,t
actionTypetactionDataListR;t isClearNonetuseDatat familyActiont
actionDatatnumtvaluetsetFunc((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRâMs    cCsKtjddiƒ}t|ƒ|kr+tS|t|ƒ}|jƒ|kS(Nt FamilyPoweri(R«tGetFuncEvalCfgtstrR@Rc(R.tpowerIDt    powerDictt needMemberLV((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRlcs
cCs<|jƒ}|sdSt|||ƒ}tj||ƒdS(N(RDtGetPack_FamilyInfoR7Rn(R<t syncMemIDListt    isSyncMemR,t
clientPack((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRkks  cCs)t|||ƒ}tj|||ƒdS(N(RR7tSendFakePackByFamily(R,RCRRhR((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR+tsc
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(GRRREtChPyNetSendPackttagMCRoleFamilyInfoRWR`RZR_RYtGetExpt FamilyLVExpt GetJoinReviewt
JoinReviewt GetJoinLVMint    JoinLVMinR~tServerIDRaR[RbR\t GetFightPowert
FightPowertGetFightPowerExt FightPowerExt GetBroadcastt    BroadcastR™t BroadcastLent GetLeaderIDtLeaderIDt
MemberListR(RRR0ttagMCRoleFamilyMembertPlayerIDt GetJoinTimetJoinTimeRãR¨tNameLentLVtGetJobtJobt
GetRealmLVtRealmLVtGetFacetFacet
GetFacePictFacePict
GetTitleIDtTitleIDRcRXtGetContribTotalt ContribTotalt GetContribDayt
ContribDaytGetDonateCntTotaltDonateCntTotaltGetDonateCntDayt DonateCntDayt
GetOffTimetOffTimetappendt MemberCountRtExtra1(
R,RCRRKRfRR-R.tmemIDtmemInfo((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR|sd            cCs=tjƒ}||_||_||_t|jƒ|_|S(N(RttagSCFamilyMemDeltTypeRR¨R™R(t delPlayerIDt
playerNametdelTypeR((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytGetPack_FamilyDel¶s              cCsdS(N((R-R†R;((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§R8t CheckInJoinCDR‹R®(R-R†R;R2t requestType((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnRequesJoinFamilyÝs      cCsx|j}|j}tjd||fƒ|dkrX|sHt|ƒqtt||ƒn|dkrtt||ƒntS(Ns3__OnRequesJoinFamily: tagFamilyID=%s,requestType=%sii(t TagFamilyIDR8R    R/tAutoJoinFamilytRequestJoinTagFamilytCancelJoinTagFamilyR®(R<R†R;R’Rst tagFamilyIDR@((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR>æs           cCs2|j}|dkr.tj|tjdƒndS(Nii(R8t
PlayerTaskt AddTaskValuetChConfigtTaskType_ReqOrJoinFamily(R2R†R‰R@((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt__OnRequesJoinFamily_Retøs     c        CsVtj|ƒ}|stStj|ƒ\}}}d}|r•|dkrMtStjddƒ}|rêt|ƒ|kr…||dn|d}qênU|dkr¥tStjddƒ}|rêt|ƒ|krÝ||dn|d}n|rR|d}ttjƒƒ|}||krRt    j
d||||t    j |ƒ||fƒt SntS(Nit FamilyLeaveiiÿÿÿÿii<sb¼ÓÈ빫»áCDÖÐ: leaveCnt=%s,kickedCnt=%s,lastVoluntarily=%s,leaveFamilyTime=%s(%s),passTimes=%s < %s( RztGetLeaveFamilyTimeExR@tGetLeaveFamilyInfoR«RûR™RHRIR    R/tChangeTimeNumToStrR®(    R2tleaveFamilyTimetleaveCntt    kickedCnttlastVoluntarilyt joinCDMinutetjoinCDMinuteListtcdTimest    passTimes((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR?s0 0 -
     &c 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(RDR0R R    R/RSRRRØRRRR¹tshuffleRR R    tGetFamilySettingR_R¿R7R{( R<RJtrealmLVt mainServerIDRKRRt    indexListR-RtlvMinR((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRCs<           cCsS|s
dStjd|ƒ}|s&dSd|}t||ƒsCdSt||ƒƒS(NitFamilysGet%s(R«tGetIpyGameDataR›Rœ(tfamilyLVt    fieldNametipyDatatattrName((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRZHs
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(R0RDR    R/RRtGetPlayerReqJoinFamilyIDListR«R¬R™RER R R    tGetReqJoinPlayerInfoR7R{tAddReqJoinPlayerIDtSendFamilyReqJoinInfoR?RZR_RR¿( R<R,RJRKtreqFamilyIDListtmaxReqFamilyCntt    tagFamilyR^treqPlayerIDDicttmaxReqPlayerCntt    memberMax((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRDTsN            
 
 cCsetjƒ}|jƒ}|j|ƒ}|r=|j|ƒn|j||ƒt|ƒt|ƒdS(N(RRR0REtDelReqJoinPlayerIDtDelPlayerReqJoinFamilyIDRkR?(R<R,RKRJRn((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyREŒs  
 
cCs~|jƒ}tjƒ}|j|ƒ}| r9| r9dStjƒ}|jƒ||_t|jƒ|_    t
j ||ƒdS(N( R0RRRhRt tagMCNotifyRequestJoinFamilyInfotCleartRequestJoinFamilyIDListR™t RequestCountR7Rn(R<tisForceRJRKRlR((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR?˜s   
    cCs#tjƒ}|j|ƒrtStS(N(RRRhR®R@(RJRK((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytIsFamilyNeedViewPlayer§s cCs#tj|t|ƒdttƒdS(N(R7RRoRRlRm(R,((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRk²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()RRRERiR7R8RttagMCFamilyReqJoinInfot ReqJoinListtitemsR9ttagMCFamilyReqJoinPlayerRtReqTimetIsOnLinetPlayerViewCachet FindViewCacheRãR¨R™RR_RRRR R!R"R#R$R%R&R'RRRRR~R R2tReqCnt( R,RKRfRotcrossPlayerMgrRRJtreqTimeR<treqInfot    viewCache((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRo·s@                 cCs,tjƒj|ƒ}t|||dƒdS(Nt__OnJoinFamilyReply(R    R“R§R‹(R-R†R;R2((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnJoinFamilyReplyåscCs1|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|ƒ|r-t|d|ƒndS(Ns+__OnJoinFamilyReply: tagPlayerID=%s,isOK=%sisûÓÐÕÐÈËȨÏÞ£¬ÎÞ·¨ÉóºËÈËÔ±ÈëÃË!s0ÉóºËÈëÃËÉêÇë: tagPlayerID=%s,familyID=%s,isOK=%ss ²»´æÔÚ¸ÃÉêÇëÈËÔ±! tagPlayerID=%ss ûÓÐÉêÇëÈËÔ±!tjiazu_pan_592934ReiRtjiazu_lhs_202580s$ÀëÏßÍæ¼ÒÎÞ·¨¼ÓÈ빫»á! tagPlayerID=%stjiazu_hwj35_367906sÒѾ­ÊDZ¾Ã˳ÉÔ±! tagPlayerID=%stXW_JZ_InviteErr_Repeats/ÒѾ­¼ÓÈëÆäËû¹«»á! tagPlayerID=%s,tagFamilyID=%sRèRC( t TagPlayerIDtIsOKR    R/R0RDRRRERFRlRmRitkeysR7R8RrR9R?R{R`RkR«R¬RZR_RRiR¿R@R2R+(R<R†R;R’Rst tagPlayerIDR‰RJR,RKRRLRottagPlayerIDListRƒttagCrossPlayertofflinePlayerCanJoinRtjoinOKPlayerIDListRF((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†R;R2((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnChangeFamilyJoinJsc 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    R/R0RDRRRERFRlRmt SetJoinReviewt SetJoinLVMinR+R@( R<R†R;R’Rst
joinReviewt    joinLVMinRJR,RKRRL((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR•Os,              cCs,tjƒj|ƒ}t|||dƒdS(Nt__OnChangeFamilyBroadcast(R    R“R§R‹(R-R†R;R2((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnChangeFamilyBroadcastosc 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(tMsgR0RDRRRERFRltFamilyPowerID_BroadcastR    R/t SetBroadcastR©R`R+R@( R<R†R;R’Rst    broadcastRJR,RKRRL((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR›ts&         2cCs,tjƒj|ƒ}t|||dƒdS(Nt__OnChangeFamilyEmblem(R    R“R§R‹(R-R†R;R2((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnChangeFamilyEmblem’scCs)|j}|j}tj|||ƒdS(N(R[R\RR¢(R<R†R;R’RstchangeEmblemIDRÆ((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†R;R2((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnChangeFamilyMemLV¥scCst||j|jƒdS(N(tOnChangeFamilyMemberLVRRX(R<R†R;R’Rs((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|tjkr¯t||    ƒn¼d}
xKt|jƒƒD]7} |j| ƒ} | j ƒ|krõqÈn|
d7}
qÈWt|jƒtj|d    ƒƒ} |
| kr^tj|d
ƒtj    d ||
| fƒdSt|    |ƒ|r|jd    ƒnt|d |gƒ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=%siRVtjiazu_chenxin_31379s?Ŀǰ¸ÃְλµÄÈËÊýÒѾ­´ïµ½ÉÏÏÞ! changeFmlv=%s,fmLVMemCnt=%s >= %sRC(R0RDRRRERFRÀRÁR    R/RltFamilyPowerID_ChangeFmlvRRctChangeFamilyLeaderRRRRZR_tDef_FmlSetAttrNameRŒR7R{tChangeFamilyMemberLvRŸR+R®(R<ttagIDt
changeFmlvtisGMOPRJR,RKRRLt    tagMembert
fmLVMemCntR-t familyMembertmaxCnt((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR¦®sh      
!  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( R$RR0RFR«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©ós     cCsÑ|jƒ}|jƒ}|jƒ}|jƒ}|j|ƒtjƒj|ƒ}|rt||ƒt    |t
ƒrtj |t |ƒƒqnt jƒjƒ}t||tjtjtj||g|ƒdS(N(RDR0RãRcRÜR7R8R9RgRlRmRnRoR    R}R–RâRQRäRåtDef_FamilyMemberChange_FMLV(R¯tchangeFamilyLVR,R¬tmemNamet befFamilyLVR’R;((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR«s      cCs°|jƒ}|j|ƒ}|s%dS|jƒ}|s;dS|jƒ}ttjƒƒ}||}|d}tjddƒ}||kr´tj    d||tj
|ƒ||ƒdStjddƒ}    g}
g} xçt d|j ƒƒD]Ð} |j | ƒ} | jƒtjkrqèn| jƒ}|rG|}||}|d}n|}d}d}| jƒ}| jƒ}| j|||| gƒ|    rè||    krè|
j|||| gƒqèqèW|
rÎ| rÎdSd}|
rû|
jdtƒ|
dd}n| jdtƒ| dd}|s#dS|jƒ}tjd||tj
|ƒ||fƒt||ƒt|d    ||gƒ|jƒ}tjd|g|jƒgd
|ƒdS( Ng ¬@tFamilyLeaderAutoChangeis\ÃËÖ÷ÀëÏß䳬¹ýÏÞÖÆÐ¡Ê±£¬²»´¦Àí×Ô¶¯´«Î»£¡familyID=%s,leaderID=%s,offTime=%s,passHours=%s < %sitreverseiÿÿÿÿsL¹«»á×Ô¶¯´«Î»: familyID=%s,leaderID=%s,offTime=%s,passHours=%s,newLeaderID=%sRCt
toServerID(RRFR0R$RHRIR«R¬R    t
DebugLogExRORRRRcRÀRÁR(R2RtsortR®R0R»R©R+R~t
PlayerMailt SendMailByKeyR`(RftleaderIDt    leaderMemtoffTimeR,tcurTimetpassTimet    passHourst    needHourst priorityHourst priorityListtcommListRR.t
memOffTimetsortTimet memPassTimet memPassHourstfmLVt contribTotalttoMemberR¶R¾((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRsl   
 
      
            %cCsdS(N((R-R†R;((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnGetFamilyInfolscCs,tjƒj|ƒ}t|||dƒdS(Nt__OnMemLeaveFamily(R    R“R§R‹(R-R†R;R2((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt OnLeaveFamilyxsc 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ƒƒ|jƒdkrX|j|ƒdSdS(Niis%×峤ÔÚ³ÉÔ±ÈËÊý´óÓÚ1ʱ²»ÄÜÖ±½ÓÍ˳ö¼Ò×åsÀ뿪¼Ò×å! familyID=%s(R0RDRRRERFRcRRÀRÁR    R/t DeleteMemberRâRãRQRäRåtDef_FamilyMemberChange_Leavet__DoPlayerLeaveFamilyByIDRgR7RR<t    DelFamily( R<R†R;R’RsRJR,RKRRLRa((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRÕ}s4     !     " cCs,tjƒj|ƒ}t|||dƒdS(Nt__OnDeleteFamilyMember(R    R“R§R‹(R-R†R;R2((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ƒj|ƒ}t|    ||ƒ|r“t|dƒntj|t||dƒƒdS(Ns%__OnDeleteFamilyMember tagMemberID=%sis ûÓÐÌßÈËȨÏÞ!sCÖ»ÄÜÌß±È×Ô¼ºÖ°Î»µÍµÄ³ÉÔ±! tagMemberID=%s,tagFmlv(%s) >= curFmlv(%s)(tMemberIDR    R/R0RDRRRERFRltFamilyPowerID_KickRcRãR×RâRQRäRåtDef_FamilyMemberChange_KickOutR7R8R9RÙRgRR<(R<R†R;R’Rst tagMemberIDRJR,RKRRLR¯tcurFmlvttagFmlvt tagPlayerNameR((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRÛ¶sJ                cCstj||ƒdS(N(R'tOnFamilyMemberLeave(Rft leavePlayerIDR<((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRÙîsc    Cs™tjƒj|ƒ}|j}t||ƒs>tjdƒdStjddƒ\}}|r||r|tj    |||ƒ r|dSt
|||dt dƒdS(NsÃû×ÖÑéÖ¤²»Í¨¹ýt FamilyRenameit__UpdateFamilyNamei( R    R“R§tNewNameRªR/R«RûRzR­R‹R®(R-R†R;R2tnewNameR±t
moneyValue((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytUpdateFamilyNameüs     "c    Cs|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+dStjddƒ\}}|ro|rotj|ddi||6ƒn|    j|ƒ| r’t|    | ƒntjƒ}x]t|    jƒƒD]I}|    j|ƒ}|jƒ}|j|ƒ}|síq±nt||ƒq±Wt|d    tƒt S(
Nis·ÇÃËÖ÷²»¿É¸ÄÃû!Ræiis*¹«»á¸ÄÃûCDÖÐ! lastRenameTime=%s,cdHours=%siR´R(!RèR0RDRRRERFRcRÀRÁR    R/RHRIR«R¬RRORµRûR7R¾RíRR8R(RRR9RgR+R@R®(R<R†R;R’RsRéRJR,RKRRLRÆtcdHourst    cdSecondstlastRenameTimeR±RêRƒR-R.R5tmemCrossPlayer((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRçsR        
       cCs,tjƒj|ƒ}t|||dƒdS(Nt__OnViewFamilyPage(R    R“R§R‹(R-R†R;R2((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnViewFamilyPageHscCsD|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$ƒ|_%|j&ƒ|_'|j(ƒ|_)|j*ƒ|_+|j,ƒ|_-|j.ƒ|_/|j0ƒ|_1|j2ƒ|_3|j4ƒ|_5|j ƒ|_6|jj7|ƒt|jƒ|_8|j8|kroPqoqoWt9j:||ƒdS(Ni2is1ÕÒ²»µ½·þÎñÆ÷IDÔÚ±¾·þÖеĹ«»á·ÖÇø! fromServerID=%siiRV(;Rt    PageIndextmint    ShowCountRRRØR    R|RDRRÃR®Rt GetIntUpperRttagMCFamilyViewListR™tMsgLent    TotalPaget GetFamilyRanktRankt
FamilyListRRR`RüR$ttagMCFamilyViewRWRZt FamilyNameLenRRRFRãt
LeaderNamet LeaderNameLenR_RYR    R
R R R~R RaR[RbR\RRRRR3R2t FamilyCountR7Rn(R<R†R;R’Rstmsgt    pageIndext    showCountRKRRÈRt familyCountt    totalPaget
startIndextendIndexRR-Rt
familyViewt leaderMember((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRðMs‚             
 
                      *  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__OnFamilyMoneyDonateiRs(R    R“R§R0t
DonateTypeR«R`t GetDailyCnttNomalDictGetPropertyRItDef_Player_Dict_FamilyDonateCntR/t GetMoneyTypet GetMoneyValueRzR­R‹R®( R-R†R;R2RJt
donateTypeRct dailyCntMaxR R±RêRs((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|6dtƒ|
jƒd}t|
jƒdtjƒ}|
j|ƒ|
j|ƒtjd|| |||f|ƒt j||d    dƒtS(
NiR R
tFamilyMoneyDonateR´it
isDayResetsM¼Ò×å¾èÏ×: donateType=%s,donateCnt=%s,%s,memDonateCntDay=%s,memDonateCntDay=%st    eventName(R R0RDRRRERFR«R`RRR7R¾tGetAwardItemListtSetPlayerNomalDictRIRR®R.RóR,tDef_UpperLimit_DWordR*tSetDonateCntTotalR    R/tGivePlayerResources(R<R†R;R’RsRRJR,RKRfRLR RcR±Rêt awardItemListtmemDonateCntDaytmemDonateCntTotal((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR ºsH         
 
$      cCs|s
dSt|ƒdS(N(tSyncDonateCntInfo(R2R†R‰((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt__OnFamilyMoneyDonate_Retès
c    Cs<d\}}i|d6}t|||dddd|ƒdS(NitaddExpt__AddFamilyExpR‡Rs(Ni(RR‹(R2R#R†R;Rs((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(NiR#s4Ôö¼Ó¹«»á¾­Ñé: curLV=%s,curExp=%s,addExp=%s,updExp=%sR_is+    ¹«»áÉý¼¶: updLV=%s,updExp=%s,lvUPExp=%sR(R0RDRRRER_RR    R/R«R`t
GetNeedExptGetIpyGameDataNotLogR·tSetExpR+R@R®(R<R†R;R’RsRJR,RKRftcurLVtcurExpR#tupdLVtupdExpRctlvUPExp((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR$ôs<      
 
  
 
 !  c    Cs<d\}}i|d6}t|||dddd|ƒdS(NitaddContribValuet__AddFamilyContribR‡Rs(Ni(RR‹(R2R.R†R;Rs((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytAddFamilyContribs  c Csô|jƒ}|jƒ}|dkr(dStjƒ}|j|ƒ}|sMdS|j|ƒ}    |    sfdS|spdS|d}
|    jƒ|
} t|    jƒ|
t    j
ƒ} |    j | ƒ|    j | ƒt jd||
| | f|ƒt|dtƒdS(NiR.sJÔö¼Ó³ÉÔ±¹±Ï×: familyID=%s,addContribValue=%s,contribDay=%s,contribTotal=%sR(R0RDRRRERFR*RóR(RIRR)tSetContribTotalR    R/R+R@( R<R†R;R’RsRJR,RKRfRLR.t
contribDayRÒ((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR/s*    
   cCs,tjƒj|ƒ}t|||dƒdS(Nt__OnQueryFamilyAction(R    R“R§R‹(R-R†R;R2((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnQueryFamilyActionCscCs;|j}|j}|s'|jƒ}nt|||ƒdS(N(t
ActionTypeRWRDtSendFamilyActionInfo(R<R†R;R’RsRñR,((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR3Hs         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(%RRêRëRttagMCFamilyActionInfoRWR5tFamilyActionListR(tCounttAtttagMCFamilyActiontGetTimetTimeR`R¨R™Rt    GetValue1tValue1t    GetValue2tValue2t    GetValue3tValue3t    GetValue4tValue4t    GetValue5tValue5t    GetValue6tValue6t GetUserDatatUseDatat
UseDataLenR2R7RnR(R<R,RñRõRR-tfamilyActionDataRö((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR6Ps8              cCs†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"||ƒdSt!j#||ƒdS(Ni($RÚtlistRDt GetActionTypeRR7RWR5R8R;R<R=R`R¨R™RR>R?R@RARBRCRDRERFRGRHRIRJRKRLR2R9R7RnR(RòR<RMR,RñRRö((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytSendFamilyActionus> 
                 cCsStjƒj|ƒ}|sdS|d}|d}|dkrOt||ƒndS(NRMRNR^(R    R“R”tDo_MapServer_FamilyRefresh(RTRJR2RMRN((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRR¢s
 
 cCst|ƒdS(N(tResetDailyDonateCnt(R2((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR5¬s
cCst|ƒtj|ƒdS(N(R!R%R=(R2((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR6°s
 cCstjƒjƒ}|jƒ}|d}|jddƒ}|jddƒ}|jddƒ}|jddƒ}|jddƒ}    tj|||||    ƒ|jƒ}
|jƒ} t    j
|ƒ} |
|krÞ|j |ƒn|j ƒ|kr|j |ƒn| |krt    j||ƒn| |kr{t} | rL|dkrLt} n|j|ƒt    j|tj|ƒ| r{q{n|
dkr¾|jƒdkr¾|jd    dƒ}t|||ƒnF|
dkr|jƒdkr|j
ƒtjkrônt||ƒn|jƒdS(
NRWRXiRYRZRVR[R\R](R    R}R–R0RŒR€tUpdPlayerViewFamilyInfoRDt GetFamilyLVRztGetFamilyMemberLVRdt GetFamilyNamet SetFamilyNametSetFamilyMemberLVR@R®t SetFamilyLVtNomalDictSetPropertyRItDef_Player_Dict_FamilyLVt__OnLeaveFamilyt IPY_GameWorldRÁt__OnEnterFamilytView_FamilyInfoRefresh(R2RNR;RJRpt refreshFmLVtrefreshFamilyLVtrefreshFamilyNametrefreshEmblemIDtrefreshEmblemWordt lastFamilyIDt lastFamilyLVtlastFmLVtisLVUPR]((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRQµsF 
          
cCstj|tjƒdS(N(RGt UpdTaskValueRIRJ(R2R;((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR^ësc Cs|jdƒ|jdƒ|jdƒ|jdƒ|jdƒtj|ttjƒƒƒtj    |ƒ\}}}t
j d|||fƒt j ddƒd}}|r t jddƒ}|rït|ƒ|krâ||n|d}n|d7}t
j d|ƒn\t jdd    ƒ}|rNt|ƒ|krA||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=%sRLiiiÿÿÿÿis!    Ôö¼ÓÖ÷¶¯À뿪´ÎÊý: leaveCnt=%sis"    Ôö¼Ó±»ÌßÀ뿪´ÎÊý: kickedCnt=%sgY@sD    ¿Û³ý»õ±Ò: delMoneyType=%s,delMoneyPer=%s,nowMoney=%s,delMoney=%st LeaveFamily(t    SetPerExptSetFamilyHornortSetFamilyActiveValuetSetLastWeekFamilyActiveValueRYRztSetLeaveFamilyTimeExRHRIRNR    R/R«R¬RûR™tSetLeaveFamilyInfotGetMoneytPayMoneyR'tOnPlayerLeaveFamilytFBLogicRÖ( R2R]R;RQRRt_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(R@R«tIPY_DataRtGetFamilyDonateCounttGetFamilyDonateByIndext GetDonateTypeRRIRRzRZR®R!(R2tisResett
ipyDataMgrR-RcRR ((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRRs    cCs²g}tjƒ}xXt|jƒƒD]D}|j|ƒ}|jƒ}|jtj|ƒ}|j    |ƒq%W|swdSt
j ƒ}||_ t |j ƒ|_tj||ƒdS(N(R«R{RR|R}R~RRIRR2RttagSCDonateCntInfot DonateCntListR™R9RŽRn(R2t donateCntListR€R-RcRR R((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR!#s       i(RtRIR    RQRzRŽR€RRR%R'RÀR«R]RÁRGR7RÑRR ROR¹RIRÓRRmR¨RžRÞR³t fmlCounsellort fmlViceLeaderRªRRRRRRR!R#R R3R4R1R=R:RBRARURgR>RqR@RR‹R…R‘RR€R•R²R¦RªRµR®R¿RâRlRkR+RR<R=RAR>RKR?RCRZRDRER?RyRkRoRˆR‡R–R•RœR›R¢R¡R¥R¤R¦R©R«RRÔRÖRÕRÜRÛRÙRëRçRñRðRR R"R%R$R0R/R4R3R6RPRRR5R6RQR^R\RRR!(((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt<module>sò                       
 
                             
                                                           #    *            
        7     -        :                         +         8                  .    `                  E            M         4    8      @    T    .        %    $        % -    
            6        %