From e718ef8d79b1d1a7f546ec686b70e752cb60e3fa Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期一, 08 七月 2024 18:50:47 +0800 Subject: [PATCH] 10196 【越南】【香港】【主干】【砍树】增加地图数量开启警告 --- ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py | 37 +++++++++++++++++++++++++++++++++++++ 1 files changed, 37 insertions(+), 0 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py index 79fd046..1cb6eee 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py @@ -114,6 +114,7 @@ import GameWorldMineArea import GameWorship import GameWorldAlineInvade +import os #--------------------------------------------------------------------- #--------------------------------------------------------------------- @@ -1451,6 +1452,7 @@ if not GameWorld.GetGameWorld().GetDictByKey(ChConfig.Def_WorldKey_IsGameWorldInit): GameWorld.Log("AllMapServerInitOK时GameServer还未启动好!") return + __CheckAllMapInitOK() #通知所有地图服务器初始化成功, 同步时间 GameWorld.GetGameWorld().Notify_AllMapServerInitOK(GameWorld.GetCurrentDataTimeStr()) @@ -1544,6 +1546,41 @@ GameWorld.GetGameWorld().EventReport_EventReport("", "", "", "", 0, getUrl) return +def __CheckAllMapInitOK(): + ## 检查所有地图是否启动成功 + rootPath = ChConfig.GetServerRootPath() + mapIDTxtPath = os.path.join(rootPath, "ZoneServerGroup\map1_8G\MapServer\MapServerData\Map\MapID.txt") + if not os.path.isfile(mapIDTxtPath): + GameWorld.ErrLog("MapID.txt不存在: %s" % mapIDTxtPath) + return + fileObj = open(mapIDTxtPath, 'rb') + content = fileObj.read() + fileObj.close() + + mapInfoDict = {} + mapInfoList = content.split('\r\n') + for info in mapInfoList: + mapInfo = info.split('\t') + if len(mapInfo) < 3: + continue + mapInfoDict[GameWorld.ToIntDef(mapInfo[1])] = mapInfo[2] + + gameMapManager = GameWorld.GetGameWorld().GetGameMapManager() + for i in range(0, gameMapManager.GetCount()): + curMap = gameMapManager.GetAt(i) + mapID = curMap.GetID() + state = curMap.GetState() + if mapID in mapInfoDict and state == IPY_GameServer.mssRunning: + mapInfoDict.pop(mapID) + + if not mapInfoDict: + #GameWorld.Log("都启动成功了") + return + # 汇报没有启动启动成功的地图ID信息 + errorMapIDList = mapInfoDict.keys() + GameWorld.SendGameError("AllMapInitError", "未启动成功地图:%s" % (str(errorMapIDList))) + return + ## 服务器合服首次启动数据加载处理 # @param None # @return None -- Gitblit v1.8.0