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
fâfc@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZiad„Zd„Zd„Zd„Zd„Zd„Zd„Zd    „Zd
„Zd „Zd „Zd „Zd„Zd„Z d„Z!d„Z"d„Z#d„Z$d„Z%dS(iÿÿÿÿNcCs]tjdƒ}|j|ƒ}|s(|S|j|dƒ}|dkrK|S|t|dƒS(Ns <v=\d+_\d+>i(tretcompiletfindalltindextlen(tcontenttpatt
keyStrListtlIndex((sUE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerTalk.pytChangeVoiceChat's c    Csötjƒj|ƒ}tjƒ}tjƒj|jƒƒ}|dkr\tj    |dƒdSt
j ƒj |j ƒ|j ƒ|ƒr‡dS|jƒ}|jƒ}|jƒ}|jƒ}|j|||||ƒt
jƒj|j ƒ|j ƒƒdS(Nt CanootTalk10(t    GameWorldtGetPlayerManagertGetPlayerByIndextIPY_GameServert IPY_GTalkMitFindPlayerByNamet GetTargetNametNonet PlayerControlt
NotifyCodet PyDataManagertGetBlacklistManagertCheckBlacklistBothtGetIDt GetTalkTypet
GetContentt GetExtraValuet    GetExtrastChatMitGetContactsManagertAddContactsBoth(    Rttickt    curPlayertsendPackt    tagPlayerttalkTypeRt
extraValuetextras((sUE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerTalk.pyR9s  '    "c     CsHtjƒj|ƒ}tjƒ}|jƒ}tjƒj|ƒ}d}d}|dkr†tj    |ƒ}|s’t
j |dƒdSn |j ƒ}t jƒj|jƒ||ƒr·dS|rÙtj|ƒ}|d}n|jƒ}    |jƒ}
|jƒ} |jƒ} t|||||    |
| | ƒt jƒj|jƒ|ƒdS(NtR
tName(R R R RtIPY_GTalkMiFixt GetPlayerIDtFindPlayerByIDRtPlayerViewCachet FindViewCacheRRtGetNameRRRRtGetCachePropDataDictRRRRt
SendChatMiRR( RR R!R"t tagPlayerIDR#tcurCachet tagPlayerNamet    cacheDictR$RR%R&((sUE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerTalk.pyt    ChatMiFixUs0    !     c    Cs/tjƒ}|jƒ||_|jƒ|_t|jƒ|_|jƒ|_    t|ƒ|_
||_ ||_ t|ƒ|_ ||_||_||_tj||ƒ|rÓtj|ƒ rÓtj||ƒnX|tkrï|gt|<n<t|j|ƒtt|ƒdkr+t|jdƒdSdS(Nii(t ChNetSendPackt    tagTalkMitCleartTalkTypeR.tSrcNameRt
SrcNameLenRtPlayerIDt    ToNameLentToNamet
ToPlayerIDtLentContentt
ExtraValuetExtrast NetPackCommont SendFakePackRtGetIsTJGtg_ChatMitappendtpop(    R!R#R3R1R$RR%R&R"((sUE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerTalk.pyR0xs, 
                         cCsq|jƒ}|tkrdStj|ƒ}x?|D]7}tjƒj||jƒsYq2ntj||ƒq2WdS(N(    RRGRIRRt FindContactR<RDRE(R!tplayerIDtchatListtchatPack((sUE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerTalk.pyt LoginChatMi–s   c
Cs tjƒj|ƒ}|jƒ}tjƒ}|jƒ}|jƒ}|jƒ}t    j
|ƒ}i|d6|d6|d6|d6|d6}    t j t j|    ƒdS(NR<R(RARBRC(R R R R*RtIPY_GTalkCountryRRRtCrossRealmPlayertGetCrossPlayerNamet CrossRealmMsgtSendMsgToCrossServert ShareDefinetClientServerMsg_ChatCrossWorld(
RR R!RKR"RR%R&tcrossPlayerNametdataMsg((sUE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerTalk.pyt ChatCountryªs     )cCs¨tjddƒ}|dkr'g}ngitjd6tjd6}||krbtjd|ƒdStj|||ƒ}|s‚dS|j    ƒ}t
j t j ||ƒdS(Nt    TalkCrossiiis&¿ç·þÁÄÌ췶ΧÅäÖôíÎó! chatCrossType=%s(t IpyGameDataPYt
GetFuncCfgtChConfigtDef_FBMapID_CrossPenglaitDef_FBMapID_CrossRealmPKR tErrLogRPt"GetCrossZoneIpyDataByServerGroupIDtGetServerGroupIDListRRtSendMsgToClientServerRTtCrossServerMsg_ChatCrossWorld(t serverGroupIDtmsgDataR t chatCrossTypetserverGroupIDListtcrossTypeMapDictt zoneIpyData((sUE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerTalk.pyRU¹s       c
Cs |d}|d}|d}|d}|d}tjƒ}|jƒ||_t|jƒ|_||_||_t|jƒ|_||_    ||_
t j ƒ}x`t |jƒƒD]L}|j|ƒ}    |    dkrßq¸ntj|    ƒrôq¸ntj|    |ƒq¸WdS(NR<R(RARBRC(R6ttagTalkCountryR8R(RtNameLenR<RAR@RBRCR R txrangetGetActivePlayerCounttGetActivePlayerAtRRRFRDRE(
ReRKRVRR%R&R"t playerManagertitplayer((sUE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerTalk.pyRcÊs.
 
 
 
 
 
                      cCs~tjƒj|ƒ}tjƒ}|jƒ}|jƒ}|jƒ}|j|||ƒt    d|j
ƒ|j ƒ||ƒdS(Ni( R R R Rt IPY_GTalkGongRRRtChatGongt DoTalkCacheR.R*(RR R!R"RR%R&((sUE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerTalk.pyRsîs    "cCs\tjƒj|ƒ}tjƒ}|jƒ}|jƒ}|jƒ}|j|||ƒdS(N(    R R R Rt IPY_GTalkDuiRRRtChatTeam(RR R!R"RR%R&((sUE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerTalk.pyRvÿs    cCsÃtjƒj|ƒ}|jƒdkrAtjd|jƒƒdStjƒ}|jƒ}|j    ƒ}|j
ƒ}|j |||ƒt j |||ƒt|jƒ|jƒ|jƒ||ƒdS(Nis!¼Ò×寵µÀÁÄÌì·â°ü´íÎó,Íæ¼ÒûÓмÒ×å(R R R t GetFamilyIDtLogR*Rt IPY_GTalkBangRRRt
ChatFamilytPlayerFamilyPartyt OnTalkFamilyRtR.(RR R!R"RR%R&((sUE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerTalk.pyRzs    (c    Cse|\}}}}|jƒ}|jƒ}|jƒ}|dkrEnt|||||||ƒdS(Ni(tGetAccIDR.R*tBroadCastPYSpeaker(    R!t chatInfoListt SpeakerTypetTextR%R&taccIDt
playerNameRK((sUE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerTalk.pyt ChatPYSpeaker"s    c Cs;|dkr9tjƒj|ƒ}|r9|jƒ}q9ntjƒ}|jƒt|ƒ|_||_    ||_
t|ƒ|_ ||_ ||_ t|ƒ|_||_||_||_tjƒ}    xmt|    jƒƒD]Y}
|    j|
ƒ}|dksÚ|jƒ rqÚntj|ƒr#qÚntj||ƒqÚWdS(Ni(R R tFindPlayerByAccIDR*tChPyNetSendPackttagGCPYSpeakerContentR8RtAccIDLentAccIDR<RkR(R€tTextLenRRBRCtrangetGetPlayerCountR Rt    GetInitOKRRFRDRE( R‚RKRƒR€RR%R&Rqt speakerPackRoRp((sUE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerTalk.pyR~3s2  
                             cCsdS(N((Rt
clientPackR ((sUE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerTalk.pyt OnVoiceChatesNc Csj|jƒ}|jƒ}|jƒ}|jƒ}d}|ttjƒ|7}|ttjƒ|dk7}|ttjƒ|7}|ttj    ƒt
j |ƒ7}|ttj ƒt
j |ƒ7}|ttjƒ|jƒ7}d\}}}tjƒj|ƒ}    |    r2|    j|ƒ}|    j|ƒ}|    j}n|jƒ}
|jƒ} d|||||
| f}|S(NR'iis%s|%s|%s|%s|%s|%s(sii(tGetVIPLvt
GetGMLeveltGetJobRtGetTalkExtraValueStarRTtDef_TalkExtraValue_Bit_VipLvtDef_TalkExtraValue_Bit_GMtDef_TalkExtraValue_Bit_JOBt Def_TalkExtraValue_Bit_BubbleBoxRtGetChatBubbleBoxt$Def_TalkExtraValue_Bit_ServerGroupIDtGetPlayerServerGroupIDtDef_TalkExtraValue_Bit_LVtGetLVRtGetDBPyCoupleManagert    GetCouplet GetCoupleNamet GetCoupleJobtBridePriceMaxIDtGetFacet
GetFacePic( RqtvipLvtGMLeveltjobRKt extraValueStrt
coupleNamet    coupleJobtbridePriceMaxIDtcoupletfacetfacePic((sUE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerTalk.pytGetTalkExtraValue¹s*         cCs6tjj|ƒ}|d|d}dt|ƒdS(Niis%0td(RTtDef_TalkExtraValue_LenDicttgettstr(textraValueTypetextraValueInfot extraValueLen((sUE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerTalk.pyR”ÜscCs7tj|ƒrtS||jtjƒdkr3tStS(Niè(RtGetGMForbidenTalktFalset GetDictByKeyR\t Def_TalkTicktTrue(R!R ((sUE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerTalk.pyt    CheckTalkäs
cCsóttjƒƒ}|||||g}|r¥|tjkrLgtj|<nBtjddƒ}|rŽttj|ƒ|krŽtj|d=ntj|j|ƒnJtjddƒ}|rßttjƒ|krßtjd=ntjj|ƒdS(Nt    TalkCacheiii(    tintttimet
PyGameDatatg_familyTalkCacheRZR[RRHtg_worldTalkCache(tfamilyIDtnameRKRR&tcurTimetsaveInfotmaxCnt((sUE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerTalk.pyRtïs c CsYtj|ƒrdS|jƒ}tjj|dƒ}gg}}|jƒ}|r|tjkrx°tj|D]ž\}}}}}    ||kr—qpntj    ƒ}
|
j
ƒd|
_ ||
_ t |ƒ|
_||
_||
_||
_t |ƒ|
_|    |
_|j|
ƒqpWnx©tjD]ž\}}}}}    ||krFqntj    ƒ}
|
j
ƒd|
_ ||
_ t |ƒ|
_||
_||
_||
_t |ƒ|
_|    |
_|j|
ƒqW|r tjƒ} | j
ƒ|| _t | jƒ| _tj|| ƒn|rUtjƒ} | j
ƒ|| _t | jƒ| _tj|| ƒndS(Niii(RRFR*RÀtg_unTJLogoffTimeR²RwRÁR†ttagGCTalkCacheInfoR8t ChannelTypeR(RRkR<tTimeRAR@RCRHRÂttagGCTalkCachetInfoListtCountRDRE( R!RKtunTJLogoffTimetfamilyCacheListtworldCacheListRÃRÅRÄRR&t contentInfoR"((sUE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerTalk.pytNotifyTalkCaches`   #  
                          
                         
     
    (&R RRRR\t EventReportR{R†RTR,RPRRR6RDRÀRR¿RZRGR    RR5R0RNRXRURcRsRvRzR„R~RR¯R”R¼RtRÓ(((sUE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerTalk.pyt<module>sJ                              #                    $                    2    T    #