#!/usr/bin/python  
 | 
# -*- coding: GBK -*-  
 | 
#-------------------------------------------------------------------------------  
 | 
#  
 | 
##@package GM.Commands.CreateFamily  
 | 
#  
 | 
# @todo:´´½¨¼ÙÏÉÃË  
 | 
# @author hxp  
 | 
# @date 2018-01-12  
 | 
# @version 1.0  
 | 
#  
 | 
# ÏêϸÃèÊö: ´´½¨¼ÙÏÉÃË  
 | 
#  
 | 
#-------------------------------------------------------------------------------  
 | 
#"""Version = 2018-01-12 18:00"""  
 | 
#-------------------------------------------------------------------------------  
 | 
import GameWorld  
 | 
import ShareDefine  
 | 
import PlayerFamily  
 | 
import GameWorldFamilyWar  
 | 
  
 | 
  
 | 
## Ö´ÐÐÂß¼  
 | 
#  @param curPlayer µ±Ç°Íæ¼Ò  
 | 
#  @param gmList []  
 | 
#  @return None  
 | 
def OnExec(curPlayer, gmList):  
 | 
      
 | 
    if not gmList:  
 | 
        GameWorld.DebugAnswer(curPlayer, "CreatFamily ´´½¨¼ÙÏÉÃ˸öÊý ¿ÉÑ¡²ÎÊý(ÊÇ·ñÉèÖÃÁªÈüÃû´Î)")  
 | 
        GameWorld.DebugAnswer(curPlayer, "ɾ³ý´´½¨µÄ¼ÙÏÉÃË: CreatFamily 0")  
 | 
        return  
 | 
      
 | 
    creatCount = gmList[0]  
 | 
    if creatCount <= 0:  
 | 
        delFamilyList = []  
 | 
        familyManager = GameWorld.GetFamilyManager()  
 | 
        for i in xrange(familyManager.GetCount()):  
 | 
            family = familyManager.GetAt(i)  
 | 
            if not family.GetCount():  
 | 
                delFamilyList.append(family)  
 | 
                  
 | 
        delCnt = len(delFamilyList)  
 | 
        for delFamily in delFamilyList:  
 | 
            familyID = delFamily.GetID()  
 | 
            familyWarRank = PlayerFamily.GetFamilyWarRank(delFamily)  
 | 
            familyManager.DelFamily(familyID)  
 | 
            GameWorldFamilyWar.OnDeleteFamily(familyID, familyWarRank)  
 | 
                  
 | 
        PlayerFamily.DoFamilySort()  
 | 
        GameWorld.DebugAnswer(curPlayer, "ɾ³ý¼ÙÏÉÃËÊý: %s" % delCnt)  
 | 
        return  
 | 
      
 | 
    # ÕÒ³ö¼ÙÏÉÃ˵Ä×îµÍÕ½Á¦  
 | 
    maxWarRank = 0  
 | 
    minTotalFightPower = 1000001  
 | 
    familyManager = GameWorld.GetFamilyManager()  
 | 
    for i in xrange(familyManager.GetCount()):  
 | 
        family = familyManager.GetAt(i)  
 | 
        maxWarRank = max(maxWarRank, PlayerFamily.GetFamilyWarRank(family))  
 | 
        if not family.GetCount():  
 | 
            minTotalFightPower = min(minTotalFightPower, PlayerFamily.GetFamilyTotalFightPower(family))  
 | 
              
 | 
    creatTime = GameWorld.GetCurrentDataTimeStr()  
 | 
    FakeFamilyName = "¼ÙÏÉÃË".decode(ShareDefine.Def_Game_Character_Encoding).encode(GameWorld.GetCharacterEncoding())  
 | 
    FakeLeaderName = "¼ÙÃËÖ÷".decode(ShareDefine.Def_Game_Character_Encoding).encode(GameWorld.GetCharacterEncoding())  
 | 
    succCreatCount = 0  
 | 
    creatCount = min(100, creatCount)  
 | 
    warRank = gmList[1] if len(gmList) > 1 else 0  
 | 
    familyManager = GameWorld.GetFamilyManager()  
 | 
    curCnt = familyManager.GetCount()  
 | 
    for i in xrange(curCnt + 1, creatCount + curCnt + 1):  
 | 
          
 | 
        familyName = "%s_%s" % (FakeFamilyName, i)  
 | 
        curFamily = familyManager.AddFamily(familyName)  
 | 
        if curFamily == None:  
 | 
            continue  
 | 
          
 | 
        succCreatCount += 1  
 | 
        #---´´½¨¼ÙÏÉÃË---  
 | 
        curFamily.SetCreateTime(creatTime)  
 | 
        curFamily.SetLV(1)  
 | 
        curFamily.SetAcceptJoin(ShareDefine.FamilyAcceptJoin_Refuse) # ÉèÖþܾøÉêÇë  
 | 
        curFamily.SetLeaderName("%s%s" % (FakeLeaderName, i))  
 | 
        minTotalFightPower -= 1  
 | 
        PlayerFamily.SetFamilyTotalFightPower(curFamily, minTotalFightPower)  
 | 
        if warRank and maxWarRank < (GameWorldFamilyWar.FamilyWar_MaxFamilyCount - GameWorldFamilyWar.FamilyWar_GroupFamilyCount):  
 | 
            maxWarRank += 1  
 | 
            PlayerFamily.SetFamilyWarRank(curFamily, maxWarRank)  
 | 
              
 | 
    GameWorld.DebugAnswer(curPlayer, "´´½¨¼ÙÏÉÃËÊý: %s" % succCreatCount)  
 | 
    PlayerFamily.DoFamilySort()  
 | 
    return  
 | 
  
 | 
  
 |