From 545986a8fdde345b28cf3004be84c6cfe79a3dc1 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期五, 19 四月 2019 11:29:12 +0800 Subject: [PATCH] 6459 【后端】【2.0】缥缈仙域开发单(跨服分区逻辑优化,支持跨服妖王分区状态同步) --- ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py | 32 +++++++++++++++++++++++--------- 1 files changed, 23 insertions(+), 9 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py index 400fcdd..cff77fa 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py @@ -48,6 +48,7 @@ import PlayerGeTui import IPY_GameServer import CrossBoss +import PlayerFB import time @@ -102,12 +103,12 @@ if bossID <= 0: return - bossID, killPlayerName, hurtValue, isNotify, realMapID, dataMapID, copyMapID, killerIDList = msgList + bossID, killPlayerName, hurtValue, isNotify, mapID, realMapID, copyMapID, killerIDList = msgList + mapID = PlayerFB.GetRecordMapID(mapID) if GameWorld.IsCrossServer(): - CrossBoss.DoCrossBossOnKilled(bossID, killPlayerName, realMapID, dataMapID, copyMapID, killerIDList) + CrossBoss.DoCrossBossOnKilled(bossID, killPlayerName, mapID, realMapID, copyMapID, killerIDList) return - mapID = dataMapID isAddKillCnt = False isMapNeedShunt = IsMapNeedBossShunt(mapID) @@ -158,13 +159,14 @@ ## 世界boss状态变更 if len(msgList) <= 0: return - - bossID, isAlive, dataMapID, realMapID, copyMapID = msgList + + bossID, isAlive, mapID, realMapID, copyMapID = msgList + mapID = PlayerFB.GetRecordMapID(mapID) if GameWorld.IsCrossServer(): - CrossBoss.DoCrossBossStateChange(bossID, isAlive, dataMapID, realMapID, copyMapID) + CrossBoss.DoCrossBossStateChange(bossID, isAlive, mapID, realMapID, copyMapID) return - mapID, lineID = dataMapID, copyMapID + lineID = copyMapID GameWorld.Log("世界boss状态变更: mapID=%s,lineID=%s,bossID=%s,state=%s,tick=%s" % (mapID, lineID, bossID, isAlive, tick)) if bossID <= 0: @@ -321,7 +323,19 @@ def OnQueryBossInfo(index, clientData, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) bossIDList = clientData.BossIDList - Sync_BossInfo(curPlayer, bossIDList) + if not bossIDList: + Sync_BossInfo(curPlayer) + CrossBoss.Sync_CrossBossInfo(curPlayer) + return + bossID = bossIDList[0] + ipyData = IpyGameDataPY.GetIpyGameData('BOSSInfo', bossID) + if not ipyData: + return + mapID = ipyData.GetMapID() + if mapID in ChConfig.Def_CrossMapIDList: + CrossBoss.Sync_CrossBossInfo(curPlayer, bossIDList) + else: + Sync_BossInfo(curPlayer, bossIDList) return @@ -547,7 +561,7 @@ # 同步到玩家对应子服 if not serverGroupID: return - zoneIpyData = CrossRealmPlayer.GetCrossCommZoneIpyDataByServerGroupID(serverGroupID) + zoneIpyData = CrossRealmPlayer.GetCrossZoneIpyDataByServerGroupID(mapID, serverGroupID) if not zoneIpyData: return serverGroupIDList = zoneIpyData.GetServerGroupIDList() -- Gitblit v1.8.0