#!/usr/bin/python # -*- coding: GBK -*- #------------------------------------------------------------------------------- # ##@package GM.Commands.GMT_GetFamilyByServerID # # @todo:²éѯÏÉÃË # @author hxp # @date 2025-04-09 # @version 1.0 # # ÏêϸÃèÊö: ²éѯÏÉÃË - ¸ù¾ÝËùÊôÇø·þIDÌõ¼þ # #------------------------------------------------------------------------------- #"""Version = 2025-04-09 16:00""" #------------------------------------------------------------------------------- import GMCommon import GameWorld import PlayerFamily import ChPlayer def OnExec(orderId, gmCmdDict): serverIDList = eval(gmCmdDict.get("serverIDList", '[]')) queryCnt = GameWorld.ToIntDef(gmCmdDict.get("queryCnt", '0') , 100) GameWorld.DebugLog("GMT_GetFamilyByServerID queryCnt=%s, %s, %s" % (queryCnt, serverIDList, gmCmdDict)) isCrossServer = GameWorld.IsCrossServer() familyMgr = GameWorld.GetFamilyManager() if isCrossServer: sortFamilyIDList, totalCnt = PlayerFamily.SortCrossFamily(serverIDList, queryCnt) else: sortFamilyIDList = PlayerFamily.GetSortFamilyIDList() totalCnt = len(sortFamilyIDList) retCnt = 0 familyList = [] for familyID in sortFamilyIDList: if isCrossServer: curFamily = familyID familyID = curFamily.GetID() else: curFamily = familyMgr.FindFamily(familyID) if not curFamily: continue familyList.append(GetQueryFamilyInfo(curFamily, isCrossServer)) retCnt += 1 if retCnt >= queryCnt: break #Ö´Ðгɹ¦ retMsg = {"familyList":familyList, "totalCnt":totalCnt} GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_Success, retMsg) return def GetQueryFamilyInfo(curFamily, isCrossServer): if curFamily == None: return {} onlineCnt = 0 memberCnt = curFamily.GetCount() onlineMgr = ChPlayer.GetOnlinePlayerMgr() for index in range(memberCnt): curMember = curFamily.GetAt(index) playerID = curMember.GetPlayerID() if onlineMgr.IsOnline(playerID): onlineCnt += 1 familyInfo = { 'ID':curFamily.GetID(), 'Name':curFamily.GetName(), 'FightPower':PlayerFamily.GetFamilyTotalFightPower(curFamily), # ×ÜÕ½Á¦ 'LeaderID':curFamily.GetLeaderID(), 'LeaderName':curFamily.GetLeaderName(), 'LV':curFamily.GetLV(), 'MemberCnt':memberCnt, 'OnLineCnt':onlineCnt, 'ServerID':curFamily.GetServerID(), } return familyInfo