Перейти к основному содержимому

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 "Отвёртка"

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