MENUDEF. Первое знакомство.

Подготовка.

Перед началом, добавьте следующий код к себе в Cvarinfo:

user int var_1 = 1;
user int var_2 = 1;
user color color_1;
user string text_1;
user int bool_1 = 0;
user int num_1 = 0;

Подробнее о Cvarinfo можно узнать в уроке CVARINFO. Удобный способ хранения переменных. Кратко.

В будущем, наше меню будет менять эти значения.

Введение.

Меню в думе делится на 2 типа, меню опций (OptionMenu)

И меню список (ListMenu).

В этом уроке мы изучим OptionMenu, а в следующем создадим собственное меню ListMenu.

Создаем меню опций (OptionMenu).

Создадим меню опций, которое будет менять наши cvar переменные.

Для начала, создайте файл MENUDEF в своем ваде, и закиньте туда следующий код:

OptionMenu "myOptionMenu"
{
 Title "Random things options"
}

Синтаксис у блока OptionMenu, следующий:

OptionMenu "название_меню"
{
 ...
  комманды
 ...
}
  • название_меню — название, по которому мы будет обращаться к меню.

Синтаксис у комманды Title следующий:

Title "текст_заголовка"

Только что, мы создали простейшее меню, у которого нет ничего, кроме заголовка (Title). Данное меню существует, но его нельзя вызвать, потому-что мы его никуда не добавляли.

Кстати, если мы его добавим, оно будет выглядеть так.

Давайте, добавим наше меню, в стандартное меню опций (Options).

Добавляем кастомное меню в Options.

Для этого, добавьте следующий код в MENUDEF.

AddOptionMenu "OptionsMenu"
{
 StaticText "Under-Prog.Ru Tutorial"
 SubMenu "Under-Prog.Ru Options", "myOptionMenu"
}

Синтаксис у AddOptionMenu, следующий:

AddOptionMenu "название_меню_опций"
{
 ...
  комманды
 ...
}
  • название_меню_опций — указывает меню, внутри которого мы добавим ссылку на собственное меню, и заголовок.

Ок, AddOptionMenu помещает наше меню, внутри другого меню, в нашем случае OptionsMenu. Кстати, OptionsMenu это стандартное меню опций дума (кнопка Options). Подробнее на вики.

Ниже, я показал стандартные названия меню дума.

Узнать названия всех стандартных меню, можно на том же вики.

Разберем комманды:

StaticText "Under-Prog.Ru Tutorial"
  • StaticText — пишет текст, внутри текущего меню (в нашем случае Options).
SubMenu "Under-Prog.Ru Options", "myOptionMenu"

SubMenu — рисует кнопку, с именем «Under-Prog.Ru Options«, при нажатии на которую, открывается меню «myOptionMenu«.

Готово. Теперь, откройте меню Options и нажмите там «Under-Prog.Ru Options«

Появилось пустое меню, с одним, лишь, заголовком.

Наполняем меню, содержимым.

Добавим в это меню новые элементы, для этого изменим код «myOptionMenu«

OptionMenu "myOptionMenu"
{
 Title "Random things options"
 Slider "Slider", "var_1", 1, 100, 1
}

И разберем синтаксис комманды Slider:

Slider "заголовок", "cvar_переменная", min_значение, max_значение, шаг
  • заголовок — указывает название слайдера.
  • cvar_переменная — задает cvar переменную, в которую будет помещаться, значение слайдера.
  • min_значение — минимальное значение
  • max_значение — максимальное значение
  • шаг — значение слайдера будет кратно шаг.

Запускаем, и видим наш слайдер.

Теперь, добавим ColorPicker:

ColorPicker  "ColorPicker", "color_1"

Синтаксис у ColorPicker следующий:

ColorPicker "заголовок", "cvar_переменная"

На этот раз, меню выглядит так:

Далее, добавим текстовое поле (TextField).

TextField "TextField", "text_1"

Синтаксис TextField, следующий:

TextField "заголовок", "cvar_переменная"

Запускаем.

Теперь, добавим возможность, выбирать 1 из заготовленных вариантов (Option). Добавьте следующую строку в блок «myOptionMenu«.

Option "Option", "bool_1", "SwitchOption"

Разберем синтаксис:

Option "заголовок", "cvar_переменная", "название_OptionValue"
  • заголовок — указывает название Option.
  • cvar_переменная — задает cvar переменную, в которую будет помещаться, значение Option.
  • название_OptionValue — задает имя объекта OptionValue, в котором будут прописаны варианты выбора.

Далее, создадим объект OptionValue:

OptionValue "SwitchOption"
{
  0, "red"
  1, "green"
  2, "blue"
}

Синтаксис у OptionValue, следующий:

OptionValue "название_OptionValue"
{
  число, "строка"
}
  • число — указывает число, которое будет присваиваться cvar переменной, при выборе строка.

Например, при выборе red, cvar переменной bool_1, присваивается 0. А, при выборе green, присваивается 1.

Ок, с кодом закончили, запускаем.

Заключение

Теперь, вы можете создавать собственные OptionMenu, которые позволят вам добиться кастомизации вашего мода. В следующем уроке, мы поговорим об изменении главного меню игры (ListMenu).

Итоговый результат.