From 01a0e539b786ae0f1c46646874502367f5410aca Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 04 二月 2026 18:18:51 +0800
Subject: [PATCH] 66 【公会】基础主体-服务端(优化游戏服及跨服启动、通讯逻辑;服务器类型增加跨服中心、跨服事件、时间管理;跨服玩家在线状态、基础信息、玩家资源增减管理、发送跨服个人邮件等;跨服公会初版,修复公会成员审核、成员战力刷新等bug,增加公会名次同步;跨服公会暂未测试;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Family.py | 77 ++++++++++++++++++++++++++++++++++++--
1 files changed, 72 insertions(+), 5 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 a90b3c5..6ddd0c0 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
@@ -16,17 +16,56 @@
#-------------------------------------------------------------------------------
import GameWorld
+import CreateFamily
import IpyGameDataPY
import PlayerFamilyEmblem
+import PlayerControl
import PlayerFamily
+import CrossPlayer
import DBDataMgr
+import time
+
+def GetGMServerIDList(curPlayer):
+ ## 获取命令额外发送到其他服务器,如跨服
+ crossServerID = DBDataMgr.GetFamilyMgr().GetCurCrossServerID()
+ GameWorld.DebugAnswer(curPlayer, "GetGMServerIDList: %s" % crossServerID)
+ if crossServerID:
+ return [crossServerID]
+ return []
+
+def OnExecCross(crossPlayer, msgList):
+ ## 跨服执行命令
+ GameWorld.DebugLog("OnExecCross %s" % msgList, crossPlayer.GetPlayerID())
+ return
def OnExec(curPlayer, msgList):
+ ## 游戏服执行命令
if not msgList:
GameWorld.DebugAnswer(curPlayer, "设置等级: Family lv 等级 经验")
GameWorld.DebugAnswer(curPlayer, "设置徽章: Family e 徽章ID [剩余时间秒]")
- GameWorld.DebugAnswer(curPlayer, "创建仙盟相关使用命令: CreateFamily")
+ 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
familyID = curPlayer.GetFamilyID()
@@ -35,8 +74,6 @@
if not curFamily:
GameWorld.DebugAnswer(curPlayer, "玩家未加入仙盟!")
return
-
- value = msgList[0]
if value == "lv":
lv = msgList[1] if len(msgList) > 1 else 1
@@ -57,7 +94,37 @@
return
endTime = PlayerFamilyEmblem.GetActionEmblemEndTime(emblemActionObj)
GameWorld.DebugAnswer(curPlayer, "添加徽章(%s)到期:%s" % (emblemID, GameWorld.ChangeTimeNumToStr(endTime)))
- return
+ return
- PlayerFamily.Sync_FamilyInfo(curPlayer)
+ elif value == "m":
+ CreateFamily.OnExec(curPlayer, msgList)
+ return
+
+ elif value == "n":
+ PlayerFamily.SetRenameTime(curFamily, 0)
+ GameWorld.DebugAnswer(curPlayer, "重置改名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()
+ member = curFamily.FindMember(memID)
+ if not member:
+ GameWorld.DebugAnswer(curPlayer, "不存在该成员ID:%s" % memID)
+ return
+ member.SetContribDay(contribDay)
+ member.SetContribTotal(contribTotal)
+ GameWorld.DebugAnswer(curPlayer, "设置贡献:%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)
+ return
+ member.SetOffTime(int(time.time()) - logoutMinutes * 60)
+ GameWorld.DebugAnswer(curPlayer, "成员ID:%s,离线时间:%s" % (memID, GameWorld.ChangeTimeNumToStr(member.GetOffTime())))
+
+ PlayerFamily.Sync_FamilyInfo(crossPlayer)
return
--
Gitblit v1.8.0