FOnline
 Указатель Классы Функции Переменные Группы Страницы
Редактор переменных

Оформление переменных и их использование

Игровые переменные используются для сохранения какой-либо игровой информации. Например, для сохранения информации о состоянии квестов – прошел игрок квест или провалил, выполнил ли какое-либо под-задание или нет, поговорил ли с каким-либо NPC или нет и т.д. При этом игровые переменные сохраняются на сервере и им не страшны ни рестарты, ни прочие неприятности.

Существует три вида игровых переменных:

  • Глобальные – используются для контроля над каким-либо глобальным процессом. Например, проходит ли кто-либо определенный квест или нет. Значение глобальной переменной для всех игроков одинаково;
  • Локальные – чаще всего используются для сохранения информации о состоянии квеста, в рамках отдельно взятого игрока. Значение локальной переменной для всех игроков индивидуально;
  • Уникальные – используется для сохранения информации о NPC, в рамках отдельно взятого игрока. Значение уникальной переменной индивидуально для всех NPC относительно каждого игрока.

Для каждой игровой переменной указываются значения шести полей:

  • Id - уникальный номер, по которому будет определяться игровая переменная;
  • Name - имя переменной;
  • Start - начальное значение переменной;
  • Min - минимальное значение переменной;
  • Max - максимальное значение переменной;
  • Description - описание переменной.

Также, для каждой переменной можно установить следующие флаги:
Квестовая
Этот флаг показывает, что текущее значение переменной отражает статус квеста, который показывается у игрока в пип-бое. Строки, описывающие статусы квеста, хранятся в файле FOQUEST.MSG. В нем также описывается схема связывания строк статусов со значениями переменной.
Рандомная
Cтартовым значением будет случайное число между Min и Max.
Без проверки
Не учитываются значения Min, Max.
Все игровые переменные хранятся в файле _vars.fos. Не редактируйте этот файл вручную, это делает редактор.

Выбор названия переменной
Текущий стандарт названия квестовых переменных: q_location_npc_quest

  • q - quest (указывает на то, что значениям переменной соответсвуют строки в файле описании квестов (FOQUEST.MSG). Эти строки потом отображаются в пип-бое).
  • location - название города в сокращенном варианте (den, mod, vc, klam etc).
  • npc - имя НПЦ, с которым связана эта переменная.
  • quest - непосредственное указание квеста, который регулируется переменной.

Примеры:

q_den_smitty_boots
q_mod_hose (конкретный квест в данном случае не указан, идет просто ссылка на НПЦ)
q_nr_jessy_jet

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

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

1...1999 – для глобальных переменных,
2000...2999 – для уникальных переменных,
3000+ – для локальных переменных.

Для локальных переменных принято брать номер, начинающийся на 3000+(Номер локации)*100 (скажем, 4600 для локации №16), но это правило зачастую не используется.

Полезные уникальные переменные
Данные переменные можно, например, использовать в преддиалоговых установках для различных проверок и отсылки к нужным вариантам. В скобках указан номер переменной.

НазваниеНомерОписание
last_dialog 2020Номер последнего диалога с НПЦ.
loyality2010Используется для того, чтобы определить отношение НПЦ к Игроку, которое сложилось у него в последствии разговора с Игроком. 5 - это средняя лояльность. 0 - НПЦ к Игроку наименее лоялен. 10 - наиболее. Не обязательно задействовать в диалоге все 11 состояний переменной. Можно ввести, к примеру, проверку только на <3 и >7 или <5 и >5, а можно и все 11 расписать.
name_mem_npc_player2015Используется для того, чтобы определить знает ли НПЦ о имени Игрока или нет. Если 0, то нет.
name_mem_player_npc2016Используется для того, чтобы определить знает ли Игрок о имени НПЦ или нет. Если 0, то нет.
click_count2020Счетчик щелчков по НПЦ со всплывающими фразами вместо диалога. Скажем, на 30-ый клик НПЦ может разозлиться или сказать шутку. Переменная не имеет границ, поэтому на деле ее можно использовать для счета чего угодно.