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/GM/Commands/Family.py | 87 +++++++++++++++++++++----------------------
1 files changed, 43 insertions(+), 44 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Family.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Family.py
index 0541ea5..4a95648 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Family.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Family.py
@@ -34,54 +34,23 @@
GameWorld.DebugAnswer(curPlayer, "本服公会未互通")
return []
-def OnExec(curPlayer, msgList):
- ## 游戏服执行命令
-
- isMainServer = GameWorld.IsMainServer()
+def OnExecCross(crossPlayer, msgList):
if not msgList:
- if not isMainServer:
- return
- GameWorld.DebugAnswer(curPlayer, "-----%s-----" % GameWorld.GetCurrentDataTimeStr())
- GameWorld.DebugAnswer(curPlayer, "设置等级: Family lv 等级 经验")
- GameWorld.DebugAnswer(curPlayer, "设置徽章: Family e 徽章ID [剩余时间秒]")
- GameWorld.DebugAnswer(curPlayer, "设置贡献: Family c 今日贡献 累计贡献 [成员ID]")
- GameWorld.DebugAnswer(curPlayer, "设置离开: Family l 主动离开次数 被踢次数 上次是否主动 离开多久了")
- GameWorld.DebugAnswer(curPlayer, "添加成员: Family m 人数 [公会ID]")
- GameWorld.DebugAnswer(curPlayer, "成员离线: Family ml 成员ID 离线分钟数")
- GameWorld.DebugAnswer(curPlayer, "重置改名: Family n")
- GameWorld.DebugAnswer(curPlayer, "创建公会相关使用命令: CreateFamily")
+ return
+ if GameWorld.IsMainServer() and DBDataMgr.GetFamilyMgr().GetCurCrossServerID():
+ # 本服公会已互通不再执行本服命令
return
- crossPlayer = CrossPlayer.GetCrossPlayerMgr().FindCrossPlayer(curPlayer.GetPlayerID())
- if not crossPlayer:
- return
-
- value = msgList[0]
-
- # 都在本服执行的
- if value == "l":
- if not isMainServer:
- return
- leaveCnt = msgList[1] if len(msgList) > 1 else 0
- kickedCnt = msgList[2] if len(msgList) > 2 else 0
- lastVoluntarily = msgList[3] if len(msgList) > 3 else 0
- leavePassMinutes = msgList[4] if len(msgList) > 4 else 0
- leaveInfo = PlayerControl.SetLeaveFamilyInfo(curPlayer, leaveCnt, kickedCnt, lastVoluntarily)
- leaveTime = PlayerControl.SetLeaveFamilyTimeEx(curPlayer, int(time.time()) - leavePassMinutes * 60)
- GameWorld.DebugAnswer(curPlayer, "设置离开: Info=%s,%s" % (leaveInfo, GameWorld.ChangeTimeNumToStr(leaveTime)))
- return
-
- if isMainServer:
- crossServerID = DBDataMgr.GetFamilyMgr().GetCurCrossServerID()
- if crossServerID:
- # 本服公会已互通不再执行本服命令
- return
-
familyID = crossPlayer.GetFamilyID()
familyMgr = DBDataMgr.GetFamilyMgr()
curFamily = familyMgr.FindFamily(familyID) if familyID else None
if not curFamily:
GameWorld.DebugAnswer(crossPlayer, "玩家未加入公会!")
+ return
+
+ value = msgList[0]
+ if value == "m":
+ CreateFamily.OnExecCross(crossPlayer, msgList)
return
if GameWorld.IsCrossServer():
@@ -108,10 +77,6 @@
return
endTime = PlayerFamilyEmblem.GetActionEmblemEndTime(emblemActionObj)
GameWorld.DebugAnswer(crossPlayer, "添加徽章(%s)到期:%s" % (emblemID, GameWorld.ChangeTimeNumToStr(endTime)))
- return
-
- elif value == "m":
- CreateFamily.OnExec(crossPlayer, msgList)
return
elif value == "n":
@@ -145,3 +110,37 @@
isSyncMem = True if syncMemIDList else False
PlayerFamily.Sync_FamilyInfo(crossPlayer, syncMemIDList=syncMemIDList, isSyncMem=isSyncMem)
return
+
+def OnExec(curPlayer, msgList):
+ ## 游戏服执行命令
+
+ if not msgList:
+ GameWorld.DebugAnswer(curPlayer, "-----%s-----" % GameWorld.GetCurrentDataTimeStr())
+ GameWorld.DebugAnswer(curPlayer, "设置等级: Family lv 等级 经验")
+ GameWorld.DebugAnswer(curPlayer, "设置徽章: Family e 徽章ID [剩余时间秒]")
+ GameWorld.DebugAnswer(curPlayer, "设置贡献: Family c 今日贡献 累计贡献 [成员ID]")
+ GameWorld.DebugAnswer(curPlayer, "设置离开: Family l 主动离开次数 被踢次数 上次是否主动 离开多久了")
+ GameWorld.DebugAnswer(curPlayer, "添加成员: Family m 人数 [公会ID]")
+ GameWorld.DebugAnswer(curPlayer, "成员离线: Family ml 成员ID 离线分钟数")
+ GameWorld.DebugAnswer(curPlayer, "重置改名: Family n")
+ GameWorld.DebugAnswer(curPlayer, "创建公会相关使用命令: CreateFamily")
+ return
+
+ crossPlayer = CrossPlayer.GetCrossPlayerMgr().FindCrossPlayer(curPlayer.GetPlayerID())
+ if not crossPlayer:
+ return
+
+ value = msgList[0]
+
+ if value == "l":
+ leaveCnt = msgList[1] if len(msgList) > 1 else 0
+ kickedCnt = msgList[2] if len(msgList) > 2 else 0
+ lastVoluntarily = msgList[3] if len(msgList) > 3 else 0
+ leavePassMinutes = msgList[4] if len(msgList) > 4 else 0
+ leaveInfo = PlayerControl.SetLeaveFamilyInfo(curPlayer, leaveCnt, kickedCnt, lastVoluntarily)
+ leaveTime = PlayerControl.SetLeaveFamilyTimeEx(curPlayer, int(time.time()) - leavePassMinutes * 60)
+ GameWorld.DebugAnswer(curPlayer, "设置离开: Info=%s,%s" % (leaveInfo, GameWorld.ChangeTimeNumToStr(leaveTime)))
+ return
+
+ OnExecCross(crossPlayer, msgList)
+ return
--
Gitblit v1.8.0