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