Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Описание скриптовых функций.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
655.36 Кб
Скачать

Void StopTrigger()

Что за триггер стопорит данная функция, есть ли у нее параметры – «науке пока не известно».

Void PlayObjectAnimation( sObjectId, sAnimId, nAction )

Данная функция отсутствует в API, хотя официальное руководство по скриптам утверждает обратное.

3.3. Тактический режим.

При старте тактического режима игра делает следующее:

    1. Загружает файл /scripts/combat-startup.lua и все прописанные в нем с помощью doFile скрипты

    2. Вызывает функции createCombatAliases() и createTutorialAliases()

    3. Приступает к интерпретации файла тактического скрипта. Упомянутый тактический скрипт может появиться в результате

  • Использования примитивов StartCombat или SetHeroCombatScript

  • Дизайна файла карты (AdvMapDesc)

  • Дизайна файла определения героя (AdvMapHero)

    1. Так или иначе, если файл скрипта в наличии, то интерпретатор последовательно выполняет из него строки, не являющиеся телами функций, после чего приступает к последовательному вызову хуков в зависимости от ситуации. Всего в наличии четыре хука.

3.3.1 Общее положение дел.

Итак, имеется две армии. Собственно различие между ними скрипт проводит по признаку атакующий/обороняющийся. Атакующая сторона всегда содержит в своем составе героя. Обороняющаяся может героя не иметь. Имена героев и стеков не имеют никакого отношения к именам использующимся на стратегической карте. Существует единственный примитив, позволяющий соотносить имена героев между стратегическим и тактическим режимом – GetHeroName.

3.3.2 Хуки.

bool DoPrepare()

Вызывается на этапе расстановки стеков игроком. На данном этапе состав армии игрока не определен, соотв. функции будут показывать, что в наличии есть только собственно герой. Возвращаемое значение роли не играет. В файле /scripts/combat-startup.lua данный хук заменен на void Prepere(), пользуйтесь либо одним либо другим по собственному разумению.

bool DoStart()

Вызвается на старте сражения непосредственно после расстановки войск обеими сторонами. Возвращаемое значение роли не играет. В файле /scripts/combat-startup.lua данный хук заменен на void Start(), пользуйтесь либо одним либо другим по собственному разумению.

bool UnitMove(sUnitName)

Вызывается перед каждым ходом стека AI игрока. Имя стека передается в качестве параметра. Если функция возвращает true, то AI не предпринимает над стеком к/л осмысленных действий, считая, что Вы позаботились об этом в теле хука. Кстати, по поводу «true». В файле /scripts/combat-startup.lua в отличие от файла /scripts/advmap-startup.lua отсутствует определение константы true, поэтому ее нужно либо доопределить самостоятельно, либо пользовать вместо нее not nil.

В файле /scripts/combat-startup.lua данный хук заменен на целый набор функций:

bool AttackerUnitMove(sUnitName)

bool AttackerHeroMove(sUnitName)

bool AttackerCreatureMove(sUnitName)

bool AttackerWarMachineMove(sUnitName)

bool AttackerBuildingMove(sUnitName)

bool DefenderUnitMove(sUnitName)

bool DefenderHeroMove(sUnitName)

bool DefenderCreatureMove(sUnitName)

bool DefenderWarMachineMove(sUnitName)

bool DefenderBuildingMove(sUnitName)

Опять таки, пользуйтесь тем, чем Вам удобнее.