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
WØøgc@s8ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZe jƒZd„Zd„Zd„Zd„Zeid„Z d„Z!d„Z"d    „Z#ed
„Z$d Z%d „Z&d „Z'd„Z(d„Z)dddd„Z*ddddd„Z+d„Z,d„Z-d„Z.d„Z/d„Z0d„Z1d„Z2d„Z3d„Z4dS(iÿÿÿÿNcCs tƒdS(N(tDelOutofTimeViewCacheData(((sZE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerViewCache.pyt    DoOnDayEx2scCsH|s
tS|j}tj|ƒr&tStj|ƒr9tStj|ƒrLtSt    j
|ƒr_tSt j |ƒrrtSt jƒj|ƒr‹tStj|ƒržtStj|ƒr±tStj|ƒrÄtStjƒrDt jƒ}xÂtjD]W}|j|ƒ}x?|D]7\}}}|j|||ƒ}|j|ƒrtSqWqæWn]tjddƒ}tj ƒ}x<|D]4}    |j!|    ƒ}
|
sŠqin|
j|ƒritSqiW|j"} |j#} | rÅ| rÅtStj$ddƒ} | | krDtj$ddƒ}|sd}n|dd}t%t&j&ƒƒ}||j#}||krDtSntS(NtPlayerViewCacheiiiiii('tFalsetPlayerIDtPlayerFBHelpBattletIsInHelpBattleCheckInListtTruetGameWorldArenatIsArenaBattlePlayertCrossBattlefieldtIsBattlefieldCallPlayertCrossChampionshiptIsChampionshipPlayert GameWorshiptIsWorshipPlayert PyDataManagertGetDBPyFuncTeamManagert IsTeamPlayert GameXiangongtIsXiangongPlayertGameWorldSkyTowertIsSkyTowerPassPlayertPlayerPackDatatIsPackDataPlayert    GameWorldt IsCrossServertGetCrossBillboardManagert ShareDefinetCrossBillboardTypeListtGetBillboardGroupListtGetCrossBillboardtFindByIDt IpyGameDataPYtGetFuncEvalCfgt GetBillboardt FindBillboardtLVtOffTimet
GetFuncCfgtintttime(t    viewCachetplayerIDt billboardMgrt billboardTypet    groupListt groupValue1t groupValue2t billboardObjtNeedCheckBillBoardTypet BillBoardTypet curBillboardtplayerLVtoffTimet SaveDBLimitLVtmaxDaystMaxTimetcurTimetpassTime((sZE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerViewCache.pytIsSaveDBViewCache6sh                       cCs‰tjƒtjƒ}tjƒ}|j}xN|jƒD]@\}}t|ƒrVq8n|j    |ƒrkq8n|j
|ƒq8Wit _ dS(N( RtDelOutofTimePackDatatChPlayertGetOnlinePlayerMgrRtGetPlayerViewCachePyManagertplayerViewCachePyDicttitemsR<tIsOnlinetpopt
PyGameDatatg_crossPlayerViewCache(t    onlineMgrtpyViewCacheMgrRAR+R*((sZE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerViewCache.pyR‚s
           cCs9tjƒ}|j}|j|dƒtjd|ƒdS(Ns ɾ³ý²é¿´»º´æ!(RR@RARDtNoneRtDebugLog(R+RHRA((sZE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerViewCache.pytDeleteViewCache•s
     c Cs d}tjƒ}|j}||kr4||}nÔ|sF|dkr|dkr’| r’tjddƒ}djtjƒj    t
j ƒƒ}d||f}|dd}|}    |dkrÍ|    dd}    n|d    d
krãt nt }
tjƒ} | j||
|    ƒd ||f} i| d 6|d 6|d6|rEtj|ƒndd6tjddƒd6tjddƒd6tjddƒd6|    d6}ntjƒ}||_ttjƒƒ|_|rûtj|dt ƒjddƒ|_t|jƒ|_n|||<n|S(Ni'tOpenJobisÉñÃØµÀÓÑs%s%siÈi2i
iisfake%s@test@s%stAccIDRtNametJobidR%iitRealmLVi@Biáõt
FightPowert ServerGroupIDt ensure_asciis t( RIRR@RAR!R"tdecodeRtDef_Game_Character_EncodingtencodeRtGetCharacterEncodingRRR>R?tSetOnlineStatetrandomtchoicetrandinttPyGameDataStructttagPlayerViewCachePyRR(R)R&tjsontdumpstreplacetPropDatatlent PropDataSize( R+tisAddNewt newPropDatatcurCacheRHRAt openJobListtfakeNametserverIDt serverGroupIDtisOnlinetolMgrtaccID((sZE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerViewCache.pyt FindViewCachesF       !        $ cCsT|s
iSt|dƒs%i|_n|j rM|jrMt|jƒ|_n|jS(Nt PropDataDict(thasattrRpRbteval(Rg((sZE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerViewCache.pytGetCachePropDataDictÆs cGsKt|ƒ}t|ƒ}|s"iSi|dd6|dd6|dd6|dd6}xð|D]è}|dkrz||d<q[|dkr tj|dƒ|d<q[|dkrÑtjƒ}|j||ƒ|d<q[|d    kr&|ji|jd
d ƒd
6|jd d ƒd 6|jd gƒd 6ƒq[||kr[||||<q[q[W|S(NRNROR%RPRtServerIDRMt OfflineValuetModeltTitleIDitEquipShowSwitcht EquipShowID(    RoRsRtGetAccIDServerIDR>R?tGetOfflineValuetupdatetget(R+texAttrsR*t    cacheDictt shotCacheDicttattrNameRm((sZE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerViewCache.pytGetShotCacheDictÐs2                 cCs5t|tƒr|}d}n |jƒ}tt|ƒƒ}i|rQ|jƒn|jddƒd6|rv|jƒn|jddƒd6|r›|j    ƒn|jddƒd6|rÀ|j
ƒn|jddƒd6|rå|j ƒn|jddƒd6|r
|j ƒn|jd    dƒd    6|r/|j ƒn|jd
dƒd
6|rT|jƒn|jd dƒd 6|ry|jƒn|jd dƒd 6|jddƒd6|jddƒd6|rÇtj|ƒn|jddƒd6|jddƒd6|jdgƒd6|rtj|ƒn|jdtjƒƒd6}|S(NRMRTR%iRPROtVIPLViRNtFacetFacePict    FacmilyIDtFamilyIDt
FamilyNameRwRQRxRyRR(t
isinstanceR(RIt GetPlayerIDRsRotGetAccIDR}tGetLVtGetOfficialRanktGetJobtGetVIPLvtGetNametGetFacet
GetFacePict GetFamilyIDt PlayerControlt GetFightPowertGetPlayerServerGroupIDRtGetServerGroupID(t    curPlayerR+Rt    cacheBase((sZE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerViewCache.pytGetSyncCrossCacheBaseïs,     %%%%%%%%%(1cCsªt|t|ƒ}|siS|jddƒ|_ttjƒƒ|_t|ƒ}|s\|Sx$|jƒD]\}}|||<qiW|r¦t    |ƒs¦t
|ƒiSn|S(NR%i( RoRR}R%R(R)R&RsRBR<RK(R+R™tisLogoutRgRtktv((sZE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerViewCache.pytUpdCrossCacheBase
s  
icCsn|j}|j}|j}|j}tjd|||f|ƒt|tƒ}|sZdS|j|_    |j
|_
i|_ |j |_ |j |_ |j|_|j|_xutdtdƒD]`}    t|d|    ƒ}
|
säq¿nt|d|    ƒ} t|d|    | ƒt|d|    |
ƒq¿W|jr;t|jƒni} |tddƒ@r‹i|d6|jƒd6| d6} tjtj| ƒntjƒj|ƒ}tj||| ƒ|rt |ƒsÓt!|ƒdS|r|j"ƒ|_#t$|j#ƒ|_%qnt&j'|ƒrjt(|ƒ}|j)d    d
ƒ}|j)d d
ƒ}|j)d d ƒ}t&j*||||ƒndS(NsAµØÍ¼Í¬²½Íæ¼Ò»º´æ: isLogout=%s,packDataSyncState=%s,packDataLen=%sisItemDataSize%ss
ItemData%siR+t cacheBuffertmsgInfoRQiR‡RNRT(+Rt IsLogoutingtPackDataSyncStatet PackDataLenRRJRoRtPlayerLVR%R&RpRbRdtPlusDatat PlusDataSizetxrangetItemDataClassMaxtgetattrtsetattrtPackMsgRrtpowt    getBuffert CrossRealmMsgtSendMsgToCrossServerRtClientServerMsg_PushPlayerCachetGetPlayerManagertFindPlayerByIDRtOnMGUpdatePlayerPackDataR<RKtGetGeTuiClientIDtGeTuiIDRct GeTuiIDSizeRRRsR}tUpdateCheckInPlayerInfo(t
routeIndextmapIDt curPackDatattickR+R›tpackDataSyncStatet packDataLenRgtclassLVt itemDataSizetitemDataR tdataMsgR˜Rpt
fightPowertfamilyIDt
playerName((sZE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerViewCache.pytOnMGUpdatePlayerCache5sV                              ! 
 cCsMtjƒj|jƒ}|j}|j}|j}t|||d|ƒdS(NtcallMap(RR±R²Rt FindPlayerIDt EquipClassLVtCallMaptOnQueryPlayerCache(R¸R¹RºR»R˜t findPlayerIDt equipClassLVRÆ((sZE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerViewCache.pytOnMGQueryPlayerCaches             cCs;tjƒj|ƒ}|j}|j}t|||ƒdS(N(RR±tGetPlayerByIndexRRÈRÊ(tindext
clientDataR»R˜t tagPlayerIDRÌ((sZE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerViewCache.pytOnViewCrossPlayerInfos
        cCstjƒj|ƒ}|j}tjƒj|ƒ}|rûtjƒ}|jƒ|j|_|jƒ|_    |j
ƒ|_ |j ƒ|_ |jƒ|_tj|_|jƒdk|_tj|ƒ|_|jƒ|_|jƒ|_tj||ƒnt||ddƒdS(NitisShorti(RR±RÎRR²tChPyNetSendPackttagGCAnswerPlayerShortInfotClearRt
PlayerNameRŽRORŒR%RRPtChConfigt
Def_Onlinet
OnlineTypet    GetTeamIDtIsInTeamR”R–RRR‘R„R’R…t NetPackCommont SendFakePackRÊ(RÏt
clientPackR»R˜RÑt    tagPlayert
answerPack((sZE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerViewCache.pytOnViewPlayerShortInfožs&     
  ic Cs|s
dS|jƒ}tjd|||f|ƒtjƒrõt|ƒ}|rtjd||ƒt||||||ƒqtjd||ƒd}i|d6|d6|d6|d    6|d
6|d 6}i|d6|d 6}    tjtj    |    ƒn&t
j |ƒr@tjd ||ƒt|ƒ}t||||||ƒnÛ|t j kr¸tjƒjƒ}
t j |\}} |
| dkr¸tjd||ƒt||||||ƒdSntjd||ƒtjƒ}i|d6|d6|d6|d    6|d
6|d 6}    tjtj|    ƒdS(s±²éÑ¯Íæ¼Ò»º´æ£¬Ö§³ÖÖ±½ÓÔÚ±¾·þ»ò¿ç·þ²éѯÈÎÒâ·þÎñÆ÷Íæ¼Ò
    @param tagPlayerID: Ä¿±êÍæ¼ÒID
    @param equipClassLV: Ö¸¶¨²é¿´Ä³Ò»½××°±¸ÐÅÏ¢
    @param isShort: ÊÇ·ñ²é¿´¼ò¶ÌÐÅÏ¢
    Ns3²é¿´Íæ¼Ò: tagPlayerID=%s,equipClassLV=%s,isShort=%ss6    ÔÚ¿ç·þ²é¿´Íæ¼Ò¿ç·þÓÐÊý¾Ý£¬Ö±½Ó»Ø°ü! tagPlayerID=%ss8    ÔÚ¿ç·þ²é¿´Íæ¼Ò¿ç·þÎÞÊý¾Ý£¬´Ó×Ó·þÀ­È¡! tagPlayerID=%siR+RÑRÌRÓRÆtviewFromR s0    ²é¿´Íæ¼Ò±¾·þÓÐÊý¾Ý£¬Ö±½Ó»Ø°ü! tagPlayerID=%sii<ièsA    1·ÖÖÓÄÚÖØ¸´²é¿´¿ç·þÍæ¼ÒÇÒ±¾·þÓÐÊý¾Ý£¬Ö±½Ó»Ø°ü! tagPlayerID=%ss2    ²é¿´Íæ¼Ò±¾·þûÓÐÊý¾Ý£¬·¢¿ç·þ²é! tagPlayerID=%si<i`ê(RŠRRJRRotSync_PlayerCacheR®tSendMsgToClientServerRt"CrossServerMsg_PullPlayerViewCacheR”tGetDBPlayerAccIDByIDRERFt GetGameWorldtGetTickR—R¯tClientServerMsg_ViewPlayerCache( R˜RÑRÌRÓRÆR+RgRãR RÁR»t    cacheTick((sZE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerViewCache.pyRÊ´s<   0  0c
CsÍ|rt||ƒdS|rÆtj|ƒ}|jƒ}tjƒ}|jƒ|_||_|shdn|j    |_    t
|j    ƒ|_ |s’dn|j |_ t
|j ƒ|_ tj|||ƒn|sàtj|dƒdS|red}    t|d|ƒrt|d|ƒ}    ntjƒ}|j|_||_|    |_t
|jƒ|_tj||ƒdStjƒ}|j|_|j    |_    t
|j    ƒ|_ |j |_ t
|j ƒ|_ tj||ƒdS(NRTtViewPlayer_OffLinesItemDataSize%ss
ItemData%s(tSync_PlayerShortInfoRtGetQueryPlayerMapIDtGetRouteServerIndextChGameToMapPyPackttagGMPlayerCacheRŠRRÇRbRcRdR¥R¦RÝtSendPyPackToMapServerR”t
NotifyCodeRqR©RÔttagSCPlayerEquipCacheResultRÈtItemDatat ItemDataSizeRÞttagSCQueryPlayerCacheResult(
R˜RgRÌRÓRÆRËttagMapIDR¸tsendPackRÀ((sZE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerViewCache.pyRäásH                     cCsù|stj|dƒdStjƒ}|jƒt|ƒ}|j|_|d|_|d|_|d|_    |d|_
t j |_ |jddƒ|_|jddƒ|_tjƒrÖ|jd    dƒ|_ntjƒ|_tj||ƒdS(
NRìRNROR%RPR„iR…RR(R”RóRÔRÕRÖRsRR×ROR%RPRØt Def_OfflineRÚR}R„R…RRRRR—RÝRÞ(R˜RgRáR((sZE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerViewCache.pyRí s& 
        cCs†tjd|ƒt|ƒ}|s&dSt|ƒ}||d<||d<tj|dtƒjddƒ}||_t    |jƒ|_
dS(NsViewCache->OnPlayerFamilyChangeR‡RˆRSs RT( RRJRoRsR_R`RRaRbRcRd(R+RÃt
familyNameRgRb((sZE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerViewCache.pytOnPlayerFamilyChange$s  
 
!    cCs~|d}|d}tjd|||fƒt|ƒ}|rSt|||ƒn'i|d6|d6}tjtj|ƒdS(NR+RÑsEÊÕµ½×Ó·þ²é¿´¿ç·þÍæ¼ÒÐÅÏ¢: serverGroupID=%s,playerID=%s,tagPlayerID=%sR (RRJRot&Send_CrossServerMsg_ViewPlayerCacheRetR®RåRRæ(RktmsgDataR+RÑRgRÁ((sZE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerViewCache.pyRê1s
 
 cCs9|r|jƒnd|d<tjtj||gƒdS(NRTRŸ(R­R®RåRt!CrossServerMsg_ViewPlayerCacheRet(RgRþRk((sZE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerViewCache.pyRý>sc Cs8|d}|d}|jdiƒ}d}|sItjd||ƒnt|tƒ}t|||ƒ|srdS|jddƒ}|dkr¤t|||ƒdS|jddƒ}|sÀdStjƒj    |ƒ}|sßdS|jddƒ}    |jddƒ}
|jd    dƒ} |} t
|||    |
| | ƒdS(
NR+RŸR s'×Ó·þÍÆË͵ÄÍæ¼Ò»º´æÊý¾ÝΪ¿Õ! playerID=%sRãiRÌRÓRÆ( R}RIRRJRoRt__updCacheBufferToCacheObjRýR±R²Rä( RkRþR+RŸR RgRãt viewPlayerIDR˜RÌRÓRÆRÑ((sZE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerViewCache.pyR°Ds4
 
 cCsry8tjƒtj|ƒdkr7tjd|ƒdSWntjd|ƒdSXtj|krtjd|tjfƒdSi|_tj|_tj|_tj|_tj    |_    tj
|_
tj |_ tj |_ tj |_ tj|_xutdtdƒD]`}ttd|ƒ}|s/q
nttd|ƒ}t|d||ƒt|d||ƒq
WtS(Niÿÿÿÿs%Íæ¼Ò»º´æÊý¾ÝreadDataʧ°Ü! playerID=%ss%Íæ¼Ò»º´æÊý¾ÝreadDataÒì³£! playerID=%ssCÍæ¼Ò»º´æÊý¾ÝreadDataºóÍæ¼ÒID²»Ò»ÖÂ! playerID=%s != cachePlayerID=%sisItemDataSize%ss
ItemData%s(t    TempCachetcleartreadDataRtErrLogRRpR¶RµR%R&RbRdR¥R¦R§R¨R©RªR(R+RŸtcacheObjR¾R¿RÀ((sZE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerViewCache.pyRis:
             c
Cså|d}|d}|d}|d}|d}|jddƒ}d}|rª|tjkrstj|d}n tjƒ}t|||ƒrª||gtj|<qªntjƒj    |ƒ}    |    rát
|    |||||ƒndS(NR+RÑRŸRÌRÓRÆi( R}RIRERFR]R^RRR±R²Rä(
RþR»R+RÑRŸRÌRÓRÆRgR˜((sZE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerViewCache.pyRÿŠs"
 
 
 
 
 cCs%|d}|d}t||ƒdS(NR RÑ(tDoPullPlayerViewCache(RþR RÑ((sZE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerViewCache.pyRæ¡s
 
 cCsñtj|ƒsdSt|ƒ}|rmtjd|ƒi|d6|jƒd6|d6}tjtj    |ƒdStj
ƒj |ƒ}|sÊtjd|ƒi|d6dd6|d6}tjtj    |ƒdStjd|ƒt j |d|ƒdS(    Ns!±¾·þÓлº´æÍæ¼ÒÊý¾Ý£¬Ö±½ÓÍÆ¸ø¿ç·þ!R+RŸR s/±¾·þÎÞ»º´æÍæ¼ÒÊý¾ÝÇÒ²»ÔÚÏߣ¬Ö±½Ó»Ø¿ÕÊý¾Ý¸ø¿ç·þ!RTsÍæ¼ÒÔÚÏߵķ¢¸øµØÍ¼Í¬²½»º´æÊý¾Ý!tPullPlayerViewCache(R”RçRoRRJR­R®R¯RR°R±R²RtQueryPlayerResult_PlayerMirror(R+R RgRÁR˜((sZE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerViewCache.pyR¨s" !(5RRRR”RÝRRÔRðRRR R
tCrossRealmPlayerR]RR!RR®RRER>RØR_R)RZR^RRR<RRKRRoRsR‚RšRžR¨RÅRÍRÒRâRÊRäRíRüRêRýR°RRÿRæR(((sZE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerViewCache.pyt<module>sd                                  L        )    
             J            -,                      %    !