Void SetControlMode( nSideID, nModeID )

 

Устанавливает режим боя для стороны nSideID. Попытка вызвать данную функцию для AI игрока приводит к ошибке. Соотв. константы для nModeID прописаны в /scripts/ combat-startup.lua и могут быть

 

MODE_NORMAL = 0    -- обычный режим

MODE_MANUAL = 1    -- ручное управление с запретом автобоя

MODE_AUTO = 2           -- автобой

 

В частности, вызвав данную функцию из DoPrepare c параметром MODE_AUTO и, последовательно, с MODE_MANUAL из DoStart можно обеспечить автоматическую расстановку юнитов вне желания игрока.

Соотв. константы для nSideID прописаны в /scripts/ combat-startup.lua и могут быть

ATTACKER = 0

DEFENDER = 1

Void Finish(nSideID)

 

Автоматически завершает бой победой стороны, идентификатор которой передан в качестве параметра.

Void Break()

 

Немедленно прерывает бой. Потери, понесенные сторонами в ходе боя, в случае выхода на стратегическую карту учитываться не будут.

Void combatSetPause(n1, b1)

 

Устанавливает и убирает паузу в бое (при паузе курсор превращается в часы и интерфейс заблокирован). Смысл параметров мне не до конца ясен.

void showHighlighting(bShow = true)

 

Убирает или устанавливает подсвечивание поля боя. Функция имеет алиас с именем ShowCombatHighlighting.

Управление юнитами.

void SummonCreature(nSideID, nCreatureID, nCount, nX = -1, nY = -1)

void AddCreature(nSideID, nCreatureID, nCount, nX = -1, nY = -1)

 

Практически идентичные функции. Добавляют стороне nSideID стек из nCount существ, и размещает его по указанным координатам. Различие состоит в том, что SummonCreature создает стек только на время боя, и подсвечивает его появление эффектом. AddCreature присоединяет стек к армии героя «навсегда» (разумеется, если состав амии героя это позволяет).

В случае, если клетка по указанным координатам недоступна (например, занята препятствием или другим стеком) новый стек будет помещен на ближайшую свободную клетку. Созданный стек будет помещен в конец таблицы, которая возвращается функцией GetUnits. Если планируется что-либо предпринимать со стеками непосредственно после добавления, то необходимо добавить вызов sleep(1) непосредственно сразу после использования функций. Иначе последствия непредсказуемы – от невыполнения следующей операции без к/л диагностики до вылета игры в операционную систему.

В случае если координаты (или одна из координат) не указаны, стек будет помещен на рандомную свободную клетку.

Void addUnit(nCreatureID, nSideID, nX, nY, nCount, sUnitName)

 

Странная функция, которая, по идее, занимается тем же, что и две предыдущие. С некоторыми отличиями. Параметр sUnitName используется только в одном месте – если уже есть стек с таким именем, то вызов функции приведет к ошибке. В противном случае имя стеку присвоится автоматически, sUnitName никак не задействуется. В случае, если клетка по указанным координатам недоступна, вызов функции приведет к ошибке.

Вывод: использование данной функции проблематично, для чего она нужна – непонятно.

Функция имеет алиас с именем AddCombatUnit.

Void removeUnit(sUnitName)

 

Функция удаляет с поля боя стек с именем sUnitName. Удалять можно только стеки. Героев, машины и здания – нельзя. Функция имеет алиас с именем RemoveCombatUnit.



Void UnitCastAimedSpell(sUnitName, nSpellID, sTarget)

 

Функция заставляет юнит с именем sUnitName откастовать заклинание nSpellID на юнит sTarget. Тип юнита и наличие у юнита заклинания роли не играет, играет роль только запас манны у него. Нехватка манны приводит к ошибке скрипта. Следует быть осторожным с выбором nSpellID – попытка скастовать подобным образом «площадное» заклинание например, файрболл, может привести к подвису игры. Попытка скастовать «вредоносное» заклинание на союзников и «полезное» на врага к ошибке не приводит, но и эффекта так же не дает.

Void UnitCastGlobalSpell(sUnitName, nSpellID)

 

Функция заставляет юнит с именем sUnitName откастовать заклинание «общего действия» (т.е. не требующее прицела) nSpellID. Тип юнита и наличие у юнита заклинания роли не играет, играет роль только запас манны у него. Нехватка манны приводит к ошибке скрипта.

Void UnitCastAreaSpell(sUnitName, nSpellID, nX, nY)

 

Функция заставляет юнит с именем sUnitName откастовать заклинание «площадного действия» nSpellID на тайл с требуемыми координатами. Тип юнита и наличие у юнита заклинания роли не играет, играет роль только запас манны у него. Нехватка манны приводит к ошибке скрипта. Опять таки не следует забывать про sleep – например, если Вы вздумаете удалить стек непосредственно после того, как он что-то откастовал, то собственно кастовки Вы не увидите. И sleep(1) тут не отделаешься – необходимо дождаться результатов кастовки, для файрбола это sleep(8), для других заклинаний может и отличаться. Собственно, замечание со sleep относится ко всем манипуляциям с юнитами.

Void SetUnitManaPoints(sUnitName, nPoints)

 

Функция устанавливает запас маны юнита sUnitName в nPoints поинтов. Текущий запас манны может превышать максимальный. Если планируется что-либо предпринимать с юнитом непосредственно после установки запаса маны, то необходимо добавить вызов sleep(1) непосредственно сразу после SetUnitManaPoints.

Number GetUnitMaxManaPoints(sUnitName)

 

Функция возвращает максимальный запас маны юнита sUnitName.

Number GetUnitManaPoints(sUnitName)

 

Функция возвращает текущий запас маны юнита sUnitName.

Void commandDefend(sUnitName)

 

Функция заставляет юнит с именем sUnitName выполнить команду «защищаться».

Функция имеет алиас с именем DefendCombatUnit.




Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: