From fd1197fd91110938802a68d998e6f45bb65495ed Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 09 二月 2026 20:12:07 +0800
Subject: [PATCH] 66 【公会】基础主体-服务端(公会讨伐支持跨服;test_OnDay等命令支持跨服同步过天等;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/GameWorldEvent.py |   48 +++++++++++++++++++++++++++++++++++-------------
 1 files changed, 35 insertions(+), 13 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/GameWorldEvent.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/GameWorldEvent.py
index e366e5e..f12f11c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/GameWorldEvent.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/GameWorldEvent.py
@@ -25,6 +25,7 @@
 import IPY_GameWorld
 import DataRecordPack
 import PlayerEventCounter
+import GameWorldAction
 import PlayerViewCache
 import PlayerControl
 import NetPackCommon
@@ -91,6 +92,9 @@
     LoadDBPlayer()
     PlayerViewCache.LoadRobot()
     PyGameData.g_initGameTime = int(time.time()) # 放到加载数据之后
+    
+    # 检查跨服中心唯一性
+    GameWorld.CheckCrossCenterUniquenessErr()
     
     if DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_FamilyTransDataTime):
         DBDataMgr.GetEventTrigMgr().SetValue(ShareDefine.Def_FamilyTransDataTime, 0)
@@ -332,15 +336,13 @@
     DoCheckNewServerOpen(tick)
     DBDataMgr.OnMinute(curTime)
     DoLogic_GameWorldEvenByTime(tick)
+    GameWorldAction.OnProcessGameAction(curTime)
     
     #每5分钟
     if curMinute % 5 == 0:
         OnMinute_5(curTime, tick)
         
     #其他功能逻辑
-    #GameWorldActionControl.Dispose_OperationActionState()
-    #GameWorldActionControl.Dispose_DailyActionState()
-    #GameWorldActionControl.Dispose_FBStateTime()
     PlayerControl.OnMinute(curTime)
     PlayerFamily.OnMinute()
     PlayerOnline.OnMinute()
@@ -365,6 +367,14 @@
     gameWorld.SetGameWorldDict("OnlineCntM", curMinute)
     activePlayerCount = GameWorld.GetPlayerManager().OnlineCount()
     DataRecordPack.DR_OnLinePlayerCount(activePlayerCount) # 总在线
+    return
+
+def OnGM_CrossCenterEvent(gmEvent):
+    if not GameWorld.IsCrossCenter():
+        return
+    serverEventValue = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_CrossCenterEvent)
+    if DoLogic_CrossCenterEvent(serverEventValue, gmEvent=gmEvent):
+        CrossMgr.SendCrossServerEvent(gmEvent=gmEvent)
     return
 
 def DoLogic_GameWorldEvenByTime(tick):
@@ -457,22 +467,25 @@
     PlayerEventCounter.DoLogic_OnYear(tick)
     return
 
-def DoLogic_CrossCenterEvent(centerEventValue, centerServerID=0):
+def DoLogic_CrossCenterEvent(centerEventValue, centerServerID=0, gmEvent=""):
     ## 收到跨服中心事件同步,如OnDay等
     serverEventValue = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_CrossCenterEvent)
     if not serverEventValue:
         serverEventValue = centerEventValue
         DBDataMgr.GetEventTrigMgr().SetValue(ShareDefine.Def_CrossCenterEvent, centerEventValue)
         
-    if centerServerID:
-        GameWorld.Log("处理跨服中心事件值! serverEventValue=%s,centerEventValue=%s,centerServerID=%s" % (serverEventValue, centerEventValue, centerServerID))
-        
-    if serverEventValue == centerEventValue:
-        GameWorld.DebugLog("跨服中心事件值不变! serverEventValue=%s,centerEventValue=%s,centerServerID=%s" % (serverEventValue, centerEventValue, centerServerID))
+    if serverEventValue == centerEventValue and not gmEvent:
+        if centerServerID:
+            GameWorld.Log("本服与跨服中心事件值相同不处理! serverEventValue=%s,centerEventValue=%s,centerServerID=%s" % (serverEventValue, centerEventValue, centerServerID))
         return
     
-    serverEventTime = GameWorld.ChangeStrToDatetime("%s:%02d:%02d" % serverEventValue, ChConfig.TYPE_Time_Format_YmdHMS)
-    centerEventTime = GameWorld.ChangeStrToDatetime("%s:%02d:%02d" % centerEventValue, ChConfig.TYPE_Time_Format_YmdHMS)
+    if centerServerID:
+        GameWorld.Log("本服与跨服中心事件值变化! serverEventValue=%s,centerEventValue=%s,centerServerID=%s,gmEvent=%s" % (serverEventValue, centerEventValue, centerServerID, gmEvent))
+    else:
+        GameWorld.Log("跨服中心服务器事件值变化! serverEventValue=%s,centerEventValue=%s,gmEvent=%s" % (serverEventValue, centerEventValue, gmEvent))
+        
+    serverEventTime = GameWorld.ChangeStrToDatetime("%s" % serverEventValue, ChConfig.TYPE_Time_Format_YmdH)
+    centerEventTime = GameWorld.ChangeStrToDatetime("%s" % centerEventValue, ChConfig.TYPE_Time_Format_YmdH)
     
     serverHour = serverEventTime.hour
     serverDay = serverEventTime.day
@@ -491,12 +504,12 @@
     isEvent = False
     
     #OnHour事件
-    if (serverHour != centerHour or serverDay != centerDay or serverMonth != centerMonth or serverYear != centerYear):
+    if (serverHour != centerHour or serverDay != centerDay or serverMonth != centerMonth or serverYear != centerYear or gmEvent == "GMOnHour"):
         isEvent = True
         PlayerEventCounter.DoLogic_CrossCenterOnHour(centerEventValue)
         
     #OnDay事件
-    if (serverDay != centerDay or serverMonth != centerMonth or serverYear != centerYear):
+    if (serverDay != centerDay or serverMonth != centerMonth or serverYear != centerYear or gmEvent == "GMOnDay"):
         isEvent = True
         PlayerEventCounter.DoLogic_CrossCenterOnDay(centerEventValue)
         
@@ -512,6 +525,15 @@
     #if serverYear != curTimeYear:
     #    OnYear(tick)
     
+    # 游戏服额外处理玩家
+    if GameWorld.IsMainServer():
+        playerManager = GameWorld.GetPlayerManager()
+        for i in xrange(playerManager.OnlineCount()):
+            curPlayer = playerManager.OnlineAt(i)
+            if not GameWorld.IsNormalPlayer(curPlayer):
+                continue
+            PlayerEventCounter.PlayerOnCrossCenterEvent(curPlayer, centerEventValue, gmEvent=gmEvent)
+            
     return isEvent
 
 def __CheckIpyDataRecycle(timeNow):

--
Gitblit v1.8.0