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
±)ûhc @s³ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZdZedƒZ\ ZZZZZZZZZ Z!Z"Z#Z$eddDƒ\Z%Z&Z'Z(ide j)6de j*6de j+6Z,d    „Z-d
„Z.d „Z/d „Z0d „Z1d„Z2d„Z3d„Z4d„Z5d„Z6d„Z7d„Z8d„Z9d„Z:d„Z;e j)e<d„Z=e<dd„Z>dd„Z?d„Z@d„ZAd„ZBdd „ZDd!„ZEeddd"„ZFddd#„ZGgdd$„ZHd%„ZId&„ZJd'„ZKd(„ZLd)„ZMd*„ZNd+„ZOe<d,„ZPd-„ZQd.„ZRd/„ZSd0„ZTd1„ZUd2„ZVeWd3„ZXd4„ZYd5„ZZd6„Z[d7„Z\d8„Z]dd9„Z^d:„Z_d;„Z`d<„Zad=„Zbd>„Zcd?„Zdd@„ZedA„ZfdB„ZgddC„ZhdS(Eiÿÿÿÿ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 FamilyOnDayLs      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.pyRbs 
  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%js  
  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.pytOnPlayerLogoutts   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&R0R1trefreshFamilyIDRRR2((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.pyRD®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+R7(R RR1RR0R((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(RKtsetTime((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
tSetLVRFtGetDefaultFamilyEmblemIDListtrandomtchoicetLogt SetEmblemIDt SetEmblemWordtDoPlayerJionFamilyRBRCtSortt WorldNotifytGetNameR tOnZhenbaogeReset(Rt
clientPackR&R t    inputNametemblemIDt
emblemWordR0tplayerFamilyIDR1t    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 GetCharTrimtGetFamilyFullNameRhR(t    DirtyListtIsWordForbiddenR_R`tlentDef_CreatFamily_MaxStrRRtFindFamilyByName(R Rvt
familyNameR{R1((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRas $ 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ƒ( RReRbRcRhtGetFuncEvalCfgtGetDictValueByRangeKeytevalttupleRŠR_R`( R R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    AddMembertSetFmLVR7tRefreshMemberByIDtSetFightPowerTotaltGetFightPowerTotalRBRCt SetLeaderIDR6R8RtFamilyChangeType_MemJoinR_R`RsRR…tGetTicktAddFamilyActionNotet GetPlayerNameRtDef_ActionType_FamilyEventt"Def_FamilyActionEvent_MemberChangetDef_FamilyMemberChange_Join(
RR0t
jionPlayertjionFamilySetLvtbroadcastFamilyChangeRR1RzRR&((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRpFs8      "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_ActionTypeListRRhR#RRPRQt    AddActiontSetNamet SetUserDatat    enumeratetgetattrRS( tcurNameRt
actionTypetactionDataListR&t isClearNonetuseDatat familyActiont
actionDatatnumtvaluetsetFunc((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR¦xs    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*tGetLVRsR+RAR)t GetFamilyLVR_tGetFamilyMemberLVt SetFamilyIDt GetFamilyNamet SetFamilyNametNotify_FamilyNameRefreshtSetFamilyMemberLVR#RSt SetFamilyLVtNomalDictSetPropertytChConfigtDef_Player_Dict_FamilyLVt__OnLeaveFamilyt IPY_GameWorldRCt__OnEnterFamilytView_FamilyInfoRefresh(R REt isVoluntarilyR&R0t refreshFmLVtrefreshFamilyLVtrefreshFamilyNameR1RzRt lastFamilyIDt lastFamilyLVtlastFmLVtisLVUP((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR6ŽsR                    
cCs:tjƒ}|j|jƒƒt|ƒtj|ƒdS(N(RRtDelPlayerReqJoinFamilyIDAllR(R"R tOnPlayerEnterFamily(R R&R1((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ÆR_tSetLeaveFamilyTimeExR-R.tGetLeaveFamilyInfoRtDebugLogRbRcRRŠtSetLeaveFamilyInfotGetMoneyRdR 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(RbRtstrR#RA(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.pyR8s 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*tChPyNetSendPackttagMCRoleFamilyInfotFamilyIDRst
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
GetTitleIDtTitleIDRAtFmLVtGetContribTotalt ContribTotalt GetContribDayt
ContribDaytGetDonateCntTotaltDonateCntTotaltGetDonateCntDayt DonateCntDayt
GetOffTimetOffTimetappendt MemberCount(RR1RzRuRRtmemInfo((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'Ru((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR=s     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*RRZRRR    R(tFindPlayerByIDRgR;R=R>( RRuRðR'R1Rzt playerManagerRRR0R ((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR.Es&   c Cs³tjƒ}|j|ƒ}|s%dStjƒ}x{t|jƒƒD]g}|j|ƒ}|jƒ}    |r}|    |kr}qDn|j    |    ƒ}
|
s˜qDnt
j |
||ƒqDWdS(N( RRR*RRZRRR    R(R0R_R`( RtcodeR™R'R1RzR1RRR0R ((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(RRZR[t TagPlayerIDR0RàR)tRequestJoinTagFamily(Rt
clientDataR&R t tagPlayerIDt    tagPlayert tagFamilyID((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnRequestJoinFamilyByPlayerzs       cCsvtjƒj|ƒ}|j}|j}|dkrV|sFt|ƒqrt||ƒn|dkrrt||ƒndS(Nii(RRZR[t TagFamilyIDR-tAutoJoinFamilyR5tCancelJoinTagFamily(RR6R&R R9t 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ßRbRRŠR-R.RRàtChangeTimeNumToStrRS(    R tleaveFamilyTimeRæ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àRHRRRRRktshuffleR    R
RþRütGetFamilySettingR¾RpR_R`(
R R0trealmLVR1t    indexListRRRtlvMinR((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR<Às>           cCsS|s
dStjd|ƒ}|s&dSd|}t||ƒsCdSt||ƒƒS(NitFamilysGet%s(RbtGetIpyGameDatathasattrR³(tfamilyLVt    fieldNametipyDatatattrName((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRLæ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(RHR(R)RRàRRtGetPlayerReqJoinFamilyIDListRbRcRŠR*RþRJRütGetReqJoinPlayerInfoR_R`tAddReqJoinPlayerIDR.R?R<R"RLR¾RRp( R RR0R1treqFamilyIDListtmaxReqFamilyCntt    tagFamilyROtreqPlayerIDDicttmaxReqPlayerCntt    memberMax((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR5òsR             
 cCsqtjƒ}|jƒ}|j|ƒ}|r=|j|ƒn|j||ƒt|t|ƒtƒt    |ƒdS(N(
RRR(R*tDelReqJoinPlayerIDtDelPlayerReqJoinFamilyIDR.R?R<R"(R RR1R0R_((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(RRRZRõt tagMCNotifyRequestJoinFamilyInfotCleartRequestJoinFamilyIDListRŠt RequestCountR=R>(R tisForceR0R1R]Ru((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR"6s   
    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*R[RRZRõttagMCFamilyReqJoinInfot ReqJoinListtitemsR0ttagMCFamilyReqJoinPlayerRtReqTimeRStIsOnLinetPlayerViewCachet FindViewCacheR§R\RŠRR¾RRRRRRRRRRRRRRRRRR)tReqCnt( RR1RzR`R1RuR0treqTimeR treqInfot    viewCache((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR?EsB                  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_592934RWiRtjiazu_lhs_202580s$ÀëÏßÍæ¼ÒÎÞ·¨¼ÓÈëÏÉÃË! tagPlayerID=%stjiazu_hwj35_367906sÒѾ­ÊDZ¾Ã˳ÉÔ±! tagPlayerID=%stXW_JZ_InviteErr_Repeats/ÒѾ­¼ÓÈëÆäËûÏÉÃË! tagPlayerID=%s,tagFamilyID=%sR­R'(#RRZR[R4tIsOKR(R)RRR*R+R;R<R_R`RàR[tkeysRcR0R"RsR.R?RbRcRLR¾RR5RpR#R)RR¤(RR6R&R R7tisOKR0RR1RR2R`ttagPlayerIDListR1R8tofflinePlayerCanJoinRtjoinOKPlayerIDListR9((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnJoinFamilyReplyrsˆ                    
      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'(RRZR[RýRÿR(R)RRR*R+R;R<Ràt SetJoinReviewt SetJoinLVMinR8RtFamilyChangeType_JoinSet( RR6R&R t
joinReviewt    joinLVMinR0RR1RR2((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'(RRZR[tMsgR(R)RRR*R+R;tFamilyPowerID_BroadcastRàt SetBroadcastt    CodeToGbkRsR8RtFamilyChangeType_Broadcast(
RR6R&R t    broadcastR0RR1RR2((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnChangeFamilyBroadcastîs*         2
cCs>tjƒj|ƒ}|j}|j}tj|||ƒdS(N(RRZR[R]R^RFtOnChangeFamilyEmblem(RR6R&R tchangeEmblemIDRx((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRs
        cCs/tjƒj|ƒ}t||j|jƒdS(N(RRZR[tOnChangeFamilyMemberLVRR(RR6R&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+RBRCRRàR;tFamilyPowerID_ChangeFmlvRgRAtFamilyChangeType_LeaderChangetChangeFamilyLeaderRRR    RLR¾tDef_FmlSetAttrNametgetR_R`tFamilyChangeType_MemFmlvChangetChangeFamilyMemberLvRŠR8RRS(R ttagIDt
changeFmlvtisGMOPR0RR1RR2t    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
R R(R+RšRBt    fmlMemberR£RCRRm(Rt newLeaderMemRt befLeaderIDt newLeaderIDt befLeaderMem((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR–js     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§RARŸRRZR0R6R8R;R<R=R>R?R…R¥R¦RR¨R©tDef_FamilyMemberChange_FMLVR3(RžtchangeFamilyLVRR›tmemNamet befFamilyLVR8R&((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyRš}s       
cCs#tjƒj|ƒ}t|ƒdS(N(RRZR[R8(RR6R&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(RRZR[R(R)RRR*R+RARRBRCRàt DeleteMemberR¦RsRR¨R©tDef_FamilyMemberChange_LeaveR3t__DoPlayerLeaveFamilyByIDR6t    DelFamilyRtFamilyChangeType_MemLeave(
RR6R&R R0RR1RR2RS((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­(RRZR[tMemberIDR(R)RRR*R+R;tFamilyPowerID_KickRàRAR§R®R¦RR¨R©tDef_FamilyMemberChange_KickOutR3R0R°R6RR²(RR6R&R t tagMemberIDR0RR1RR2RžtcurFmlvttagFmlvt tagPlayerNameR7R8((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnDeleteFamilyMemberÝsL                 cCstj|||ƒdS(N(R tOnFamilyMemberLeave(Rzt leavePlayerIDR8((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR°scCsOtjƒ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(&RRZR[tNewNameR(R)RRR*R+RARBRCRàRbRcR-R.RURLRARaRR_RdR°RóRRR    R0R8RÃROR9RgRR:(RR6R&R tnewNameR0RR1RR2tcdHourst    cdSecondstcurTimeRKtlastRenameTimeRR}t
moneyValueRôR1RtmemIDtplayer((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytUpdateFamilyName#s\        
   %      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(6RRZR[Rˆt    PageIndextmint    ShowCountRRRt GetIntUpperRõttagMCFamilyViewListRŠtMsgLent    TotalPaget
FamilyListRR    RsRïR
ttagMCFamilyViewtRankR÷Røt FamilyNameLenR R R+R§t
LeaderNamet LeaderNameLenR¾RùRüRýRþRÿRRRR]RR^RRRRR*R)t FamilyCountR=R>(RR6R&R tmsgt    pageIndext    showCountR1t familyCountt    totalPaget
startIndextendIndexRuRt
familyViewt leaderMember((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnViewFamilyPagegst          
 
                      *  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(!RRZR[t
DonateTypeR(R)RRR*R+RbRQt GetDailyCnttNomalDictGetPropertyRÈtDef_Player_Dict_FamilyDonateCntRàt GetMoneyTypet GetMoneyValueR_RdtGetAwardItemListRÇR$R%RÉR#tDef_UpperLimit_DWordRtSetDonateCntTotalt ItemControlertGivePlayerItemOrMailR#(RR6R&R t
donateTypeR0RR1RzR2RUt 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#RbtIPY_DataRtGetFamilyDonateCounttGetFamilyDonateByIndext GetDonateTypeRåRÈRæR_RÇRSR$(R tisResett
ipyDataMgrRRURî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(RbRõRRöR÷RøRåRÈRæR)tObjPoolt
GetPoolMgrtacquireRõttagSCDonateCntInfot DonateCntListRŠtCountR=R>(R t donateCntListRúRRURîRðRu((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=%sRPis+    ÏÉÃËÉý¼¶: updLV=%s,updExp=%s,lvUPExp=%sR'(R(R)RRR*R¾RúRRàRbRQt
GetNeedExptGetIpyGameDataNotLogRitSetExpR8RtFamilyChangeType_FamilyLVExpRS( R taddExpR0RR1RztcurLVtcurExptupdLVtupdExpRUtlvUPExp((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+R!RÉRRÈRêRtSetContribTotalRRàR8RtFamilyChangeType_MemContrib(    R taddContribValueR0RR1RzR2t
contribDayt contribTotal((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytAddFamilyContrib s&       
cCsZtjƒj|ƒ}|sdS|j}|j}|sF|jƒ}nt|||ƒdS(N(RRZR[t
ActionTypeR÷R)R9(Rt
cliendDataR&R RµR((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytOnQueryFamilyActionCs        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(%RRPRQRõttagMCFamilyActionInfoR÷RtFamilyActionListRRtAtttagMCFamilyActiontGetTimetTimeRsR\RŠRRJtValue1t    GetValue2tValue2t    GetValue3tValue3t    GetValue4tValue4t    GetValue5tValue5t    GetValue6tValue6t GetUserDatatUseDatat
UseDataLenR)R=R>R.(R RRµR¹RuRtfamilyActionDataRº((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyR9Qs8               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÷RRRRRRsR\RŠRRJRRRRR R!R"R#R$R%R&R'R(R)R)RR=R>R.(R¶R R*RRµRuRº((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pytSendFamilyActionvs> 
                  i(iRäRÈRRR_R=RpRõRFR R RBRbRËRìRRRˆRûRkR.R‹RtFamilyChangeTypestFamilyChangeType_NoneR¤R²R„RŒtFamilyChangeType_EChangeR•R™R@R/RRRR<R”R‰R´R¢t fmlCounsellort fmlViceLeaderR—RRR%R3R4R!RDRHRIRLRORURRaR‡RSRpR¦R6RÌRÊR;RgR8RóRR.R3R:R?RHR<RLR5R=R"R?RR‡RŽRR’R#R‘R–RšR¬RåRºR°RÇRßRôRR$R RRR9R-(((skD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Player\PlayerFamily.pyt<module>s¨                     7
 
             
            $                            6        2 @        %    
    0                &         8         -    [    !              H                  5    8     D    K    -            #    #        %