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

20.14. Как сделать записную книжку в игре?

В: Как сделать записную книжку в игре?

То есть чтобы игрок мог делать записи, а когда нужно, мог их просматривать.

О:

Хранить записи для записной книжки можно в массиве, саму же записную книжку можно сделать в виде предмета:

addobj "Записная книжка"

Работу с предметом "Записная книжка" удобнее всего орагнизовать через всплывающее меню. Для всплывающего меню создаём две локации. Назовём их, например, "note.add" и "note.read". Первая будет служить для добавления записи в записную книжку, вторая — для воспроизведения записей из записной книжки.

Код локации "note.add" достаточно прост:

! предлагаем пользователю добавить запись
$new_note=$input('Введите текст записи.')
! если введён какой-либо текст, добавляем его в очередную ячейку массива note[]
if $new_note<>'':
    $note[]=$new_note
end
! для верности удаляем пременную
killvar 'new_note'

Код локации "note.read":

! очищаем окно доп описания
clr
! счётчик
i=0
loop local i=0 while i<arrsize('$note') step i+=1:
! пока счётчик не достиг размера массива note
    
! выводим запись
    pl $note[i]
end

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

$меню_записная_книжка[0]="Добавить запись:note.add"
$меню_записная_книжка[1]="Прочитать записи:note.read"

На локации-обработчике выделения предмета добавляем такой код:

! если выделен предмет "Записная книжка"
if $selobj='Записная книжка':
    
! вызываем меню
    menu '$меню_записная_книжка'
end

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

Вот и всё. Теперь у нас есть предмет "Записная книжка", щелчок по которому вызовет всплывающее меню с двумя пунктами "Добавить запись" и "Прочитать записи".