From 0229be00d8c80d62d6e50a2f45a8d5f7e6a4cb3e Mon Sep 17 00:00:00 2001 From: hch <305670599@qq.com> Date: 星期三, 19 六月 2024 00:49:37 +0800 Subject: [PATCH] 10182 【越南】【香港】【砍树】【主干】玩家数据扩展和排行榜扩展 --- ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py | 83 ++++++++++++++++++++++++++++++++++------- 1 files changed, 69 insertions(+), 14 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py index 0c54d4e..8fa0ef5 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py @@ -81,7 +81,6 @@ import ShareDefine import GameWorldAverageLv import PlayerDBOper -import PlayerGeTui import GameWorldBoss import PlayerCompensation import ReadChConfig @@ -90,12 +89,14 @@ import CrossRealmPK import CrossRealmMsg import CrossRealmPlayer +import CrossBattlefield import CrossActionControl import PlayerFBHelpBattle import PlayerFamilyRedPacket import PlayerFairyDomain import IpyGameDataPY import PlayerFamilyParty +import PlayerFamilyZhenfa import GameWorldFamilyWar import GameWorldArena import CrossLuckyCloudBuy @@ -107,6 +108,11 @@ import CrossBoss import ChPlayer import PyDataManager +import GameWorldOpenServerCampaign +import CrossBillboard +import CrossChampionship +import GameWorldMineArea +import GameWorldAlineInvade #--------------------------------------------------------------------- #--------------------------------------------------------------------- @@ -142,6 +148,7 @@ GameWorld.Log("GameServer -> OnDay!") #排行榜拷贝昨日榜单 PlayerBillboard.CopyBillboardOnDay() + CrossBillboard.CopyBillboardOnDay() #开服活动,放在排行榜拷贝昨日榜更新后处理 PlayerEventCounter.DoLogic_GameServer_OnDay(tick) # 通知开服天数, 放在地图OnDay之前处理, 不然地图在OnDay时需要用到开服天时会取到昨天的值 @@ -167,9 +174,9 @@ # 通知开服天数 #openServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay) #GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_ServerDay, openServerDay) + GameWorldOpenServerCampaign.DoOnDay() #清理过期补偿 PlayerCompensation.ClearUpTimeOutCompensation() - #PlayerGeTui.ClearFMTGeTuiLimit() import PlayerBourse PlayerBourse.OverTimeItemsDeal() # 仙盟联赛 @@ -178,6 +185,8 @@ PlayerLove.DoOnDay() # 云购 CrossLuckyCloudBuy.DoOnDay() + # 异兽入侵 + GameWorldAlineInvade.DoOnDay() return def OnDayEx(tick): @@ -305,8 +314,7 @@ CrossRealmPK.OnPKMatchProcess(tick) GameWorldBoss.DoCheckWorldBossReborn(tick) - #GameWorldBoss.ProcessBossGeTui(tick) - #PlayerGeTui.ProcessNewGuyCallBackGeTui(tick) + #组队副本版本 PlayerTeam.DoTeamProcess(tick) @@ -318,6 +326,9 @@ #情缘 PlayerLove.OnTimeProcess(curTime, tick) + + #福地 + GameWorldMineArea.OnMineItemTimeProcess(curTime, tick) #每整分钟处理一次 curDateTime = datetime.datetime.today() @@ -352,9 +363,11 @@ def GameWorldProcessOnMinute(curMinute, tick): # 每整分钟触发一次 + CheckServerHasPlayerLoginAfterInitOK() #检查服务器正式开服 DoCheckNewServerOpen(tick) - + #回报数据库当前在线玩家数 + DisposeGameActivePlayer(tick) #处理游戏世界中的时间事件 DisposeGameWorldEvenByTime(tick) GameWorldActionControl.Dispose_OperationActionState() @@ -362,6 +375,9 @@ GameWorldActionControl.Dispose_FBStateTime() #跨服PK CrossRealmPK.OnMinuteProcess() + #跨服排位 + CrossChampionship.OnMinuteProcess(curMinute) + CrossBattlefield.OnMinuteProcess() #处理重开服务器后, 活动继续开启逻辑根据天数 #GameWorldActionControl.Dispose_Action_GoOn_ByDay(tick) #触发世界等级 @@ -372,11 +388,31 @@ PlayerFamilyRedPacket.OnRedPacketMinuteProcess() #拍卖行 AuctionHouse.OnAuctionItemMinuteProcess(tick) + #福地 + GameWorldMineArea.OnProcessOnMinute() #每5分钟触发一次仙盟总战力更新 if curMinute % 5 == 0: 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 +441,7 @@ #处理世界活动 DisposeGameWorldGame(tick) #回报数据库当前在线玩家数 - DisposeGameActivePlayer(tick) + #DisposeGameActivePlayer(tick) #同步地图服务器时间 Dispose_MapServer_Time(tick) #保存玩家数据 @@ -605,15 +641,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") @@ -1218,6 +1257,7 @@ def InitGameWorld(tick): #标记GameWorld初始化完成 GameWorld.GetGameWorld().SetDict(ChConfig.Def_WorldKey_IsGameWorldInit, int(time.time())) + PlayerControl.LoadDBPlayer() #初始化游戏时钟 GameWorld.GetGameWorld().SetTickTypeCount(ChConfig.TYPE_Tick_Count) #初始话开服时间、星期几 @@ -1256,6 +1296,10 @@ GameWorldArena.OnServerStart() #跨服PK CrossRealmPK.OnGameServerInitOK() + #跨服排位 + CrossChampionship.OnServerStart() + #跨服战场 + CrossBattlefield.OnServerStart() #红包 PlayerFamilyRedPacket.OnServerStart() #云购 @@ -1359,11 +1403,16 @@ GameWorldArena.OnServerStart() + CrossBattlefield.OnServerStart() + PlayerDBGSEvent.SetInitOpenServerTime(setOpenServerTime) ReadChConfig.ReloadConfig() AllMapServerInitOK(tick) + + GameWorld.GetGameWorld().SaveGameServerData() + GameWorld.SendGameError("ClearOpenServerOK") return ## 服务器开服时是星期几 @@ -1448,6 +1497,8 @@ # 跨服PK CrossRealmPK.OnMapServerInitOK() + #跨服战场 + CrossBattlefield.OnMapServerInitOK() # 本服竞技场 GameWorldArena.SendMapServerArenaInfo() # 幸运云购 @@ -1458,6 +1509,8 @@ SendMapCommMapLinePlayerCount(True) # 同步一次普通地图线路人数信息 #随机假仙盟 PlayerFamily.RandomFakeFamily() + #仙盟阵法 + PlayerFamilyZhenfa.OnMapServerInitOK() #缥缈仙域 PlayerFairyDomain.OnMapServerInitOK() #情侣信息 @@ -1961,6 +2014,8 @@ ChPlayer.SavePlayerLVData() PlayerFBHelpBattle.OnServerClose() CrossActionControl.OnServerClose() + CrossChampionship.OnServerClose() + CrossBattlefield.OnServerClose() PlayerFamilyRedPacket.OnServerClose() CrossLuckyCloudBuy.OnServerClose() GameWorldArena.OnServerClose() -- Gitblit v1.8.0