hwj35
2025-03-06 dd6e4b64952f7ec9a93bae9e1aa333021d52859e
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
ϧ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ÿÿÿÿNtOnlinePlayerMgrcBsJeZdZd„Zd„Zd„Zd„Zdd„Zdd„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||j|<dS(N(R(RRt serverGroupID((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyt __SetOnlineds cCs|jj|dƒdS(N(RtpoptNone(RRR((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyt __SetOfflinehsicCs-|r|j||ƒn|j||ƒdS(N(t_OnlinePlayerMgr__SetOnlinet_OnlinePlayerMgr__SetOffline(RRtisOnlineR((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pytSetOnlineStatelscCs8||jkrdSd}|r4|jr4|j}n|S(Nii(RtOffTime(RRt    viewCachet offlineValue((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pytGetOfflineValuess  N(
t__name__t
__module__t__doc__RRR R RR    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.pyR7²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 |ƒt|tƒn|rt j|ƒndt_dS(sÿ Íæ¼Ò×îÖյǼ³É¹¦´¦Àí£¬ ÓÉ  MapServer  DoPlayerRealLoginOK  Í¨Öª
        ¸Ãº¯ÊýΪµØÍ¼×îÖյǼ³É¹¦²Å»áÖ´Ðе½£¬ÒÔºóһЩ¹¦ÄÜÀàµÄµÇ¼´¦Àí½¨Òé¾ùдµ½ÕâÀï
        ¾ÉµÄ¹¦ÄÜÏȲ»¶¯( __DoPlayerLoginServer º¯ÊýÖеŦÄÜ)£¬Èç¹ûÓеǼÏà¹ØµÄbugÔÙ¿¼ÂÇÊÇ·ñÒÆ¶¯µ½´Ëº¯Êý
    is9GameServer->DoPlayerRealLoginOK, isMixServerFirstLogin=%sNi(R R-R/R9tGetAccIDRtg_dbPlayerIDMapRBRCtPlayerFamilyBossRUt PlayerCharmRAt
PlayerLovet GameWorshiptCrossBattlefieldtCrossChampionshiptCrossActAllRechargetCrossYaomoBosst PlayerRecDatatPlayerPackDatat__OnPlayerOnlineStateChangetTruetOnMixServerFirstLogintg_noPlayerLoginWarningMailState(RtloginMsgR+tisMixServerFirstLogin((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pytDoPlayerRealLoginOK
s*
              cCs^|jƒ}|jƒ}|tjkr7itj|<ntj|}ttjƒƒ||<dS(N(tGetJobR/Rt!g_onedayJobPlayerLoginoffTimeDicttintttime(RtjobRtplayerLoginoffTimeDict((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyR?4s   cCs”d}ttjƒƒ}tjƒ}xitjjƒD]X}xO|jƒD]A\}}|j|ƒrhqGn|||krG|j    |ƒqGqGWq4WdS(Niii€Q(
RyRzR R!RRxtvaluestitemstFindPlayerByIDR(tmaxTimetcurTimet playerManagert
playerDictRt loginoffTime((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyt#CheckOnedayJobPlayerLoginoffTimeout?s 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 R9t IpyGameDataPYt
GetFuncCfgRZtGetPlayerLeaveServerSecondtGetFuncEvalCfgt
isinstanceRyt ShareDefinetBillboardTypeListt GetBillboardt FindBillboardtGetCounttmaxtrangetAtR\RBt WorldNotifytGetName(RR+tlimitLVtnotifyCDt
LogoffTimetnotifyCheckListtmsgMarkt    checkMarkt
notifyDictt    billboardt billboardCnttmaxOrderR*tordert objBillboard((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyRKUsD    
 
 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Œtdicttget(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Ï( RµRyR0R tToIntDefR1tDef_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-ttypeRyt BaseExceptionR³R¥Rztmktimetstrptime(RR¸R°t curPlayerAgetendTime((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pytNotifyGameWallowInfoÿs2    $    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    GetFamilyR/t
FindMemberR R³tGetQueryPlayerMapIDt GetFamilyLVtIPY_GameServert    fmlLeaderR!tMapServer_QueryPlayerR1t queryType_sqtRefresh_Family_InfoRÚtGetRouteServerIndex(Rt    curFamilyRt    curMemberttagMapIDtsendCMDt queryCallName((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyt__RefreshFamilyToMapServer3s&      "cCs|j|ƒdS(N(t SetLoginTick(RR+((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyR3Ys cCs|jdƒ|jdƒdS(Ni(tSetOnlineReplyErrorCounttSetOnlineReplyTick(RR+((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyR4bs  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.pytPlayerDisconnectls 
cCsãtjƒrtj|ƒdStj||ƒtj||ƒtj    ||ƒt
|ƒt |ƒt j |ƒtj|ƒtj|ƒtj|ƒsß|jƒ}ttjƒƒtj|<tjj|dƒt|tƒndS(N(R R9tPlayerFBtOnPlayerDisconnectCrossServerRtDoPlayerLogOffTeamLogicR<tPlayerLogoffRefreshFamilyRDtOnPlayerDisconnectR?tSetPlayerOfflineTimeRJtOnPlayerLeaveServerR:t OnLeaveServerRLRBRCR/RyRzRtg_unTJLogoffTimetg_xiangongCanLikeTimeDictRR    RptFalse(RR+R((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyR|s"  
 
    cCs¡tj|ƒrdS|jƒ}tƒ}|j||ƒtjddƒ}|jƒ|kr`dStj    |ƒ}i|d6|d6|d6}t
j t j |ƒdS(Nt CrossSyncSetiRR t    cacheBase(RBRCR/RRRˆR‰RZtPlayerViewCachetGetSyncCrossCacheBaset CrossRealmMsgtSendMsgToCrossServerRtClientServerMsg_PlayerLoginout(RR RtolMgrtsyncLVRtdataMsg((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyRpžs     c    CsÑ|d}|d}|d}| }tƒ}|j|||jddƒƒtj|||ƒtj|dƒ}|rÃi|d6dd6dd    6}tjt    j
||gƒt j |||ƒnt |ƒdS(
NRR Rt ServerGroupIDitAccIDitViewCacheCrosst PackDataCross(RRRµRtUpdCrossCacheBaseR tGetAccIDServerIDRtSendMsgToClientServerRt"CrossServerMsg_PlayerPackDataStatet GameXiangongtOnPlayerLogin_CrossLogict)SyncCrossPlayerOnlineStateToRelatedPlayer(    RtmsgDataRR RtisLogoutRtserverIDt 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 FindViewCacheRRR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.pyR2îs
 
 
 
icCs¥d}tjƒ}xŒ|D]„}tj|ƒs4qn|j|ƒ}| s|jƒ r]qn|stjƒ}||_    ||_
||_ nt j ||ƒqWdS(N(R    R R!RBtGetDBPlayerAccIDByIDRt    GetInitOKtChPyNetSendPackttagGCRelatedPlayerOnlineStatetPlayerIDt OfflineValuetIsCrosst NetPackCommont SendFakePack(R'RR(tisCrosst
clientPackt    playerMgrRR((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyR8ös            cCsx|jƒ}|jƒ}|s"dS|j|ƒ}tjƒ}tj|tjƒ}t    tj
|ƒƒ}|j |ƒdS(N( R/RîRïR R¦RzRèR1tTYPE_Time_FormatRyRç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 RefreshName1s 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_ForbidenTalkRBtSetGMForbidenTalktCDBPlayerRefresh_ExAttr17tSetPlayerAccStatetCDBPlayerRefresh_ExAttr19tSetLeaveFamilyTimeExtCDBPlayerRefresh_StatetSetIsTJGtCDBPlayerRefresh_HappyPointt
SetTJGTimet"CDBPlayerRefresh_FamilyActiveValueR<tReFreshPlayerFamilyActiveValuetCDBPlayerRefresh_FightPowert SetFightPowertCDBPlayerRefresh_ExAttr2RtSetTeamCheckStatetCDBPlayerRefresh_ExAttr3tSetFBFuncLineIDtCDBPlayerRefresh_LVtSetLVR\RR[tCDBPlayerRefresh_JobRwtPlayerBillboardtDelJobFightPowerBillboardtSetJobtCDBPlayerRefresh_MapIDtSetMapIDtCDBPlayerRefresh_RealMapIDt SetRealMapIDtOnPlayerChangeRealMaptCDBPlayerRefresh_FBIDtSetFBIDtCDBPlayerRefresh_VIPLvtSetVIPLvtCDBPlayerRefresh_ExAttr5t SetCrossMapIDR tCDBPlayerRefresh_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 GetRealMapIDtGetFBIDR/RtOnPlayerChangeMapRRR<RMtGameWorldFamilyWar(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.pyRpÖs cCstS(N(Rq(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–RdtGetIPR“R/R9RtPlayerLoginLoadCrossMapOKRtOnPlayerReadMapOKtPlayerEventCountertUpdatePlayerLoginTimet    SetInitOKRqtGMShellRARü(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 SetIsLoadMapRqR:RŸtUpdatePlayerNamet$PlayerLoadMapRedressUpdatePlayerNamet GetIsLoadMaptMapServer_GameServerRefreshOKR REtDoLogic_GMForbidIPR-R/(R*R+Rtpack((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pytPlayerLoadMapState6s       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_GWorldNotifyCodeRBtNotifyCodeListtClearR“t GetParCounttGetParstGetLentAddIntt    GetMsgInttAddStrtGetMsgt GetFamilyIDR R!tFamilyNotifyCodet    GetLineIDtCountryNotifyCodet
GetCountrytLineNotifyCodet GetRouteIndex(R*R+R¨tnotifyCodeListtit    notifyMsgtfamilyID((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyR•`s"     
  %%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
LineIDListR1tDef_CrossMapIDListRt g_crossFBFuncLinePlayerCountInfoRµtQueryFBLinePlayerCntResultRØRôR/RÚ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 ExtraStrLentappendtCountR@RA(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 GetMapCounttGetMapServerStateByIndexR.t GetLineCounttminRµtGetLineByIndextGetCurPlayerCnttGetMaxPlayerCntRÕR;ttagGCPyServerMapStateR¬t MapStateListR~ttagGCPyServerMapLineStatetLineCurPlayerCntListtLineMaxPlayerCntListRÚtLineCnttMapCountR@RA(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 GetDictByKeyR1tDef_Show_Fb_Event_TicktSync_GameFbEventR0(R*R+R((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyR1s
 
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 GetTickByTypeR1tTYPE_ImpeachTicktTYPE_Tick_TimeRBt
NotifyCodet SetTickByTypeRòt IPY_CImpeachRR/t ImpeachPlayerRØtGetTalk(R*R+R‚Rt    gameWorldR¨t    tagPlayer((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pytImpeachQs  & cCs&tjƒj|ƒ}t||ƒdS(N(R R!R"tSync_PyServerDataTimeToClient(R*RÅR+R((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pytClientRequestServerTimeps cCs£tjƒ}|sdStjƒ}|jƒ|j|_|j|_|j    |_
|j |_ |j |_|j|_|j|_tjƒ|_tj||ƒdS(N(R t GetServerTimeR;ttagServerDateTimeR¬tyeartYeartmonthtMonthtdaytDaythourtHourtminutetMinutetsecondtSecondt microsecondt    MicSecondtGetCrossServerTimeStrtCrossServerTimeR@RA(RR+t
serverTimetserverDateTime((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyRzs  
       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:RBRCRZR\(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 R.tDeleteRR0R3R/RR[R~tAddRect    SetValue1t    SetValue2R*(R5R6RtlvR8((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pytSavePlayerLVData¯s     ((oR RòRR1RBR<R›RDRERRzR;R@R5R£RRRfRIR`RNRGRatPlayerCompensationRLRˆRMRiRPRSRTRˆRVt PlayerGeTuiRQRYR–RŒRbRRžR%R]R_R^RkRJR:RRhRgR@RjRlRmRRtPlayerFuncTeamR)RcRoRnRiR RRRR,R#R7RvR?R…RKRŠR±R    R¹R¯R®RëRüR3R4RRRpRR"R2R8RRKROR’R•RpR—RŸR©R•RÍRÄRRRRRRR-R9R?(((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyt<module>sÚ                                                               #                         X    *             8             '         4    &            
        "                                  ‡            .    "    *    3            7    0