#!/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
|