| | |
| | | #
|
| | | ##@package GM.Commands.Family
|
| | | #
|
| | | # @todo:仙盟
|
| | | # @todo:公会
|
| | | # @author hxp
|
| | | # @date 2025-10-10
|
| | | # @version 1.0
|
| | | #
|
| | | # 详细描述: 仙盟
|
| | | # 详细描述: 公会
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #"""Version = 2025-10-10 21:00"""
|
| | |
| | | import PlayerFamily
|
| | | import CrossPlayer
|
| | | import DBDataMgr
|
| | | import DBFamily
|
| | | import time
|
| | |
|
| | | def GetGMServerIDList(curPlayer):
|
| | | ## 获取命令额外发送到其他服务器,如跨服
|
| | | crossServerID = DBDataMgr.GetFamilyMgr().GetCurCrossServerID()
|
| | | GameWorld.DebugAnswer(curPlayer, "本服公会互通跨服ID:%s" % crossServerID)
|
| | | if crossServerID:
|
| | | GameWorld.DebugAnswer(curPlayer, "本服公会已互通跨服ID:%s" % crossServerID)
|
| | | return [crossServerID]
|
| | | GameWorld.DebugAnswer(curPlayer, "本服公会未互通")
|
| | | return []
|
| | |
|
| | | def OnExecCross(crossPlayer, gmList):
|
| | | ## 跨服执行命令
|
| | | 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):
|
| | | ## 游戏服执行命令
|
| | |
|
| | | isMainServer = GameWorld.IsMainServer()
|
| | | if not msgList:
|
| | | if GameWorld.IsCrossServer():
|
| | | 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]")
|
| | |
| | | if not crossPlayer:
|
| | | return
|
| | |
|
| | | isMainServer = GameWorld.IsMainServer()
|
| | | value = msgList[0]
|
| | | |
| | | # 都在本服执行的
|
| | | if value == "l":
|
| | | if not isMainServer:
|
| | | return
|
| | |
| | | GameWorld.DebugAnswer(curPlayer, "设置离开: Info=%s,%s" % (leaveInfo, GameWorld.ChangeTimeNumToStr(leaveTime)))
|
| | | return
|
| | |
|
| | | if isMainServer and DBFamily.IsFamilyCross():
|
| | | GameWorld.DebugAnswer(curPlayer, "公会已跨服由跨服执行命令")
|
| | | 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, "玩家未加入仙盟!")
|
| | | GameWorld.DebugAnswer(crossPlayer, "玩家未加入公会!")
|
| | | return
|
| | |
|
| | | if GameWorld.IsCrossServer():
|
| | | zoneID = familyMgr.GetFamilyZoneID(familyID)
|
| | | GameWorld.DebugAnswer(crossPlayer, "跨服公会ID:%s,zoneID=%s" % (familyID, zoneID))
|
| | | |
| | | syncMemIDList = []
|
| | | 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(crossPlayer, "仙盟等级不存在: %s" % (lv))
|
| | | GameWorld.DebugAnswer(crossPlayer, "公会等级不存在: %s" % (lv))
|
| | | return
|
| | | curFamily.SetLV(lv)
|
| | | curFamily.SetExp(exp)
|
| | | GameWorld.DebugAnswer(crossPlayer, "设置仙盟等级:%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
|
| | |
| | |
|
| | | elif value == "n":
|
| | | PlayerFamily.SetRenameTime(curFamily, 0)
|
| | | GameWorld.DebugAnswer(crossPlayer, "重置改名CD")
|
| | | GameWorld.DebugAnswer(crossPlayer, "重置公会改名CD")
|
| | |
|
| | | elif value == "c":
|
| | | contribDay = msgList[1] if len(msgList) > 1 else 0
|
| | |
| | | member.SetContribDay(contribDay)
|
| | | member.SetContribTotal(contribTotal)
|
| | | GameWorld.DebugAnswer(crossPlayer, "设置贡献:%s/%s, ID:%s" % (contribDay, contribTotal, memID))
|
| | | syncMemIDList.append(memID)
|
| | |
|
| | | elif value == "ml":
|
| | | memID = msgList[1] if len(msgList) > 1 else 0
|
| | |
| | | return
|
| | | member.SetOffTime(int(time.time()) - logoutMinutes * 60)
|
| | | GameWorld.DebugAnswer(crossPlayer, "成员ID:%s,离线时间:%s" % (memID, GameWorld.ChangeTimeNumToStr(member.GetOffTime())))
|
| | | syncMemIDList.append(memID)
|
| | |
|
| | | PlayerFamily.Sync_FamilyInfo(crossPlayer)
|
| | | isSyncMem = True if syncMemIDList else False
|
| | | PlayerFamily.Sync_FamilyInfo(crossPlayer, syncMemIDList=syncMemIDList, isSyncMem=isSyncMem)
|
| | | return
|