|  | FOnline
    | 
Функции скриптов могут вызываться на различных этапах работы диалога.
 Различают 3 типа диалоговых функций
Данные функции применяются как условия для появления реплик, доступных игроку.
 Если функция возвращает true, значит реплика доступна игроку и наоборот.
 Для установки скриптового условия выберите в редакторе диалогов реплику, на которую необходимо поставить условие, перейдите на вкладку "Условия", выберите пункт "Скрипт (модуль@функция)", установите количество параметров, которые необходимо передать в функцию и заполните их, нажмите кнопку "добавить".
 
 Возможные варианты функций 
 
 Количество параметров типа int в функции выбирается в зависимости от количества параметров указанных при добавлении условия в редакторе диалогов.
 По умолчанию функция вызывается 2 раза, в первый раз перед показом диалога, а второй раз при выборе игроком реплики с заданным в условиях скриптом.
 Сделано это для защиты, например, на случай, если кто-то украдет у игрока все деньги после того, как ему высветился вариант ответа, но до того, как он на него нажал.
 По этим причинам желательно избегать выполнения каких-либо действий, кроме проверки рвзличных условий, внутри функции проверки условия.
 Однако, для тех случаев, когда внутри функции-условия необходимо единожды выполнить какое-либо действие, повторную проверку можно отключить (установка флага на условие производится в редакторе диалогов).
 Так же, можно воспользоваться глобальной переменной bool __DialogDemandRecheck, при повторной проверке, значение переменной будет равно true.
Данные функции выполняются один раз, после выбора игроком реплики, для которой в результате указана данная функция.
 Добавление происходит по тому же принципу, что добавление функций для проверки условий.
 
 Возможные варианты функций
 
Количество параметров типа int в функции так же выбирается в зависимости от количества параметров, указанных при добавлении функции в редакторе диалогов. Функции, возвращающие числовое значение, должны возвращать номер ветки диалога, на которую нужно перейти после выполнения функции или одно из специальных значений, приводящих к закрытию диалога, открытию бартера, началу атаки или возращению к предыдущему диалогу (Dialog links).
Данные функции вызываются в трех случаях:
Для проверки в каком из случаев запущена данная функция, существует 3 макроса
Если была использована функция "Сказать о", то строка text будет содержать текст, сказанный игроком.
 В случае, если функция вызвана при генерации диалога, в строку text можно будет поместить текст для определения лексем, использованых в текущем диалоге (как для самого диалога, так и для реплик игрока)
Примечание: При использовани функции, возращающей числовое значение, можно перенаправить игрока на другую ветку диалога в случае использования функции "Сказать о", возращаемое значение должно содержать номер ветки диалога или одно из специальных значений, приводящих к закрытию диалога, открытию бартера, началу атаки или возращению к предыдущему диалогу (Dialog links)
Для примера рассмотрим несколько диалоговых веток диалога nr_t-ray.fodlg
T-Ray: "Могу предложить: Хаммер за @lex hummer@, Багги за @lex buggy@, Скаут за @lex scout@, Хайвемен за @lex highwayman@." (на ветку "повешена" функция nr_t-ray@dlg_PrepareBuy)
 Игрок: "Покупаю Хайвеймен." (В результате выбора данной реплики запускается функция nr_t-ray@r_BuyHighwayman)
В данном примере на реплике "Покупаю Хайвеймен." не стоит никаких условий, то есть игрок всегда может на нее нажать, проверка наличия денег происходит в функции TryCreateCar. Однако эту же проверку можно было провести и в скриптовой функции-условии.
Если мы добавим эту функцию (с параметром, равным номеру прототипа машины) в условие реплики игрока "Покупаю Хайвеймен.", то при недостаточном количестве денег игрок не увидит данной реплики и не сможет по ней перейти.