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
fâfc@slddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd    „Zd
„Zd „Zd „Zd „Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z!d„Z"dS(iÿÿÿÿNcCsˆtjƒ}|j|ƒ}|j}ttjƒ}|jƒ|krYtj    |dƒdSt
|t |j ƒƒs‚tj dƒdSd}d}|jdkr¯|j|ƒ}n2|j|jƒ}|dkrátj    |dƒdS|stj|ƒ}    |    stj    |dƒdS|    j}n |jƒ}||krHtj    |dƒdS|j ƒ}
|
|krqtj dƒdStjƒj|
||ƒrtj dƒdSt|
ƒ} | j|ƒ} | dkrØtj    |dƒdSt||ƒtj||tjƒ|rttj ƒ} |
| _!|j"ƒ| _#|jƒ| _|j$ƒ| _%|j&ƒ| _'|j(ƒ| _)t*j+|| ƒntj    |d    ƒdS(
NtLvErrs ºÃÓÑÒѾ­ÂúÁËitFriend_OffLinetFriend_OtherLessLvs²»ÔÊÐíÌí¼Ó×Ô¼ºs
ºÚÃûµ¥¼ì²étFriend_YetFriendtFriend_ApplyFriend(,t    GameWorldtGetPlayerManagertGetPlayerByIndextTagIDtGetFuncLimitLVt ShareDefinetGameFuncID_FriendtGetLVt PlayerControlt
NotifyCodetCheckFriendCounttTruetGetIDtDebugLogtNonetFindPlayerByIDtFindPlayerByNametTagNametPlayerViewCachet FindViewCachetLVt PyDataManagertGetBlacklistManagertCheckBlacklistBothtGetFriendStructtFindt__CheckAddFriendt PlayerRequestt PYAddRequesttIPY_GameServert    reqFriendtChPyNetSendPackttagGCFriendAskIfJointAskIDtGetNametNametGetOfficialRanktRealmLVtGetFacetFacet
GetFacePictFacePict NetPackCommont SendFakePack(tindext
clientDatattickt playerManagert    curPlayertcurTagPlayerIDtlimitLVt    tagPlayerttagLVtcurCachet curPlayerIDtcurPlayerFriendStructt    tagFriendt askFriendPack((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFriend.pyt    AddFriend1sj                      cCs8tjƒj|ƒ}|dkr%|Stjƒj|ƒS(N(RtGetFriendManagert
GetFriendsRt
AddFriends(tplayerIDt
curFriends((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFriend.pyRs cCs2tjƒj|ƒ}|stS|j|ƒdkS(N(RR@RAtFalseRR(RCt tagPlayerIDRD((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFriend.pytIsFriend˜scCsÍ|jƒ}t|ƒ}|j|ƒ}t|ƒ}|j|ƒ}|dkr^|dkr^dS|dkrz|dkrzdStjd||fƒ|dkr­|j|ƒn|dkrÉ|j|ƒndS(Ns-AddFriend, (%s, %s)ºÃÓÑÒì³£, É¾³ýË«·½ºÃÓѹØÏµ(RRRRRtErrLogt    DelFriend(R5R6R;R<tcurPlayerHasThisFriendttagPlayerFriendStructttagPlayerHasThisFriend((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFriend.pyR¥s     c Csƒtjƒj|ƒ}|jƒ}tjƒj|ƒ}|dkrVtjd|ƒdS|j    }|j
|ƒ}|dkrŽtjd|ƒdStj ƒj |ƒ}|rÒ|j |ƒ|krÒtj|dƒdStjƒj||ƒtj|dƒtjƒj|ƒ}    |    dkr8tj|    d|jƒgƒntj||tƒtjddƒ}
|
rtjƒj|||
ƒndS(Ns#DeleteFriend -> ·â°üÒì³£ ->ûÓкÃÓÑs'DeleteFriend -> ·â°üÒì³£ ->ûÓÐÕâ¸öÍæ¼ÒtDelFriendCoupleLimittFriend_DeleteFriendtFriend_DeleteFriend2tIntimacyReducei(RRRt GetPlayerIDRR@RARtLogtFriendIDRtGetDBPyCoupleManagert    GetCouplet GetCoupleIDR Rt DelFriendBothRR't
PlayerTeamtOnTeamMemFriendChangeREt IpyGameDataPYt
GetFuncCfgtGetIntimacyManagertDelIntimacyBothPer( R1R2R3R5RCRDtfriendIDt    curFriendtcoupleR8tdecIntimacyPer((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFriend.pyt DeleteFriendÌs2        cCsatjƒj|ƒ}|dkr%tS|jƒtjdƒkr]|rYtj    |dƒnt
StS(Nt FriendMaxCnttFriend_FullList( RR@RARRtGetCountRZR[R RRE(R5tisNotifyRCRD((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFriend.pyRøs c CsRtjƒ}|j|ƒ}|j}|j|ƒ}|dkr[tj|ƒ}|s[dSn|jƒ}||kr‡tj    d|ƒdSt
j ||t j ƒs³tj    d|ƒdS|jså|rátj|d|jƒgƒndStjƒj|||ƒrdSt|t|jƒƒs-tjdƒdStdt|ƒsStj|dƒdStjƒj|ƒ}    |    dkrŒtjƒj|ƒ}    n|    j|ƒ}
|
dkr»tj    d|ƒdStjƒj||ƒ|rtj|d|jƒgƒtj|d|jƒgƒn)tj|ƒ} tj|d| dgƒt j!||tƒdS(    Ns1JoinFriendAnswer -> ·â°üÒì³£ ->²»ÄܼÓÈë×Ô¼ºÎªºÃÓÑs/JoinFriendAnswer -> ·â°üÒì³£ ->Íæ¼ÒûÓÐÕâ¸öÇëÇótFriend_RejectFriends#×Ô¼ºµÄºÃÓÑÂúÔ±tFriend_OtherFullLists=JoinFriendAnswer -> ·â°üÒì³£ ->Õâ¸öºÃÓÑÒѾ­ÔÚ×Ô¼ºµÄºÃÓÑÁбíÖÐtFriend_MakeFriendR(("RRRRRRRRRQRRR tPYCheckRequestR"R#tAnswerR RR'RRRRRRRRER@RARBRt AddFriendBothtGetCachePropDataDictRXRY( R1R2R3R4R5t srcPlayerIDt    srcPlayerR:RCRDR=t    cacheDict((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFriend.pytJoinFriendAnswersT               cCs»tjƒj|ƒ}tjƒ}|jƒ}|jƒ}tjƒj    |ƒ}|rg|j
|ƒrgdStj ƒj |ƒ}|r¡|j ƒtjdƒkr¡dStj ƒj||ƒdS(Nt EnemiesMaxCnt(RRRR"t IPY_GAddEnemyt
GetEnemyIDRQRR@RARtGetEnemyManagert
GetEnemiesReRZR[tAddEnemy(R1R3R5tpackttagIDRCtfriendstenemies((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFriend.pytMapServer_AddEnemyls   !c Cs“tjƒj|ƒ}|j}tjƒj|jƒƒ}|rn|j|jƒƒ|krnt    j
|dƒdStjƒj |ƒ}|s¾t j |ƒ}|s¢dSt j|ƒ}|d}    n |jƒ}    tjƒj|jƒƒ}
|
dkr#|
jƒtjdƒkr#t    j
|dƒtSntjƒj|jƒ|ƒt    j
|d|    gƒtjddƒ} | rtjƒj|jƒ|| ƒndS(NtAddBlackCoupleLimitR(tBlacklistMaxCntt BlacklistFullt AddBlackListRPi(RRRRRRTRURRVR RRRRRmR'Rt GetBlacklistRReRZR[REt JoinBlacklistRQR\R]( R1R2R3R5RyR`R8R:Rpt
playerNametplayersRa((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFriend.pyR€Šs2    
!   "cCsHtjƒj|ƒ}tjƒj|jƒ|jƒtj    |dƒdS(NtDelBlackSuccess(
RRRRRt DelBlacklistRQRR R(R1R2R3R5((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFriend.pyt DelBlackListÂscCsVtjƒj|jƒƒ}|dkr+dS|j|ƒ|j|ƒtj|ƒdS(N(    RR@RARRtSync_SocialsInfotMapServer_SyncFriendInfoR tSync_LoginRequest(R5R3RD((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFriend.pyt__OnPlayerLoginFriendËs    cCs<tjƒj|jƒƒ}|dkr+dS|j|ƒdS(N(RRuRvRRRˆ(R5R3R„((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFriend.pyt__OnPlayerLoginEnemyÚs
  cCs<tjƒj|jƒƒ}|dkr+dS|j|ƒdS(N(RtGetContactsManagert GetContactsRRRˆ(R5R3R„((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFriend.pyt__OnPlayerLoginContactsäs
  cCs<tjƒj|jƒƒ}|dkr+dS|j|ƒdS(N(RRRRRRˆ(R5R3R„((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFriend.pyt__OnPlayerLoginBlacklistís
  cCs<tjƒj|jƒƒ}|dkr+dS|j|ƒdS(N(RR\t GetIntimacysRRRˆ(R5R3t    intimacys((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFriend.pyt__OnPlayerLoginIntimacylistös
  cCs¤tjƒj|jƒƒ}|r3tj|j_nt||ƒt    ||ƒt
||ƒt ||ƒt ||ƒt j|ƒt j|jƒtjtjƒdS(N(RtGetPersonalSocialManagertGetSocialPlayerRtChConfigt
Def_Onlinet
playerInfot
OnlineTypeR‹RŒRRR“t PlayerSocialtSync_AllSocialsInfot
Notify_AlltDef_CDBPlayerRefresh_Online(R5R3t socialPlayer((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFriend.pyt OnPlayerLogins      cCsptj|ƒrdStjƒj|jƒƒ}|dkr>dStj|j    _
t j |jƒtj tjƒdS(N(R tGetIsTJGRR”R•RRR–t Def_OfflineR˜R™RšRœR(R5R3Rž((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFriend.pytOnPlayerDisconnects c    Cs7tjƒj|ƒ}tjtjdƒƒ}tjdƒ}|jƒ}|j    ƒ}t
|ƒ}t t j ƒ}    ||    krdStƒ}
tjƒ} xÉtd| jƒƒD]²} | j| ƒ} | dksª| jƒ rÞqªn| j    ƒ}||krüqªntj| ƒrqªn|j|ƒ}|dkr2qªntjƒj||ƒr]tjdƒqªntj||tjƒr{qªn| jƒ}||    kr™qªnx³|D]«}|dd}|dd}|||koá||kno|||ko||knsq nt|ƒdkr6|dj gƒn|ddj |ƒq W|
j!|ƒqªWtjd|fƒg}xzt"|dƒD]h} tj#|ƒ}t|ƒdkr¸q‹nt$j%|dƒ}||krÝq‹nt|ƒ|kr‹Pq‹q‹W|t|ƒ}|dkrTt&|
t|ƒƒ}|j't$j(|t)|t|ƒƒƒƒnt*j+ƒ}t|ƒ|_,g|_-x¨|D] }| j.|ƒ}|s qnt*j/ƒ}||_0|j1ƒ|_2|jƒ|_3|j4ƒ|_5|j6ƒ|_7|j8ƒ|_9|j:ƒ|_;|j-j |ƒqWt<j=||ƒdS(NtrecommendFriendtSerchFriendCntis
ºÚÃûµ¥¼ì²éiisrecommendFriend %s(>RRRtcopytdeepcopyRZtGetFuncEvalCfgR[R RQRR    R
R tsettrangetGetActivePlayerCounttGetActivePlayerAtRt    GetInitOKR R RRRRRR t IsRequestingR"R#tlentappendtaddtxrangetGetResultByRandomListtrandomtchoicetlisttextendtsampletminR$ttagGCRecommendFriendsInfotCntt FriendsListRttagRecommendFriendsDatatIDR'R(RtGetJobtJobR)R*R+R,R-R.R/R0(R1R2R3R5R£tneedCnttplayerLVR;R<R7t allPlayerIDR4tit
findPlayerR6R=tfindLVt    recommendtminLVtmaxLVtplayeIDstlvlimitRCtfixCnttfixListtsendPackR8trceFriendsData((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFriend.pytClient_RecommendFriends0s”                $$  +           cCstjƒj|ƒ}|j}ttjƒ}|jƒ|krCdSg}t|j    ƒƒ}tjƒ}xÊt
d|j ƒƒD]³}    |j |    ƒ}
|
dks}|
jƒ r±q}n|
j    ƒ} |j    ƒ| krÕq}n|j| ƒ} | dkröq}n|
jƒ|krq}n||
jƒkr}|j|
ƒq}q}Wtjƒ} t|ƒ| _g| _x“|D]‹}tjƒ}|jƒ|_|jƒ|_|jƒ|_|jƒ|_|jƒ|_|jƒ|_ |j!ƒ|_"| jj|ƒq_Wt#j$|| ƒdS(Ni(%RRRR(R    R
R R RRQR©RªR«RR¬RR'R¯R$R¹R®RºR»R¼RR½RR¾R¿R)R*R+R,R-R.R/R0(R1R2R3R5tfindNameR7R„R<R4RÃRÄR6R=RÍR8RÎ((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFriend.pytFuzzySearchPlayerªsJ              cCs&tjd|ƒ}|sdS|jƒS(Nt
FuncOpenLVi(RZtGetIpyGameDatat
GetLimitLV(tfuncIDtipyData((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFriend.pyR    às(#R"RR–R R R$R/R
RRZR³RšR¥RRXR?RRGRRbRRqR|R€R‡R‹RŒRRR“RŸR¢RÏRÑR    (((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerFriend.pyt<module>sD                   _             '    ,        [        8                
                                 z    6