| #!/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)  | 
|     familyLV = gmList[1] if len(gmList) > 1 else 1  | 
|     warRank = gmList[2] if len(gmList) > 2 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(familyLV)  | 
|         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  | 
|   | 
|   |