Подготовка.
Перед началом, добавьте следующий код к себе в 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).