From 545128e0b18cee1e2c001067ae5399dbd2f6b269 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 21 一月 2025 14:09:20 +0800 Subject: [PATCH] 10263 【越南】【英文】【BT】【砍树】后端支持NPC仿真实玩家战斗和快速战斗(本服竞技场支持掉线重登后结算战斗结果) --- ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 58 insertions(+), 2 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py index 0c59fd9..8530d3c 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py @@ -98,6 +98,7 @@ import IpyGameDataPY import PlayerFamilyParty import PlayerFamilyZhenfa +import PlayerFamilyEmblem import GameWorldFamilyWar import GameWorldArena import CrossLuckyCloudBuy @@ -113,7 +114,9 @@ import CrossBillboard import CrossChampionship import GameWorldMineArea +import PlayerFuncTeam import GameWorship +import os #--------------------------------------------------------------------- #--------------------------------------------------------------------- @@ -178,6 +181,7 @@ GameWorldOpenServerCampaign.DoOnDay() #清理过期补偿 PlayerCompensation.ClearUpTimeOutCompensation() + PlayerControl.DoOnDay() #PlayerGeTui.ClearFMTGeTuiLimit() import PlayerBourse PlayerBourse.OverTimeItemsDeal() @@ -312,8 +316,6 @@ PlayerFamily.OnLeaderImpeachTick(tick) #跨服玩家 CrossRealmPlayer.OnCrossProcess(tick) - #跨服PK匹配 - CrossRealmPK.OnPKMatchProcess(tick) GameWorldBoss.DoCheckWorldBossReborn(tick) #GameWorldBoss.ProcessBossGeTui(tick) @@ -373,6 +375,8 @@ DisposeGameActivePlayer(tick) #处理游戏世界中的时间事件 DisposeGameWorldEvenByTime(tick) + #榜单 + CrossBillboard.OnMinuteProcess() GameWorldActionControl.Dispose_OperationActionState() GameWorldActionControl.Dispose_DailyActionState() GameWorldActionControl.Dispose_FBStateTime() @@ -397,6 +401,7 @@ if curMinute % 5 == 0: PlayerFamily.UpdFamilyTotalFightPower() PlayerFamilyRedPacket.CheckDelRedpacketData() + PlayerFamilyEmblem.CheckExpireEmblem() return @@ -419,6 +424,13 @@ return def OnReloadConfig(): + + if GameWorld.IsCrossServer(): + # 跨服重读时重推跨服相关数据 + tick = GameWorld.GetGameWorld().GetTick() + CrossRealmMsg.Sync_CrossServerInitDataToClientServer(tick, serverGroupID=0) # 这里设置为0,广播所有子服务器组 + return + return #--------------------------------------------------------------------- @@ -1276,6 +1288,8 @@ GameWorld.GetGameWorld().GetDBGoldOrderFormMgr().Sort() #排序排行榜 PlayerBillboard.SortServerBillboard() + #功能队伍 + PlayerFuncTeam.OnGameServerInitOK() #仙盟 PlayerFamily.OnGameServerInitOK() GameWorldActionControl.Dispose_FBStateTime() @@ -1303,6 +1317,7 @@ CrossChampionship.OnServerStart() #跨服战场 CrossBattlefield.OnServerStart() + GameWorship.OnServerStart() #红包 PlayerFamilyRedPacket.OnServerStart() #云购 @@ -1444,6 +1459,7 @@ if not GameWorld.GetGameWorld().GetDictByKey(ChConfig.Def_WorldKey_IsGameWorldInit): GameWorld.Log("AllMapServerInitOK时GameServer还未启动好!") return + __CheckAllMapInitOK() #通知所有地图服务器初始化成功, 同步时间 GameWorld.GetGameWorld().Notify_AllMapServerInitOK(GameWorld.GetCurrentDataTimeStr()) @@ -1489,6 +1505,9 @@ lastMixServerWorldLV = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_LastMixServerWorldLV) GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_LastMixServerWorldLV, lastMixServerWorldLV) + # 功能队伍 + PlayerFuncTeam.OnMapServerInitOK() + # 通知战盟相关活动开启状态 fadState = PlayerDBGSEvent.GetDBGSTrig_ByKey(ShareDefine.Def_Notify_WorldKey_FamilyActivityDayState) GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_FamilyActivityDayState, fadState) @@ -1514,6 +1533,8 @@ # 跨服PK CrossRealmPK.OnMapServerInitOK() + # 跨服排位赛 + CrossChampionship.OnMapServerInitOK() #跨服战场 CrossBattlefield.OnMapServerInitOK() # 本服竞技场 @@ -1537,6 +1558,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