hxp
2019-03-15 ae9f73d422020a792b2615d7f094d629d81c5123
ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py
@@ -39,18 +39,15 @@
import PlayerFamilyBoss
#import PlayerManorWar
import PlayerBourse
import GameWorldActionTeHui
import PlayerZhuXianBoss
import PlayerXMZZ
import GameWorldShopItem
import MergeChildMsg
import PlayerTruck
import PlayerMergeEvent
import HighLadder
import EventReport
import MergePlayer
import PlayerCompensation
import PlayerFamilyRedPacket
import PlayerFamilyStore
#import PlayerFamilyStore
import PyDataManager
import PlayerSocial
import PlayerFamilyParty
@@ -70,9 +67,19 @@
import GMShell
import IPY_PlayerDefine
import CrossRealmPK
import AuctionHouse
#---------------------------------------------------------------------
#---------------------------------------------------------------------
def DoRefreshMainServerRole(curPlayer):
    ## 刷新本服角色信息
    curTeam = curPlayer.GetTeam()
    if curTeam:
        PlayerTeam.Sync_TeamMemberInfo(curTeam)
    return
## 玩家登录初始化(封包参数)
#  @param index 玩家索引
#  @param tick 当前时间
@@ -106,6 +113,20 @@
    InitPlayerOnLineReply(curPlayer, tick)
    # 统计登入人数
    GameDataRecord.PlayerLoginRecord(curPlayer, tick)
    __DoPlayerLoginServer(curPlayer, tick)
    #通知地图服务器自己初始化成功
    curPlayer.MapServer_InitOK()
    return
def __DoPlayerLoginServer(curPlayer, tick):
    ''' 玩家登录需要处理的内容,本服及跨服服务器分开
    '''
    if GameWorld.IsCrossServer():
        #跨服PK
        CrossRealmPK.OnPlayerLoginCrossServer(curPlayer)
        return
    #玩家家族刷新
    #家族任务需要刷新 FamilyLV, 地图服务器需要知道FamilyLV来通知玩家家族任务次数 
    PlayerFamily.PlayerLoginRefreshFamily(curPlayer, tick)
@@ -126,26 +147,19 @@
        # 通知广播信息
        GMCommon.SendBroadCastToClient(curPlayer)
    
        # 在非跨服服务器上线时,在跨服PK赛期间如果roomID不为0则重置
        #if not GameWorld.IsMergeServer() and GameWorldMergePK.IsMergePKMatchOpen() \
        #    and curPlayer.GetVsRoomId() != 0:
        #    PlayerControl.SetVsRoomId(curPlayer, 0)
        PlayerTruck.SyncPlayerTruckStartTime(curPlayer)
        #通知玩家交易所挂单情况
        PlayerBourse.OnPlayerLogin(curPlayer)
        #拍卖行
        AuctionHouse.OnPlayerLogin(curPlayer)
        #上线广播
        __CheckWorldNotifyOnLogin(curPlayer, tick)
        #上线奖励处理
        #PlayerMergeEvent.MergeEventOnPlayerLogin(curPlayer)
        #MergePlayer.OnPlayerLogin(curPlayer)
        
        #仙盟红包
        PlayerFamilyRedPacket.OnPlayerLogin(curPlayer)
        #仙盟仓库
        PlayerFamilyStore.OnPlayerLogin(curPlayer)
        #PlayerFamilyStore.OnPlayerLogin(curPlayer)
        #仙盟宴会
        PlayerFamilyParty.OnPlayerLogin(curPlayer)
        #封魔坛
@@ -174,12 +188,10 @@
        PlayerFBHelpBattle.OnHelpPlayerLogin(curPlayer)
        #跨服PK
        CrossRealmPK.OnPlayerLogin(curPlayer)
        #诛仙BOSS
        PlayerZhuXianBoss.OnPlayerLogin(curPlayer)
        
        GMShell.OnPlayerLogin(curPlayer)
        GMT_CTG.OnPlayerLogin(curPlayer)
    #通知地图服务器自己初始化成功
    curPlayer.MapServer_InitOK()
    return
## 增加高手玩家上线广播
@@ -187,7 +199,7 @@
#  @return None
def __CheckWorldNotifyOnLogin(curPlayer, tick):
    # 跨服服务器不广播
    if GameWorld.IsMergeServer():
    if GameWorld.IsCrossServer():
        return
    
    limitLV = IpyGameDataPY.GetFuncCfg("BillBoardPlayerLoginNotify", 2) # 最低等级限制
@@ -261,31 +273,6 @@
    diff_Time = loginTime - logoffTime
    #天数 * 24小时 * 60 分钟 + 秒
    return diff_Time.days * 24 * 60 * 60 + diff_Time.seconds
## 统计客户端跨服赛激活时间
#  @param index 玩家索引
#  @return None
def SendMergeWarOpen(curPlayer):
    # 发送跨服赛服务器信息
    mapConfig = GameConfig.GetConfig()
    mergeServerIP = mapConfig.get("MergeServerIP")
    mergeServerPort = mapConfig.get("MergeServerPort")
    if not mergeServerIP:
        return
    mergeServerInfo = ChPyNetSendPack.tagMergeServerInfo()
    mergeServerInfo.ServerIPLen = len(mergeServerIP)
    mergeServerInfo.ServerIP = mergeServerIP
    mergeServerInfo.Port = mergeServerPort
    mergeServerInfo.IsMergeServer = GameWorld.IsMergeServer()
    NetPackCommon.SendFakePack(curPlayer, mergeServerInfo)
    return
## 跨服赛通知奖励
#  @param curPlayer: 玩家实例
#  @return: None
def MSGetReward(curPlayer):
    #PlayerCanGetReward.SynClient_CanGetRewardList(curPlayer)
    return
## 运营登陆信息处理
#  @param curPlayer
@@ -528,8 +515,8 @@
    PlayerGeTui.NewGuyCallBackGeTui(curPlayer, tick)
    # 设置家族成员离线时间
    SetPlayerOfflineTime(curPlayer)
    #MergePlayer.OnPlayerLeaveGotoMergeServer(curPlayer, tick)
    #拍卖行
    AuctionHouse.OnPlayerLeaveServer(curPlayer)
    #------------镖车逻辑
    #TruckPlayerDisconnectProcess(curPlayer, tick)
    return
@@ -667,7 +654,10 @@
        
    elif packType == IPY_GameServer.CDBPlayerRefresh_ExAttr11:
        PlayerControl.SetTodayXianyuanCoin(curPlayer, packValue)
    elif packType == IPY_GameServer.CDBPlayerRefresh_ExAttr13:
        PlayerControl.SetPlayerServerGroupID(curPlayer, packValue)
    elif packType == IPY_GameServer.CDBPlayerRefresh_OperateInfo:
        curPlayer.SetOperateInfo(packValue);
    
@@ -791,7 +781,7 @@
#===============================================================================
    #自己已经初始化成功
    curPlayer.SetInitOK(True)
    GMShell.OnPlayerLogin(curPlayer)
    #发送请求至目标地图(任务需要登陆家族长触发事件)
    __RefreshFamilyToMapServer(curPlayer)
    return
@@ -917,11 +907,13 @@
    fblinePack = ChPyNetSendPack.tagGCFBLinePlayerCnt()
    fblinePack.MapID = tagMapID
    fblinePack.FBLineInfoList = []
    for lineID, playerCnt in fbLinePlayerCntDict.items():
    for lineID, infoList in fbLinePlayerCntDict.items():
        mapLineState = ChPyNetSendPack.tagGCFBLineInfo()
        mapLineState.Clear()
        mapLineState.FBLineID = lineID
        mapLineState.PlayerCnt = playerCnt
        mapLineState.PlayerCnt = infoList[0] if infoList else 0
        mapLineState.ExtraStr = infoList[1] if len(infoList) > 1 else ''
        mapLineState.ExtraStrLen = len(mapLineState.ExtraStr)
        fblinePack.FBLineInfoList.append(mapLineState)
    
    fblinePack.Count = len(fblinePack.FBLineInfoList)