hxp
2019-06-22 d0f5f9922f17f5bff4288173f18a9ed827d95db8
ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py
@@ -27,28 +27,21 @@
import GMCommon
import ShareDefine
#import PlayerFamilyTech
import PlayerDataCollect
import time
import ChPyNetSendPack
import NetPackCommon
import GameDataRecord
import GameConfig
import ReadChConfig
import UpdatePlayerName
import GameWorldBoss
import PlayerFamilyBoss
#import PlayerManorWar
import PlayerBourse
import PlayerZhuXianBoss
import PlayerXMZZ
import GameWorldShopItem
import PlayerTruck
import HighLadder
import EventReport
import PlayerHorsePetBoss
import PlayerCompensation
import PlayerFamilyRedPacket
#import PlayerFamilyStore
import PyDataManager
import PlayerSocial
import PlayerFamilyParty
import PlayerSealDemon
@@ -61,6 +54,7 @@
import PlayerGeTui
import PlayerStore
import GameWorldActionControl
import GameWorldFamilyWar
import PlayerFBHelpBattle
import GMT_CTG
import PyGameData
@@ -68,6 +62,7 @@
import IPY_PlayerDefine
import CrossRealmPK
import AuctionHouse
import PlayerFB
#---------------------------------------------------------------------
#---------------------------------------------------------------------
@@ -190,7 +185,8 @@
        CrossRealmPK.OnPlayerLogin(curPlayer)
        #诛仙BOSS
        PlayerZhuXianBoss.OnPlayerLogin(curPlayer)
        #骑宠boss状态通知
        PlayerHorsePetBoss.OnLogin(curPlayer)
        GMT_CTG.OnPlayerLogin(curPlayer)
    return
@@ -222,9 +218,6 @@
            if checkMark not in ShareDefine.BillboardTypeList:
                continue
            
            if checkMark in [ShareDefine.Def_BT_HighLadder]:
                continue
            billboard = GameWorld.GetBillboard().FindBillboard(checkMark)
            if not billboard:
                continue
@@ -243,11 +236,7 @@
                objBillboard = billboard.At(index)
                if curPlayer.GetID() == objBillboard.GetID():
                    msgMark = notifyDict[order]
                    break
#        # 竞技场
#        elif checkMark == "HighLadder":
#            highLadderOrder = HighLadder.GetPlayerOrder(curPlayer.GetID()) + 1
#            msgMark = notifyDict.get(highLadderOrder, "")
                    break
        
        # 有可以广播的,马上广播,退出,不再检查
        if msgMark:
@@ -503,6 +492,9 @@
#  @remarks 函数详细说明.
def __Func_PlayerDisconnect(curPlayer, tick):
    
    if GameWorld.IsCrossServer():
        PlayerFB.OnPlayerDisconnectCrossServer(curPlayer)
    #跨服匹配PK
    CrossRealmPK.OnLeaveServer(curPlayer)
    
@@ -623,8 +615,6 @@
    elif packType == IPY_GameServer.CDBPlayerRefresh_Job:
        curPlayer.SetJob(packValue)
    elif packType == IPY_GameServer.CDBPlayerRefresh_ExAttr1:
        PlayerControl.SetJobRank(curPlayer, packValue)
        
#    elif packType == IPY_GameServer.CDBPlayerRefresh_CurrentPlayerType:
#        #这里应该通知组队那边刷新
@@ -646,6 +636,10 @@
    elif packType == IPY_GameServer.CDBPlayerRefresh_VIPLv:
        curPlayer.SetVIPLv(packValue);
#        __RefreshTeamState(curPlayer)
    elif packType == IPY_GameServer.CDBPlayerRefresh_ExAttr5:
        PlayerControl.SetCrossMapID(curPlayer, packValue, False)
    elif packType == IPY_GameServer.CDBPlayerRefresh_ExAttr9:
        PlayerControl.SetVIPExpireTime(curPlayer, packValue)
        
@@ -691,6 +685,7 @@
    GameWorldBoss.OnPlayerChangeMap(curPlayer)
    PlayerFamily.OnPlayerChangeMap(curPlayer, tick)
    PlayerFamilyParty.OnPlayerChangeMap(curPlayer, tick)
    GameWorldFamilyWar.OnPlayerChangeMap(curPlayer)
    return 
## 玩家切换真实地图
@@ -768,6 +763,9 @@
    #改到mapServer登录成功通知
    #Sync_PyServerDataTimeToClient(curPlayer, tick)
    
    if GameWorld.IsCrossServer():
        PlayerFB.PlayerLoginLoadCrossMapOK(curPlayer)
    PlayerTeam.OnPlayerReadMapOK(curPlayer, tick)
    
    #刷新人物日期状态
@@ -881,17 +879,29 @@
#{
#    tagHead        Head;
#    DWORD        MapID;
#    BYTE        FBLineID;
#    BYTE        IsAllLine;
#    BYTE        LineCount;
#    BYTE        LineIDList[LineCount];    //个数为0时代表查全部
#};
def ClinetQueryFBLinePlayerCnt(index, clientData, tick):
    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
    queryMapID = clientData.MapID
    fbLineID = clientData.FBLineID
    isAllLine = clientData.IsAllLine
    queryFBLineIDList = clientData.LineIDList
    playerManager = GameWorld.GetPlayerManager()
    
    sendCMD = str([queryMapID, fbLineID, isAllLine])
    if queryMapID in ChConfig.Def_CrossMapIDList:
        fbLinePlayerInfoDict = PyGameData.g_crossFBFuncLinePlayerCountInfo.get(queryMapID, {})
        if not queryFBLineIDList:
            resultInfo = [queryMapID, fbLinePlayerInfoDict]
        else:
            defaultInfo = [0] # 与本服结构相同,默认0人
            queryFBLineInfo = {}
            for lineID in queryFBLineIDList:
                queryFBLineInfo[lineID] = fbLinePlayerInfoDict.get(lineID, defaultInfo)
            resultInfo = [queryMapID, queryFBLineInfo]
        QueryFBLinePlayerCntResult(curPlayer, resultInfo)
        return
    sendCMD = str([queryMapID, queryFBLineIDList])
    playerManager.MapServer_QueryPlayer(curPlayer.GetPlayerID(), 0, 0, queryMapID,
                'FBLinePlayerCnt', sendCMD, len(sendCMD), curPlayer.GetRouteServerIndex())
    return