From 9d5ec7599f3abe0cebb76ce1df3c3b8c4e0aa51e Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 10 二月 2026 11:40:15 +0800
Subject: [PATCH] 66 【公会】基础主体-服务端(跨服聊天;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/CreateFamily.py | 120 +++++++++++++++++++++++++++++++++---------------------------
1 files changed, 66 insertions(+), 54 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/CreateFamily.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/CreateFamily.py
index 087b9c0..4b32228 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/CreateFamily.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/CreateFamily.py
@@ -27,20 +27,54 @@
def GetGMServerIDList(curPlayer):
## 获取命令额外发送到其他服务器,如跨服
crossServerID = DBDataMgr.GetFamilyMgr().GetCurCrossServerID()
- #GameWorld.DebugAnswer(curPlayer, "GetGMServerIDList: %s" % crossServerID)
if crossServerID:
+ GameWorld.DebugAnswer(curPlayer, "本服公会已互通跨服ID:%s" % crossServerID)
return [crossServerID]
+ GameWorld.DebugAnswer(curPlayer, "本服公会未互通")
return []
def OnExecCross(crossPlayer, gmList):
- ## 跨服执行命令
- GameWorld.DebugLog("OnExecCross %s" % gmList, crossPlayer.GetPlayerID())
+ if not gmList:
+ return
+ if GameWorld.IsMainServer() and DBDataMgr.GetFamilyMgr().GetCurCrossServerID():
+ # 本服公会已互通不再执行本服命令
+ return
+
+ playerID = crossPlayer.GetPlayerID()
+ familyMgr = DBDataMgr.GetFamilyMgr()
+ familyID = familyMgr.GetPlayerFamilyID(playerID)
+ zoneID = familyMgr.GetFamilyZoneID(familyID)
+ if GameWorld.IsCrossServer():
+ GameWorld.DebugAnswer(crossPlayer, "跨服公会ID:%s,zoneID=%s" % (familyID, zoneID))
+
+ value1 = gmList[0]
+ if value1 == "pl":
+ __printFamilyList(crossPlayer, gmList)
+ return
+
+ if value1 == "pf":
+ __printFamilyInfo(crossPlayer, gmList)
+ return
+
+ if value1 == "sq":
+ __addFackRequestJoin(crossPlayer, gmList)
+ return
+
+ if value1 == "m":
+ __addFackMember(crossPlayer, gmList)
+ return
+
+ creatCount = value1
+ if creatCount <= 0:
+ __delFackFamily(crossPlayer)
+ return
+ __createFackFamily(crossPlayer, gmList)
return
def OnExec(curPlayer, gmList):
## 游戏服执行命令
-
if not gmList:
+ GameWorld.DebugAnswer(curPlayer, "-----%s-----" % GameWorld.GetCurrentDataTimeStr())
GameWorld.DebugAnswer(curPlayer, "创建假人公会: CreatFamily 个数 [总战力 ServerID 等级 成员数 是否审核 官职限制]")
GameWorld.DebugAnswer(curPlayer, "删除假人公会: CreatFamily 0")
GameWorld.DebugAnswer(curPlayer, "输出公会列表: CreatFamily pl [条数 从第x名]")
@@ -51,46 +85,24 @@
crossPlayer = CrossPlayer.GetCrossPlayerMgr().FindCrossPlayer(curPlayer.GetPlayerID())
if not crossPlayer:
- #GameWorld.DebugAnswer(curPlayer, "找不到crossPlayer")
return
- value1 = gmList[0]
- if value1 == "pl":
- __printFamilyList(curPlayer, gmList)
- return
-
- if value1 == "pf":
- __printFamilyInfo(curPlayer, gmList)
- return
-
- if value1 == "sq":
- __addFackRequestJoin(curPlayer, gmList)
- return
-
- if value1 == "m":
- __addFackMember(curPlayer, gmList, crossPlayer)
- return
-
- creatCount = value1
- if creatCount <= 0:
- __delFackFamily(curPlayer)
- return
- __createFackFamily(curPlayer, gmList)
+ OnExecCross(crossPlayer, gmList)
return
-def __addFackMember(curPlayer, gmList, crossPlayer):
+def __addFackMember(crossPlayer, gmList):
memCnt = gmList[1] if len(gmList) > 1 else 1
- familyID = gmList[2] if len(gmList) > 2 else curPlayer.GetFamilyID()
+ familyID = gmList[2] if len(gmList) > 2 else crossPlayer.GetFamilyID()
familyMgr = DBDataMgr.GetFamilyMgr()
curFamily = familyMgr.FindFamily(familyID)
if not curFamily:
- GameWorld.DebugAnswer(curPlayer, "没有该公会: %s" % familyID)
+ GameWorld.DebugAnswer(crossPlayer, "没有该公会: %s" % familyID)
return
MemberMax = PlayerFamily.GetFamilySetting(curFamily.GetLV(), "MemberMax")
if curFamily.GetCount() >= MemberMax:
- GameWorld.DebugAnswer(curPlayer, "成员已满: %s" % MemberMax)
+ GameWorld.DebugAnswer(crossPlayer, "成员已满: %s" % MemberMax)
return
memCnt = min(memCnt, MemberMax - curFamily.GetCount())
@@ -120,17 +132,17 @@
curZoneMgr.Sort()
PlayerFamily.Sync_FamilyInfo(crossPlayer)
- GameWorld.DebugAnswer(curPlayer, "增加成员数:%s, 总成员:%s" % (addCnt, curFamily.GetCount()))
+ GameWorld.DebugAnswer(crossPlayer, "增加成员数:%s, 总成员:%s" % (addCnt, curFamily.GetCount()))
return
-def __addFackRequestJoin(curPlayer, gmList):
+def __addFackRequestJoin(crossPlayer, gmList):
reqCnt = gmList[1] if len(gmList) > 1 else 1
- familyID = gmList[2] if len(gmList) > 2 else curPlayer.GetFamilyID()
+ familyID = gmList[2] if len(gmList) > 2 else crossPlayer.GetFamilyID()
familyMgr = DBDataMgr.GetFamilyMgr()
family = familyMgr.FindFamily(familyID)
if not family:
- GameWorld.DebugAnswer(curPlayer, "没有该公会: %s" % familyID)
+ GameWorld.DebugAnswer(crossPlayer, "没有该公会: %s" % familyID)
return
reqCnt = min(reqCnt, 100)
@@ -149,10 +161,10 @@
break
# 广播给有招人权限的
PlayerFamily.SendFamilyReqJoinInfo(familyID)
- GameWorld.DebugAnswer(curPlayer, "增加申请数:%s, 总申请:%s" % (addCnt, len(family.GetReqJoinPlayerInfo())))
+ GameWorld.DebugAnswer(crossPlayer, "增加申请数:%s, 总申请:%s" % (addCnt, len(family.GetReqJoinPlayerInfo())))
return
-def __printFamilyList(curPlayer, gmList):
+def __printFamilyList(crossPlayer, gmList):
printCnt = gmList[1] if len(gmList) > 1 else 20
fromIndex = gmList[2] if len(gmList) > 2 else 0
@@ -163,7 +175,7 @@
zoneMgr = familyMgr.GetZoneFamilyMgr(zoneID)
zoneMgr.Sort()
familyCnt = zoneMgr.GetCount()
- GameWorld.DebugAnswer(curPlayer, "----- 【分区%s】公会总数: %s -----" % (zoneID, familyCnt))
+ GameWorld.DebugAnswer(crossPlayer, "----- 【分区%s】公会总数: %s -----" % (zoneID, familyCnt))
for index in range(fromIndex, fromIndex + printCnt):
if index >= familyCnt:
break
@@ -173,38 +185,38 @@
text = "%s,ID:%s,LV:%s,战:%s,成:%s,审:%s,官:%s" % (rank, family.GetID(), family.GetLV(), family.GetFightPowerTotal(), family.GetCount(), family.GetJoinReview(), family.GetJoinLVMin())
printAnswerCnt += 1
if printAnswerCnt <= 100:
- GameWorld.DebugAnswer(curPlayer, text)
+ GameWorld.DebugAnswer(crossPlayer, text)
else:
GameWorld.DebugLog(text)
return
-def __printFamilyInfo(curPlayer, gmList):
- familyID = gmList[1] if len(gmList) > 1 else curPlayer.GetFamilyID()
+def __printFamilyInfo(crossPlayer, gmList):
+ familyID = gmList[1] if len(gmList) > 1 else crossPlayer.GetFamilyID()
familyMgr = DBDataMgr.GetFamilyMgr()
family = familyMgr.FindFamily(familyID)
if not family:
- GameWorld.DebugAnswer(curPlayer, "公会不存在: %s" % familyID)
+ GameWorld.DebugAnswer(crossPlayer, "公会不存在: %s" % familyID)
return
zoneID = familyMgr.GetFamilyZoneID(familyID)
- GameWorld.DebugAnswer(curPlayer, "----- 【%s】 -----" % (GameWorld.CodeToGbk(family.GetName())))
- GameWorld.DebugAnswer(curPlayer, "公会ID:%s, ServerID:%s, 分区:%s" % (familyID, family.GetServerID(), zoneID))
- GameWorld.DebugAnswer(curPlayer, "LV:%s, Exp:%s" % (family.GetLV(), family.GetExp()))
- GameWorld.DebugAnswer(curPlayer, "审核:%s, 官职条件:%s, 申请数:%s" % (family.GetJoinReview(), family.GetJoinLVMin(), len(family.GetReqJoinPlayerInfo())))
- GameWorld.DebugAnswer(curPlayer, "战旗:%s, 旗号【%s】" % (family.GetEmblemID(), GameWorld.CodeToGbk(family.GetEmblemWord())))
- GameWorld.DebugAnswer(curPlayer, "总战力:%s, 人数:%s" % (family.GetFightPowerTotal(), family.GetCount()))
- GameWorld.DebugAnswer(curPlayer, "盟主ID:%s" % (family.GetLeaderID()))
+ GameWorld.DebugAnswer(crossPlayer, "----- 【%s】 -----" % (GameWorld.CodeToGbk(family.GetName())))
+ GameWorld.DebugAnswer(crossPlayer, "公会ID:%s, ServerID:%s, 分区:%s" % (familyID, family.GetServerID(), zoneID))
+ GameWorld.DebugAnswer(crossPlayer, "LV:%s, Exp:%s" % (family.GetLV(), family.GetExp()))
+ GameWorld.DebugAnswer(crossPlayer, "审核:%s, 官职条件:%s, 申请数:%s" % (family.GetJoinReview(), family.GetJoinLVMin(), len(family.GetReqJoinPlayerInfo())))
+ GameWorld.DebugAnswer(crossPlayer, "战旗:%s, 旗号【%s】" % (family.GetEmblemID(), GameWorld.CodeToGbk(family.GetEmblemWord())))
+ GameWorld.DebugAnswer(crossPlayer, "总战力:%s, 人数:%s" % (family.GetFightPowerTotal(), family.GetCount()))
+ GameWorld.DebugAnswer(crossPlayer, "盟主ID:%s" % (family.GetLeaderID()))
for index in range(family.GetCount()):
member = family.GetAt(index)
playerID = member.GetPlayerID()
fightPower = member.GetFightPowerTotal()
- GameWorld.DebugAnswer(curPlayer, "%s,ID:%s,职位:%s,战力:%s" % (index, playerID, member.GetFmLV(), fightPower))
+ GameWorld.DebugAnswer(crossPlayer, "%s,ID:%s,职位:%s,战力:%s" % (index, playerID, member.GetFmLV(), fightPower))
return
-def __delFackFamily(curPlayer):
+def __delFackFamily(crossPlayer):
delCnt = 0
familyMgr = DBDataMgr.GetFamilyMgr()
@@ -215,10 +227,10 @@
familyMgr.DelFamily(familyID)
remainCnt = len(familyMgr.GetFamilyIDList())
- GameWorld.DebugAnswer(curPlayer, "删除假公会数: %s,剩余:%s" % (delCnt, remainCnt))
+ GameWorld.DebugAnswer(crossPlayer, "删除假公会数: %s,剩余:%s" % (delCnt, remainCnt))
return
-def __createFackFamily(curPlayer, gmList):
+def __createFackFamily(crossPlayer, gmList):
## 个数 [总战力 ServerID 等级 成员数]
creatCount = gmList[0] if len(gmList) > 0 else 1 # 默认1个
@@ -307,5 +319,5 @@
createOKCnt += 1
familyFightPower += 10000
- GameWorld.DebugAnswer(curPlayer, "成功创建假公会: %s,总:%s" % (creatCount, len(familyMgr.GetFamilyIDList())))
+ GameWorld.DebugAnswer(crossPlayer, "成功创建假公会: %s,总:%s" % (creatCount, len(familyMgr.GetFamilyIDList())))
return
--
Gitblit v1.8.0