hxp
2025-10-17 b0d33e65c9aa3ffcee36391ac0008c1b23d8eab6
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
^øñhc @s›ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZdZedƒZ\ ZZZZZZZZZZ Z!Z"Z#eddCƒ\Z$Z%Z&Z'ide
j(6de
j)6de
j*6Z+d    „Z,d
„Z-d „Z.d „Z/d „Z0d„Z1d„Z2d„Z3d„Z4d„Z5d„Z6d„Z7d„Z8d„Z9d„Z:e
j(e;d„Z<e;dd„Z=dd„Z>d„Z?d„Z@d„ZAdd „ZCd!„ZDeddd"„ZEddd#„ZFgdd$„ZGd%„ZHd&„ZId'„ZJd(„ZKd)„ZLd*„ZMd+„ZNe;d,„ZOd-„ZPd.„ZQd/„ZRd0„ZSd1„ZTd2„ZUeVd3„ZWd4„ZXd5„ZYd6„ZZd7„Z[d8„Z\d9„Z]d:„Z^d;„Z_d<„Z`d=„Zad>„Zbd?„Zcd@„ZddA„ZeddB„ZfdS(DiÿÿÿÿNi!i iit    MemberMaxtEliteMaxtDeputyLeaderMaxcCs»tjƒrdStjƒ}x˜td|jƒƒD]}|j|ƒ}|jƒ}tj    |ƒxCt
|jƒƒD]/}|j|ƒ}|j dƒ|j dƒqsWt |tƒq2WdS(Ni(t    GameWorldt IsCrossServert    DBDataMgrt GetFamilyMgrtrangetGetCounttGetAttGetIDtPlayerFamilyZhenbaogetOnDaytxranget SetContribDaytSetDonateCntDaytBroadcast_FamilyChangetFamilyChangeType_OnDay(t familyManagertitfamilytfamilyIDtindextmember((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt FamilyOnDayLs     cCs4tj|tjƒsdSt|ƒtj|ƒdS(N(t GameFuncCommt GetFuncCanUset ShareDefinetGameFuncID_FamilytResetDailyDonateCntR t PlayerOnDay(t    curPlayer((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRbs
 
 cCsNtj|tjƒsdSt||ƒt|tƒt|ƒtj    |ƒdS(N(
RRRRtPlayerLoginRefreshFamilytSync_RequestAddFamilyInfotFalsetSyncDonateCntInfoR t OnPlayerLogin(Rttick((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR$is  
 cCs“|jƒ}|jƒ}|s"dStjƒ}|j|ƒ}|sGdS|j|ƒ}|s`dS|jttjƒƒƒt    |t
d|gƒdS(Nt excludeIDList( t GetPlayerIDt GetFamilyIDRRt
FindFamilyt
FindMembert
SetOffTimetintttimeRtFamilyChangeType_MemLogout(RtplayerIDRt    familyMgrRt    curMember((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnPlayerLogoutss   cCsdS(N((R((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnWeekEx…scCs|jƒ}tjƒ}|j|ƒ}t||ƒ|jƒ}|sJdS|j|ƒ}|scdS|j|ƒ}|s|dS|jdƒ|j    |ƒt
|ƒt ||t j ƒt|tƒrÛtj|t|ƒƒnt|td|gƒ|jƒtjkrt|ƒndS(NiR&(R'RRtGetPlayerFamilyIDtMapServer_FamilyRefreshR(R)R*R+t RefreshMembertSync_FamilyInfotSendFamilyActionInfoRtDef_ActionType_FamilyDatatGetFamilyMemberHasPowtFamilyPowerID_Callt NetPackCommont SendFakePacktGetPack_FamilyReqJoinInfoRtFamilyChangeType_MemLogintGetFmLVtIPY_PlayerDefinet    fmlLeadertOnFamilyLeaderLogin(RR%R/R0trefreshFamilyIDRRR1((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR ‰s.      
 cCsdS(N((R((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRC­scCstjƒdS(N(tPlayerFamilyEmblemtCheckExpireEmblem(((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnMinute²s
cCsq|jƒ}|sdStjƒ}|j|ƒ}|s;dS|jƒ}|j|ƒ}|s`dS|j|ƒdS(N(R(RRR)R'R*R6(RRR0RR/R((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytRefreshFamilyMember·s    cCs
|jƒS(N(t    GetValue1(t
dataAction((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt GetRenameTimeÇscCs|j|ƒdS(N(t    SetValue1(RJtsetTime((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt SetRenameTimeÈscCs(tjƒj|tjƒ}|jtƒS(N(RtGetFamilyActionMgrtGetFamilyActionRR9t GetOneActiontTrue(Rtaction((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytGetFamilyDataActionÉscCs;tjƒj|ƒ}|j}|j}|j}tj|tj    ƒsIdS|j
ƒ}|j ƒ}t j ƒ}    |r±|    j|ƒ}
|
r±|
j|ƒr®tj|dƒdSq±nt||ƒ} | sÊdStjddƒ} tjddƒ} | r| rtj|| | dƒsdSntj|ƒ}|    j| |ƒ}
|
dkrZtjd|ƒdS|
jƒ}|
jdƒtjƒ}| s’||kr¤tj|ƒ}ntj d|||fƒ|
j!|ƒ|
j"|ƒt#|
||t$j%ƒ|    j&ƒtj|dƒtj'dd    |j(ƒ| |gƒt)j*|
ƒdS(
NtGeRen_chenxin_85890t CreateFamilyiis ´´½¨¼Ò×åʧ°Üs-´´½¨ÏÉÃË: familyID=%s,playerID=%s,emblemID=%stXW_JZ_EstablishSuditjiazu_liubo_671654(+RtGetPlayerManagertGetPlayerByIndextNametEmblemIDt
EmblemWordRRRRR'R(RRR)R*t PlayerControlt
NotifyCodetCheckInputFamilyNamet IpyGameDataPYt
GetFuncCfgtPayMoneytGetPlayerServerIDt    AddFamilytNonetErrLogR
tSetLVREtGetDefaultFamilyEmblemIDListtrandomtchoicetLogt SetEmblemIDt SetEmblemWordtDoPlayerJionFamilyRARBtSortt WorldNotifytGetNameR tOnZhenbaogeReset(Rt
clientPackR%Rt    inputNametemblemIDt
emblemWordR/tplayerFamilyIDR0t    curFamilytfullFamilyNamet    needMoneyt    moneyTypetserverIDt newFamilyIDt emblemIDList((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnCreateFamily×sT               
 
" cCsßtjƒj|ƒ}t||ƒ}|sDtjd|jƒƒdStj|ƒrgtj    |dƒdSt
|ƒdks‹t
|ƒt kr¬tj    |dt dt gƒdSt j ƒ}|j|ƒrÛtj    |dƒdS|S(s_¼ì²éÍæ¼ÒÊäÈëµÄÏÉÃËÃûÊÇ·ñºÏ·¨£¬½¨ÃË¡¢¸ÄÃûͨÓÃ
    @return: None-²»ºÏ·¨£»·Ç¿Õ-ºÏ·¨µÄÏÉÃËÈ«Ãû
    s ¼Ò×åÈ«ÃûÒì³£!Nt NameSensitiveit NameLenLimitit
NameExists(Rt GetGameWorldt GetCharTrimtGetFamilyFullNameRgR't    DirtyListtIsWordForbiddenR^R_tlentDef_CreatFamily_MaxStrRRtFindFamilyByName(RRut
familyNameRzR0((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR` s $ c CsItj|ƒ}tjddƒ}||ks9|dkrTtjd||fƒdStjddiƒ}tj||ƒ}|s–tjddƒ}n|s dS|d}g|dD]}t|ƒ^qµ}|t|ƒ}    tjddƒ}
t    |    ƒ|
krEtjd    ||    t    |    ƒ|
fƒt
j |d
|
d|
gƒdS|    S( NtFamilyNameFormatiisFÏÉÃËÈ«Ãû serverID=%s error! maxServerID=%s, check FamilyNameFormat.txttiiisFÏÉÃËÈ«Ãû familyName=%s,È«Ãû=%s len=%s > %s, check FamilyNameFormat.txtR‚( RRdRaRbRgtGetFuncEvalCfgtGetDictValueByRangeKeytevalttupleR‰R^R_( RRŒR}t maxServerIDtspecServerDicttnameFormatInfot
nameFormattpNamet    paramListtfullNametmaxLen((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR†+s(
##c
Cs‡t|tƒr3|}tjƒ}|j|ƒ}n|}|sCdS|jƒ}|j|ƒ}|j|ƒ|r|j|ƒn |j    |ƒ|j
|j ƒ|j ƒƒ|t j krÊ|j|ƒn|rêt||ƒt|ƒn|t j kr@|rt|td|gƒn|r@tj|d|jƒgƒq@ntjƒjƒ}    t|jƒ|tjtjtj|dg|    ƒdS(sM¼ÓÈë¼Ò×壬֧³ÖÀëÏßÍæ¼Ò¼ÓÈë
    @param jionPlayer: Èç¹ûÊÇÀëÏßÍæ¼ÒÔòΪNone
    NR&tXW_JZ_EnterFamilyInfoi(t
isinstanceR,RRR)R
t    AddMembertSetFmLVR6tRefreshMemberByIDtSetFightPowerTotaltGetFightPowerTotalRARBt SetLeaderIDR5R7RtFamilyChangeType_MemJoinR^R_RrRR„tGetTicktAddFamilyActionNotet GetPlayerNameRtDef_ActionType_FamilyEventt"Def_FamilyActionEvent_MemberChangetDef_FamilyMemberChange_Join(
RR/t
jionPlayertjionFamilySetLvtbroadcastFamilyChangeRR0RyRR%((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRoEs8      "RŽc 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_ActionTypeListRRgR"RRORPt    AddActiontSetNamet SetUserDatat    enumeratetgetattrRR( tcurNameRt
actionTypetactionDataListR%t isClearNonetuseDatat familyActiont
actionDatatnumtvaluetsetFunc((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR¥ws    icCstjƒjƒ}|jƒ}d}d}d}|rŸtjƒ}|j|ƒ}    |    r–|    jƒ}|    jƒ}|    j    |ƒ}
|
rœ|
j
ƒ}qœqŸd}n|j ƒ} |j ƒ} t j|ƒ} | |krâ|j|ƒn|jƒ|kr|j|ƒ|jƒn| |kr-t j||ƒn| |kr‰t}| rZ|dkrZt}n|j|ƒt j|tj|ƒ|r‰q‰n| dkrº|j ƒdkrºt|||ƒnF| dkr|j ƒdkr|jƒtjkrðnt||ƒn|jƒdS(s¡ Ï൱ÓÚGameServerµ÷ÓàcurPlayer.MapServer_FamilyRefresh()
    @param familyID: Íæ¼Ò¸üеÄfamilyID
    @param isVoluntarily: ÊÇ·ñ×ÔÔ¸À뿪µÄ£¬½öÀ뿪ˢÐÂʱÓÐЧ
    iRŽN(RR„R¤R'RRR)tGetLVRrR*R@R(t GetFamilyLVR^tGetFamilyMemberLVt SetFamilyIDt GetFamilyNamet SetFamilyNametNotify_FamilyNameRefreshtSetFamilyMemberLVR"RRt SetFamilyLVtNomalDictSetPropertytChConfigtDef_Player_Dict_FamilyLVt__OnLeaveFamilyt IPY_GameWorldRBt__OnEnterFamilytView_FamilyInfoRefresh(RRDt isVoluntarilyR%R/t refreshFmLVtrefreshFamilyLVtrefreshFamilyNameR0RyRt lastFamilyIDt lastFamilyLVtlastFmLVtisLVUP((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR5sR                    
cCs-tjƒ}|j|jƒƒt|ƒdS(N(RRtDelPlayerReqJoinFamilyIDAllR'R!(RR%R0((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRËÍs 
c 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||ƒdS(Nis:__OnLeaveFamily: isVoluntarily=%s,leaveCnt=%s,kickedCnt=%st FamilyLeaveiiiÿÿÿÿis!    Ôö¼ÓÖ÷¶¯À뿪´ÎÊý: leaveCnt=%sis"    Ôö¼Ó±»ÌßÀ뿪´ÎÊý: kickedCnt=%sgY@sD    ¿Û³ý»õ±Ò: delMoneyType=%s,delMoneyPer=%s,nowMoney=%s,delMoney=%st LeaveFamily(t    SetPerExptSetFamilyHornortSetFamilyActiveValuetSetLastWeekFamilyActiveValueRÅR^tSetLeaveFamilyTimeExR,R-tGetLeaveFamilyInfoRtDebugLogRaRbRR‰tSetLeaveFamilyInfotGetMoneyRctFBLogict OnLeaveFamily( RRÍR%tleaveCntt    kickedCntt_t delMoneyTypet delMoneyPertdelMoneyPerListtnowMoneytdelMoney((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRÉÔs8     )
)
 cCsKtjddiƒ}t|ƒ|kr+tS|t|ƒ}|jƒ|kS(Nt FamilyPoweri(RaRtstrR"R@(RtpowerIDt    powerDictt needMemberLV((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR:÷s
cCs?|jƒ}|sdS|s+t|ƒ}ntj||ƒdS(N(R(tGetPack_FamilyInfoR<R=(RtinfoPackR((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR7ÿs cCs‡tjƒ}|j|ƒ}|s%dStjƒ}||_|jƒ|_|jƒ|_    |j
ƒ|_ |j ƒ|_ |jƒ|_|jƒ|_|jƒ|_|jƒ|_|jƒ|_|jƒ|_|jƒ|_t|jƒ|_|jƒ|_g|_ xet!|j"ƒƒD]Q}|j#|ƒ}tj$ƒ}|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|ƒqWt|j ƒ|_D|S(N(ERRR)tChPyNetSendPackttagMCRoleFamilyInfotFamilyIDRrt
FamilyNameR½tFamilyLVtGetExpt FamilyLVExpt GetJoinReviewt
JoinReviewt GetJoinLVMint    JoinLVMint GetServerIDtServerIDt GetEmblemIDR\t GetEmblemWordR]t GetFightPowert
FightPowertGetFightPowerExt FightPowerExt GetBroadcastt    BroadcastR‰t BroadcastLent GetLeaderIDtLeaderIDt
MemberListR RR    ttagMCRoleFamilyMemberR'tPlayerIDt GetJoinTimetJoinTimeR¦R[tNameLentLVtGetJobtJobt
GetRealmLVtRealmLVtGetFacetFacet
GetFacePictFacePict
GetTitleIDtTitleIDR@tFmLVtGetContribTotalt ContribTotalt GetContribDayt
ContribDaytGetDonateCntTotaltDonateCntTotaltGetDonateCntDayt DonateCntDayt
GetOffTimetOffTimetappendt MemberCount(RR0RyRtRRtmemInfo((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRð    sZ           cCs,tjƒ}||_t||||ƒdS(N(RòttagMCFamilyChangetTypetBroadcast_FamilyPack(Rt
changeTypeRíR&Rt((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR9s     c CsÜ|s
dStjƒ}|j|ƒ}|s/dStjƒ}xšt|jƒƒD]†}|j|ƒ}|jƒ}    |r‡|    |kr‡qNn|j    |    ƒ}
|
s¢qNn|dkrÄt ||ƒ rÄqNnt j |
|ƒqNWdS(N(RRR)RRYR RR    R'tFindPlayerByIDRfR:R<R=( RRtRíR&R0Ryt playerManagerRRR/R((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR+As&   c Cs³tjƒ}|j|ƒ}|s%dStjƒ}x{t|jƒƒD]g}|j|ƒ}|jƒ}    |r}|    |kr}qDn|j    |    ƒ}
|
s˜qDnt
j |
||ƒqDWdS(N( RRR)RRYR RR    R'R-R^R_( RtcodeR˜R&R0RyR.RRR/R((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytNotifyAllFamilyMemberMsg\s   cCsŒtjƒj|ƒ}|j}tjƒj|ƒ}|sNtjd|ƒdS|jƒ}|dkr{tjd|ƒdSt||ƒdS(Ns¶Ô·½²»ÔÚÏß! tagPlayerID=%sis¶Ô·½Ã»ÓмÒ×å! tagPlayerID=%s(RRYRZt TagPlayerIDR-RÞR(tRequestJoinTagFamily(Rt
clientDataR%Rt tagPlayerIDt    tagPlayert tagFamilyID((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnRequestJoinFamilyByPlayervs       cCsvtjƒj|ƒ}|j}|j}|dkrV|sFt|ƒqrt||ƒn|dkrrt||ƒndS(Nii(RRYRZt TagFamilyIDR*tAutoJoinFamilyR2tCancelJoinTagFamily(RR3R%RR6t requestType((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnRequesJoinFamilyŒ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(NiRÖiiÿÿÿÿii<sb¼ÓÈëÏÉÃËCDÖÐ: leaveCnt=%s,kickedCnt=%s,lastVoluntarily=%s,leaveFamilyTime=%s(%s),passTimes=%s < %s( R^tGetLeaveFamilyTimeExR"RÝRaRR‰R,R-RRÞtChangeTimeNumToStrRR(    RtleaveFamilyTimeRãRätlastVoluntarilyt joinCDMinutetjoinCDMinuteListtcdTimest    passTimes((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt CheckInJoinCDŸs0 0 -
     &c
Cs†|jƒrdS|jƒ}|jƒ}tjd||ƒt|ƒrLdStjƒ}t|j    ƒƒ}t
j |ƒxë|D]ã}|j |ƒ}|sŸq~n|j ƒ}|jƒ}|ré||krétjd||f|ƒq~n|jƒrtjd||ƒq~nt|jƒdƒ}    |j    ƒ|    krPtjd||ƒq~nt|||ƒdSWtjdƒtj|dƒdS(Ns!Íæ¼ÒÒ»¼ü×Ô¶¯¼ÓÈë¼Ò×壡 realmLV=%ss*    ¹ÙÖ°²»×ãµÄ²»´¦Àí! familyID=%s,lvMin=%ss!    ÐèÒªÉóºËµÄ²»´¦Àí! familyID=%sRs!    ³ÉÔ±ÒÑÂúµÄ²»´¦Àí! familyID=%ssûÓпÉ×Ô¶¯½øÈëµÄÏÉÃË!tQuickEnterFamilyFail(R(R'tGetOfficialRankRRÞRERRRRRjtshuffleR    R
RûRùtGetFamilySettingR½RoR^R_(
RR/trealmLVR0t    indexListRRRtlvMinR((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR9¼s>           cCsS|s
dStjd|ƒ}|s&dSd|}t||ƒsCdSt||ƒƒS(NitFamilysGet%s(RatGetIpyGameDatathasattrR²(tfamilyLVt    fieldNametipyDatatattrName((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRIâs
c CsGt|ƒrdS|jƒ}|jƒrFtjd|jƒ|ƒdStjƒ}|j|ƒ}||kr…tjd||ƒdStj    ddƒ}t
|ƒ|krÍtjdt
|ƒ|f|ƒdS|j |ƒ}|sædS|j ƒ}|j ƒ|kr(tjd|j ƒ|f|ƒdS|jƒrè|jƒ}||kr§tj    ddƒ}    t
|ƒ|    kr§tjdt
|ƒ|f|ƒtj|d    ƒdSn|j|ƒt|t|ƒtƒtj|d
ƒt|ƒdSt|jƒd ƒ}
|jƒ|
kr3tjd |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(RER'R(RRÞRRtGetPlayerReqJoinFamilyIDListRaRbR‰R)RûRGRùtGetReqJoinPlayerInfoR^R_tAddReqJoinPlayerIDR+R>R;R!RIR½RRo( RRR/R0treqFamilyIDListtmaxReqFamilyCntt    tagFamilyRLtreqPlayerIDDicttmaxReqPlayerCntt    memberMax((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR2îsR             
 cCsqtjƒ}|jƒ}|j|ƒ}|r=|j|ƒn|j||ƒt|t|ƒtƒt    |ƒdS(N(
RRR'R)tDelReqJoinPlayerIDtDelPlayerReqJoinFamilyIDR+R>R;R!(RRR0R/R\((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'RRRWRòt tagMCNotifyRequestJoinFamilyInfotCleartRequestJoinFamilyIDListR‰t RequestCountR<R=(RtisForceR/R0RZRt((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR!2s   
    c Cs­tjƒ}|j|ƒ}|s%dS|jƒ}tjƒ}tjƒ}g|_xB|j    ƒD]4\}}|j
|ƒ}tj ƒ}    ||    _ ||    _ |rªt|    _ntj|ƒ}
|
rj|
jƒ|    _t|    jƒ|    _|
jƒ|    _|
jƒ|    _|
jƒ|    _|
jƒ|    _|
jƒ|    _|
j ƒ|    _!|
j"ƒ|    _#|
j$ƒ|    _%|
j&ƒ|    _'n|jj(|    ƒt|jƒdkr_Pq_q_Wt|jƒ|_)|S(Nid(*RRR)RXRRYRòttagMCFamilyReqJoinInfot ReqJoinListtitemsR-ttagMCFamilyReqJoinPlayerR tReqTimeRRtIsOnLinetPlayerViewCachet FindViewCacheR¦R[R‰RR½RRRRRRRRRRRRRRRRýRþR&tReqCnt( RR0RyR]R.RtR/treqTimeRtreqInfot    viewCache((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR>AsB                  cCs>tjƒj|ƒ}|j}|j}|jƒ}|jƒ}|dkrOdStjƒ}|j    |ƒ}    |    stdS|    j
|ƒ}
|
sdSt |
t ƒs°t j|dƒdStjd|||f|ƒ|    jƒ} | jƒ} |r|| kr tjd|ƒdS|g} n| s/tjdƒdStjƒ} |sºx\| D]T}|    j|ƒ| j|ƒ}|svqHnt|ƒt j|d|    jƒgƒqHWt|t|ƒt ƒdStjddƒ}t|    jƒd    ƒ}g}x| D]}|    jƒ|krt j|d
ƒPn| j|ƒ}|sb|sbtjd ||ƒt j|d ƒqîqbn|    j
|ƒr›tjd ||ƒt j|dƒqîn|j|ƒ}|ràtjd||f|ƒt j|dƒqînt|    ||dtƒ|j |ƒqîW|sdSt!|t"d|ƒt|t|ƒt ƒdS(NitXW_JZ_InviteErr_Popedoms0ÉóºËÈëÃËÉêÇë: tagPlayerID=%s,familyID=%s,isOK=%ss ²»´æÔÚ¸ÃÉêÇëÈËÔ±! tagPlayerID=%ss ûÓÐÉêÇëÈËÔ±!tjiazu_pan_592934RTiRtjiazu_lhs_202580s$ÀëÏßÍæ¼ÒÎÞ·¨¼ÓÈëÏÉÃË! tagPlayerID=%stjiazu_hwj35_367906sÒѾ­ÊDZ¾Ã˳ÉÔ±! tagPlayerID=%stXW_JZ_InviteErr_Repeats/ÒѾ­¼ÓÈëÆäËûÏÉÃË! tagPlayerID=%s,tagFamilyID=%sR¬R&(#RRYRZR1tIsOKR'R(RRR)R*R:R;R^R_RÞRXtkeysR`R-R!RrR+R>RaRbRIR½RR4RoR"R&RR£(RR3R%RR4tisOKR/RR0RR1R]ttagPlayerIDListR.R5tofflinePlayerCanJoinRtjoinOKPlayerIDListR6((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnJoinFamilyReplynsˆ                    
      c Cstjƒj|ƒ}|j}|j}|jƒ}|jƒ}|dkrOdStjƒ}|j    |ƒ}    |    stdS|    j
|ƒ}
|
sdSt |
t ƒs°tj d|ƒdStj d|||f|ƒ|    j|ƒ|    j|ƒt|ƒt|tt d|gƒdS(Nis ûÓÐÕÐÈËȨÏÞs4ÐÞ¸ÄÕÐÈËÉèÖÃ: familyID=%s,joinReview=%s,joinLVMin=%sR&(RRYRZRúRüR'R(RRR)R*R:R;RÞt SetJoinReviewt SetJoinLVMinR7RtFamilyChangeType_JoinSet( RR3R%Rt
joinReviewt    joinLVMinR/RR0RR1((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnChangeFamilyJoinÉs.              
c
Cs
tjƒj|ƒ}|j}|jƒ}|jƒ}|dkrFdStjƒ}|j|ƒ}|skdS|j    |ƒ}    |    s„dSt
|    t ƒs§tj d|ƒdS|j |ƒtj dtj|jƒƒtj|ƒf|ƒt|ƒt|td|gƒdS(NisûÓÐÐ޸Ĺ«¸æÈ¨ÏÞs¸ü¸ÄÏÉÃ˹«¸æ: Family=%s,¹«¸æ=%sR&(RRYRZtMsgR'R(RRR)R*R:tFamilyPowerID_BroadcastRÞt SetBroadcastt    CodeToGbkRrR7RtFamilyChangeType_Broadcast(
RR3R%Rt    broadcastR/RR0RR1((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnChangeFamilyBroadcastês*         2
cCs>tjƒj|ƒ}|j}|j}tj|||ƒdS(N(RRYRZR\R]REtOnChangeFamilyEmblem(RR3R%RtchangeEmblemIDRw((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRŒ
s
        cCs/tjƒj|ƒ}t||j|jƒdS(N(RRYRZtOnChangeFamilyMemberLVR R(RR3R%R((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnChangeFamilyMemLVscCs´|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}
t||    ƒnÂd} xKt|jƒƒD]7} |j| ƒ} | j ƒ|krûqÎn| d7} qÎWt|jƒtj|d    ƒƒ}| |krdtj|d
ƒtj    d || |fƒdSt}
t|    |ƒ|r|jd    ƒnt|ƒt||
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=%siRŽtjiazu_chenxin_31379s?Ŀǰ¸ÃְλµÄÈËÊýÒѾ­´ïµ½ÉÏÏÞ! changeFmlv=%s,fmLVMemCnt=%s >= %sR&(R'R(RRR)R*RARBRRÞR:tFamilyPowerID_ChangeFmlvRfR@tFamilyChangeType_LeaderChangetChangeFamilyLeaderRRR    RIR½tDef_FmlSetAttrNametgetR^R_tFamilyChangeType_MemFmlvChangetChangeFamilyMemberLvR‡R7RRR(RttagIDt
changeFmlvtisGMOPR/RR0RR1t    tagMemberR,t
fmLVMemCntRt familyMembertmaxCnt((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRŽsn      
!  
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
RR'R*R—RAt    fmlMemberR¢RBRRl(Rt newLeaderMemRt befLeaderIDt newLeaderIDt befLeaderMem((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR“fs     cCsñ|jƒ}|jƒ}|jƒ}|jƒ}|j|ƒtjƒj|ƒ}|ršt||ƒt    |ƒt
|t ƒršt j |t|ƒƒqšntjƒjƒ}t||tjtjtj||g|ƒt|d||gƒdS(NtXW_JZ_AppointFamily(R(R'R¦R@RžRRYR-R5R7R:R;R<R=R>R„R¤R¥RR§R¨tDef_FamilyMemberChange_FMLVR0(R›tchangeFamilyLVRR˜tmemNamet befFamilyLVR5R%((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR—ys       
cCs#tjƒj|ƒ}t|ƒdS(N(RRYRZR7(RR3R%R((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnGetFamilyInfo™s
c
Csetjƒj|ƒ}|jƒ}|jƒ}|dkr=dStjƒ}|j|ƒ}|sbdS|j|ƒ}|s{dS|j    ƒ}    |j
ƒdkr¼|    t j kr¼tj d|ƒdStj d||ƒ|j|ƒt|jƒ|tjtjtjg|ƒt|d|jƒgƒt|ddƒ|j
ƒdkrT|j|ƒdSt|tƒdS(Niis%×峤ÔÚ³ÉÔ±ÈËÊý´óÓÚ1ʱ²»ÄÜÖ±½ÓÍ˳ö¼Ò×åsÀ뿪¼Ò×å! familyID=%stXW_JZ_LeaveFamily(RRYRZR'R(RRR)R*R@RRARBRÞt DeleteMemberR¥RrRR§R¨tDef_FamilyMemberChange_LeaveR0R5t    DelFamilyRtFamilyChangeType_MemLeave(
RR3R%RR/RR0RR1RP((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRâ¤s6     !       cCs«tjƒj|ƒ}|j}|jƒ}||kr:dS|jƒ}|dkrVdStjƒ}|j|ƒ}|s{dS|j    |ƒ}    |    s”dSt
|    t ƒs´tj dƒdS|j    |ƒ}
|
sÍdS|    j ƒ} |
j ƒ} | | krtj d|| | f|ƒdS|
jƒ} |
jƒ}|j|ƒt| |tjtjtjg|ƒt|d| gƒtjƒj|ƒ}|ršt|dƒnt|tƒdS(Nis ûÓÐÌßÈËȨÏÞ!sCÖ»ÄÜÌß±È×Ô¼ºÖ°Î»µÍµÄ³ÉÔ±! tagMemberID=%s,tagFmlv(%s) >= curFmlv(%s)Rª(RRYRZtMemberIDR'R(RRR)R*R:tFamilyPowerID_KickRÞR@R¦R«R¥RR§R¨tDef_FamilyMemberChange_KickOutR0R-R5RR®(RR3R%Rt tagMemberIDR/RR0RR1R›tcurFmlvttagFmlvt tagPlayerNameR4R5((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnDeleteFamilyMemberØsJ                 cCsOtjƒj|ƒ}|j}|jƒ}|jƒ}|dkrFdStjƒ}|j|ƒ}|skdS|j    |ƒ}    |    s„dS|    j
ƒt j kr­tj d|ƒdStjddƒ}
|
r6|
d} ttjƒƒ} t|ƒ} t| ƒ}|r6| || kr6tj dtj|ƒ|
fƒdSnt||ƒ}|sOdStjddƒ\}}|r|rtj|||dƒ rdS|j|ƒt|ƒ}tjƒ}xjt|jƒƒD]V}|j|ƒ}|jƒ}|j|ƒ}|sqÈnt||ƒ|j |ƒqÈW|
rKt!| | ƒt"d|t$j%ƒndS(Nis·ÇÃËÖ÷²»¿É¸ÄÃû!t FamilyRenameiis*ÏÉÃ˸ÄÃûCDÖÐ! lastRenameTime=%s,cdHours=%si(&RRYRZtNewNameR'R(RRR)R*R@RARBRÞRaRbR,R-RTRKR>R`RR^RcR¯RðR RR    R-R7RÂRNR8RfRR9(RR3R%RtnewNameR/RR0RR1tcdHourst    cdSecondstcurTimeRJtlastRenameTimeRŒR|t
moneyValueRñR.RtmemIDtplayer((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytUpdateFamilyNames\        
   %      cCsïtjƒj|ƒ}|j}|j}t|jdƒ}tjƒ}|j    ƒ}d}    |s™||}
|
|d} |dkr»tj
||ƒ}    q»n"d}d}d}    d}
|d} t j ƒ} || _t | jƒ| _|| _|| _|    | _g| _xÒt|
| dƒD]½}||kr0Pn|j|ƒ} | sKqn|r„|| jƒks|t| jƒƒkrq„qnt jƒ}|d|_| jƒ|_| jƒ|_t |jƒ|_| jƒ|_| j|jƒ}|r|jƒnd|_t |jƒ|_ | j!ƒ|_"| j#ƒ|_$| j%ƒ|_&| j'ƒ|_(| j)ƒ|_*| j+ƒ|_,| j-ƒ|_.| j/ƒ|_0| j    ƒ|_1| jj2|ƒt | jƒ| _3| j3|krPqqWt4j5|| ƒdS(Ni2iiiRŽ(6RRYRZR…t    PageIndextmint    ShowCountRRRt GetIntUpperRòttagMCFamilyViewListR‰tMsgLent    TotalPaget
FamilyListRR    RrRìR
ttagMCFamilyViewtRankRôRõt FamilyNameLenRR    R*R¦t
LeaderNamet LeaderNameLenR½RöRùRúRûRüRýRþRÿR\RR]RRRRR'R&t FamilyCountR<R=(RR3R%Rtmsgt    pageIndext    showCountR0t familyCountt    totalPaget
startIndextendIndexRtRt
familyViewt leaderMember((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnViewFamilyPage\st          
 
                      *  cCsìtjƒj|ƒ}|j}|jƒ}|jƒ}|dkrFdStjƒ}|j|ƒ}|skdS|j    |ƒ}    |    s„dSt
j d|ƒ}
|
s dS|
j ƒ} |j tj|ƒ} | | krïtjd|| | f|ƒdS|
jƒ} |
jƒ}| s| rdStj|| |dƒs5dS|
jƒ}| d7} tj|tj|| ƒt|ƒ|    jƒd}t|    jƒdtjƒ}|    j|ƒ|    j|ƒtjd|| |||f|ƒtj||ƒdS(Nit FamilyDonates6½ñÈÕ¾èÏ×´ÎÊýÒÑ´ïÉÏÏÞ! donateType=%s,donateCnt=%s >= %stFamilyMoneyDonateisM¼Ò×å¾èÏ×: donateType=%s,donateCnt=%s,%s,memDonateCntDay=%s,memDonateCntDay=%s( RRYRZt
DonateTypeR'R(RRR)R*RaRNt GetDailyCnttNomalDictGetPropertyRÇtDef_Player_Dict_FamilyDonateCntRÞt GetMoneyTypet GetMoneyValueR^RctGetAwardItemListRÆR#R"RÃR tDef_UpperLimit_DWordRtSetDonateCntTotalt ItemControlertGivePlayerItemOrMail(RR3R%Rt
donateTypeR/RR0RyR1RRt dailyCntMaxt    donateCntR|R¾t awardItemListtmemDonateCntDaytmemDonateCntTotal((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnFamilyMoneyDonate§sN             
 
      cCs t}tjƒ}xtt|jƒƒD]`}|j|ƒ}|jƒ}|jtj    |ƒ}|r%t
j |tj    |dƒt }q%q%W|rœt |ƒndS(Ni(R"RatIPY_DataRtGetFamilyDonateCounttGetFamilyDonateByIndext GetDonateTypeRÞRÇRßR^RÆRRR#(RtisResett
ipyDataMgrRRRRçRé((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRÔs    cCs¾g}tjƒ}xXt|jƒƒD]D}|j|ƒ}|jƒ}|jtj|ƒ}|j    |ƒq%W|swdSt
j ƒj t jƒ}||_t|jƒ|_tj||ƒdS(N(RaRîRRïRðRñRÞRÇRßR&tObjPoolt
GetPoolMgrtacquireRòttagSCDonateCntInfot DonateCntListR‰tCountR<R=(Rt donateCntListRóRRRRçRéRt((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR#âs      c Csg|jƒ}|jƒ}|dkr(dStjƒ}|j|ƒ}|sMdS|jƒ}|jƒ}|}||}    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|ƒt|td|gƒtS(Nis4Ôö¼ÓÏÉÃ˾­Ñé: curLV=%s,curExp=%s,addExp=%s,updExp=%sRMis+    ÏÉÃËÉý¼¶: updLV=%s,updExp=%s,lvUPExp=%sR&(R'R(RRR)R½R÷RRÞRaRNt
GetNeedExptGetIpyGameDataNotLogRhtSetExpR7RtFamilyChangeType_FamilyLVExpRR( RtaddExpR/RR0RytcurLVtcurExptupdLVtupdExpRRtlvUPExp((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt AddFamilyExpòs8      
  
 
 !  
c    Csð|jƒ}|jƒ}|dkr(dStjƒ}|j|ƒ}|sMdS|j|ƒ}|sfdS|jƒ|}t|jƒ|t    j
ƒ}|j |ƒ|j |ƒt jd||||f|ƒt|ƒt|td|gƒdS(NisJÔö¼Ó³ÉÔ±¹±Ï×: familyID=%s,addContribValue=%s,contribDay=%s,contribTotal=%sR&(R'R(RRR)R*RRÃRRÇRãRtSetContribTotalRRÞR7RtFamilyChangeType_MemContrib(    RtaddContribValueR/RR0RyR1t
contribDayt contribTotal((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytAddFamilyContribs&       
cCsZtjƒj|ƒ}|sdS|j}|j}|sF|jƒ}nt|||ƒdS(N(RRYRZt
ActionTypeRôR(R8(Rt
cliendDataR%RR´R((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnQueryFamilyAction8s        cCsotjƒj||ƒ}tjƒ}||_||_g|_xðt|j    ƒƒD]Ü}|j
|ƒ}tj ƒ}|j ƒ|_ |jƒ|_t|jƒ|_|jƒ|_|jƒ|_|jƒ|_|jƒ|_|jƒ|_|jƒ|_|jƒ|_t|jƒ|_ |jj!|ƒqRWt|jƒ|_    |r^t"j#||ƒdSt$||ƒdS(N(%RRORPRòttagMCFamilyActionInfoRôR tFamilyActionListR RùtAtttagMCFamilyActiontGetTimetTimeRrR[R‰RRItValue1t    GetValue2tValue2t    GetValue3tValue3t    GetValue4tValue4t    GetValue5tValue5t    GetValue6tValue6t GetUserDatatUseDatat
UseDataLenR&R<R=R+(RRR´R¸RtRtfamilyActionDataR¹((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR8Fs4               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#||ƒdS(Ni($RœtlistR(t GetActionTypeRòRRôR RRRRRrR[R‰RRIRRRRRRRRRRRR R!R"R&RùR<R=R+(RµRR#RR´RtR¹((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytSendFamilyActionjs> 
                  i(gRáRÇRRR^R<RmRòRER RARaRÊRåRRR‡RôRjR-RŠRtFamilyChangeTypestFamilyChangeType_NoneR£R®RR‰tFamilyChangeType_EChangeR’R–R?R.RþRRR;R‘R†R°RŸt fmlCounsellort fmlViceLeaderR”RRR$R2R3R RCRGRHRKRNRTR€R`R†RRRoR¥R5RËRÉR:RfR7RðRR+R0R7R<RER9RIR2R:R!R>R~R„R‹RŒRR"RŽR“R—R©RâR¶RÁRÙRíRR#RR RR8R&(((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt<module>s¤                    7
 
             
            $                            6        2 @        #    
    0                &         8         -    [    !              H                  4    @    D    K    -            #    #        $