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=dd3d„ƒYZ>d„Z?d„Z@d„ZAd„ZBd„ZCd    „ZDd
„ZEd „ZFd „ZGd „ZHd„ZIdd„ZKd„ZLd„ZMd„ZNd„ZOd„ZPd„ZQd„ZRd„ZSd„ZTd„ZUd„ZVd„ZWdd„ZXd„ZYd„ZZd „Z[d!„Z\d"„Z]d#„Z^d$„Z_d%„Z`d&„Zad'„Zbd(„Zcd)„Zdd*„Zed+„Zfd,„Zgd-„Zhd.„Zid/„Zjd0„Zkd1„Zld2„ZmdS(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.pytIsOnlineascCs||j|<dS(N(R(RRt serverGroupID((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyt __SetOnlinecs cCs|jj|dƒdS(N(RtpoptNone(RRR((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyt __SetOfflinegsicCs-|r|j||ƒn|j||ƒdS(N(t_OnlinePlayerMgr__SetOnlinet_OnlinePlayerMgr__SetOffline(RRtisOnlineR((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pytSetOnlineStatekscCs8||jkrdSd}|r4|jr4|j}n|S(Nii(RtOffTime(RRt    viewCachet offlineValue((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pytGetOfflineValuers  N(
t__name__t
__module__t__doc__RRR R RR    R(((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyRXs                 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.pytDoPlayerRealLoginOKs*
              cCs^|jƒ}|jƒ}|tjkr7itj|<ntj|}ttjƒƒ||<dS(N(tGetJobR/Rt!g_onedayJobPlayerLoginoffTimeDicttintttime(RtjobRtplayerLoginoffTimeDict((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyR?2s   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.pyRKSsD    
 
 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__RefreshFamilyToMapServer1s&      "cCs|j|ƒdS(N(t SetLoginTick(RR+((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyR3Ws cCs|jdƒ|jdƒdS(Ni(tSetOnlineReplyErrorCounttSetOnlineReplyTick(RR+((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pyR4`s  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.pytPlayerDisconnectjs 
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.pyRzs"  
 
    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.pytTruckPlayerDisconnectProcesss    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 RefreshName.s 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 RefreshState9sš           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.pytPlayerLoadMapState3s       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_GetLineStateþs)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.pyR.s
 
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.pytImpeachNs  & cCs&tjƒj|ƒ}t||ƒdS(N(R R!R"tSync_PyServerDataTimeToClient(R*RÅR+R((sSE:\SnxxServerCode\ServerPython\CoreServerGroup\GameServer\Script\Player\ChPlayer.pytClientRequestServerTimems 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.pyRws  
       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     ((nR RòRR1RBR<R›RDRERRzR;R@R5R£RRRfRIR`RNRGRatPlayerCompensationRLRˆRMRiRPRSRTRˆRVRQRYR–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Ø                                                              #                         W    *             8             '         4    &            
        !                                  ‡            .    "    *    3            7    0