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
 ×øgc@s¯ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl!Z!ddl"Z"ddl#Z#ddl$Z$ddl%Z%ddl&Z&ddl'Z'ddl(Z(ddl)Z)ddl*Z*ddl+Z+ddl,Z,ddl-Z-ddl.Z.ddl/Z/ddl0Z0ddl1Z1ddl2Z2ddl3Z3ddl4Z4ddl5Z5ddl6Z6ddl7Z7ddl8Z8ddl9Z9ddl:Z:ddl;Z;ddl<Z<ddl=Z=ddl>Z>dd3d„ƒYZ?d„Z@d„ZAd„ZBd„ZCd„ZDd    „ZEd
„ZFd „ZGd „ZHd „ZId„ZJdd„ZLd„ZMd„ZNd„ZOd„ZPd„ZQd„ZRd„ZSd„ZTd„ZUd„ZVd„ZWd„ZXdd„ZYd„ZZd„Z[d „Z\d!„Z]d"„Z^d#„Z_d$„Z`d%„Zad&„Zbd'„Zcd(„Zdd)„Zed*„Zfd+„Zgd,„Zhd-„Zid.„Zjd/„Zkd0„Zld1„Zmd2„ZndS(4iÿÿÿÿNtOnlinePlayerMgrcBsSeZdZd„Zd„Zd„Zd„Zd„Zdd„Zd    d„Z
RS(
s“ ÔÚÏßÍæ¼Ò¹ÜÀí£¬×Ó·þ¿ç·þͨÓÃ
            ×¢£º¿ç·þ·þÎñÆ÷ʱ£¬Íæ¼Ò²»Ò»¶¨ÔÚ¿ç·þ·þÎñÆ÷£¬Ö»ÊDZíʾÓÐͬ²½µ½¿ç·þ·þÎñÆ÷µÄÔÚÏßÍæ¼Ò£¬ÇÒ²»ÊÇËùÓÐÍæ¼Ò¶¼ÓÐͬ²½
    cCs i|_dS(N(tonlinePlayerDict(tself((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyt__init__^s    cCs ||jkS(N(R(RtplayerID((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pytIsOnlinebscCs|jj|dƒS(Ni(Rtget(RR((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pytGetOLPlayerServerGroupIDdscCs||j|<dS(N(R(RRt serverGroupID((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyt __SetOnlinefs cCs|jj|dƒdS(N(RtpoptNone(RRR((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyt __SetOfflinejsicCs-|r|j||ƒn|j||ƒdS(N(t_OnlinePlayerMgr__SetOnlinet_OnlinePlayerMgr__SetOffline(RRtisOnlineR((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pytSetOnlineStatenscCs8||jkrdSd}|r4|jr4|j}n|S(Nii(RtOffTime(RRt    viewCachet offlineValue((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pytGetOfflineValueus  N( t__name__t
__module__t__doc__RRRR RRR R(((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyRYs                     cCs.tj}|dkr*tƒ}|t_n|S(N(t
PyGameDatatg_onlinePlayerMgrR R(tmgr((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pytGetOnlinePlayerMgr~s
          cCs&|jƒ}|r"tj|ƒndS(N(tGetTeamt
PlayerTeamtSync_TeamMemberInfo(t    curPlayertcurTeam((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pytDoRefreshMainServerRole‡s cCsgtjƒj|ƒ}yt||ƒWn:|jtjƒddl}tjd|j    ƒƒnXdS(NiÿÿÿÿsÍæ¼ÒÉÏÏßÂß¼­´íÎó
%s(
t    GameWorldtGetPlayerManagertGetPlayerByIndext__Func_PlayerLogintKicktIPY_PlayerDefinetdisWaitForPlayerLoinErrort    tracebacktRaiseExceptiont
format_exc(tindexttickRR)((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyt PlayerLogin”s cCs~tjd|jƒ|jƒƒ|jtj|jƒƒt||ƒt||ƒt    j
||ƒt ||ƒ|j ƒdS(Ns__Func_PlayerLogin mapID=%s( R"tLogtGetMapIDt GetPlayerIDtSetDicttChConfigtDef_PDict_LoginMapIDtInitPlayerOnLineTimetInitPlayerOnLineReplytGameDataRecordtPlayerLoginRecordt__DoPlayerLoginServertMapServer_InitOK(RR-((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyR%¤s    
cCsËtjƒrtj|ƒdStj||ƒtj||ƒt|ƒt    j
|ƒt j |ƒsÇt j
||ƒtj|ƒtj|ƒtj
|ƒtj
|ƒt||ƒtj
|ƒtj
|ƒtj|ƒtj
|ƒtj
|ƒtj
|ƒtj
|ƒtj|ƒtj |ƒtj!|ƒt"j
|ƒ|j#ƒt$j%|j&ƒ<t'j
|ƒt(j
|ƒt)j
|ƒt*j
|ƒt+j|ƒtj
|ƒt,j
|ƒt-j
|ƒndS(s2 Íæ¼ÒµÇ¼ÐèÒª´¦ÀíµÄÄÚÈÝ£¬±¾·þ¼°¿ç·þ·þÎñÆ÷·Ö¿ª
    N(.R"t IsCrossServert PlayerAssisttOnPlayerLoginCrossServert PlayerFamilytPlayerLoginRefreshFamilyRtOnPlayerLoginRefreshTeamt __UpdOnedayJobPlayerLoginoffTimetCrossRealmPlayert OnPlayerLogint PlayerControltGetIsTJGt PlayerFriendtGMCommontSendBroadCastToClientt PlayerTrucktSyncPlayerTruckStartTimet PlayerBourset AuctionHouset__CheckWorldNotifyOnLogintPlayerFamilyRedPackettPlayerFamilyPartyt
PlayerXMZZt OnXMZZOnLogint PlayerLVAwardt PlayerStoret GameWorldBosst PlayerDuJietPlayerFamilySWRHtOnLogint
PlayerTalkt LoginChatMitNotifyTalkCachetGameWorldActionControltGetLVRtg_todayPlayerLVDicttGetIDtGameWorldArenat CrossRealmPKtCrossLuckyCloudBuytPlayerZhuXianBosstPlayerHorsePetBosstGameWorldSkyTowertGameWorldMineArea(RR-((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyR9´sF  
                        cCs!|d}tjd||jƒƒtjƒr4dS|jƒtj|jƒ<tj|ƒsþt    j
|ƒt j |ƒt j |ƒtj |ƒtj |ƒtj ||ƒtj |ƒtj |ƒtj |ƒtj |ƒtj |ƒt|tƒn|rt j|ƒndt_dS(sÿ Íæ¼Ò×îÖյǼ³É¹¦´¦Àí£¬ ÓÉ  MapServer  DoPlayerRealLoginOK  Í¨Öª
        ¸Ãº¯ÊýΪµØÍ¼×îÖյǼ³É¹¦²Å»áÖ´Ðе½£¬ÒÔºóһЩ¹¦ÄÜÀàµÄµÇ¼´¦Àí½¨Òé¾ùдµ½ÕâÀï
        ¾ÉµÄ¹¦ÄÜÏȲ»¶¯( __DoPlayerLoginServer º¯ÊýÖеŦÄÜ)£¬Èç¹ûÓеǼÏà¹ØµÄbugÔÙ¿¼ÂÇÊÇ·ñÒÆ¶¯µ½´Ëº¯Êý
    is9GameServer->DoPlayerRealLoginOK, isMixServerFirstLogin=%sNi(R"R/R1R;tGetAccIDRtg_dbPlayerIDMapRDREtPlayerFamilyBossRWt PlayerCharmRCt
PlayerLovet GameWorshiptCrossBattlefieldtCrossChampionshiptCrossFamilyGCZtCrossActAllRechargetCrossYaomoBosst PlayerRecDatatPlayerPackDatat__OnPlayerOnlineStateChangetTruetOnMixServerFirstLogintg_noPlayerLoginWarningMailState(RtloginMsgR-tisMixServerFirstLogin((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pytDoPlayerRealLoginOK s,
               cCs^|jƒ}|jƒ}|tjkr7itj|<ntj|}ttjƒƒ||<dS(N(tGetJobR1Rt!g_onedayJobPlayerLoginoffTimeDicttintttime(RtjobRtplayerLoginoffTimeDict((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyRA7s   cCs”d}ttjƒƒ}tjƒ}xitjjƒD]X}xO|jƒD]A\}}|j|ƒrhqGn|||krG|j    |ƒqGqGWq4WdS(Niii€Q(
R|R}R"R#RR{tvaluestitemstFindPlayerByIDR
(tmaxTimetcurTimet playerManagert
playerDictRt loginoffTime((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyt#CheckOnedayJobPlayerLoginoffTimeoutBs cCs«tjƒrdStjddƒ}|jƒ|kr8dStjddƒ}t|ƒ}|rl||krldStjdƒ}d}x#|D]\}}t|tƒr}|t    j
kr¸qˆntj ƒj |ƒ}    |    sÙqˆn|    j ƒ}
t|ƒ} x‰td| ƒD]u} | dks| |
kr%qn| d} | |krAqn|    j| ƒ}|jƒ|jƒkr|| }PqqWn|rˆtjd||jƒgƒPqˆqˆWdS(NtBillBoardPlayerLoginNotifyiitii(R"R;t IpyGameDataPYt
GetFuncCfgR\tGetPlayerLeaveServerSecondtGetFuncEvalCfgt
isinstanceR|t ShareDefinetBillboardTypeListt GetBillboardt FindBillboardtGetCounttmaxtrangetAtR^RDt WorldNotifytGetName(RR-tlimitLVtnotifyCDt
LogoffTimetnotifyCheckListtmsgMarkt    checkMarkt
notifyDictt    billboardt billboardCnttmaxOrderR,tordert objBillboard((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyRMXsD    
 
 cCsp|jƒ}|dks$|dkr(dStj|ƒ}tjtjƒƒ}||}|jddd|jS(NRŠt0iii<(t GetLogoffTimeR"tGetDateTimeByStrtGetCurrentDataTimeStrtdaystseconds(Rt logoffTimeStrt
logoffTimet    loginTimet    diff_Time((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyRs 
cCs7tj|ƒ}|sdSt||ƒt||ƒdS(N(R"t GetUserDatatActivateAccountAwardtSyncOPPlayerLoginInfo(RtcurPlayerUserData((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pytDoLogic_LoginUserData¡s   cCsv|jƒ}|s|Syt|ƒ}Wntjd|ƒ|SXt|tƒsftjd|ƒ|S|j||ƒS(Nsdata error UserData = %sstype error UserData = %s(R°tevalR"tErrLogRtdictR(RtkeytdefaulttplayerUserDataStrR³((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pytGetUserDataByKey³s c    Csh|jddƒdkr£t|jddƒƒ}|jd|ƒd|t|jddƒƒt|jddƒƒt|jd    dƒƒt|jd
dƒƒg}n*t|jd
dƒƒ|jd dƒg}tj|jd d ƒƒ}|jtj|ƒ|jddƒ}|s(|jddƒ}ntj|jdd ƒƒ}|j|||gƒ|dkrÉ|jt|jddƒƒt|jddƒƒt|jddƒƒt|jddƒƒgƒnp|d kr9|jt|jddƒƒt|jddƒƒt|jddƒƒt|jddƒƒgƒnt|ƒ}|j    ddd|t
|ƒƒdS(!NtagentRŠtxunleitisvipit    XunLeiVIPtviplevelt    isgoldvipt    goldlevelt
clienttypet channel_codetpidR¦tpftplatformtqidtypetqzonetpengyoutqplust    is_yellowtis_year_yellowtis_high_yellowt yellow_leveltqqgamet3366tis_bluet is_year_bluet is_high_bluet
blue_levelt    LoginData(RÉRÊRË(RÐRÑ( RR|R2R"tToIntDefR3tDef_PlayerKey_PlayerFromPIDtextendtstrtMapServer_QueryPlayerResulttlen(RtuserDictR¾tresultRÅRÇt account_type((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyR²Ïs,03* 04 04 cCsF|jdƒsdSt|dƒ}|jddd|t|ƒƒdS(Nt activateTypeit ActivateAward(thas_keyRÚRÛRÜ(RRÝtmsg((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyR±öscCs!dS|jƒ}|sdSt|ƒ}tjdt|ƒ|fƒ|s^tjd|ƒdSy.t|dddƒ}|ddd}Wntk
r­tjdƒdSX|sÉtjd|ƒdS|rtj|ƒsótjd    |ƒdStt    j
t    j |d
ƒƒƒ}nd }dS( Nstype=%s, curPlayerUserData=%ssnot curPlayerUserData=%stdataRÞtagetendtimes curPlayerAge or endTime ##Error!scurPlayerAge:%s not ##Error!sendTime:%s Format ##Error!s%Y-%m-%d %H:%M:%Si( R°RµR"R/ttypeR|t BaseExceptionR¶R¨R}tmktimetstrptime(RRºR³t curPlayerAgetendTime((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pytNotifyGameWallowInfos2    $    c    CsÛ|jƒ}|sdS|jƒ}|j|ƒ}|sLtjd|ƒdStj|ƒ}|svtjd|ƒdSd}|jƒtjkršd}nd}tj    ƒj
|t j ||||t |ƒ|jƒƒdS(Ns'ˢмÒ×åÊôÐÔʧ°Ü, ¼Ò×å³ÉÔ±²éÕÒÒì³£ = %ss0ˢмÒ×åÊôÐÔʧ°Ü, ¼Ò×å³ÉÔ±²éÕÒÒì³£ tagMapID = %sR¦t1tRefresh_Family_Info(t    GetFamilyR1t
FindMemberR"R¶tGetQueryPlayerMapIDt GetFamilyLVtIPY_GameServert    fmlLeaderR#tMapServer_QueryPlayerR3t queryType_sqtRefresh_Family_InfoRÜtGetRouteServerIndex(Rt    curFamilyRt    curMemberttagMapIDtsendCMDt queryCallName((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyt__RefreshFamilyToMapServer6s&      "cCs|j|ƒdS(N(t SetLoginTick(RR-((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyR5\s cCs|jdƒ|jdƒdS(Ni(tSetOnlineReplyErrorCounttSetOnlineReplyTick(RR-((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyR6es  cCsatjƒj|ƒ}yt||ƒWn*ddl}tjd|jƒƒnX|jƒdS(NiÿÿÿÿsÍæ¼ÒÏÂÏßÂß¼­´íÎó
%s(R"R#R$t__Func_PlayerDisconnectR)R*R+t DoDisconnect(R,R-RR)((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pytPlayerDisconnectos 
cCsãtjƒrtj|ƒdStj||ƒtj||ƒtj    ||ƒt
|ƒt |ƒt j |ƒtj|ƒtj|ƒtj|ƒsß|jƒ}ttjƒƒtj|<tjj|dƒt|tƒndS(N(R"R;tPlayerFBtOnPlayerDisconnectCrossServerRtDoPlayerLogOffTeamLogicR>tPlayerLogoffRefreshFamilyRFtOnPlayerDisconnectRAtSetPlayerOfflineTimeRLtOnPlayerLeaveServerR<t OnLeaveServerRNRDRER1R|R}Rtg_unTJLogoffTimetg_xiangongCanLikeTimeDictR
R RstFalse(RR-R((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyRs"  
 
    cCs¡tj|ƒrdS|jƒ}tƒ}|j||ƒtjddƒ}|jƒ|kr`dStj    |ƒ}i|d6|d6|d6}t
j t j |ƒdS(Nt CrossSyncSetiRRt    cacheBase(RDRER1RRR‹RŒR\tPlayerViewCachetGetSyncCrossCacheBaset CrossRealmMsgtSendMsgToCrossServerRtClientServerMsg_PlayerLoginout(RRRtolMgrtsyncLVRtdataMsg((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyRs s     c    Csä|d}|d}|d}| }tƒ}|j|||jddƒƒtj|||ƒtj|dƒ}|rÖi|d6dd6dd    6}tjt    j
||gƒt j |||ƒt j |||ƒnt|ƒdS(
NRRRt ServerGroupIDitAccIDitViewCacheCrosst PackDataCross(RRRRtUpdCrossCacheBaseR"tGetAccIDServerIDRtSendMsgToClientServerRt"CrossServerMsg_PlayerPackDataStatet GameXiangongtOnPlayerLogin_CrossLogicRnt)SyncCrossPlayerOnlineStateToRelatedPlayer(    RtmsgDataRRRtisLogoutRtserverIDt syncStateInfo((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyR·s
 
 
    
c    Csñg}tjƒ}|j|ƒ}xE|jƒD]7\}}|j|ƒ}|sUq.n||jƒ7}q.Wtt|ƒƒ}||kr—|j|ƒn|s¡dSt    ƒj
|t j |ƒƒ}i|d6|d6|d6}t jtj|ƒdS(NtloginoutPlayerIDRtrelatedPlayerIDList(t PyDataManagertGetDBPyFuncTeamManagertGetPlayerTeamIDDictRt GetFuncTeamtGetMemberIDListtlisttsettremoveRRRt FindViewCacheRR RtCrossServerMsg_PlayerLoginout(    RR*t funcTeamMgrtplayerTeamIDDictt_tteamIDtfuncTeamRR((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyR$Ös"  cCs5|d}|d}|d}t|||dƒdS(NR)RR*i(tSyncRelatedPlayerOnlineState(R%R)RR*((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyR4òs
 
 
 
icCs¥d}tjƒ}xŒ|D]„}tj|ƒs4qn|j|ƒ}| s|jƒ r]qn|stjƒ}||_    ||_
||_ nt j ||ƒqWdS(N(R R"R#RDtGetDBPlayerAccIDByIDR‚t    GetInitOKtChPyNetSendPackttagGCRelatedPlayerOnlineStatetPlayerIDt OfflineValuetIsCrosst NetPackCommont SendFakePack(R)RR*tisCrosst
clientPackt    playerMgrRR((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyR:ús            cCsx|jƒ}|jƒ}|s"dS|j|ƒ}tjƒ}tj|tjƒ}t    tj
|ƒƒ}|j |ƒdS(N( R1RðRñR"R©R}RêR3tTYPE_Time_FormatR|Rét
SetExattr2(Rt curPlayerIDRùRút
curTimeStrt curTimeTuplet
curTimeNum((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyR
s   cCsdS(N((RR-((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pytTruckPlayerDisconnectProcess%s    cCs8tjƒj|ƒ}tjƒ}|j|jƒƒdS(N(R"R#R$RôtIPY_GRefreshPlayerNametSetNameR™(R,R-RtplayerNamePack((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyt RefreshName5s cCs?tjƒj|ƒ}|dkr6tjd|ƒdStjƒ}|jƒ}|jƒ}|j    ƒ}|t
j kr‰t j ||ƒdS|t
jkr¬t j||ƒdS|t
jkrÏt j||ƒdS|tjkròt j||ƒdS|tjkrt j||ƒdS|tjkr8tj||ƒdS|tjkr[|j||ƒdS|tjkr~tj||ƒdS|tjkr¡t j||ƒdS|tj krë|j!|ƒ|j"ƒ}|t#j$kré|t#j$|<qénþ|tj%kr5||j&ƒkr%t'j(||j&ƒƒn|j)|ƒn´|tj*krT|j+|ƒn•|tj,kr€|j-|ƒt.||ƒni|tj/krŸ|j0|ƒnJ|tj1kr¾|j2|ƒn+|tj3krãt j4||t5ƒn|tj6kr|j7|ƒnç|tj8kr$t j9||ƒnÅ|tj:krFt j;||ƒn£|tj<kre|j=|ƒn„|tj>kr‘|j?|ƒt'j@|ƒnX|tjAkr½|jB|ƒt'jC|ƒn,|tjDkré|jE|ƒt'jF|ƒntGjH|j"ƒ||ƒtjI||||ƒtjJ||ƒtKjL|||ƒdS(Ns'RefreshState, index = %d, player = None(MR"R#R$R R/RôtIPY_GRefreshPlayerPropertytGetValuet
GetValueExtGetTypeRtCDBPlayerRefresh_ForbidenTalkRDtSetGMForbidenTalktCDBPlayerRefresh_ExAttr17tSetPlayerAccStatetCDBPlayerRefresh_ExAttr19tSetLeaveFamilyTimeExtCDBPlayerRefresh_StatetSetIsTJGtCDBPlayerRefresh_HappyPointt
SetTJGTimet"CDBPlayerRefresh_FamilyActiveValueR>tReFreshPlayerFamilyActiveValuetCDBPlayerRefresh_FightPowert SetFightPowertCDBPlayerRefresh_ExAttr2RtSetTeamCheckStatetCDBPlayerRefresh_ExAttr3tSetFBFuncLineIDtCDBPlayerRefresh_LVtSetLVR^RR]tCDBPlayerRefresh_JobRztPlayerBillboardtDelJobFightPowerBillboardtSetJobtCDBPlayerRefresh_MapIDtSetMapIDtCDBPlayerRefresh_RealMapIDt SetRealMapIDtOnPlayerChangeRealMaptCDBPlayerRefresh_FBIDtSetFBIDtCDBPlayerRefresh_VIPLvtSetVIPLvtCDBPlayerRefresh_ExAttr5t SetCrossMapIDRtCDBPlayerRefresh_ExAttr9t
SetExAttr9tCDBPlayerRefresh_ExAttr10tSetChatBubbleBoxtCDBPlayerRefresh_ExAttr13tSetPlayerServerGroupIDtCDBPlayerRefresh_OperateInfotSetOperateInfotCDBPlayerRefresh_OfficialRanktSetOfficialRanktUpdateBillboardRealmtCDBPlayerRefresh_FacetSetFacetUpdateBillboardFacetCDBPlayerRefresh_HairColort
SetFacePictUpdateBillboardFacePict PlayerSocialtUpdateSocialInfotPlayerTeamMemberRefresht PlayerRefreshtPlayerFBHelpBattlet UpdateCheckInPlayerInfoByRefresh(R,R-RtplayerStatePackt    packValuet packValueExtpackTypeR((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyt RefreshState@sš           cCs“|jƒsdStjd|jƒ|jƒ|jƒf|jƒƒtj||ƒt    j|ƒt
j||ƒt j||ƒt j|ƒdS(NsÍæ¼Ò : %s,%s,FBID=%s Çл»µØÍ¼( R<R"R/R™t GetRealMapIDtGetFBIDR1RtOnPlayerChangeMapRTR>ROtGameWorldFamilyWar(RR-((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyR—Çs 5  cCst||ƒdS(N(R—(RR-((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyRrÚs cCstS(N(Rt(R,R-((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pytPlayerOnlineReplyêscCsŸtjd|jƒ|jƒ|jƒ|jƒf|jƒƒtjƒrZtj    |ƒnt
j ||ƒt j |ƒ|jtƒtj|ƒt|ƒdS(Ns(%s µÇ¼, accID = %s, IP = %s, MapID = %s(R"R/R™RftGetIPR•R1R;RtPlayerLoginLoadCrossMapOKRtOnPlayerReadMapOKtPlayerEventCountertUpdatePlayerLoginTimet    SetInitOKRttGMShellRCRþ(RR-((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pytPlayerLoginLoadMapOKs>        
cCsÀtjƒj|ƒ}tjƒ}|jƒdkrD|jtƒdS|jƒspt    ||ƒt
j ||ƒn|j ƒr‰|j ƒn|jtƒtj||ƒtjd|jƒƒdS(NisÍæ¼Ò¿ªÊ¼µØÍ¼³õʼ»¯¶¯×÷(R"R#R$RôtIPY_GPlayerLoadMapt GetLoadStatet SetIsLoadMapRtR<R¡tUpdatePlayerNamet$PlayerLoadMapRedressUpdatePlayerNamet GetIsLoadMaptMapServer_GameServerRefreshOKRRGtDoLogic_GMForbidIPR/R1(R,R-Rtpack((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pytPlayerLoadMapState:s       cCs%tjƒ}tj}|jƒxdt|jƒƒD]P}|j|ƒ}|jƒdkro|j    |j
ƒƒq2|j |j ƒƒq2W|j ƒ}|dkrÁtjƒj||j ƒ|ƒdS|jƒdkrütjƒj|jƒ|j ƒ|ƒdStjƒj|jƒ|j ƒ|ƒdS(Ni(RôtIPY_GWorldNotifyCodeRDtNotifyCodeListtClearR–t GetParCounttGetParstGetLentAddIntt    GetMsgInttAddStrtGetMsgt GetFamilyIDR"R#tFamilyNotifyCodet    GetLineIDtCountryNotifyCodet
GetCountrytLineNotifyCodet GetRouteIndex(R,R-RªtnotifyCodeListtit    notifyMsgtfamilyID((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyR˜ds"     
  %%c     Cs    tjƒj|ƒ}|j}|j}tjƒ}|tjkr¿tjj    |iƒ}|sl||g}nBdg}    i}
x$|D]} |j    | |    ƒ|
| <q‚W||
g}t
||ƒdSt ||gƒ} |j |j ƒdd|d| t| ƒ|jƒƒdS(NitFBLinePlayerCnt(R"R#R$tMapIDt
LineIDListR3tDef_CrossMapIDListRt g_crossFBFuncLinePlayerCountInfoRtQueryFBLinePlayerCntResultRÚRöR1RÜRø( R,t
clientDataR-Rt
queryMapIDtqueryFBLineIDListR…tfbLinePlayerInfoDictt
resultInfot defaultInfotqueryFBLineInfotlineIDRü((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pytClinetQueryFBLinePlayerCnt—s&                cCs|s
dS|sdSt|ƒdkr*dS|\}}tjƒ}||_g|_x™|jƒD]‹\}}tjƒ}|jƒ||_|rœ|dnd|_    t|ƒdkrÁ|dnd|_
t|j
ƒ|_ |jj |ƒqaWt|jƒ|_ tj||ƒdS(NiiiRŠ(RÜR=ttagGCFBLinePlayerCntRÂtFBLineInfoListRttagGCFBLineInfoR®tFBLineIDt    PlayerCnttExtraStrt ExtraStrLentappendtCountRBRC(RRËRûtfbLinePlayerCntDictt
fblinePackRÎtinfoListt mapLineState((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyRƯs*           
    %cCsWtjƒj|ƒ}|j}tjddƒ}i}tjƒjƒ}|jƒ}xCt    |ƒD]5}    |j
|    ƒ}
|
j ƒ} xt    | ƒD]} |
j | ƒ} | j ƒ}|dkrÎ||krÎqn| jƒ}||krüt|||ƒ}n|j|gggƒ\}}xUt    |ƒD]G}| j|ƒ}|jƒ}|jƒ}|j|ƒ|j|ƒq'W||g||<|dkrPqqWqaWtjƒ}|jƒg|_xu|jƒD]g\}}tjƒ}|jƒ||_|d|_|d|_t|jƒ|_|jj|ƒqÆWt|jƒ|_t j!||ƒdS(NtMapLineii("R"R#R$RÂR‹RŽt GetGameWorldtGetMapServerStateManagertGetZoneServerCnttxrangetGetZoneServerByIndext GetMapCounttGetMapServerStateByIndexR0t GetLineCounttminRtGetLineByIndextGetCurPlayerCnttGetMaxPlayerCntR×R=ttagGCPyServerMapStateR®t MapStateListRttagGCPyServerMapLineStatetLineCurPlayerCntListtLineMaxPlayerCntListRÜtLineCnttMapCountRBRC(R,RÇR-RRÈt mapLineDictt mapPlayerDicttmapServerStateManagerRàt    zoneIndextZoneServerStatetmapCntR¾tMapServerStatetmapIDtlineCnttcurPlayerCntListtmaxPlayerCntListt    lineIndextMapServerLineStatet curPlayerCntt maxPlayerCntt mapStatePackt playerCntListRÜ((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pytClientQueryLineStateÎsR               
     
      cCsdS(N((R,R-((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pytMapServer_GetLineStates)cCsStjƒj|ƒ}||jdƒtjkr5dS|jƒ|jd|ƒdS(Nt ShowFbEvent(R"R#R$t GetDictByKeyR3tDef_Show_Fb_Event_TicktSync_GameFbEventR2(R,R-R((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyR5s
 
cCsßtjƒ}|j|ƒ}tjƒ}||jtjƒtjtjkratj    |dƒdS|j
tj|ƒt j ƒ}|j |jƒƒ}|s¯tj    |dƒdS|j|t|jƒƒƒtj    |dƒdS(NtSpeech_Lost_FrequentlytSpeech_Lost_NoLinetSpeech_Success(R"R#R$RÞt GetTickByTypeR3tTYPE_ImpeachTicktTYPE_Tick_TimeRDt
NotifyCodet SetTickByTypeRôt IPY_CImpeachR‚R1t ImpeachPlayerRÚtGetTalk(R,R-R…Rt    gameWorldRªt    tagPlayer((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pytImpeachUs  & cCs&tjƒj|ƒ}t||ƒdS(N(R"R#R$tSync_PyServerDataTimeToClient(R,RÇR-R((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pytClientRequestServerTimets cCs£tjƒ}|sdStjƒ}|jƒ|j|_|j|_|j    |_
|j |_ |j |_|j|_|j|_tjƒ|_tj||ƒdS(N(R"t GetServerTimeR=ttagServerDateTimeR®tyeartYeartmonthtMonthtdaytDaythourtHourtminutetMinutetsecondtSecondt microsecondt    MicSecondtGetCrossServerTimeStrtCrossServerTimeRBRC(RR-t
serverTimetserverDateTime((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyR~s  
       cCsžtjt_it_tjƒ}xvt|jƒƒD]b}|j|ƒ}|dks4|j    ƒ rhq4nt
j |ƒr}q4n|j ƒtj|j ƒ<q4WdS(N(RR]tg_yesterdayPlayerLVDictR"R#RátGetActivePlayerCounttGetActivePlayerAtR R<RDRER\R^(R…R¾R((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pytUpdataPlayerLVInfo“s      cCsçtjƒ}|jtjƒ}|jƒ}x<t|ƒD].}|j|ƒ}|jƒt    j
|j ƒ<q7W|jtj ƒ}|jƒ}x<t|ƒD].}|j|ƒ}|jƒt    j |j ƒ<q”Wtjdt    j
t    j fƒdS(NsV    ·þÎñÆ÷¿ªÆôʱ¼ÓÔØ»îÔ¾Íæ¼ÒµÈ¼¶ÐÅÏ¢g_todayPlayerLVDict=%s, g_yesterdayPlayerLVDict=%s(R"tGetUniversalRecMgrt GetTypeListRt*Def_UniversalGameRecType_TodayPlayerLVInfoRØRáR—t    GetValue2RR]t    GetValue1t.Def_UniversalGameRecType_YesterdayPlayerLVInfoR,tDebugLog(tuniversalRecMgrt recDataListtallCntR,trecData((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pytLoadPlayerLVData¡s   cCsìtjƒjtjƒtjƒjtjƒtjƒ}|jtjƒ}xCtjj    ƒD]2\}}|j
ƒ}|j |ƒ|j |ƒqZW|jtjƒ}xCtj j    ƒD]2\}}|j
ƒ}|j |ƒ|j |ƒq²WdS(N(R"R0tDeleteRR2R5R1RR]RtAddRect    SetValue1t    SetValue2R,(R7R8RtlvR:((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pytSavePlayerLVData³s     ((oR"RôRR3RDR>RRFRGRR}R=RBR7R¥RTRhRKRbRPRIRctPlayerCompensationRNRŠRORkRRRURVR‹RXRSR[R˜RŽRdRR R'R_RaR`RmRLR<RRjRiRBRlRoRpRRtPlayerFuncTeamR+ReRrRqRkR"RnRRR!R.R%R9RyRARˆRMRR´R R»R²R±RíRþR5R6RRRsRR$R4R:R
RMRQR”R—RrR™R¡R«R˜RÏRÆRRRRRRR/R;RA(((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyt<module>sÚ                                                               %                         W    ,             8             '         4    &            
        !                                  ‡            .    "    *    3            7    0