Онлайн-справочник по самым часто задаваемым вопросам из темы "Как сделать?" на форуме QSP.su

4.1. Как сделать меню предмета?

В: Как сделать меню предмета?

О:

Чтобы меню всплывало по щелчку на предмете, нужно задействовать локацию-обработчик выделения предмета. Для этого:

  • создаём локацию и называем, например, "если_предмет_выбран". Название может быть любым.
  • в самой первой локации в игре указываем плееру, какую локацию он должен использовать, как обработчик выделения предмета. Для этого в системную переменную `$onobjsel` вносим имя нашей новой локации:

    $onobjsel="если_предмет_выбран"

Теперь мы должны определиться с тем, сколько пунктов будет в нашем меню. Допустим, у нас есть предмет "Отвёртка" (добавленный где-то в игре с помощью `addobj "Отвёртка"`), и мы хотим сделать три пункта:

  • Осмотреть
  • Использовать
  • Выбросить

На каждый пункт меню нам нужно создать отдельную локацию:

  • Для пункта "Осмотреть" локация будет называться "info_screw"
  • Для пункта "Использовать" локация будет называться "use_screw"
  • Для пункта "Выбросить" локация будет называться "put_screw"

Далее нам нужно завести массив, в котором мы пропишем все наши пункты меню. Назовём его, например, `$меню_отвёртка`:

$меню_отвёртка[0]="Осмотреть:info_screw"
$меню_отвёртка[1]="Использовать:use_screw"
$меню_отвёртка[2]="Выбросить:put_screw"

(этот код можно прописать на самой первой локации в игре)

Как видите, пункты нужно вписывать в массив, начиная с нулевой ячейки, по порядку. Каждый пункт состоит из двух частей:

  • первая часть — название пункта меню
  • вторая часть — название локации, которая отвечает за этот пункт меню.

Части разделяются двоеточием.

Теперь на локации-обработчике выделения предмета ("если_предмет_выбран") пишем такой код:

if $selobj="Отвёртка":
! если выделен предмет отвёртка
    
! вывести всплывающее меню
    menu "$меню_отвёртка"
end

! в самом конце локации не забудьте снять выделение с предмета:
unselect

В качестве аргумента оператору `menu` передаётся название массива, в который мы прописали пункты меню.

Не забываем прописать код для каждой локации, которая отвечает за выполнение пункта меню:

  • локация "info_screw":

    ! очищаем окно дополнительного описания
    clr
    ! выводим описание отвёртки
    pl "Обыкновенная крестовая отвёртка. Подойдёт для регулирования громкости"
  • локация "use_screw"

    ! например изменяем значение переменной
    громкость=громкость-50
    ! выводим на экран текст
    *nl "Вы сунули отвёртку в ухо и звуки стали тише."
  • локация "put_screw"

    ! очищаем окно дополнительного описания
    clr
    ! выводим текст
    pl "Вы выбросили отвёртку"
    ! удаляем предмет
    delobj "Отвёртка"

Теперь осталось только попробовать, как всё работает.