From 3475d7857f59be1f61c2e928d425e9a7b2526fae Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期一, 22 四月 2019 11:29:56 +0800 Subject: [PATCH] 6459 【后端】【2.0】缥缈仙域开发单(跨服动态分配线路上线优化,踢出与当前线路分区或功能线路属性不一致的玩家,防止玩家跨服中重新上线后进入到不同功能线路的问题) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossRealmReg.py | 26 +++++++++++++++----------- 1 files changed, 15 insertions(+), 11 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossRealmReg.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossRealmReg.py index b01ff53..1fabaab 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossRealmReg.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_CrossRealmReg.py @@ -70,19 +70,22 @@ GameWorld.ErrLog("跨服已经在上传数据,不重复提交!playerRegisterMap=%s,registerMap=%s" % (playerRegisterMap, registerMap), curPlayer.GetPlayerID()) return - zoneID = 0 + #跨服前更新自己所属服务器组ID + PlayerControl.UpdPlayerServerGroupID(curPlayer) + serverGroupID = PlayerControl.GetPlayerServerGroupID(curPlayer) + zoneIpyData = CrossRealmPlayer.GetCrossZoneIpyDataByServerGroupID(registerMap, serverGroupID) + if not zoneIpyData: + return + zoneID = zoneIpyData.GetZoneID() + if not mapID: - zoneIpyData = CrossRealmPlayer.GetServerCrossZoneMapIpyData(registerMap) + zoneIpyData = CrossRealmPlayer.GetServerCrossZoneMapIpyData(zoneID, registerMap) if not zoneIpyData: GameWorld.ErrLog("找不到该服务器对应跨服分区: registerMap=%s" % (registerMap)) return - zoneID, mapID, dataMapID, copyMapID, posX, posY = zoneIpyData.GetZoneID(), zoneIpyData.GetMapID(), \ - zoneIpyData.GetDataMapID(), zoneIpyData.GetCopyMapID(), zoneIpyData.GetPosX(), zoneIpyData.GetPosY() - - if not mapID: - return + mapID, dataMapID, copyMapID, posX, posY = zoneIpyData.GetMapID(), zoneIpyData.GetDataMapID(), zoneIpyData.GetCopyMapID(), zoneIpyData.GetPosX(), zoneIpyData.GetPosY() - if not posX and not posY: + if not posX or not posY: fbLineIpyData = FBCommon.GetFBLineIpyData(mapID, lineID) if fbLineIpyData: tick = GameWorld.GetGameWorld().GetTick() @@ -92,13 +95,13 @@ GameWorld.ErrLog("未找到进入副本坐标!mapID=%s,lineID=%s" % (mapID, lineID)) return posX, posY = retPos + + if not mapID or not posX or not posY: + return if not FBLogic.OnRegEnterCrossFB(curPlayer, mapID, lineID): GameWorld.ErrLog("OnRegEnterCrossFB 进入跨服副本注册失败,进入条件不足!无法注册! mapID=%s,lineID=%s" % (mapID, lineID), playerID) return - - #跨服前更新自己所属服务器组ID - PlayerControl.UpdPlayerServerGroupID(curPlayer) if registerMap in ChConfig.RegisterEnter_CrossServerMapIDList: prepareEnterCrossServer = ChPyNetSendPack.tagMCPrepareEnterCrossServer() @@ -106,6 +109,7 @@ NetPackCommon.SendFakePack(curPlayer, prepareEnterCrossServer) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PlayerKey_CrossRegisterMap, registerMap) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_ReqCrossFBFuncLine, lineID) + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_ReqCrossFBZoneID, zoneID) CrossPlayerData.OnPlayerCrossReg(curPlayer) #curPlayer.SendMergeRegisterPlayer(mapID, dataMapID, copyMapID, posX, posY) curPlayer.SendMergeRegisterPlayerAfterChange(CrossRealmPlayer.GetCrossPlayerName(curPlayer), mapID, dataMapID, copyMapID, posX, posY) -- Gitblit v1.8.0