#!/usr/bin/python # -*- coding: GBK -*- ##@package GMT_GetFamilyInfo # GMÃüÁîÖ´ÐÐ->¼Ò×åÐÅÏ¢ # # @author wdb # @date 2012-06-14 # @version 1.3 # # ÐÞ¸Äʱ¼ä ÐÞ¸ÄÈË ÐÞ¸ÄÄÚÈÝ # # @note # Ä£¿éÏêϸ˵ # @change: "2012-06-29 21:30" wdb ·µ»ØÐÅÏ¢ÊÇ·ñ¹ý³¤ # @change: "2012-07-12 18:00" wdb ×Ö·ûת»»ÔÚÈë¿Ú´¦Àí # @change: "2016-09-07 03:00" hxp Ôö¼Ó²éѯȫ²¿Õ½ÃË£»Õ½Ã˲éѯ·µ»ØÐÅϢͳһ£»¾«È·²éѯ·µ»Ø³ÉÔ±ÏêÇé #--------------------------------------------------------------------- #µ¼Èë import GMCommon import GameWorld import PlayerFamily #--------------------------------------------------------------------- #È«¾Ö±äÁ¿ #--------------------------------------------------------------------- VER = "2016-09-07 03:00" #--------------------------------------------------------------------- #Âß¼­ÊµÏÖ(ÕâÀïcurPlayer = None) ## Ö´ÐÐÂß¼­ # @param curPlayer µ±Ç°Íæ¼Ò # @param gmList [cmdIndex gmAccID forbidAcc] # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def OnExec(orderId, gmCmdDict): queryType = gmCmdDict.get(GMCommon.Def_GMKey_QueryType, '') familyName = gmCmdDict.get(GMCommon.Def_GMKey_FamilyName, '') familyInfo = [] if queryType != 'all' and familyName == '': GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_ParamErr) return # È«Ãû²éѯ if queryType == 'normal': curFamily = GameWorld.GetFamilyManager().FindFamilyByName(familyName) familyInfo.append(GetQueryFamilyInfo(curFamily, True)) # Ä£ºý²éѯ elif queryType == 'faintness': familyMgr = GameWorld.GetFamilyManager() sortFamilyIDList = PlayerFamily.GetSortFamilyIDList() for familyID in sortFamilyIDList: curFamily = familyMgr.FindFamily(familyID) if not curFamily: continue if familyName not in curFamily.GetName(): continue familyInfo.append(GetQueryFamilyInfo(curFamily, False)) # È«²¿ elif queryType == 'all': familyMgr = GameWorld.GetFamilyManager() sortFamilyIDList = PlayerFamily.GetSortFamilyIDList() for familyID in sortFamilyIDList: curFamily = familyMgr.FindFamily(familyID) if not curFamily: continue familyInfo.append(GetQueryFamilyInfo(curFamily, False)) if len(familyInfo) > pow(2, 14): #Êý¾Ý¹ý´ó GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_MaxLimit) return #Ö´Ðгɹ¦ GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_Success, familyInfo) return ## »ñµÃÐèÒªµÄÐÅÏ¢ # @param gmList # @return None def GetQueryFamilyInfo(curFamily, memberDetail): if curFamily == None: return {} memberCnt = curFamily.GetCount() memberInfo = [] onlineCnt = 0 # ±éÀú˵ÓгÉÔ± for index in range(memberCnt): curMember = curFamily.GetAt(index) player = GameWorld.GetPlayerManager().FindPlayerByID(curMember.GetPlayerID()) #¡¡ÊÇ·ñÔÚÏß if player != None: onlineCnt += 1 if not memberDetail: continue offLineTime = curMember.GetExattr2() offLineSeconds = GameWorld.GetPastSeconds(GameWorld.ChangeTimeNumToStr(offLineTime)) if offLineTime > 1 else offLineTime # ³ÉÔ±ÐÅÏ¢ member = { 'Name':curMember.GetName(), 'LV':curMember.GetLV(), 'FamilyLV':curMember.GetFamilyLV(), 'ActiveValue':curMember.GetFamilyActiveValue(), 'OffLineSeconds':offLineSeconds, } memberInfo.append(member) familyInfo = { 'Rank':PlayerFamily.GetFamilyIDRank(curFamily.GetID()), # ÅÅÃû 'WarRank':PlayerFamily.GetFamilyWarRank(curFamily), # ÁªÈüÅÅÃû 'FightPower':PlayerFamily.GetFamilyTotalFightPower(curFamily), # ×ÜÕ½Á¦ 'FamilyName':curFamily.GetName(), 'LeaderName':curFamily.GetLeaderName(), 'LV':curFamily.GetLV(), 'Broadcast':curFamily.GetBroadcast(), 'MemberCnt':memberCnt, 'OnLineCnt':onlineCnt, 'ServerID':curFamily.GetServerID(), } if memberInfo: familyInfo['MemberInfo'] = memberInfo return familyInfo