Event keyword/ru

From Dragon Age Toolset Wiki
Jump to: navigation, search
События
Начало / Русская DA Builder Wiki / Поделиться ВКонтакте
Скрипты
все статьи категории
описание функций

Event, именуемое далее Событие, это пакет информации в специальном формате, который передаётся игре, чтобы вызвать какую-либо реакцию на него. События генерируются движком игры и посылаются скрипту объекта, обрабатывающему события.

События различаются по типу, объекту назначения, задержке времени и пакету параметров (произвольное количество численных, объектных, плавающих и строковых переменных).


Определение события и его обработка

При написании скриптов можно использовать несколько способов определения события, которое необходимо обработать. Это определение события, которое происходит по умолчанию, определение с помощью функции Event (en) и определение текущего события. Их использование можно увидеть в нижеследующем примере:

void main()
{
    // по умолчанию
    event evDefault;
 
    // прямая генерация требуемого события
    event evConstructed = Event(EVENT_TYPE_USE);
 
    // определение текущего события
    event evCurrent = GetCurrentEvent();    
}

Обратите внимание:

  • функция Event() позволяет сгенерировать любое событие и послать его нужному объекту.

Ниже приведён типичный скрипт обработки событий:

void main()
{
    event ev = GetCurrentEvent();
    int nEventType = GetEventType(ev); //извлечение типа события
    int nEventHandled = FALSE; //указываем, что событию требуется обработка
    switch(nEventType)
    {
         case EVENT_TYPE_AREALOAD_SPECIAL:
         {
             ...
             nEventHandled = TRUE; //устанавливаем TRUE в случае, если больше никакая обработка не требуется
             break;
         }
    }
    if (!nEventHandled) //если событие не было обработано скрптом, либо требуется его дальнейшая обработка,
			//то передаём событие основному скрипту объекта
    {
        HandleEvent(ev, RESOURCE_SCRIPT_AREA_CORE);
    }
}

Обратите внимание:

  • Обычно событие посылается для обработки скрипту событий объекта, но существует несколько типов событий, которые обрабатываются только движком игры.
  • Некоторые типы событий определяются движком и посылаются для обработки как #defines (определяемые).
  • Функция HandleEvent (en) позволяет также отобрать, какие события стоит обработать пользовательским скриптом, а какие перенаправить в основной скрипт объекта (константы, определяющие основные скрипты, находятся в подключаемом скрипте global_objects_h)

Более подробно о том, как обработать или переопределить обработку события, вы сможете прочитать в Инструкции по работе со скриптами (en), Переопределение обработки событий (en).

Список типов событий

Ниже приведён список возможных типов событий, определённых в DA изначально. Пользовательские события возможно также будут перечислены в этом списке, если же вы не сможете найти здесь интересующее вас событие, то посмотрите по ссылке - Категории типов событий (en).

Shouts

Shouts (events) are used to make creatures communicate with one another. This is a list of all the shouts referenced in the AI documentation.

Creature Shouts

  • SHOUT_TYPE_WASATTACKED When I am attacked, signal this event for all allies. What do the allies do? They will go into combat round, not specifically targeting this attacker but becoming combat ready.
  • SHOUT_TYPE_SAWENEMY Attack enemy.
  • SHOUT_TYPE_KILLEDME Attack enemy.
  • SHOUT_TYPE_SWITCH_MELEE Will switch to melee weapons, useful for certain plot situations
  • SHOUT_TYPE_WAKE_UP Any creature that hears this shout will wake up, if sleeping. This shout needs to be manually called.
  • SHOUT_TYPE_FOUND_SOMEONE (YaronToDo) a scout sees someone they broadcasts this event. Allies go here. (NOT DONE)

Commander-Specific Orders

  • SHOUT_TYPE_FINISHHIM Attacks a specified enemy till they are dead. A Commander issues order generally.
  • SHOUT_TYPE_ATTACK_WIZARD (YaronToDo) Starting targeting wizard class enemies instead of others.
  • SHOUT_TYPE_FLANK Rogues will get into a flanking position to an appropriate enemy
  • SHOUT_TYPE_SWITCH_RANGED Will randomly choose one ally and ask them to switch to a ranged weapon. This is mostly done to even out the number of participants in melee battle for animation purposes (closer to even the sides are, the better things look)

See Also

IsEventValid, HandleEvent, SignalEvent


Язык: English  • русский