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
x{[c@s˜ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z defd„ƒYZdefd„ƒYZdefd„ƒYZdefd    „ƒYZd
efd „ƒYZd efd „ƒYZdefd„ƒYZdefd„ƒYZeƒd„Zd„Zd„Zd„Zd„Zd„ZdS(iÿÿÿÿNt SocialPlayerscBseeZd„Zed„Zd„Zd„Zd„Zd„Zd„Z    d„Z
d„Z d    „Z RS(
cCs(||_||_i|_||_dS(N(tPlayerIDt classObjectt
SocialDictt    GroupType(tselfRRt    groupType((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyt__init__!s            cCsAtjd|j|j|fƒ||jkr@tjdƒtS|jƒ|j|<|j|}|j|_||_tjƒj    |ƒ}|sÎt
j ƒj |ƒ}|r¸|j ƒqát
j ƒj|ƒnt
j ƒj|ƒt||jƒ|sûtStjƒj    |jƒ}|stS|j||ƒ|j||ƒtS(NsSocialPlayers----Add %s-%s-%ssSocialPlayers----Add Öظ´(t    GameWorldtDebugLogRRRtFalseRtTagIDtGetPlayerManagertFindPlayerByIDt PyDataManagertGetPersonalSocialManagertGetSocialPlayert AddSocialReftAddPlayerInfoByViewCachet AddPlayerInfot AddBeSocialtTruet NotifyC_AddtSync_SocialPlayer(RttagIDtisNotifyt    newPlayert    tagPlayert
playerDatat    curPlayer((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pytAdd(s0         cCs©tjd|j|j|fƒ||jkr@tjdƒdS|jj|ƒtjƒj|ƒt    ||jƒtj
ƒj |jƒ}|s•dS|j ||ƒdS(Ns SocialPlayers----Delete %s-%s-%ss SocialPlayers----Delete Òѱ»É¾³ý( RR    RRRtpopRRt DelPlayerInfot SubBeSocialR R t NotifyC_Del(RRR((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pytDeletePs  cCs t|jƒS(N(tlenR(R((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pytGetCountcscCs|jj|dƒS(N(RtgettNone(RR((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pytFindfscCs?tjƒ}|jƒ||_|j|_tj||ƒdS(N(tChPyNetSendPackttagGCAddSocialPlayertClearRRt NetPackCommont SendFakePack(RRRtpack((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRjs  
     cCs?tjƒ}|jƒ||_|j|_tj||ƒdS(N(R)ttagGCDelSocialPlayerR+RRR,R-(RRRR.((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR"ss  
     cCs±tjƒ}|jƒ|j|_g|_|jƒ|_x`|jjƒD]O}tj    ƒ}|j
|_ t |dƒr€|j nd|_|jj|ƒqJWtj||ƒdS(Nt    Timestampi(R)ttagGCGroupPlayersR+RtPlayersR%tCountRtvaluesttagGCGroupPlayerR RthasattrR0t    SortValuetappendR,R-(RRR.tplayertinPack((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pytSync_SocialsInfo}s 
       !cCsvtjƒ}|jƒd|_g|_tjƒ}|j|ƒjtj    ƒƒ}|jj
|ƒt j ||ƒdS(Ni( R)ttagGCSocialPlayersR+R3tPlayerRRRt GetPackStructttagGCSocialPlayerR8R,R-(RRRtsendPackt socialManagert
socialInfo((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRs 
         cCsLg}x?|jD]4}tjƒj|ƒ}|s7qn|j|ƒqW|S(N(RRR R R8(RtonlinesRR9((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pytGetOnlinePlayerss( t__name__t
__module__RRRR#R%R(RR"R;RRD(((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR s     (                        
         tFriendscBs,eZd„Zd„Zd„Zd„ZRS(cCs&tt|ƒj|tjtjƒdS(N(tsuperRGRtPyGameDataStructttagDBPyPlayerFriendtChConfigtDef_SocialGroup_Friend(RR((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR¬scCs6|j|ƒtjƒj|jƒ}|j|ƒdS(N(RRR R RtMapServer_SyncFriendInfo(RtfriendIDR((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyt    AddFriend±s cCs6|j|ƒtjƒj|jƒ}|j|ƒdS(N(R#RR R RRM(Rt delFriendIDR((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyt    DelFriend¸s cCs¢|s
dStjƒ}|jƒ|_|jƒ|_g|_x?|jjƒD].}tj    ƒ}|j|_
|jj |ƒqMWt j |jƒ|jƒ|ƒdS(N(tChGameToMapPyPackttagGMFriendInfot GetPlayerIDRR%t    FriendCntRGRR4ttagGMPlayerFrendInfoR R8R,tSendPyPackToMapServert    GetLineNOt GetRealMapID(RRR@t
friendInfot playerFriend((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRM¿s       (RERFRRORQRM(((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRG«s            t FriendManagercBsGeZd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(cCs i|_dS(N(t PlayerFriends(R((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRÐscCs®||jkr%t|ƒ|j|<n|j|}|j|ƒtjƒj||ƒ||jkrzt|ƒ|j|<n|j|}|j|ƒtjƒj||ƒdS(N(R]RGRORtGetEnemyManagertDelEnemy(Rt    friendAIDt    friendBIDtfriends((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyt AddFriendBothÔs    cCsZ|jj|dƒ}|r+|j|ƒn|jj|dƒ}|rV|j|ƒndS(N(R]R&R'R#(RR`Rat friendAStructt friendBStruct((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyt DelFriendBothçs cCs|jj|dƒS(N(R]R&R'(RtplayerID((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyt
GetFriendsõscCs t|ƒ|j|<|j|ƒS(N(RGR]Rh(RRg((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyt
AddFriendsùscCs…d}d}d}xK|jjƒD]:}x1|jjƒD] }|d7}||jƒ7}q8Wq"Wtjd|ƒtj||ƒ|S(NtiisSaveFriendData cnt :%s(R]R4Rt    getBufferRtLogtCommFunct
WriteDWORD(RtsavaDatatcntDatatcntRbtfriend((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyt GetSaveDataÿs
cCs×tj||ƒ\}}tjd|ƒi|_xžt|ƒD]}tjƒ}|jƒ||j    |||ƒ7}|j
|jkr¢t |j
ƒ|j|j
<n||j|j
j |j <t|j |j
ƒq?W|S(NsLoadFriendData cnt :%s(Rmt    ReadDWORDRRlR]txrangeRIRJtcleartreadDataRRGRR R(RtdatastpostdataslenRqtiR[((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pytLoadPyGameData s     
(    RERFRRcRfRhRiRsR|(((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR\Ïs                         t EnemyManagercBsPeZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z    RS(cCs i|_dS(N(R2(R((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR scCs,ttjƒƒ}||jkr‡|j|}|j|ƒr¦||j|ƒ_tjƒj|ƒ}|r€|j|||ƒndSnt    |t
j t j ƒ|j|<|j|}|j|tƒr(||j|ƒ_tjƒj|ƒ}|r|j||ƒ|j|||ƒn|j|ƒndS(N(tintttimeR2R(t    timestampRR R tNotify_UpdateTagRRIttagPlayerEnemyRKtDef_SocialGroup_EnemyRR
Rt DelOldEnemy(RRgRR€t socialPlayerR((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pytAddEnemy$s(   cCsHtjƒ}|jƒ||_tj|_||_tj    ||ƒdS(N(
R)R*R+RRKRƒRR7R,R-(RRRR€R.((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRAs  
         cCs0|jj|dƒ}|sdS|j|ƒdS(N(R2R&R'R#(RRgRR…((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR_Ksc Csó|jj|dƒ}|sdStjdƒ}|jƒ|}|dkrNdSg}xQ|jjƒD]@\}}tj    ƒj
|ƒ}|j ||j j |jgƒqdW|jdtƒx4t|ƒD]&}    |jƒ}
|j||
dƒqÅWdS(Nt EnemiesMaxCntitcmp(R2R&R't IpyGameDataPYt
GetFuncCfgR%RtitemsRRRR8t
playerInfot
OnlineTypeR0tsortt SortOldListRuRR_( RRgR…t enemiesMaxCnttdelcnttdelListttmpIDR9RR{tresult((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR„Ts  # cCs|jj|dƒS(N(R2R&R'(RRg((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyt
GetEnemiespscCs…d}d}d}xK|jjƒD]:}x1|jjƒD] }|d7}||jƒ7}q8Wq"Wtjd|ƒtj||ƒ|S(NRjiis!!SaveEnemyData cnt :%s(R2R4RRkRRlRmRn(RRoRpRqt socialPlayersR…((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRsts
cCsãtj||ƒ\}}tjd|ƒi|_xªt|ƒD]œ}tjƒ}|jƒ||j    |||ƒ7}|j
|jkr®t |j
tjt j ƒ|j|j
<n||j|j
j|j<t|j|j
ƒq?W|S(Ns!!LoadEnemyData cnt :%s(RmRtRRlR2RuRIR‚RvRwRRRKRƒRR R(RRxRyRzRqR{t playerEnemy((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR|s     
(
RERFRR†RR_R„R•RsR|(((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR}s            
                     tContactsManagercBsbeZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z    d„Z
d    „Z RS(
cCs i|_dS(N(R2(R((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR—scCs7||jkrtS|j|}|j|ƒs3tStS(N(R2R
R(R(RRgRR…((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyt FindContactšs  cCsättjƒƒ}||jkrCt|tjtjƒ|j|<n|j|}t}|j    |ƒs|j
|tƒt }||j    |ƒ_ |j |ƒn||j    |ƒ_ tjƒj|ƒ}|rù|j|||ƒ|rù|j||ƒqùn||jkr*t|tjtjƒ|j|<n|j|}t}|j    |ƒs„|j
|tƒt }||j    |ƒ_ |j |ƒn||j    |ƒ_ tjƒj|ƒ}|rà|j|||ƒ|rà|j||ƒqàndS(N(R~RR2RRIttagDBPyPlayerContactsRKtDef_SocialGroup_ContactsR
R(RRR0t DelOldContactRR R RR(RRgRR€R…t notifySocialRR((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pytAddContactsBoth¥sD    cCsHtjƒ}|jƒ||_tj|_||_tj    ||ƒdS(N(
R)R*R+RRKR›RR7R,R-(RRRR€R.((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRØs  
         cCs0|jj|dƒ}|sdS|j|ƒdS(N(R2R&R'R#(RRgRR…((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyt
DelContactáscCs$|j||ƒ|j||ƒdS(N(RŸ(RRgR((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pytDelContactBothësc Csó|jj|dƒ}|sdStjdƒ}|jƒ|}|dkrNdSg}xQ|jjƒD]@\}}tj    ƒj
|ƒ}|j ||j j |jgƒqdW|jdtƒx4t|ƒD]&}    |jƒ}
|j||
dƒqÅWdS(NtContactsMaxCntiRˆ(R2R&R'R‰RŠR%RR‹RRRR8RŒRR0RŽRRuRRŸ( RRgR…tcontactsMaxCntR‘R’R“R9RR{R”((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRœñs  # cCs|jj|dƒS(N(R2R&R'(RRg((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyt GetContacts scCs…d}d}d}xK|jjƒD]:}x1|jjƒD] }|d7}||jƒ7}q8Wq"Wtjd|ƒtj||ƒ|S(NRjiis!!SaveContactsData cnt :%s(R2R4RRkRRlRmRn(RRoRpRqR–R…((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRss
cCsãtj||ƒ\}}tjd|ƒi|_xªt|ƒD]œ}tjƒ}|jƒ||j    |||ƒ7}|j
|jkr®t |j
tjt j ƒ|j|j
<n||j|j
j|j<t|j|j
ƒq?W|S(Ns!!LoadContactsData cnt :%s(RmRtRRlR2RuRIRšRvRwRRRKR›RR R(RRxRyRzRqR{R9((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR|s     
( RERFRR™RžRRŸR RœR£RsR|(((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR˜–s             3            
                 tBlacklistManagercBsJeZd„Zd„Zd„Zdd„Zd„Zd„Zd„Z    RS(cCs i|_dS(N(R2(R((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR2scCs|jj|dƒs7t|tjtjƒ|j|<n|j|}|j|ƒt    j
ƒj ||ƒt    j ƒj ||ƒdS(N(R2R&R'RRIttagDBPyPlayerBlackRKtDef_SocialGroup_BlackRRtGetFriendManagerRftGetContactsManagerR (RRgRR…((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyt JoinBlacklist6s   cCs=|jj|dƒ}|sdStjdƒ|j|ƒdS(Nt DelBlacklist(R2R&R'RR    R#(RRgRR…((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRªEs
 cCsˆ||jkrB|j|j|ƒrB|r>tj|dƒntS||jkr„|j|j|ƒr„|r€tj|dƒntStS(NtFriend_RemoveBlacklisttFriend_Blacklist(R2R(t PlayerControlt
NotifyCodeRR
(RRgRR((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pytCheckBlacklistBothNs%%cCs|jj|dƒS(N(R2R&R'(RRg((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyt GetBlacklist]scCs…d}d}d}xK|jjƒD]:}x1|jjƒD] }|d7}||jƒ7}q8Wq"Wtjd|ƒtj||ƒ|S(NRjiis!!SaveBlacklistData cnt :%s(R2R4RRkRRlRmRn(RRoRpRqR–R…((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRsas
cCsãtj||ƒ\}}tjd|ƒi|_xªt|ƒD]œ}tjƒ}|jƒ||j    |||ƒ7}|j
|jkr®t |j
tjt j ƒ|j|j
<n||j|j
j|j<t|j|j
ƒq?W|S(Ns!!LoadBlacklistData cnt :%s(RmRtRRlR2RuRIR¥RvRwRRRKR¦RR R(RRxRyRzRqR{R9((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR|ns     
N(
RERFRR©RªR'R¯R°RsR|(((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR¤1s                          tSocialPlayerDatacBsGeZddd„Zd„Zd„Zdd„Zd„Zd„ZRS(cCs;tjƒ|_|r!||_n|r7|j|ƒndS(N(RIttagPersonalSocialRŒtUpdateByPlayer(Rt playerSocialR9((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRƒs  cCs…|jƒ|j_|jƒ|j_|jƒ|j_|jƒ|j_|j    ƒ|j_
d|j_ |jj sd|j_ ndS(Ni( RTRŒRtGetNamet
PlayerNametGetJobtJobtGetLVtLVtGetOfficialRanktRealmLVRtRefCount(RR((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR³s  cCs^|jj|_|jj|_|jj|_|jj|_|jj|_|jj|_|S(N(RŒRR¶R¸RºR¼R(Rt
packStruct((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR>™scCs9|jjd7_tjd|jj|jjfƒdS(NisAddSocialRef %s-%s(RŒR½RR    R(RR((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR¤s#cCs9|jjd8_tjd|jj|jjfƒdS(NisSubSocialRef %s-%s(RŒR½RR    R(R((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyt SubSocialRefªs#cCs
|jjS(N(RŒR½(R((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyt GetRefCount¯sN(    RERFR'RR³R>RR¿RÀ(((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR±‚s 
              tSocialInfoManagercBsGeZd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(cCs i|_dS(N(t
SocialInfo(R((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR´s    cCsP|jƒ}||jkr5td|ƒ|j|<dS|j|}|jƒdS(NR9(RTRÂR±R(RRRgR…((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR¹s   cCsýtjj|ƒ}tjƒ}|sj|jƒ||_d|_d|_d|_    d|_
t j |_ net|jƒƒ}|jƒ||_|d|_|d|_|d|_    |d|_
t j |_ t|ƒ|j|<|j|}|jƒdS(NRjitNameR¸RºR¼(tPlayerViewCachet ViewCacheMgrt    FindCacheRIR²RvRR¶R¸RºR¼RKt Def_OfflineRtevalt GetPropDataR±RÂR(RRgtcurCacheR´t    cacheDictR…((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRÄs* 
                    
          cCsS||jkrdS|j|}|jƒ|jƒdkrO|jj|ƒndS(Ni(RÂR¿RÀR(Rt delPlayerIDR…((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR ás  
cCs|jj|dƒS(N(RÂR&R'(RRg((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRìscCsnd}d}d}x4|jjƒD]#}|d7}||jjƒ7}q"Wtjd|ƒtj||ƒ|S(NRjiisSaveSocialData cnt :%s(RÂR4RŒRkRRlRmRn(RRoRpRqR…((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRsñs
cCs’tj||ƒ\}}tjd|ƒi|_xYt|ƒD]K}tjƒ}|jƒ||j    |||ƒ7}t
|ƒ|j|j <q?W|S(NsLoadSocialData cnt :%s( RmRtRRlRÂRuRIR²RvRwR±R(RRxRyRzRqR{R´((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR|þs     
(    RERFRRRR RRsR|(((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRÁ³s                           cCsü|tjkrdS|tjkrCtjƒ}||_||_nW|tj    krstj
ƒ}||_||_ n'tj ƒ}||_||_ ||_x[tj|D]L}tjƒj|ƒ}|sÏq¨ntj|ƒräq¨ntj||ƒq¨WdS(N(t
PyGameDatatg_BeSocialListtIPY_PlayerDefinetCDBPlayerRefresh_PlayerNameR)ttagGCSocialNameRRÃRKtDef_CDBPlayerRefresh_OnlinettagGCSocialOnlineRttagGCSocialRefreshTypet RefreshTypetValueRR R R­tGetIsTJGR,R-(Rgt
notifyTypetvaluetsetInfoR.RR9((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyt
Notify_Alls*                         cCsŸtjƒj|jƒƒ}|dkr+dS|tjkrI||j_n<|tj    krg||j_
n|tj kr…||j_ nt |jƒ||ƒdS(N(RRRtGetIDR'RÏtCDBPlayerRefresh_LVRŒRºtCDBPlayerRefresh_OfficialRankR¼RÐR¶RÛ(RRØRÙR…((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pytUpdateSocialInfo,s cCs˜|jƒ}tjƒj|ƒ}|r6|jjƒng}tjƒj|ƒ}|rf|jjƒng}tjƒj    |ƒ}|r–|jjƒng}tj
ƒj |ƒ}|rÆ|jjƒng}    t |ƒt |ƒBt |ƒBt |    ƒB}
t jƒ} | jƒg| _tjƒ} xN|
D]F} | j| ƒ}|sIq(n|jt jƒƒ}| jj|ƒq(Wt| jƒ| _tj|| ƒdS(N(RÜRR§RhRtkeysR^R•R¨R£tGetBlacklistManagerR°tsetR)R<R+R=RRR>R?R8R$R3R,R-(RRgRbtlist1tenemiestlist2tcontactstlist3t
blackliststlist4t    resultSetR@RARR…RB((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pytSync_AllSocialsInfo=s. * 
      cCsj|tjkritj|<n|tj|krFdtj||<n tj||dtj||<dS(Ni(RÍRÎ(Rgt tagPlayerID((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRas
cCsw|tjkrdS|tj|kr*dStj||}|dtj||<|dkrstj|j|ƒndS(Ni(RÍRÎR(RgRìtcurCount((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR!js cCs„|drdnd}|dr&dnd}||kr<dS||krLdS|d|dkrddS|d|dkr|dSdSdS(Niiiÿÿÿÿi((tinfo1tinfo2tresult1tresult2((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRzs  (RIRmRR)R,RRRRÏRKR­RR‰RÄRÍtobjectRRGR\R}R˜R¤R±RÁRâRÛRßRëRR!R(((sG.\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyt<module>s6              ‹$Pw›Q1[        $