#!/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.SetServerID(GameWorld.GetServerGroupID())
|
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
|
|
|