Существует функция для проверки, является ли игрок вассалом другого игрока. Так вот: наверняка есть аналог для проверки, объявлена ли война. Меня интересует, что это за аналог. Вначале мне показалось, что за это отвечает isAtWar() (что вроде кажется логичным), но она не сработало. Возможно, я просто привязываю не к той функции в файле cvEventManager? Проверка нужна для того, чтобы при данном условии последовало какое-то действие.PHP код:
gc.getTeam().isVassal()
Тогда выход один - ковырять код их модов...
Слушай, есть у меня еще одна проблема. Данный скрипт перемещает юнитов на необходимое место и селит их. До операции с pushMission все идет нормально. Далее - нет. Вернее, сказать, он работает от случая к случаю и зависит от текущей клетки(то есть существуют клетки, на которых вылетает ошибка "NoneType", а есть такие, которые спокойно это делают). Сами клетки вполне себе валидны и пусты(у меня существует массив с перечислением оных). Данная ошибка приводит меня в замешательство. Собственно, вот он:
А вот ошибка в логах:PHP код:
def removeUnitsFromArea(self, iPlayer, tCoords, tDesant):
for idx in tCoords:
for x in range(idx[0]-2, idx[0]+4):
for y in range(idx[1]-2, idx[1]+4):
area = gc.getMap().plot( x, y )
iNumUnitsInAPlot = area.getNumUnits()
if iNumUnitsInAPlot:
for i in range(iNumUnitsInAPlot):
unit = area.getUnit(i)
if not area.isWater():
if(unit.getUnitType() == iSettler):
if(unit.getOwner() == iPlayer):
unit.setXY(tDesant[0], tDesant[1] , False, True, True)
for l in range(iNumUnitsInAPlot):
accompUnit = area.getUnit(l)
if not area.isWater():
if(accompUnit.getOwner() == iPlayer):
accompUnit.setXY(tDesant[0], tDesant[1] , False, True, True)
pPlayer = gc.getPlayer(iPlayer)
for iUnit in range(pPlayer.getNumUnits()):
pUnit = pPlayer.getUnit(iUnit)
pGroup = pUnit.getGroup()
pGroup.pushMission(MissionTypes.MISSION_FOUND, tDesant[0], tDesant[1], 0, False, True, MissionAITypes.MISSIONAI_FOUND, pUnit.plot(), pUnit)
PHP код:
Traceback (most recent call last):
File "CvEventInterface", line 23, in onEvent
File "CvEventManager", line 190, in handleEvent
File "CvEventManager", line 372, in onBeginGameTurn
File "fmtfe", line 783, in removeUnitsFromAreaSource
File "fmtfe", line 726, in removeUnitsFromArea
AttributeError: 'NoneType' object has no attribute 'pushMission'
ERR: Python function onEvent failed, module CvEventInterface
Ник смотри тут. http://www.civfanatics.ru/members/30263-NeseryozniyVET Его профиль.
Вопрос жизни и смерти в буквальном смысле: почему при возрождении цивы к ней премыкает лишь только один город, если в функцию кладутся все элементы массива?
Сама функция:
Вызов функции:PHP код:
def revival(self, iPlayer, tCoords):
city = gc.getMap().plot( tCoords[0], tCoords[1] ).getPlotCity()
if not city.isNone():
OldOwner = city.getOwner()
teamOwner = gc.getTeam(gc.getPlayer(OldOwner).getTeam())
area = gc.getMap().plot( tCoords[0], tCoords[1] )
iNumUnitsInAPlot = area.getNumUnits()
if iNumUnitsInAPlot:
for i in range(iNumUnitsInAPlot):
unit = area.getUnit(i)
gc.getPlayer(iPlayer).acquireCity(city, True, False)
self.makeUnit(unit.getUnitType(), 4, iPlayer, tCoords, 2)
for t in range(iNumTechs):
if (teamOwner.isHasTech(t)):
gc.getTeam(iPlayer).setHasTech(t, True, iPlayer, False, False)
for l in range(iNumPlayers):
gc.getTeam(iPlayer).makePeace(l)
Собственно, массив:PHP код:
if not gc.getTeam(iEngland).isAlive():
rand = random.randrange(50, 100, 5)
if (iGameTurn % rand == 0):
for tEngIdx in tEngRevivalArea:
self.revival(iEngland, tEngIdx)
Пожалуйста, ответьте хоть что-нибудь. Просто очень хотим с другом поиграть по мп в нечто похожее на RFC, только со своей изюминкой. Тред отдельный на тему мода создавать не хочу, чтобы расписывать, какой чудесный у меня мод делается, ибо был уже печальный опыт, поэтому так.PHP код:
tEngRevivalArea = [(53, 54), (51, 54), (53, 57), (52, 60), (49, 56)]
Прошу прощения, вопрос снят.
Привет, господа-молчуны. Я все же не теряю надежду на ответ. Так вот: существует скрипт, который уничтожает циву при захвате ее столицы другим государством и чтобы захватить столицу было весьма непростой задачей, я хочу научить ИИ концентрировать войска в больших количествах, чем в других городах, в столице. Как это сделать? Наверняка ведь это осуществимо.