From ec5de0b415bb3fd2c12367b1babfe0d4351a2827 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 17 三月 2026 15:03:38 +0800
Subject: [PATCH] 405 【公会】自动转让会长规则调整(优化优先传位配置;优化跨服邮件发送;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py | 66 +++++++++++++++++++++++++--------
1 files changed, 50 insertions(+), 16 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py
index 37590a0..24c2e93 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py
@@ -700,20 +700,21 @@
return startDateStr, endDateStr
# 开服天
+ import DBDataMgr
if startDateStr.isdigit():
- diffDay = GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
+ diffDay = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_ServerDay) + 1
startDateTime = curDateTime + datetime.timedelta(days=(int(startDateStr)-diffDay))
endDateTime = curDateTime + datetime.timedelta(days=(int(endDateStr)-diffDay))
# K开服天
elif startDateStr.startswith("K"):
- diffDay = GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
+ diffDay = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_ServerDay) + 1
startDateTime = curDateTime + datetime.timedelta(days=(ToIntDef(startDateStr[1:])-diffDay))
endDateTime = curDateTime + datetime.timedelta(days=(ToIntDef(endDateStr[1:])-diffDay))
# 合服天
elif startDateStr.startswith("Mix"):
- diffDay = GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_MixServerDay) + 1
+ diffDay = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_MixServerDay) + 1
startDateTime = curDateTime + datetime.timedelta(days=(int(startDateStr[3:])-diffDay))
endDateTime = curDateTime + datetime.timedelta(days=(int(endDateStr[3:])-diffDay))
@@ -1371,6 +1372,22 @@
## 是否跨服中心服务器
return GetServerType() == ShareDefine.serverType_CrossCenter
+def CheckCrossCenterUniquenessErr():
+ ## 检查跨服中心唯一性
+ # @return: 是否异常
+ if not IsCrossCenter():
+ return
+ serverCnt = 0
+ serverDict = ReadChConfig.GetServerConfigDict()
+ for serverInfo in serverDict.values():
+ serverType = serverInfo[ShareDefine.serverCfgIndex_ServerType]
+ if serverType == ShareDefine.serverType_CrossCenter:
+ serverCnt += 1
+ if serverCnt > 1:
+ SendGameErrorEx("CrossCenterUniquenessErr", "跨服中心只允许配置一台", isRaiseErr=True)
+ return
+ return
+
def IsMainServer():
## 是否游戏服
return GetServerType() == ShareDefine.serverType_Main
@@ -1407,7 +1424,7 @@
# MainServerDict = {} # 所属主服ID {子服ID:主服ID, ...}
# groupName = GetServerGroupName()
# serverDict = ReadChConfig.GetServerConfigDict()
- # for serverInfo in serverDict:
+ # for serverInfo in serverDict.values():
# groupName = serverInfo[ShareDefine.serverCfgIndex_GroupName]
# serverMapID = serverInfo[ShareDefine.serverCfgIndex_MapID]
# serverType = serverInfo[ShareDefine.serverCfgIndex_ServerType]
@@ -1423,12 +1440,6 @@
#if not MainServerDict or serverID not in MainServerDict:
# return serverID
#return MainServerDict[serverID]
-
-##获得当前服务器平台
-# @param 无
-# @return
-def GetPlatform():
- return ReadChConfig.GetPyMongoConfig("platform", "PlatformName")
def GetAppID():
## 获取渠道ID
@@ -2013,7 +2024,11 @@
return datetime.datetime.strptime(timeStr, timeFormat)
def ChangeStrToDatetime(timeStr, timeFormat=ChConfig.TYPE_Time_Format):
- return datetime.datetime.strptime(timeStr, timeFormat)
+ try:
+ return datetime.datetime.strptime(timeStr, timeFormat)
+ except:
+ # 转化失败返回默认,如传入0也可转换
+ return datetime.datetime(1970, 1, 1, 8, 0, 0)
## 时间格式转换成数值时间
# @param dateT: datetime.datetime
@@ -2445,15 +2460,34 @@
def DebugAnswer(curPlayer, text):
- '''转码后再发DebugAnswer'''
+ '''转码后再发DebugAnswer
+ @param curPlayer: 跨服服务器时支持直接传入 crossPlayer
+ '''
#===========================================================================
# if not GetGameWorld().GetDebugLevel():
# return
#===========================================================================
-
- DebugLog(text, curPlayer.GetPlayerID())
+ playerID = curPlayer.GetPlayerID()
+ if IsCrossServer():
+ crossPlayer = curPlayer
+ mainServerID = crossPlayer.GetMainServerID()
+ if not mainServerID:
+ return
+ import CrossMsg
+ CrossMsg.SendToClientServer(ShareDefine.C2S_GMDebugAnswer, {"text":text}, [mainServerID], playerID)
+ return
+ if hasattr(curPlayer, "GetPlayer"):
+ curPlayer = curPlayer.GetPlayer()
+ DebugLog(text, playerID)
text = text.decode(ShareDefine.Def_Game_Character_Encoding).encode(GetCharacterEncoding())
curPlayer.DebugAnswer(text)
+ return
+
+def C2S_GMDebugAnswer(dataMsg, playerID):
+ text = dataMsg["text"]
+ curPlayer = GetPlayerManager().FindPlayerByID(playerID)
+ if curPlayer:
+ DebugAnswer(curPlayer, text)
return
def RaiseException(errorMsg, playerID=0):
@@ -2465,10 +2499,10 @@
SendGameError("MapServerRaiseException", errorMsg)
return
-def SendGameErrorEx(errType, msgInfo="", playerID=0):
+def SendGameErrorEx(errType, msgInfo="", playerID=0, isRaiseErr=False):
ErrLog("SendGameErrorEx: %s -> %s" % (errType, msgInfo), playerID)
SendGameError(errType, msgInfo)
- if GetGameWorld().GetDebugLevel():
+ if isRaiseErr or GetGameWorld().GetDebugLevel():
raise Exception("%s -> %s" % (errType, msgInfo))
return
--
Gitblit v1.8.0