From bc5f3f1c88d225109fa39a85b209ef13f5fb52a9 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 06 二月 2026 21:28:13 +0800
Subject: [PATCH] 66 【公会】基础主体-服务端(跨服公会所有基本功能支持、跨服砍价支持;修改查看目标公会、查看目标玩家方式;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Family.py | 48 +++++++++++++++++++++++++++++++-----------------
1 files changed, 31 insertions(+), 17 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 6ddd0c0..8fd4477 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
@@ -23,25 +23,33 @@
import PlayerFamily
import CrossPlayer
import DBDataMgr
+import DBFamily
import time
def GetGMServerIDList(curPlayer):
## 获取命令额外发送到其他服务器,如跨服
crossServerID = DBDataMgr.GetFamilyMgr().GetCurCrossServerID()
- GameWorld.DebugAnswer(curPlayer, "GetGMServerIDList: %s" % crossServerID)
+ GameWorld.DebugAnswer(curPlayer, "本服公会互通跨服ID:%s" % crossServerID)
if crossServerID:
return [crossServerID]
return []
-def OnExecCross(crossPlayer, msgList):
+def OnExecCross(crossPlayer, gmList):
## 跨服执行命令
- GameWorld.DebugLog("OnExecCross %s" % msgList, crossPlayer.GetPlayerID())
+ playerID = crossPlayer.GetPlayerID()
+ familyMgr = DBDataMgr.GetFamilyMgr()
+ familyID = familyMgr.GetPlayerFamilyID(playerID)
+ zoneID = familyMgr.GetFamilyZoneID(familyID)
+ GameWorld.DebugAnswer(crossPlayer, "跨服公会ID:%s,zoneID=%s" % (familyID, zoneID))
+ OnExec(crossPlayer, gmList)
return
def OnExec(curPlayer, msgList):
## 游戏服执行命令
if not msgList:
+ if GameWorld.IsCrossServer():
+ return
GameWorld.DebugAnswer(curPlayer, "设置等级: Family lv 等级 经验")
GameWorld.DebugAnswer(curPlayer, "设置徽章: Family e 徽章ID [剩余时间秒]")
GameWorld.DebugAnswer(curPlayer, "设置贡献: Family c 今日贡献 累计贡献 [成员ID]")
@@ -56,9 +64,11 @@
if not crossPlayer:
return
+ isMainServer = GameWorld.IsMainServer()
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
@@ -68,63 +78,67 @@
GameWorld.DebugAnswer(curPlayer, "设置离开: Info=%s,%s" % (leaveInfo, GameWorld.ChangeTimeNumToStr(leaveTime)))
return
- familyID = curPlayer.GetFamilyID()
+ if isMainServer and DBFamily.IsFamilyCross():
+ GameWorld.DebugAnswer(curPlayer, "公会已跨服由跨服执行命令")
+ return
+
+ familyID = crossPlayer.GetFamilyID()
familyMgr = DBDataMgr.GetFamilyMgr()
curFamily = familyMgr.FindFamily(familyID) if familyID else None
if not curFamily:
- GameWorld.DebugAnswer(curPlayer, "玩家未加入仙盟!")
+ GameWorld.DebugAnswer(crossPlayer, "玩家未加入仙盟!")
return
if value == "lv":
lv = msgList[1] if len(msgList) > 1 else 1
exp = msgList[2] if len(msgList) > 2 else 0
if not IpyGameDataPY.GetIpyGameData("Family", lv):
- GameWorld.DebugAnswer(curPlayer, "仙盟等级不存在: %s" % (lv))
+ GameWorld.DebugAnswer(crossPlayer, "仙盟等级不存在: %s" % (lv))
return
curFamily.SetLV(lv)
curFamily.SetExp(exp)
- GameWorld.DebugAnswer(curPlayer, "设置仙盟等级:%s, exp=%s" % (lv, exp))
+ GameWorld.DebugAnswer(crossPlayer, "设置仙盟等级:%s, exp=%s" % (lv, exp))
elif value == "e":
emblemID = msgList[1] if len(msgList) > 1 else 0
setExpireTimes = msgList[2] if len(msgList) > 2 else None
emblemActionObj = PlayerFamilyEmblem.AddFamilyEmblem(curFamily.GetID(), emblemID, setExpireTimes)
if not emblemActionObj:
- GameWorld.DebugAnswer(curPlayer, "该徽章ID无法添加")
+ GameWorld.DebugAnswer(crossPlayer, "该徽章ID无法添加")
return
endTime = PlayerFamilyEmblem.GetActionEmblemEndTime(emblemActionObj)
- GameWorld.DebugAnswer(curPlayer, "添加徽章(%s)到期:%s" % (emblemID, GameWorld.ChangeTimeNumToStr(endTime)))
+ GameWorld.DebugAnswer(crossPlayer, "添加徽章(%s)到期:%s" % (emblemID, GameWorld.ChangeTimeNumToStr(endTime)))
return
elif value == "m":
- CreateFamily.OnExec(curPlayer, msgList)
+ CreateFamily.OnExec(crossPlayer, msgList)
return
elif value == "n":
PlayerFamily.SetRenameTime(curFamily, 0)
- GameWorld.DebugAnswer(curPlayer, "重置改名CD")
+ GameWorld.DebugAnswer(crossPlayer, "重置改名CD")
elif value == "c":
contribDay = msgList[1] if len(msgList) > 1 else 0
contribTotal = msgList[2] if len(msgList) > 2 else 0
- memID = msgList[3] if len(msgList) > 3 else curPlayer.GetPlayerID()
+ memID = msgList[3] if len(msgList) > 3 else crossPlayer.GetPlayerID()
member = curFamily.FindMember(memID)
if not member:
- GameWorld.DebugAnswer(curPlayer, "不存在该成员ID:%s" % memID)
+ GameWorld.DebugAnswer(crossPlayer, "不存在该成员ID:%s" % memID)
return
member.SetContribDay(contribDay)
member.SetContribTotal(contribTotal)
- GameWorld.DebugAnswer(curPlayer, "设置贡献:%s/%s, ID:%s" % (contribDay, contribTotal, memID))
+ GameWorld.DebugAnswer(crossPlayer, "设置贡献:%s/%s, ID:%s" % (contribDay, contribTotal, memID))
elif value == "ml":
memID = msgList[1] if len(msgList) > 1 else 0
logoutMinutes = msgList[2] if len(msgList) > 2 else 0
member = curFamily.FindMember(memID)
if not member:
- GameWorld.DebugAnswer(curPlayer, "不存在该成员ID:%s" % memID)
+ GameWorld.DebugAnswer(crossPlayer, "不存在该成员ID:%s" % memID)
return
member.SetOffTime(int(time.time()) - logoutMinutes * 60)
- GameWorld.DebugAnswer(curPlayer, "成员ID:%s,离线时间:%s" % (memID, GameWorld.ChangeTimeNumToStr(member.GetOffTime())))
+ GameWorld.DebugAnswer(crossPlayer, "成员ID:%s,离线时间:%s" % (memID, GameWorld.ChangeTimeNumToStr(member.GetOffTime())))
PlayerFamily.Sync_FamilyInfo(crossPlayer)
return
--
Gitblit v1.8.0