hxp
2024-07-08 e718ef8d79b1d1a7f546ec686b70e752cb60e3fa
ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py
@@ -51,7 +51,6 @@
import PlayerFamilySWRH
import IpyGameDataPY
import PlayerTalk
import PlayerGeTui
import PlayerStore
import GameWorldActionControl
import GameWorldFamilyWar
@@ -62,12 +61,21 @@
import GMShell
import IPY_PlayerDefine
import GameWorldArena
import CrossLuckyCloudBuy
import CrossRealmPK
import CrossChampionship
import AuctionHouse
import PlayerAssist
import PlayerFB
import PlayerLove
import PlayerCharm
import CrossRealmPlayer
import CrossBattlefield
import CrossActAllRecharge
import CrossYaomoBoss
import GameWorldMineArea
import PlayerRecData
import GameWorship
#---------------------------------------------------------------------
#---------------------------------------------------------------------
@@ -123,6 +131,8 @@
    if GameWorld.IsCrossServer():
        #跨服PK
        CrossRealmPK.OnPlayerLoginCrossServer(curPlayer)
        #协助
        PlayerAssist.OnPlayerLoginCrossServer(curPlayer)
        return
    
    #玩家家族刷新
@@ -130,8 +140,9 @@
    PlayerFamily.PlayerLoginRefreshFamily(curPlayer, tick)
    #玩家队伍初始化
    PlayerTeam.OnPlayerLoginRefreshTeam(curPlayer, tick)
    PlayerCompensation.NotifyPlayerCompensation(curPlayer)
    #PlayerCompensation.NotifyPlayerCompensation(curPlayer)
    __UpdOnedayJobPlayerLoginoffTime(curPlayer)
    CrossRealmPlayer.OnPlayerLogin(curPlayer)
    
    if not PlayerControl.GetIsTJG(curPlayer):
        # 只有通知逻辑的应该放此处减少IO,如有逻辑处理存储等不可放在此处
@@ -177,7 +188,6 @@
        PlayerFamilySWRH.OnLogin(curPlayer)
        PlayerTalk.LoginChatMi(curPlayer)
        PlayerTalk.NotifyTalkCache(curPlayer)
        #PlayerGeTui.CleanNewGuyCallBackGeTui(curPlayer.GetID())
        #活动
        GameWorldActionControl.OnPlayerLogin(curPlayer)
        #玩家等级记录
@@ -186,19 +196,22 @@
        GameWorldArena.OnPlayerLogin(curPlayer)
        #跨服PK
        CrossRealmPK.OnPlayerLogin(curPlayer)
        #幸运云购
        CrossLuckyCloudBuy.OnPlayerLogin(curPlayer)
        #诛仙BOSS
        PlayerZhuXianBoss.OnPlayerLogin(curPlayer)
        #骑宠boss状态通知
        PlayerHorsePetBoss.OnLogin(curPlayer)
        #协助
        PlayerAssist.OnPlayerLogin(curPlayer, False)
        PlayerAssist.OnPlayerLogin(curPlayer)
        #天星塔
        GameWorldSkyTower.OnPlayerLogin(curPlayer)
        #福地
        GameWorldMineArea.OnPlayerLogin(curPlayer)
        GMT_CTG.OnPlayerLogin(curPlayer)
        
    else:
        #协助
        PlayerAssist.OnPlayerLogin(curPlayer, True)
        pass
        
    return
@@ -210,6 +223,11 @@
    isMixServerFirstLogin = loginMsg[0]
    GameWorld.Log("GameServer->DoPlayerRealLoginOK, isMixServerFirstLogin=%s" % isMixServerFirstLogin, curPlayer.GetPlayerID())
    
    if GameWorld.IsCrossServer():
        return
    PyGameData.g_dbPlayerIDMap[curPlayer.GetPlayerID()] = curPlayer.GetAccID()
    if not PlayerControl.GetIsTJG(curPlayer):
        #家族副本boss状态通知
        PlayerFamilyBoss.OnLogin(curPlayer)
@@ -217,10 +235,23 @@
        PlayerCharm.OnPlayerLogin(curPlayer)
        #情缘
        PlayerLove.OnPlayerLogin(curPlayer)
        #膜拜
        GameWorship.OnPlayerLogin(curPlayer)
        #跨服战场
        CrossBattlefield.OnPlayerLogin(curPlayer)
        #跨服排位
        CrossChampionship.OnPlayerLogin(curPlayer, tick)
        #跨服全民充值
        CrossActAllRecharge.OnPlayerLogin(curPlayer)
        #跨服妖魔boss
        CrossYaomoBoss.OnPlayerLogin(curPlayer)
        #玩家记录
        PlayerRecData.OnPlayerLogin(curPlayer)
        
    if isMixServerFirstLogin:
        PlayerCharm.OnMixServerFirstLogin(curPlayer)
        
    PyGameData.g_noPlayerLoginWarningMailState = 2
    return
def __UpdOnedayJobPlayerLoginoffTime(curPlayer):
@@ -566,7 +597,6 @@
    PlayerFriend.OnPlayerDisconnect(curPlayer, tick)
    
    __UpdOnedayJobPlayerLoginoffTime(curPlayer)
    #PlayerGeTui.NewGuyCallBackGeTui(curPlayer, tick)
    # 设置家族成员离线时间
    SetPlayerOfflineTime(curPlayer)
    #拍卖行
@@ -691,13 +721,14 @@
        
    elif packType == IPY_GameServer.CDBPlayerRefresh_LV:
        curPlayer.SetLV(packValue)
        PlayerSocial.UpdateSocialInfo(curPlayer.GetID(), packType, packValue)
        #玩家等级记录
        playerID = curPlayer.GetID()
        if playerID in PyGameData.g_todayPlayerLVDict:
            PyGameData.g_todayPlayerLVDict[playerID] = packValue
    elif packType == IPY_GameServer.CDBPlayerRefresh_Job:
        if packValue != curPlayer.GetJob():
            PlayerBillboard.DelJobFightPowerBillboard(curPlayer, curPlayer.GetJob())
        curPlayer.SetJob(packValue)
        
#    elif packType == IPY_GameServer.CDBPlayerRefresh_CurrentPlayerType:
@@ -725,7 +756,8 @@
        PlayerControl.SetCrossMapID(curPlayer, packValue, False)
        
    elif packType == IPY_GameServer.CDBPlayerRefresh_ExAttr9:
        PlayerControl.SetVIPExpireTime(curPlayer, packValue)
        curPlayer.SetExAttr9(packValue)
        #PlayerControl.SetVIPExpireTime(curPlayer, packValue)
        
    elif packType == IPY_GameServer.CDBPlayerRefresh_ExAttr10:
        PlayerControl.SetChatBubbleBox(curPlayer, packValue)
@@ -738,10 +770,14 @@
    
    elif packType == IPY_GameServer.CDBPlayerRefresh_OfficialRank:
        curPlayer.SetOfficialRank(packValue)
        PlayerSocial.UpdateSocialInfo(curPlayer.GetID(), packType, packValue)
        #更新排行榜的境界
        PlayerBillboard.UpdateBillboardRealm(curPlayer)
    elif packType == IPY_GameServer.CDBPlayerRefresh_Face:
        curPlayer.SetFace(packValue)
        PlayerBillboard.UpdateBillboardFace(curPlayer)
        
    #社交信息
    PlayerSocial.UpdateSocialInfo(curPlayer.GetID(), packType, packValue)
    #组队成员刷新
    PlayerTeam.PlayerTeamMemberRefresh(curPlayer, packType, packValue, tick)
    #家族刷新
@@ -1195,11 +1231,6 @@
#  @param tick 时间戳
#  @return None
def Sync_PyServerDataTimeToClient(curPlayer, tick):
    if not GameWorld.RefurbishPlayerTick(curPlayer, ChConfig.TYPE_Player_Tick_SyncClientTick, tick):
        #间隔未到
        return
    # 服务器时间
    serverTime = GameWorld.GetServerTime()
    if not serverTime:
@@ -1213,7 +1244,8 @@
    serverDateTime.Hour = serverTime.hour
    serverDateTime.Minute = serverTime.minute
    serverDateTime.Second = serverTime.second
    serverDateTime.MicSecond = serverTime.microsecond
    serverDateTime.MicSecond = serverTime.microsecond
    serverDateTime.CrossServerTime = GameWorld.GetCrossServerTimeStr()
    
    # 通知客户端同步时间
    NetPackCommon.SendFakePack(curPlayer, serverDateTime)