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/Player/PlayerFamily.py | 15 ++++++++-------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/GMShell.py | 15 ++++++++-------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py | 2 ++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMail.py | 7 ++-----
4 files changed, 20 insertions(+), 19 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/GMShell.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/GMShell.py
index 121cb33..ef5a0fe 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/GMShell.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/GMShell.py
@@ -121,13 +121,14 @@
callFunc = GameWorld.GetExecFunc(Commands, "%s.%s"%(callFunName, "GetGMServerIDList"))
if callFunc != None:
gmServerIDList = callFunc(curPlayer)
- pack = ChServerToServerPyPack.tagSSGMCMD()
- pack.FromServerID = GameWorld.GetGameWorld().GetServerID()
- pack.ServerType = GameWorld.GetServerType()
- pack.PlayerID = curPlayer.GetPlayerID()
- pack.CMDStr = str(inputList)
- pack.CMDLen = len(pack.CMDStr)
- NetPackCommon.SendCrossServerToServerPack(pack, gmServerIDList, dirType=ShareDefine.dirType_Cross)
+ if gmServerIDList:
+ pack = ChServerToServerPyPack.tagSSGMCMD()
+ pack.FromServerID = GameWorld.GetGameWorld().GetServerID()
+ pack.ServerType = GameWorld.GetServerType()
+ pack.PlayerID = curPlayer.GetPlayerID()
+ pack.CMDStr = str(inputList)
+ pack.CMDLen = len(pack.CMDStr)
+ NetPackCommon.SendCrossServerToServerPack(pack, gmServerIDList, dirType=ShareDefine.dirType_Cross)
return
# GameObj 的 Get、Set函数
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py
index 77755b5..24c2e93 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py
@@ -2476,6 +2476,8 @@
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)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py
index 4755131..6c501bb 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py
@@ -87,21 +87,24 @@
def __doFamilyOnHour():
needHours = IpyGameDataPY.GetFuncCfg("FamilyLeaderAutoChange", 1)
+ priorityHours = IpyGameDataPY.GetFuncCfg("FamilyLeaderAutoChange", 2) # 优先传给离线不超过x小时的成员,一样按优先级
if GameWorld.IsMainServer() and not DBFamily.IsFamilyCross():
# 开服前X天会长离线Y小时触发自动转让,优先级高于数值1,格式 X|Y
- befServerDay, needHours2 = IpyGameDataPY.GetFuncEvalCfg("FamilyLeaderAutoChange", 3)
+ openServerSet = IpyGameDataPY.GetFuncEvalCfg("FamilyLeaderAutoChange", 3)
+ befServerDay = openServerSet[0]
serverDay = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_ServerDay) + 1
if serverDay <= befServerDay:
- needHours = needHours2
+ needHours = openServerSet[1]
+ priorityHours = openServerSet[2]
- #GameWorld.DebugLog("自动传位时长设定: needHours=%s" % needHours)
+ GameWorld.DebugLog("自动传位时长设定: needHours=%s,priorityHours=%s" % (needHours, priorityHours))
familyManager = DBDataMgr.GetFamilyMgr()
for zoneID in familyManager.GetZoneIDListThisServer():
zoneMgr = familyManager.GetZoneFamilyMgr(zoneID)
for i in range(0, zoneMgr.GetCount()):
family = zoneMgr.GetAt(i)
#自动传位
- __AutoChangeLeader(family, needHours)
+ __AutoChangeLeader(family, needHours, priorityHours)
return
def FamilyCrossCenterOnDay():
@@ -1344,7 +1347,7 @@
CrossPlayer.FamilyNotify(familyID, "XW_JZ_AppointFamily", [memName, changeFamilyLV])
return
-def __AutoChangeLeader(curFamily, needHours):
+def __AutoChangeLeader(curFamily, needHours, priorityHours):
## 自动传位
leaderID = curFamily.GetLeaderID()
leaderMem = curFamily.FindMember(leaderID)
@@ -1361,8 +1364,6 @@
GameWorld.DebugLogEx("盟主离线未超过限制小时,不处理自动传位!familyID=%s,leaderID=%s,offTime=%s,passHours=%s < %s",
familyID, leaderID, GameWorld.ChangeTimeNumToStr(offTime), passHours, needHours)
return
-
- priorityHours = IpyGameDataPY.GetFuncCfg("FamilyLeaderAutoChange", 2) # 优先传给离线不超过x小时的成员,一样按优先级
priorityList = []
for i in range(0, curFamily.GetCount()):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMail.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMail.py
index b773156..c459b29 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMail.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMail.py
@@ -114,11 +114,8 @@
def SendMailByKey(mailTypeKey, playerID, itemList, paramList=[], limitDays=7, toServerID=0):
## 发送个人邮件魔板
# @param itemList: 元素支持字典{itemID:itemCount, ...} 或列表 [itemID, itemCount, 可选是否拍品, 物品UserData]
- # @param toServerID: 向其他服玩家发送邮件时需指定玩家所在服务器
- if toServerID > 0:
- if not GameWorld.IsCrossServer():
- GameWorld.ErrLog("非跨服服务器不能向其他服务器发送个人邮件! %s,playerID=%s" % (mailTypeKey, playerID))
- return
+ # @param toServerID: 向其他服玩家发送邮件时需指定玩家所在服务器,仅跨服服务器时有效
+ if toServerID > 0 and GameWorld.IsCrossServer():
dataMsg = {"mailTypeKey":mailTypeKey, "itemList":itemList, "paramList":paramList, "limitDays":limitDays}
mainServerID = GameWorld.GetMainServerID(toServerID)
CrossMsg.SendToClientServer(ShareDefine.C2S_SendPlayerMail, dataMsg, [mainServerID], playerID)
--
Gitblit v1.8.0