From 6a875d29696c5625a779a379b0de523b2383d7ef Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 28 十一月 2024 16:41:11 +0800
Subject: [PATCH] 10312 【越南】【英文】【bt】【砍树】查看跨服玩家数据向对应子服查询

---
 ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py |   55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 55 insertions(+), 0 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py
index 0c59fd9..5ca8054 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
 #---------------------------------------------------------------------
 
 #---------------------------------------------------------------------
@@ -373,6 +376,8 @@
     DisposeGameActivePlayer(tick)
     #处理游戏世界中的时间事件
     DisposeGameWorldEvenByTime(tick)
+    #榜单
+    CrossBillboard.OnMinuteProcess()
     GameWorldActionControl.Dispose_OperationActionState()
     GameWorldActionControl.Dispose_DailyActionState()
     GameWorldActionControl.Dispose_FBStateTime()
@@ -397,6 +402,7 @@
     if curMinute % 5 == 0:
         PlayerFamily.UpdFamilyTotalFightPower()
         PlayerFamilyRedPacket.CheckDelRedpacketData()
+        PlayerFamilyEmblem.CheckExpireEmblem()
         
     return
 
@@ -419,6 +425,13 @@
     return
 
 def OnReloadConfig():
+    
+    if GameWorld.IsCrossServer():
+        # 跨服重读时重推跨服相关数据
+        tick = GameWorld.GetGameWorld().GetTick()
+        CrossRealmMsg.Sync_CrossServerInitDataToClientServer(tick, serverGroupID=0) # 这里设置为0,广播所有子服务器组
+        return
+    
     return
 
 #---------------------------------------------------------------------
@@ -1276,6 +1289,8 @@
     GameWorld.GetGameWorld().GetDBGoldOrderFormMgr().Sort()
     #排序排行榜
     PlayerBillboard.SortServerBillboard()
+    #功能队伍
+    PlayerFuncTeam.OnGameServerInitOK()
     #仙盟
     PlayerFamily.OnGameServerInitOK()
     GameWorldActionControl.Dispose_FBStateTime()
@@ -1303,6 +1318,7 @@
     CrossChampionship.OnServerStart()
     #跨服战场
     CrossBattlefield.OnServerStart()
+    GameWorship.OnServerStart()
     #红包
     PlayerFamilyRedPacket.OnServerStart()
     #云购
@@ -1444,6 +1460,7 @@
     if not GameWorld.GetGameWorld().GetDictByKey(ChConfig.Def_WorldKey_IsGameWorldInit):
         GameWorld.Log("AllMapServerInitOK时GameServer还未启动好!")
         return
+    __CheckAllMapInitOK()
     #通知所有地图服务器初始化成功, 同步时间
     GameWorld.GetGameWorld().Notify_AllMapServerInitOK(GameWorld.GetCurrentDataTimeStr())
     
@@ -1488,6 +1505,9 @@
     GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_LastMixServerDay, lastMixServerDay)
     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)
@@ -1537,6 +1557,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