From a54fba3894b5d528bed16147f096b6a706a1fc0c Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期四, 27 六月 2019 15:58:03 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/SnxxServerCode --- ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py | 40 ++++++++++++++++++++++++++++++---------- 1 files changed, 30 insertions(+), 10 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py index d2f7655..5cbad3a 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py @@ -27,13 +27,10 @@ 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 @@ -42,11 +39,9 @@ import PlayerXMZZ import PlayerTruck import PlayerHorsePetBoss -import EventReport import PlayerCompensation import PlayerFamilyRedPacket #import PlayerFamilyStore -import PyDataManager import PlayerSocial import PlayerFamilyParty import PlayerSealDemon @@ -59,6 +54,7 @@ import PlayerGeTui import PlayerStore import GameWorldActionControl +import GameWorldFamilyWar import PlayerFBHelpBattle import GMT_CTG import PyGameData @@ -66,6 +62,7 @@ import IPY_PlayerDefine import CrossRealmPK import AuctionHouse +import PlayerFB #--------------------------------------------------------------------- #--------------------------------------------------------------------- @@ -495,6 +492,9 @@ # @remarks 函数详细说明. def __Func_PlayerDisconnect(curPlayer, tick): + if GameWorld.IsCrossServer(): + PlayerFB.OnPlayerDisconnectCrossServer(curPlayer) + #跨服匹配PK CrossRealmPK.OnLeaveServer(curPlayer) @@ -636,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) @@ -681,6 +685,7 @@ GameWorldBoss.OnPlayerChangeMap(curPlayer) PlayerFamily.OnPlayerChangeMap(curPlayer, tick) PlayerFamilyParty.OnPlayerChangeMap(curPlayer, tick) + GameWorldFamilyWar.OnPlayerChangeMap(curPlayer) return ## 玩家切换真实地图 @@ -758,6 +763,9 @@ #改到mapServer登录成功通知 #Sync_PyServerDataTimeToClient(curPlayer, tick) + if GameWorld.IsCrossServer(): + PlayerFB.PlayerLoginLoadCrossMapOK(curPlayer) + PlayerTeam.OnPlayerReadMapOK(curPlayer, tick) #刷新人物日期状态 @@ -871,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 -- Gitblit v1.8.0