ФЭНДОМ


Основной результат Править

Понятие очередности в «Ведьмаке» почти такое же, как в «NeverWinter Nights». Все действия будут выполнены в таком порядке, в каком они поставлены в очередь.

Пример Править

Рассмотрим этот небольшой скрипт:

// Геральт
object SDPLAYER = GetFirstPC();
// Появится «Здравствуй, Мир!» над головой Геральта.
AssignCommand(SDPLAYER,SpeakString("Привет всем"));
// Заставит Геральта выпить пива.
AssignCommand(SDPLAYER,ActionPlayAnimation(ANIMATION_FIREFORGET_DRINK));
// Появится «Спасибо!!!» над головой Геральта.
AssignCommand(SDPLAYER,SpeakString("Спасибо!!!"));

Здесь очередность содержит следующие три действия, и они будут выполнены в таком порядке:

  1. «Здравствуй, Мир!»
  2. Выпивание
  3. «Спасибо!!!»

В таком случае Геральт выпьет, прежде чем произнесет «Спасибо!!!», что является плохой идеей. Поэтому следующий скрипт лучше:

object SDPLAYER = GetFirstPC();
AssignCommand(SDPLAYER,SpeakString("Здравствуй, Мир!"));
AssignCommand(SDPLAYER,SpeakString("Спасибо!!!"));
AssignCommand(SDPLAYER,ActionPlayAnimation(ANIMATION_FIREFORGET_DRINK));

Очерёдность функций Править

  • Все функции, которые начинаются с Action*, подвергаются очерёдности, и их выполнение будет проходить в определённой последовательности.
  • Большинство функций с очерёдностью также имеет версию без очерёдности, которая немедленно выполняет действие вне зависимости от очереди.

Пример:

PlayAnimation()
vs
ActionPlayAnimation()
  • Большинство функций работает таким путём, кроме некоторых специальных.

Пример классической очерёдности функций Править

  • ActionPlayAnimation
  • ActionSpeakString
  • ActionCastSpellAtObject
  • и так далее

Специальная очерёдность функций Править

  • ActionJumpToLocation
// Объект немедленно перепрыгнет на lLocation (даже между областями).
// Если lLocation ошибочна, то ничего не произойдёт.
void ActionJumpToLocation(location lLocation);

Данное действие будет поставлено в очередь как первый элемент на выполнение. Все остальные действия всё ещё существуют, но будут выполнены позже.

  • ClearAllActions
// Очищает все действия.
// * Возвращаемого значения нет, но в случае ошибки в журнале ошибок будет записано
// «ClearAllActions failed.»
// - nClearCombatState: если так, то это немедленно остановит возможность
// сражаться с монстрами, что остановит боевую музыку, и позволит им спокойно
// стоять друг с другом, разговаривать и так далее.
void ClearAllActions(int nClearCombatState=FALSE, object oSubject=OBJECT_INVALID);

Очищает очерёдность определённого персонажа.

  • Полезная функция для того, чтобы очистить очерёдность и произвести выполнение определённого действия.

Присвоение действия Править

Последнее, хотя и не менее важное: для того чтобы действие было корректно поставлено в очередь, оно должно быть назначено на РС или NPC. Функция AssignCommand сделает эту работу.

// Присваивает aActionToAssign к oActionSubject.
// * Возвращаемого значения нет, но в случае ошибки в журнале ошибок будет записано
// «AssignCommand failed.».
// (Если объект не существует, ничего не произойдёт)
void AssignCommand(object oActionSubject,action aActionToAssign);


Шаблон:Общая информация о скриптах

Обнаружено использование расширения AdBlock.


Викия — это свободный ресурс, который существует и развивается за счёт рекламы. Для блокирующих рекламу пользователей мы предоставляем модифицированную версию сайта.

Викия не будет доступна для последующих модификаций. Если вы желаете продолжать работать со страницей, то, пожалуйста, отключите расширение для блокировки рекламы.

Также на ФЭНДОМЕ

Случайная вики