- •Принципы работы
- •Общие сведения
- •Описание interactions
- •Структура файлов interactions
- •Физические параметры
- •События
- •Условия
- •Действия
- •Управление анимациями
- •Управление звуками
- •Управление волюмами
- •Управление компонентами
- •Управление зонами
- •Управление спецэффектами
- •Управление экипажем
- •Управление здоровьем
- •Другие действия
- •Дополнительные возможности
- •Отладка
Условия
Зачастую при происхождении какого-либо события необходимо проанализировать ситуацию, вызвавшую событие. Для этого в системе interactions были введены условия. Некоторые условия можно проверять только внутри определенных событий (они указаны в скобках). Внутри других событий они не будут выполняться.
В системе interactions можно анализировать следующие условия:
bullet “<тэги>” – тэги пули (можно проверять внутри событий bullet_hit, pierce);
volume “<тэги>” – тэги волюма (внутри событий bullet_hit, blast, pierce, contact, overlap, ground_hit);
component “<тэги>” – тэги компонента (внутри событий break, repair);
work “<тэги>” – проверить работоспособность компонент с заданными тэгами;
bone “имя кости” – имя кости (внутри событий collect, board, seat);
effector “<свойства>” – свойства сущности (props), с которой происходит взаимодействие (внутри события contact);
dead – состояние смерти;
operatable – состояние работоспособности;
min_energy <значение> – энергия взрывной волны больше заданного значения (внутри события blast);
min_speed <значение> – скорость сущности больше заданной (внутри событий ground_hit, contact);
min_mass <значение> – масса сущности больше заданной (внутри событий hit во взаимодействиях с территориями);
rand <значение> – заданное значение больше чем случайная величина в интервале от 0 до 1 (rand 0.1 будет выполняться в 10% проверок);
name “<тэги>” – тэги оружия (внутри события take);
“<имя флажка>” – проверить, установлен ли флажок с заданным именем;
Формат записи условий:
{if <условие 1>
{<действия>}
else <условие 2>
{<действия>}
else
{if <условие 3>
{
{<действия>}
}
}
Также можно проверять обратные условия, при этом перед условием ставится слово not.
Например:
{on blast
{if volume “wheel”
{if min_energy 0.5
{if rand 0.7
{<действия>}
}
}
else volume “body”
{if bullet “shell fg”
{<действия>}
else not bullet “big”
{<действия>}
}
}
}
Действия
Ответной реакцией объекта на события окружающей среды являются его действия.
Действия делятся на следующие категории:
управление анимациями;
управление звуками;
управление волюмами, компонентами и зонами;
управление спецэффектами;
управление экипажем;
другие действия;
Управление анимациями
Для запуска анимации служит действие ani_play. Формат записи действия:
{ani_play “<имя анимации>” <скорость> <флажки>}
Параметр скорости указывает, во сколько раз будет отличаться скорость в игре по отношению к оригинальной скорости. Значение больше единицы ускоряет анимацию, меньше единицы – замедляет.
При этом могут задаваться дополнительные флажки, которые записываются через пробел.
loop – означает, что анимация зациклена;
resume – возобновить анимацию (после действия ani_stop);
callback – генерировать событие animation_end в момент окончания анимации;
Примеры записи для запуска анимации:
{ani_play “walk”} – запускает анимацию с именем “walk” для проигрывания один раз.
{ani_play “run” 1.5 loop} – зациклено запускает анимацию с именем “run” со скоростью в полтора раза быстрее оригинальной.
Пример записи с генерацией события:
{on spawn
{ani_play “pick” callback}
}
{on animation_end “pick”
<действия>
}
Запускает анимацию, по окончании которой происходит событие animation_end.
Следует отметить, что если анимации с заданным именем не существует, то ничего не запускается, но событие animation_end приходит сразу же.
Для остановки анимации существует действие ani_stop. Формат записи действия:
{ani_stop “<имя анимации>”}
