From ab19e6fe9799e56970f955b0a123a59d362cdf76 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期三, 19 七月 2023 17:12:47 +0800 Subject: [PATCH] 8896 【后端】特权令(修复默认参数同步bug) --- ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py | 65 +++++++++++++++++++++++++++----- 1 files changed, 55 insertions(+), 10 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py index 6c323bc..59dfaa4 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py @@ -90,6 +90,7 @@ import CrossRealmPK import CrossRealmMsg import CrossRealmPlayer +import CrossBattlefield import CrossActionControl import PlayerFBHelpBattle import PlayerFamilyRedPacket @@ -107,6 +108,9 @@ import CrossBoss import ChPlayer import PyDataManager +import GameWorldOpenServerCampaign +import CrossBillboard +import CrossChampionship #--------------------------------------------------------------------- #--------------------------------------------------------------------- @@ -142,6 +146,7 @@ GameWorld.Log("GameServer -> OnDay!") #排行榜拷贝昨日榜单 PlayerBillboard.CopyBillboardOnDay() + CrossBillboard.CopyBillboardOnDay() #开服活动,放在排行榜拷贝昨日榜更新后处理 PlayerEventCounter.DoLogic_GameServer_OnDay(tick) # 通知开服天数, 放在地图OnDay之前处理, 不然地图在OnDay时需要用到开服天时会取到昨天的值 @@ -167,6 +172,7 @@ # 通知开服天数 #openServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay) #GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_ServerDay, openServerDay) + GameWorldOpenServerCampaign.DoOnDay() #清理过期补偿 PlayerCompensation.ClearUpTimeOutCompensation() #PlayerGeTui.ClearFMTGeTuiLimit() @@ -352,9 +358,11 @@ def GameWorldProcessOnMinute(curMinute, tick): # 每整分钟触发一次 + CheckServerHasPlayerLoginAfterInitOK() #检查服务器正式开服 DoCheckNewServerOpen(tick) - + #回报数据库当前在线玩家数 + DisposeGameActivePlayer(tick) #处理游戏世界中的时间事件 DisposeGameWorldEvenByTime(tick) GameWorldActionControl.Dispose_OperationActionState() @@ -362,6 +370,9 @@ GameWorldActionControl.Dispose_FBStateTime() #跨服PK CrossRealmPK.OnMinuteProcess() + #跨服排位 + CrossChampionship.OnMinuteProcess(curMinute) + CrossBattlefield.OnMinuteProcess() #处理重开服务器后, 活动继续开启逻辑根据天数 #GameWorldActionControl.Dispose_Action_GoOn_ByDay(tick) #触发世界等级 @@ -377,6 +388,24 @@ PlayerFamily.UpdFamilyTotalFightPower() PlayerFamilyRedPacket.CheckDelRedpacketData() + return + +def CheckServerHasPlayerLoginAfterInitOK(): + ## 检查服务器启动成功后是否有玩家正常登录 + initGameWorldTime = GameWorld.GetGameWorld().GetDictByKey(ChConfig.Def_WorldKey_IsGameWorldInit) + if not initGameWorldTime: + return + + if PyGameData.g_noPlayerLoginWarningMailState: + return + + curTime = int(time.time()) + noPlayerLoginWarningTimes = IpyGameDataPY.GetFuncCfg("ServerEvent", 1) * 60 # x分钟没有玩家登录则预警 + if curTime - initGameWorldTime < noPlayerLoginWarningTimes: + return + + GameWorld.SendGameError("NoPlayerLogin") + PyGameData.g_noPlayerLoginWarningMailState = 1 return def OnReloadConfig(): @@ -405,7 +434,7 @@ #处理世界活动 DisposeGameWorldGame(tick) #回报数据库当前在线玩家数 - DisposeGameActivePlayer(tick) + #DisposeGameActivePlayer(tick) #同步地图服务器时间 Dispose_MapServer_Time(tick) #保存玩家数据 @@ -605,15 +634,18 @@ #activePlayerCount = GameWorld.GetPlayerManager().GetActivePlayerCount() #DataRecordPack.DR_OnLinePlayerCount(activePlayerCount, platformOLDict, tjgOnlineCnt) #=========================================================================== - for platform, playerCnt in platformOLDict.items(): - DataRecordPack.DR_OnLinePlayerCount(playerCnt, platform, tjgOnlineCnt) # 单平台 - EventReport.WriteEvent_concurrency(playerCnt, 0, platform) # 单平台 此处不能传脱机挂玩家总数 - - + isMixture = False #是否混服 + if isMixture: + for platform, playerCnt in platformOLDict.items(): + DataRecordPack.DR_OnLinePlayerCount(playerCnt, platform, tjgOnlineCnt) # 单平台 + EventReport.WriteEvent_concurrency(playerCnt, 0, platform) # 单平台 此处不能传脱机挂玩家总数 + DataRecordPack.DR_OnLinePlayerCount(activePlayerCount, {}, tjgOnlineCnt) # 总在线 + #EventReport.WriteEvent_concurrency(activePlayerCount, tjgOnlineCnt) + else: + serverPlatform = GameWorld.GetPlatform() + DataRecordPack.DR_OnLinePlayerCount(activePlayerCount, {}, tjgOnlineCnt) # 总在线 + EventReport.WriteEvent_concurrency(activePlayerCount, tjgOnlineCnt, serverPlatform) #=========================================================================== - - DataRecordPack.DR_OnLinePlayerCount(activePlayerCount, {}, tjgOnlineCnt) # 总在线 - #EventReport.WriteEvent_concurrency(activePlayerCount, tjgOnlineCnt) #刷新当前地图服务器 #=========================================================================== # custom_concurrencyMapList = ReadChConfig.GetEvalChConfig("EventReportMapID") @@ -1257,6 +1289,10 @@ GameWorldArena.OnServerStart() #跨服PK CrossRealmPK.OnGameServerInitOK() + #跨服排位 + CrossChampionship.OnServerStart() + #跨服战场 + CrossBattlefield.OnServerStart() #红包 PlayerFamilyRedPacket.OnServerStart() #云购 @@ -1360,11 +1396,16 @@ GameWorldArena.OnServerStart() + CrossBattlefield.OnServerStart() + PlayerDBGSEvent.SetInitOpenServerTime(setOpenServerTime) ReadChConfig.ReloadConfig() AllMapServerInitOK(tick) + + GameWorld.GetGameWorld().SaveGameServerData() + GameWorld.SendGameError("ClearOpenServerOK") return ## 服务器开服时是星期几 @@ -1449,6 +1490,8 @@ # 跨服PK CrossRealmPK.OnMapServerInitOK() + #跨服战场 + CrossBattlefield.OnMapServerInitOK() # 本服竞技场 GameWorldArena.SendMapServerArenaInfo() # 幸运云购 @@ -1962,6 +2005,8 @@ ChPlayer.SavePlayerLVData() PlayerFBHelpBattle.OnServerClose() CrossActionControl.OnServerClose() + CrossChampionship.OnServerClose() + CrossBattlefield.OnServerClose() PlayerFamilyRedPacket.OnServerClose() CrossLuckyCloudBuy.OnServerClose() GameWorldArena.OnServerClose() -- Gitblit v1.8.0