#!/usr/bin/python # -*- coding: GBK -*- #------------------------------------------------------------------------------- # ##@package GM.Commands.Family # # @todo:¹«»á # @author hxp # @date 2025-10-10 # @version 1.0 # # ÏêϸÃèÊö: ¹«»á # #------------------------------------------------------------------------------- #"""Version = 2025-10-10 21:00""" #------------------------------------------------------------------------------- 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() if crossServerID: GameWorld.DebugAnswer(curPlayer, "±¾·þ¹«»áÒÑ»¥Í¨¿ç·þID:%s" % crossServerID) return [crossServerID] GameWorld.DebugAnswer(curPlayer, "±¾·þ¹«»áδ»¥Í¨") return [] def OnExec(curPlayer, msgList): ## ÓÎÏ··þÖ´ÐÐÃüÁî isMainServer = GameWorld.IsMainServer() 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 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 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)) return curFamily.SetLV(lv) curFamily.SetExp(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(crossPlayer, "¸Ã»ÕÕÂIDÎÞ·¨Ìí¼Ó") 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": PlayerFamily.SetRenameTime(curFamily, 0) 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 crossPlayer.GetPlayerID() member = curFamily.FindMember(memID) if not member: GameWorld.DebugAnswer(crossPlayer, "²»´æÔڸóÉÔ±ID:%s" % memID) return 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 logoutMinutes = msgList[2] if len(msgList) > 2 else 0 member = curFamily.FindMember(memID) if not member: GameWorld.DebugAnswer(crossPlayer, "²»´æÔڸóÉÔ±ID:%s" % memID) return member.SetOffTime(int(time.time()) - logoutMinutes * 60) GameWorld.DebugAnswer(crossPlayer, "³ÉÔ±ID:%s,ÀëÏßʱ¼ä:%s" % (memID, GameWorld.ChangeTimeNumToStr(member.GetOffTime()))) syncMemIDList.append(memID) isSyncMem = True if syncMemIDList else False PlayerFamily.Sync_FamilyInfo(crossPlayer, syncMemIDList=syncMemIDList, isSyncMem=isSyncMem) return