Онлайн-справочник по самым часто задаваемым вопросам из темы "Как сделать?" на форуме QSP.su
4.1. Как сделать меню предмета?
В: Как сделать меню предмета?
О:
Чтобы меню всплывало по щелчку на предмете, нужно задействовать локацию-обработчик выделения предмета. Для этого:
- создаём локацию и называем, например, "если_предмет_выбран". Название может быть любым.
в самой первой локации в игре указываем плееру, какую локацию он должен использовать, как обработчик выделения предмета. Для этого в системную переменную `$onobjsel` вносим имя нашей новой локации:
$onobjsel="если_предмет_выбран"
Теперь мы должны определиться с тем, сколько пунктов будет в нашем меню. Допустим, у нас есть предмет "Отвёртка" (добавленный где-то в игре с помощью `addobj "Отвёртка"`), и мы хотим сделать три пункта:
- Осмотреть
- Использовать
- Выбросить
На каждый пункт меню нам нужно создать отдельную локацию:
- Для пункта "Осмотреть" локация будет называться "info_screw"
- Для пункта "Использовать" локация будет называться "use_screw"
- Для пункта "Выбросить" локация будет называться "put_screw"
Далее нам нужно завести массив, в котором мы пропишем все наши пункты меню. Назовём его, например, `$меню_отвёртка`:
$меню_отвёртка[1]="Использовать:use_screw"
$меню_отвёртка[2]="Выбросить:put_screw"
(этот код можно прописать на самой первой локации в игре)
Как видите, пункты нужно вписывать в массив, начиная с нулевой ячейки, по порядку. Каждый пункт состоит из двух частей:
- первая часть — название пункта меню
- вторая часть — название локации, которая отвечает за этот пункт меню.
Части разделяются двоеточием.
Теперь на локации-обработчике выделения предмета ("если_предмет_выбран") пишем такой код:
! если выделен предмет отвёртка
! вывести всплывающее меню
menu "$меню_отвёртка"
end
! в самом конце локации не забудьте снять выделение с предмета:
unselect
В качестве аргумента оператору `menu` передаётся название массива, в который мы прописали пункты меню.
Не забываем прописать код для каждой локации, которая отвечает за выполнение пункта меню:
локация "info_screw":
! очищаем окно дополнительного описания
clr
! выводим описание отвёртки
pl "Обыкновенная крестовая отвёртка. Подойдёт для регулирования громкости"
локация "use_screw"
! например изменяем значение переменной
громкость=громкость-50
! выводим на экран текст
*nl "Вы сунули отвёртку в ухо и звуки стали тише."
локация "put_screw"
! очищаем окно дополнительного описания
clr
! выводим текст
pl "Вы выбросили отвёртку"
! удаляем предмет
delobj "Отвёртка"
Теперь осталось только попробовать, как всё работает.