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
fâfc@sëddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd    „ƒYZd
efd „ƒYZd efd „ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZd„Zd„Zeƒd„Zd„Zd„Zd„Z d„Z!d„Z"d„Z#dS(iÿÿÿÿNt SocialPlayerscBsqeZd„Zed„Zd„Zd„Zd„Zd„Zd„Z    d„Z
d d„Z d    „Z d
„ZRS( cCs(||_||_i|_||_dS(N(tPlayerIDt classObjectt
SocialDictt    GroupType(tselfRRt    groupType((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyt__init__!s            cCsntj|ƒs-tjd||jfƒtStjd|j|j|fƒ||jkrmtjdƒtS|j    ƒ|j|<|j|}|j|_||_
tj ƒj |ƒ}|sût jƒj|ƒ}|rå|jƒqt jƒj|ƒnt jƒj|ƒt||jƒ|s(tStj ƒj |jƒ}|sJtS|j||ƒ|j||ƒtS(Ns1ÊÔͼÌí¼Ó·Ç±¾·þÍæ¼ÒÉç½»¶ÔÏó: tagID=%s,GroupType=%ssSocialPlayers----Add %s-%s-%ssSocialPlayers----Add Öظ´(t PlayerControltGetDBPlayerAccIDByIDt    GameWorldtErrLogRtFalsetDebugLogRRRtTagIDtGetPlayerManagertFindPlayerByIDt PyDataManagertGetPersonalSocialManagertGetSocialPlayert AddSocialReftAddPlayerInfoByViewCachet AddPlayerInfot AddBeSocialtTruet NotifyC_AddtSync_SocialPlayer(RttagIDtisNotifyt    newPlayert    tagPlayert
playerDatat    curPlayer((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pytAdd(s6         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 Òѱ»É¾³ý( R
R RRRtpopRRt DelPlayerInfot SubBeSocialRRt NotifyC_Del(RRR ((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pytDeleteSs  cCs t|jƒS(N(tlenR(R((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pytGetCountfscCs |jjƒS(N(Rtkeys(R((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pytGetSocialIDListiscCs|jj|dƒS(N(RtgettNone(RR((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pytFindkscCs?tjƒ}|jƒ||_|j|_tj||ƒdS(N(tChPyNetSendPackttagGCAddSocialPlayertClearRRt NetPackCommont SendFakePack(RR Rtpack((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRos  
     cCs?tjƒ}|jƒ||_|j|_tj||ƒdS(N(R.ttagGCDelSocialPlayerR0RRR1R2(RR RR3((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR%xs  
     cCs    |dkr|jjƒ}ntjƒ}|jƒ|j|_g|_x—|D]}||jkrkqPn|j|}tjƒ}|j    |_
t |dƒr®|j |_ n!t |dƒrÆ|jnd|_ |jj|ƒqPWt|jƒ|_tj||ƒdS(NtIntimacyt    Timestampi(R,RR)R.ttagGCGroupPlayersR0RtPlayersttagGCGroupPlayerRRthasattrR5t    SortValueR6tappendR'tCountR1R2(RR t playerIDListR3tplayerIDtplayertinPack((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pytSync_SocialsInfo‚s&  
         !cCs†tjƒ}|jƒd|_g|_tjƒ}|j|ƒ}|sMdS|jtj    ƒƒ}|jj
|ƒt j ||ƒdS(Ni( R.ttagGCSocialPlayersR0R=tPlayerRRRt GetPackStructttagGCSocialPlayerR<R1R2(RR RtsendPackt socialManagert socialPlayert
socialInfo((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRs 
         cCsLg}x?|jD]4}tjƒj|ƒ}|s7qn|j|ƒqW|S(N(RR
RRR<(RtonlinesRR@((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pytGetOnlinePlayers­sN(t__name__t
__module__RRR!R&R(R*R-RR%R,RBRRL(((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR s     +                            
    tFriendscBs,eZd„Zd„Zd„Zd„ZRS(cCs&tt|ƒj|tjtjƒdS(N(tsuperRORtPyGameDataStructttagDBPyPlayerFriendtChConfigtDef_SocialGroup_Friend(RR((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR¼scCs6|j|ƒtjƒj|jƒ}|j|ƒdS(N(R!R
RRRtMapServer_SyncFriendInfo(RtfriendIDR ((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyt    AddFriendÁs cCs6|j|ƒtjƒj|jƒ}|j|ƒdS(N(R&R
RRRRU(Rt delFriendIDR ((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyt    DelFriendÈs cCsdS(N((RR ((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRUÎs(RMRNRRWRYRU(((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRO»s            t FriendManagercBsGeZd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(cCs i|_dS(N(t PlayerFriends(R((sWE:\SnxxServerCode\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[RORWRtGetEnemyManagertDelEnemy(Rt    friendAIDt    friendBIDtfriends((sWE:\SnxxServerCode\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^R_t friendAStructt friendBStruct((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyt DelFriendBothùs cCs|jj|dƒS(N(R[R+R,(RR?((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyt
GetFriendsscCs t|ƒ|j|<|j|ƒS(N(ROR[Re(RR?((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyt
AddFriends scCs‘d}d}d}xK|jjƒD]:}x1|jjƒD] }|d7}||jƒ7}q8Wq"Wtjd|t|ƒfƒtj||ƒ|S(NtiisSaveFriendData cnt :%s len=%s(    R[tvaluesRt    getBufferR
tLogR'tCommFunct
WriteDWORD(RtsavaDatatcntDatatcntR`tfriend((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyt GetSaveDatas
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(Rkt    ReadDWORDR
RjR[txrangeRQRRtcleartreadDataRRORRR(RtdatastpostdataslenRotit playerFriend((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pytLoadPyGameDatas     
(    RMRNRRaRdReRfRqR{(((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRZás                         t    IntimacyscBsGeZd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(cCs&tt|ƒj|tjtjƒdS(N(RPR|RRQttagDBPyPlayerIntimacyRStDef_SocialGroup_Intimacy(RR((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR2scCs/||jkr|j|ƒn|jj|ƒS(N(RR!R+(RR((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pytGetIntimacyObj6scCs |j|ƒ}|r|jSdS(Ni(R-R5(RRt intimacyObj((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pytGetTagIntimacy;scCs4|j|ƒ}|sdS|j r3|dkr3dSttd|j|ƒtjƒ|_|j}|dkr}|j|ƒn|s‡|S|j||ƒd}tj    ƒj
|ƒ}|rÇ|j j }n|dkrït j|d||gƒn.|dkrt j|d|t|ƒgƒn|j||gƒ|S(NiRgt AddIntimacyt DelIntimacy(RR5tmintmaxt ShareDefinetDef_UpperLimit_DWordR&t'_Intimacys__SyncMapServerCoupleIntimacyRRRt
playerInfot
PlayerNameRt
NotifyCodetabsRB(RR RtaddValueR€t nowIntimacyttagNameRI((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR‚?s,%       "cCsU|j|ƒ}|sdS||_|rN|j||ƒ|j||gƒn|jS(Ni(RR5RˆRB(RR RtsetValueR€((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyt SetIntimacy^s    cCsX|jƒ}tjƒj|ƒ}|s+dS|j|ƒ|krDdS|j||ƒdS(N(t GetPlayerIDRtGetDBPyCoupleManagert    GetCouplet GetCoupleIDtSyncMapServerIntimacy(RR RR?tcouple((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyt__SyncMapServerCoupleIntimacyis cCs_|jƒ}d}|j|ƒ}|r3|j}nd||gg}tj|d||ƒdS(NiR–tLove(R’RR5RtMapServer_QueryPlayer_DoLogic(RR RR?t intimacyValueR€tcmdInfo((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR–ts  (    RMRNRRRR‚R‘RˆR–(((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR|1s                          tIntimacyManagercBs>eZd„Zd„Zd„Zd„Zd„Zd„ZRS(cCs i|_dS(N(tPlayerIntimacys(R((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRs    c Cs»x´i||6||6jƒD]˜\}}|j|ƒ}|sBqn|j|ƒ}|s]qn|j}tjƒj|ƒ}    |j|    ||ƒ}
tjd|||||
f|ƒqWdS(NsPÔö¼ÓÇ×ÃܶÈ: playerID=%s,tagPlayerID=%s,curIntimacy=%s,addValue=%s,updIntimacy=%s(    titemst GetIntimacysRR5R
RRR‚R ( RtaIDtbIDRR?t tagPlayerIDt    intimacysR€t curIntimacyR t updIntimacy((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pytAddIntimacyBoth†s'        c     CsÜxÕi||6||6jƒD]¹\}}|j|ƒ}|sBqn|j|ƒ}|s]qn|j}tdt||dƒƒ }    tjƒj|ƒ}
|j    |
||    ƒ} tj
d|||||    | f|ƒqWdS(NigY@sZ¿Û³ýÇ×ÃܶÈ: playerID=%s,tagPlayerID=%s,curIntimacy=%s,delPer=%s,delValue=%s,updIntimacy=%s( RŸR RR5R…tintR
RRR‚R ( RR¡R¢tdelPerR?R£R¤R€R¥tdelValueR R¦((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pytDelIntimacyBothPer™s'        !cCsTtj|ƒs$tjd|ƒdS||jkrIt|ƒ|j|<n|j|S(Ns%ÊÔͼ»ñÈ¡·Ç±¾·þÍæ¼ÒÇ×ÃÜ×é: playerID=%s(RR    R
R RžR|(RR?((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR ­s cCs‘d}d}d}xK|jjƒD]:}x1|jjƒD] }|d7}||jƒ7}q8Wq"Wtjd|t|ƒfƒtj||ƒ|S(NRgiis&Save DBPyPlayerIntimacy cnt :%s len=%s(    RžRhRRiR
RjR'RkRl(RRmRnRoR¤tplayerIntimacy((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRq¶s
cCsÔtj||ƒ\}}tjd|ƒi|_x›t|ƒD]}tjƒ}|jƒ||j    |||ƒ7}|j
}||jkr¢t |ƒ|j|<n||j|j |j <t|j |j
ƒq?W|S(NsLoad DBPyPlayerIntimacy cnt :%s(RkRrR
RjRžRsRQR}RtRuRR|RRR(RRvRwRxRoRyR¬R?((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR{Ãs     
    (RMRNRR§R«R RqR{(((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR€s                          t EnemyManagercBsPeZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z    RS(cCs i|_dS(N(R8(R((sWE:\SnxxServerCode\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(R¨ttimeR8R-t    timestampR
RRtNotify_UpdateTagRRQttagPlayerEnemyRStDef_SocialGroup_EnemyR!R Rt DelOldEnemy(RR?RR¯RIR ((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pytAddEnemyÜs(   cCsHtjƒ}|jƒ||_tj|_||_tj    ||ƒdS(N(
R.R/R0RRSR²RR;R1R2(RR RR¯R3((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR°ùs  
         cCs0|jj|dƒ}|sdS|j|ƒdS(N(R8R+R,R&(RR?RRI((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR]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(Nt EnemiesMaxCntitcmp(R8R+R,t IpyGameDataPYt
GetFuncCfgR(RRŸRRRR<R‰t
OnlineTypeR6tsortt SortOldListRsR"R]( RR?RIt enemiesMaxCnttdelcnttdelListttmpIDR@RRytresult((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR³ s  # cCs|jj|dƒS(N(R8R+R,(RR?((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyt
GetEnemies(scCs‘d}d}d}xK|jjƒD]:}x1|jjƒD] }|d7}||jƒ7}q8Wq"Wtjd|t|ƒfƒtj||ƒ|S(NRgiis!!SaveEnemyData cnt :%s len=%s(    R8RhRRiR
RjR'RkRl(RRmRnRot socialPlayersRI((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRq,s
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(RkRrR
RjR8RsRQR±RtRuRRRSR²RRR(RRvRwRxRoRyt playerEnemy((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR{9s     
(
RMRNRR´R°R]R³RÁRqR{(((sWE:\SnxxServerCode\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(R8(R((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyROscCs7||jkrtS|j|}|j|ƒs3tStS(N(R8R R-R(RR?RRI((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyt FindContactRs  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¨R®R8RRQttagDBPyPlayerContactsRStDef_SocialGroup_ContactsR R-R!RR6t DelOldContactR
RRR°R(RR?RR¯RIt notifySocialR R((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pytAddContactsBoth]sD    cCsHtjƒ}|jƒ||_tj|_||_tj    ||ƒdS(N(
R.R/R0RRSRÇRR;R1R2(RR RR¯R3((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR°s  
         cCs0|jj|dƒ}|sdS|j|ƒdS(N(R8R+R,R&(RR?RRI((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyt
DelContact™scCs$|j||ƒ|j||ƒdS(N(RË(RR?R((sWE:\SnxxServerCode\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¶(R8R+R,R·R¸R(RRŸRRRR<R‰R¹R6RºR»RsR"RË( RR?RItcontactsMaxCntR½R¾R¿R@RRyRÀ((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRÈ©s  # cCs|jj|dƒS(N(R8R+R,(RR?((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyt GetContactsÄscCs‘d}d}d}xK|jjƒD]:}x1|jjƒD] }|d7}||jƒ7}q8Wq"Wtjd|t|ƒfƒtj||ƒ|S(NRgiis!!!SaveContactsData cnt :%s len=%s(    R8RhRRiR
RjR'RkRl(RRmRnRoRÂRI((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRqÈs
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(RkRrR
RjR8RsRQRÆRtRuRRRSRÇRRR(RRvRwRxRoRyR@((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR{Õs     
( RMRNRRÅRÊR°RËRÌRÈRÏRqR{(((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRÄNs             3            
                 tBlacklistManagercBsJeZd„Zd„Zd„Zdd„Zd„Zd„Zd„Z    RS(cCs i|_dS(N(R8(R((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRêscCs|jj|dƒs7t|tjtjƒ|j|<n|j|}|j|ƒt    j
ƒj ||ƒt    j ƒj ||ƒdS(N(R8R+R,RRQttagDBPyPlayerBlackRStDef_SocialGroup_BlackR!RtGetFriendManagerRdtGetContactsManagerRÌ(RR?RRI((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyt JoinBlacklistîs   cCs=|jj|dƒ}|sdStjdƒ|j|ƒdS(Nt DelBlacklist(R8R+R,R
R R&(RR?RRI((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRÖýs
 cCsˆ||jkrB|j|j|ƒrB|r>tj|dƒntS||jkr„|j|j|ƒr„|r€tj|dƒntStS(NtFriend_RemoveBlacklisttFriend_Blacklist(R8R-RR‹RR (RR?RR ((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pytCheckBlacklistBoths%%cCs|jj|dƒS(N(R8R+R,(RR?((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyt GetBlacklistscCs‘d}d}d}xK|jjƒD]:}x1|jjƒD] }|d7}||jƒ7}q8Wq"Wtjd|t|ƒfƒtj||ƒ|S(NRgiis"!!SaveBlacklistData cnt :%s len=%s(    R8RhRRiR
RjR'RkRl(RRmRnRoRÂRI((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRqs
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(RkRrR
RjR8RsRQRÑRtRuRRRSRÒRRR(RRvRwRxRoRyR@((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR{&s     
N(
RMRNRRÕRÖR,RÙRÚRqR{(((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRÐés                          tSocialPlayerDatacBsGeZddd„Zd„Zd„Zdd„Zd„Zd„ZRS(cCs;tjƒ|_|r!||_n|r7|j|ƒndS(N(RQttagPersonalSocialR‰tUpdateByPlayer(Rt playerSocialR@((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR;s  cCs©|jƒ|j_|jƒ|j_|jƒ|j_|jƒ|j_|j    ƒ|j_
d|j_ |j ƒ|j_ |jƒ|j_|jjs¥d|j_ndS(Ni(R’R‰RtGetNameRŠtGetJobtJobtGetLVtLVtGetOfficialRanktRealmLVR¹tGetFacetFacet
GetFacePictFacePictRefCount(RR ((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRÝEs  cCs||jj|_|jj|_|jj|_|jj|_|jj|_|jj|_|jj|_|jj|_|S(N(    R‰RRŠRáRãRåR¹RçRé(Rt
packStruct((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRESscCs9|jjd7_tjd|jj|jjfƒdS(NisAddSocialRef %s-%s(R‰RêR
R R(RR ((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR_s#cCs9|jjd8_tjd|jj|jjfƒdS(NisSubSocialRef %s-%s(R‰RêR
R R(R((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyt SubSocialRefes#cCs
|jjS(N(R‰Rê(R((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyt GetRefCountjsN(    RMRNR,RRÝRERRìRí(((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRÛ:s 
             tSocialInfoManagercBsPeZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z    RS(cCs i|_dS(N(t
SocialInfo(R((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRos    cCsP|jƒ}||jkr5td|ƒ|j|<dS|j|}|jƒdS(NR@(R’RïRÛR(RR R?RI((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRts   cCs3tj|ƒ}tjƒ}|sy|jƒ||_d|_d|_d|_d|_    t
j |_ d|_ d|_nŒtj|ƒ}|jƒ||_|d|_|d|_|d|_|d|_    t
j |_ |jddƒ|_ |jd    dƒ|_t|ƒ|j|<|j|}|jƒdS(
NRgiitNameRáRãRåRçRé(tPlayerViewCachet FindViewCacheRQRÜRtRRŠRáRãRåRSt Def_OfflineR¹RçRétGetCachePropDataDictR+RÛRïR(RR?tcurCacheRÞt    cacheDictRI((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRs2 
                          
          cCsS||jkrdS|j|}|jƒ|jƒdkrO|jj|ƒndS(Ni(RïRìRíR"(Rt delPlayerIDRI((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR# s  
cCs|jj|dƒS(N(RïR+R,(RR?((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRªscCsÀtjƒ}g}xf|jjƒD]U}|j|ƒ}|sCq"ntjƒ}||_|j|ƒ|_    |j
|ƒq"W|s…dStj ƒ}||_ t |j ƒ|_tj||ƒdS(N(RR“RïR)R”R.ttagGCSocialCoupleRR•tCoupleIDR<ttagGCSocialCouplesRDR'R=R1R2(RR t    coupleMgrt
coupleListR?R—t socialCouplet
clientPack((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pytSyncSocialCoupleInfo­s"           cCs°d}d}d}xj|jjƒD]Y\}}tjr^tj|ƒ r^tjd|ƒq"n|d7}||jj    ƒ7}q"Wtj
d|t |ƒfƒt j ||ƒ|S(NRgis$·Ç±¾·þÉç½»Íæ¼Ò£¬²»´æµµ£¡ playerID=%sisSaveSocialData cnt :%s len=%s(RïRŸt
PyGameDatatg_dbPlayerIDMapRR    R
R R‰RiRjR'RkRl(RRmRnRoR?RI((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRqÃs
cCs’tj||ƒ\}}tjd|ƒi|_xYt|ƒD]K}tjƒ}|jƒ||j    |||ƒ7}t
|ƒ|j|j <q?W|S(NsLoadSocialData cnt :%s( RkRrR
RjRïRsRQRÜRtRuRÛR(RRvRwRxRoRyRÞ((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR{Ós     
(
RMRNRRRR#RRÿRqR{(((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRîns             !    
            cCsitjƒj|ƒ}|r%|jjStj|ƒ}|rQtj|ƒ}|dS|dkred|SdS(NRði's
testName%sRg(RRRR‰RŠRñRòRô(R?RIRõRö((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pytGetSocialPlayerNameàs
 cCstjƒj|ƒ}|r%|jjStj|ƒ}|rQtj|ƒ}|dS|dkr}|ddkrsdnd}|SdS(NRái'iii(RRRR‰RáRñRòRô(R?RIRõRötjob((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pytGetSocialPlayerJobðs
 cCsü|tjkrdS|tjkrCtjƒ}||_||_nW|tj    krstj
ƒ}||_||_ n'tj ƒ}||_||_ ||_x[tj|D]L}tjƒj|ƒ}|sÏq¨ntj|ƒräq¨ntj||ƒq¨WdS(N(Rtg_BeSocialListtIPY_PlayerDefinetCDBPlayerRefresh_PlayerNameR.ttagGCSocialNameRRðRStDef_CDBPlayerRefresh_OnlinettagGCSocialOnlineR¹ttagGCSocialRefreshTypet RefreshTypetValueR
RRRtGetIsTJGR1R2(R?t
notifyTypetvaluetsetInfoR3RR@((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyt
Notify_Alls,                         cCsÁ|tjkrdStjƒ}||_||_tjƒ}|jj|ƒt    |jƒ|_
x[tj|D]L}t j ƒj |ƒ}|s”qmntj|ƒr©qmntj||ƒqmWdS(N(RRR.RøRRùRúRDR<R'R=R
RRRRR1R2(R?tcoupleIDR—RþRR@((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pytNotifySocialCoupleChanges           cCsÓtjƒj|ƒ}|dkr%dS|tjkrC||j_n||tjkra||j_    n^|tj
kr||j_ n@|tj kr||j_ n"|tjkr»||j_ndSt|||ƒdS(N(RRRR,RtCDBPlayerRefresh_LVR‰RãtCDBPlayerRefresh_OfficialRankRåRRŠtCDBPlayerRefresh_FaceRçtCDBPlayerRefresh_HairColorRéR(R?RRRI((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pytUpdateSocialInfo9s  cCsß|jƒ}tjƒj|ƒ}|r6|jjƒng}tjƒj|ƒ}|rf|jjƒng}tjƒj    |ƒ}|r–|jjƒng}tj
ƒj |ƒ}|rÆ|jjƒng}    tj ƒj |ƒ}
|
rö|
jjƒng} t|ƒt|ƒBt|ƒBt|    ƒBt| ƒB} tjƒ} | jƒg| _tjƒ}xN| D]F}|j|ƒ}|sƒqbn|jtjƒƒ}| jj|ƒqbWt| jƒ| _tj|| ƒ|j|ƒdS(N(tGetIDRRÓReRR)R\RÁRÔRÏtGetBlacklistManagerRÚtGetIntimacyManagerR tsetR.RCR0RDRRRERFR<R'R=R1R2Rÿ(R R?R`tlist1tenemiestlist2tcontactstlist3t
blackliststlist4R¤tlist5t    resultSetRGRHRRIRJ((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pytSync_AllSocialsInfoOs4 4 
       cCsj|tjkritj|<n|tj|krFdtj||<n tj||dtj||<dS(Ni(RR(R?R£((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyRws
cCsw|tjkrdS|tj|kr*dStj||}|dtj||<|dkrstj|j|ƒndS(Ni(RRR"(R?R£tcurCount((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR$€s cCs„|drdnd}|dr&dnd}||kr<dS||krLdS|d|dkrddS|d|dkr|dSdSdS(Niiiÿÿÿÿi((tinfo1tinfo2tresult1tresult2((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyR»s  ($RQRkR
R.R1tChGameToMapPyPackRRRSRR®R·RñRR†tobjectRRORZR|RR­RÄRÐRÛRîRRRRRRR'RR$R»(((sWE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerSocial.pyt<module>sB               ›&POWw›Q4r                    (