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
=¢Hic @sÑddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZdZedƒZ\ ZZZZZZZZ Z!Z"Z#Z$Z%eddFƒ\Z&Z'Z(Z)ide j*6de j+6de j,6Z-d    „Z.d
„Z/d „Z0d „Z1d „Z2d„Z3d„Z4d„Z5d„Z6d„Z7d„Z8d„Z9d„Z:d„Z;d„Z<d„Z=e j*e>d„Z?e>dd„Z@dd„ZAd„ZBd„ZCd „ZDdd!„ZFd"„ZGeddd#„ZHddd$„ZIgdd%„ZJd&„ZKd'„ZLd(„ZMd)„ZNd*„ZOd+„ZPd,„ZQe>d-„ZRd.„ZSd/„ZTd0„ZUd1„ZVd2„ZWd3„ZXeYd4„ZZd5„Z[d6„Z\d7„Z]d8„Z^d9„Z_d:„Z`dd;„Zad<„Zbd=„Zcd>„Zdd?„Zed@„ZfdA„ZgdB„ZhdC„ZidD„ZjddE„ZkdS(GiÿÿÿÿNi!i iit    MemberMaxtEliteMaxtDeputyLeaderMaxcCsÈtjƒrdStjƒ}x¥td|jƒƒD]Ž}|j|ƒ}|jƒ}tj    |ƒt
j    |ƒxCt |jƒƒD]/}|j|ƒ}|j dƒ|j dƒq€Wt|tƒq2WdS(Ni(t    GameWorldt IsCrossServert    DBDataMgrt GetFamilyMgrtrangetGetCounttGetAttGetIDtPlayerFamilyZhenbaogetOnDaytPlayerFamilyTaofatxranget SetContribDaytSetDonateCntDaytBroadcast_FamilyChangetFamilyChangeType_OnDay(t familyManagertitfamilytfamilyIDtindextmember((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt FamilyOnDayMs      cCsYtjƒrdStjƒ}x6td|jƒƒD]}|j|ƒ}t|ƒq2WdS(Ni(RRRRRRR    t__AutoChangeLeader(RRR((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt FamilyOnHourcs  cCsAtj|tjƒsdSt|ƒtj|ƒtj|ƒdS(N(t GameFuncCommt GetFuncCanUset ShareDefinetGameFuncID_FamilytResetDailyDonateCntR t PlayerOnDayR (t    curPlayer((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR!os 
  cCs[tj|tjƒsdSt||ƒt|tƒt|ƒtj    |ƒt
j    |ƒdS(N( RRRRtPlayerLoginRefreshFamilytSync_RequestAddFamilyInfotFalsetSyncDonateCntInfoR t OnPlayerLoginR (R"ttick((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR'ws  
  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(R"tplayerIDRt    familyMgrRt    curMember((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnPlayerLogouts   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(R"R(R2R3trefreshFamilyIDRRR4((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.pyRF»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-R9(R"RR3RR2R((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(RMtsetTime((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt SetRenameTimeÖscCs(tjƒj|tjƒ}|jtƒS(N(RtGetFamilyActionMgrtGetFamilyActionRR<t 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
tSetLVRHtGetDefaultFamilyEmblemIDListtrandomtchoicetLogt SetEmblemIDt SetEmblemWordtDoPlayerJionFamilyRDREtSortt WorldNotifytGetNameR tOnZhenbaogeReset(Rt
clientPackR(R"t    inputNametemblemIDt
emblemWordR2tplayerFamilyIDR3t    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 GetCharTrimtGetFamilyFullNameRjR*t    DirtyListtIsWordForbiddenRaRbtlentDef_CreatFamily_MaxStrRRtFindFamilyByName(R"Rxt
familyNameR}R3((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRcs $ 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…( RRgRdReRjtGetFuncEvalCfgtGetDictValueByRangeKeytevalttupleRŒRaRb( R"RR€t maxServerIDtspecServerDicttnameFormatInfot
nameFormattpNamet    paramListtfullNametmaxLen((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR‰9s(
##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    AddMembertSetFmLVR9tRefreshMemberByIDtSetFightPowerTotaltGetFightPowerTotalRDREt SetLeaderIDR8R:RtFamilyChangeType_MemJoinRaRbRuRR‡tGetTicktAddFamilyActionNotet GetPlayerNameRtDef_ActionType_FamilyEventt"Def_FamilyActionEvent_MemberChangetDef_FamilyMemberChange_Join(
RR2t
jionPlayertjionFamilySetLvtbroadcastFamilyChangeRR3R|RR(((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRrSs8      "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_ActionTypeListRRjR%RRRRSt    AddActiontSetNamet SetUserDatat    enumeratetgetattrRU( tcurNameRt
actionTypetactionDataListR(t isClearNonetuseDatat familyActiont
actionDatatnumtvaluetsetFunc((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR¨…s    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,tGetLVRuR-RCR+t GetFamilyLVRatGetFamilyMemberLVt SetFamilyIDt GetFamilyNamet SetFamilyNametNotify_FamilyNameRefreshtSetFamilyMemberLVR%RUt SetFamilyLVtNomalDictSetPropertytChConfigtDef_Player_Dict_FamilyLVt__OnLeaveFamilyt IPY_GameWorldREt__OnEnterFamilytView_FamilyInfoRefresh(R"RGt isVoluntarilyR(R2t refreshFmLVtrefreshFamilyLVtrefreshFamilyNameR3R|Rt lastFamilyIDt lastFamilyLVtlastFmLVtisLVUP((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR8›sR                    
cCsMtjƒ}|j|jƒƒt|ƒtj|ƒtj|t    j
ƒdS(N( RRtDelPlayerReqJoinFamilyIDAllR*R$R tOnPlayerEnterFamilyt
PlayerTaskt UpdTaskValueRÊtTaskType_ReqOrJoinFamily(R"R(R3((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|ƒtj||ƒ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ÈRatSetLeaveFamilyTimeExR/R0tGetLeaveFamilyInfoRtDebugLogRdReR’RŒtSetLeaveFamilyInfotGetMoneyRfR tOnPlayerLeaveFamilytFBLogict OnLeaveFamily( R"RÐR(tleaveCntt    kickedCntt_t delMoneyTypet delMoneyPertdelMoneyPerListtnowMoneytdelMoney((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRÌäs:     )
)
  cCsKtjddiƒ}t|ƒ|kr+tS|t|ƒ}|jƒ|kS(Nt FamilyPoweri(RdR’tstrR%RC(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@(R"tinfoPackR((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR: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,tChPyNetSendPackttagMCRoleFamilyInfotFamilyIDRut
FamilyNameRÀtFamilyLVtGetExpt FamilyLVExpt GetJoinReviewt
JoinReviewt GetJoinLVMint    JoinLVMint GetServerIDtServerIDt GetEmblemIDR_t GetEmblemWordR`t GetFightPowert
FightPowertGetFightPowerExt FightPowerExt GetBroadcastt    BroadcastRŒt BroadcastLent GetLeaderIDtLeaderIDt
MemberListRRR    ttagMCRoleFamilyMemberR*tPlayerIDt GetJoinTimetJoinTimeR©R^tNameLentLVtGetJobtJobt
GetRealmLVtRealmLVtGetFacetFacet
GetFacePictFacePict
GetTitleIDtTitleIDRCtFmLVtGetContribTotalt ContribTotalt GetContribDayt
ContribDaytGetDonateCntTotaltDonateCntTotaltGetDonateCntDayt DonateCntDayt
GetOffTimetOffTimetappendt MemberCount(RR3R|RwRRtmemInfo((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)Rw((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRKs     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,RR\RRR    R*tFindPlayerByIDRiR=R?R@( RRwRõR)R3R|t playerManagerRRR2R"((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR3Ss&   c Cs³tjƒ}|j|ƒ}|s%dStjƒ}x{t|jƒƒD]g}|j|ƒ}|jƒ}    |r}|    |kr}qDn|j    |    ƒ}
|
s˜qDnt
j |
||ƒqDWdS(N( RRR,RR\RRR    R*R5RaRb( RtcodeR›R)R3R|R6RRR2R"((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytNotifyAllFamilyMemberMsgns   cCsŒtjƒj|ƒ}|j}tjƒj|ƒ}|sNtjd|ƒdS|jƒ}|dkr{tjd|ƒdSt||ƒdS(Ns¶Ô·½²»ÔÚÏß! tagPlayerID=%sis¶Ô·½Ã»ÓмÒ×å! tagPlayerID=%s(RR\R]t TagPlayerIDR5RåR+tRequestJoinTagFamily(Rt
clientDataR(R"t tagPlayerIDt    tagPlayert tagFamilyID((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnRequestJoinFamilyByPlayerˆs       cCsŒtjƒj|ƒ}|j}|j}|dkrltj|tjdƒ|s\t    |ƒqˆt
||ƒn|dkrˆt ||ƒndS(Nii( RR\R]t TagFamilyIDR2RÚt AddTaskValueRÊRÜtAutoJoinFamilyR:tCancelJoinTagFamily(RR;R(R"R>t 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( RatGetLeaveFamilyTimeExR%RäRdR’RŒR/R0RRåtChangeTimeNumToStrRU(    R"tleaveFamilyTimeRëRìtlastVoluntarilyt joinCDMinutetjoinCDMinuteListtcdTimest    passTimes((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt CheckInJoinCD²s0 0 -
     &c    Cs8|jƒrdS|jƒ}|jƒ}tjd||ƒt|ƒrLdStjƒ}t|j    ƒƒ}t
j |ƒx|D]•}|j |ƒ}|sŸq~n|j ƒ}|rÃ||krÃq~n|jƒrÕq~nt|jƒdƒ}|j    ƒ|krq~nt|||ƒdSWtjdƒtj|dƒdS(Ns!Íæ¼ÒÒ»¼ü×Ô¶¯¼ÓÈë¼Ò×壡 realmLV=%sRsûÓпÉ×Ô¶¯½øÈëµÄÏÉÃË!tQuickEnterFamilyFail(R+R*tGetOfficialRankRRåRNRRRRRmtshuffleR    RRtGetFamilySettingRÀRrRaRb(    R"R2trealmLVR3t    indexListRRtlvMinR((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRBÏs6          cCsS|s
dStjd|ƒ}|s&dSd|}t||ƒsCdSt||ƒƒS(NitFamilysGet%s(RdtGetIpyGameDatathasattrRµ(tfamilyLVt    fieldNametipyDatatattrName((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRRõ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(RNR*R+RRåRRtGetPlayerReqJoinFamilyIDListRdReRŒR,RRPRtGetReqJoinPlayerInfoRaRbtAddReqJoinPlayerIDR3RAR>R$RRRÀRRr( R"RR2R3treqFamilyIDListtmaxReqFamilyCntt    tagFamilyRUtreqPlayerIDDicttmaxReqPlayerCntt    memberMax((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR:sR             
 cCsqtjƒ}|jƒ}|j|ƒ}|r=|j|ƒn|j||ƒt|t|ƒtƒt    |ƒdS(N(
RRR*R,tDelReqJoinPlayerIDtDelPlayerReqJoinFamilyIDR3RAR>R$(R"RR3R2Re((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRC9s  
cCs~|jƒ}tjƒ}|j|ƒ}| r9| r9dStjƒ}|jƒ||_t|jƒ|_    t
j ||ƒdS(N( R*RRR`Rút tagMCNotifyRequestJoinFamilyInfotCleartRequestJoinFamilyIDListRŒt RequestCountR?R@(R"tisForceR2R3RcRw((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR$Es   
    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,RaRR\RúttagMCFamilyReqJoinInfot ReqJoinListtitemsR5ttagMCFamilyReqJoinPlayerRtReqTimeRUtIsOnLinetPlayerViewCachet FindViewCacheR©R^RŒRRÀRRRRRRRRR R!R"R    R
R R RRR.tReqCnt( RR3R|RfR6RwR2treqTimeR"treqInfot    viewCache((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRATsB                  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_592934R]iRtjiazu_lhs_202580s$ÀëÏßÍæ¼ÒÎÞ·¨¼ÓÈëÏÉÃË! tagPlayerID=%stjiazu_hwj35_367906sÒѾ­ÊDZ¾Ã˳ÉÔ±! tagPlayerID=%stXW_JZ_InviteErr_Repeats/ÒѾ­¼ÓÈëÆäËûÏÉÃË! tagPlayerID=%s,tagFamilyID=%sR¯R)(#RR\R]R9tIsOKR*R+RRR,R-R=R>RaRbRåRatkeysRiR5R$RuR3RARdReRRRÀRR7RrR%R.RR¦(RR;R(R"R<tisOKR2RR3RR4RfttagPlayerIDListR6R=tofflinePlayerCanJoinRtjoinOKPlayerIDListR>((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnJoinFamilyReplysˆ                    
      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)(RR\R]RRR*R+RRR,R-R=R>Råt SetJoinReviewt SetJoinLVMinR:RtFamilyChangeType_JoinSet( RR;R(R"t
joinReviewt    joinLVMinR2RR3RR4((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)(RR\R]tMsgR*R+RRR,R-R=tFamilyPowerID_BroadcastRåt SetBroadcastt    CodeToGbkRuR:RtFamilyChangeType_Broadcast(
RR;R(R"t    broadcastR2RR3RR4((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnChangeFamilyBroadcastýs*         2
cCs>tjƒj|ƒ}|j}|j}tj|||ƒdS(N(RR\R]R_R`RHtOnChangeFamilyEmblem(RR;R(R"tchangeEmblemIDRz((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR•s
        cCs/tjƒj|ƒ}t||j|jƒdS(N(RR\R]tOnChangeFamilyMemberLVRR#(RR;R(R"((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnChangeFamilyMemLV,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}
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-RDRERRåR=tFamilyPowerID_ChangeFmlvRiRCtFamilyChangeType_LeaderChangetChangeFamilyLeaderRRR    RRRÀtDef_FmlSetAttrNametgetRaRbtFamilyChangeType_MemFmlvChangetChangeFamilyMemberLvRR:RRU(R"ttagIDt
changeFmlvtisGMOPR2RR3RR4t    tagMemberR4t
fmLVMemCntRt familyMembertmaxCnt((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR—1sn      
!  
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 RDt    fmlMemberR¥RERRo(Rt newLeaderMemRt befLeaderIDt newLeaderIDt befLeaderMem((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRœys     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©RCR¡RR\R5R8R:R=R>R?R@RAR‡R§R¨RRªR«tDef_FamilyMemberChange_FMLVR8(R¤tchangeFamilyLVRR¡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|td    ||gƒtjd|g|jƒgƒdS(
Ng ¬@tFamilyLeaderAutoChangeis\ÃËÖ÷ÀëÏß䳬¹ýÏÞÖÆÐ¡Ê±£¬²»´¦Àí×Ô¶¯´«Î»£¡familyID=%s,leaderID=%s,offTime=%s,passHours=%s < %sitreverseiÿÿÿÿsL¹«»á×Ô¶¯´«Î»: familyID=%s,leaderID=%s,offTime=%s,passHours=%s,newLeaderID=%sR)(RR-R,R
R/R0RdReRt
DebugLogExRGRRR    RCRDRER$R.RitsortRUR*RoRœRR›t
PlayerMailt SendMailByKeyRu(R|tleaderIDt    leaderMemtoffTimeRtcurTimetpassTimet    passHourst    needHourst priorityHourst priorityListtcommListRRt
memOffTimetsortTimet memPassTimet memPassHourstfmLVt contribTotalttoMemberR«((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR¦sj   
 
      
           cCs#tjƒj|ƒ}t|ƒdS(N(RR\R]R:(RR;R(R"((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnGetFamilyInfoòs
c
Csutjƒ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|||ƒt|ddƒ|j
ƒdkrd|j|ƒdSt|tƒdS(Niis%×峤ÔÚ³ÉÔ±ÈËÊý´óÓÚ1ʱ²»ÄÜÖ±½ÓÍ˳ö¼Ò×åsÀ뿪¼Ò×å! familyID=%stXW_JZ_LeaveFamily(RR\R]R*R+RRR,R-RCRRDRERåt DeleteMemberR¨RuRRªR«tDef_FamilyMemberChange_LeaveR8t__DoPlayerLeaveFamilyByIDR8t    DelFamilyRtFamilyChangeType_MemLeave(
RR;R(R"R2RR3RR4RY((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRêýs8     !       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|ƒ}t|||ƒ|rªt|dƒnt|tƒdS(Nis ûÓÐÌßÈËȨÏÞ!sCÖ»ÄÜÌß±È×Ô¼ºÖ°Î»µÍµÄ³ÉÔ±! tagMemberID=%s,tagFmlv(%s) >= curFmlv(%s)RÊ(RR\R]tMemberIDR*R+RRR,R-R=tFamilyPowerID_KickRåRCR©RËR¨RRªR«tDef_FamilyMemberChange_KickOutR8R5RÍR8RRÏ(RR;R(R"t tagMemberIDR2RR3RR4R¤tcurFmlvttagFmlvt tagPlayerNameR<R=((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnDeleteFamilyMember2sL                 cCstj|||ƒdS(N(R tOnFamilyMemberLeave(R|t leavePlayerIDR=((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRÍjscCsOtjƒ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(&RR\R]tNewNameR*R+RRR,R-RCRDRERåRdReR/R0RWRNRGRcR’RaRfR²RøRRR    R5R:RÅRQR;RiRR<(RR;R(R"tnewNameR2RR3RR4tcdHourst    cdSecondsR»RMtlastRenameTimeRRt
moneyValueRùR6RtmemIDtplayer((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytUpdateFamilyNamexs\        
   %      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‘(6RR\R]RŽt    PageIndextmint    ShowCountRRRt GetIntUpperRúttagMCFamilyViewListRŒtMsgLent    TotalPaget
FamilyListRR    RuRôR
ttagMCFamilyViewtRankRüRýt FamilyNameLenRRR-R©t
LeaderNamet LeaderNameLenRÀRþRRRRRRRR_RR`R    R
R R R/R.t FamilyCountR?R@(RR;R(R"tmsgt    pageIndext    showCountR3t familyCountt    totalPaget
startIndextendIndexRwRt
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||ddt igƒdS(Nit FamilyDonates6½ñÈÕ¾èÏ×´ÎÊýÒÑ´ïÉÏÏÞ! donateType=%s,donateCnt=%s >= %stFamilyMoneyDonateisM¼Ò×å¾èÏ×: donateType=%s,donateCnt=%s,%s,memDonateCntDay=%s,memDonateCntDay=%stevent(!RR\R]t
DonateTypeR*R+RRR,R-RdRWt GetDailyCnttNomalDictGetPropertyRÊtDef_Player_Dict_FamilyDonateCntRåt GetMoneyTypet GetMoneyValueRaRftGetAwardItemListRÉR&R*RåR(tDef_UpperLimit_DWordRtSetDonateCntTotalt ItemControlertGivePlayerItemOrMailR%(RR;R(R"t
donateTypeR2RR3R|R4R[t dailyCntMaxt    donateCntRRàt awardItemListtmemDonateCntDaytmemDonateCntTotal((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnFamilyMoneyDonatesN             
 
      cCs t}tjƒ}xtt|jƒƒD]`}|j|ƒ}|jƒ}|jtj    |ƒ}|r%t
j |tj    |dƒt }q%q%W|rœt |ƒndS(Ni(R%RdtIPY_DataRtGetFamilyDonateCounttGetFamilyDonateByIndext GetDonateTypeRRÊRRaRÉRUR&(R"tisResett
ipyDataMgrRR[R
R ((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR 4s    cCs²g}tjƒ}xXt|jƒƒD]D}|j|ƒ}|jƒ}|jtj|ƒ}|j    |ƒq%W|swdSt
j ƒ}||_ t |j ƒ|_tj||ƒdS(N(RdRRRRRRRÊRR.RúttagSCDonateCntInfot DonateCntListRŒtCountR?R@(R"t donateCntListRRR[R
R Rw((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR&Bs       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=%sRVis+    ÏÉÃËÉý¼¶: updLV=%s,updExp=%s,lvUPExp=%sR)(R*R+RRR,RÀRÿRRåRdRWt
GetNeedExptGetIpyGameDataNotLogRktSetExpR:RtFamilyChangeType_FamilyLVExpRU( R"taddExpR2RR3R|tcurLVtcurExptupdLVtupdExpR[tlvUPExp((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt AddFamilyExpRs8      
  
 
 !  
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-R&RåR$RÊRRtSetContribTotalRRåR:RtFamilyChangeType_MemContrib(    R"taddContribValueR2RR3R|R4t
contribDayRÇ((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytAddFamilyContribus&       
cCsZtjƒj|ƒ}|sdS|j}|j}|sF|jƒ}nt|||ƒdS(N(RR\R]t
ActionTypeRüR+R;(Rt
cliendDataR(R"R·R((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnQueryFamilyAction˜s        cCsy|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$||ƒdS(N(%RRRRSRúttagMCFamilyActionInfoRüR+tFamilyActionListRRtAtttagMCFamilyActiontGetTimetTimeRuR^RŒRRLtValue1t    GetValue2tValue2t    GetValue3tValue3t    GetValue4tValue4t    GetValue5tValue5t    GetValue6tValue6t GetUserDatatUseDatat
UseDataLenR.R?R@R3(R"RR·R»RwRtfamilyActionDataR¼((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR;¦s8               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úR.RüR+R/R1R2R3RuR^RŒRRLR4R5R6R7R8R9R:R;R<R=R>R?R@RAR.RR?R@R3(R¸R"RBRR·RwR¼((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytSendFamilyActionËs> 
                  i(lRéRÊRRRaR?RvRúRHR R RDRdRÍRRR¶RÚRRŠRmR0RRtFamilyChangeTypestFamilyChangeType_NoneR¦RÏRŠR’tFamilyChangeType_EChangeR›RŸRBR1RR'RR>RšRRÑR¨t fmlCounsellort fmlViceLeaderRRRR!R'R5R6R#RFRJRKRNRQRWRƒRcR‰RURrR¨R8RÎRÌR=RiR:RøRR3R8R?RERNRBRRR:RCR$RAR‡RR”R•R˜R%R—RœR RRÉRêR×RÍRãRûRR R&R%R*R-R;RE(((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt<module>s®                      7
 
                  
            $                            6        2 @            %    
    0                &         8         -    [    !              H            L         5    8     D    K    -            #    #        %