Инвентарь с подпунктами
Я тут экспериментировал, чтобы сделать в окне инвентаря разворачивающееся меню. Например, в инвентаре есть сумка, и в неё складываются предметы. Нажимаешь на неё в инвентаре - она разворачивает список предметов внутри.
http://narod.ru/disk/48312133001.ebca41c3b1fa78cf860c003f2eae26f0/bag.zip.html
Тестовый файл. Есть предмет “Сумка”, и внутрь его можно добавлять другие предметы.
Может есть где-то уже устоявшаяся реализация? Буду рад примерам.
(А вообще не люблю возню с псевдоязыками)
Если я правильно понял, ты хочешь, чтобы все предметы выводились в окне инвентаря. Вот пример. Грубовато, но при фантазии можно сделать что-нить поизящнее.
Spoiler
# начало
$onobjsel = 'onobjsel'
usehtml = 1 & ! скрываем теги
! делаем сумку и предметы в ней
$bug_1[0]='закрыть сумку<bug.close:1>'
$bug_1[1]='отвёртка'
$bug_1[2]='молоток'
$bug_1[3]='ножовка'
$bug_1[4]='гвозди'
! добавляем предметы
addobj 'сумка<bug.open:1>'
addobj 'бутылка с вином'
addobj 'увеличительное стекло'
addobj 'билет на трамвай'
addobj 'спички'
--- начало ---------------------------------
# onobjsel
gosub 'bug.sel' & ! операции с сумкой
unselect
--- onobjsel ---------------------------------
# bug.sel
if $strfind($selobj,'<bug.close:[\d]+>')!'': gosub 'bug.close',val($replace($replace($strfind($selobj,'<bug.close:[\d]+>'),'<bug.close:'),'>'))
if $strfind($selobj,'<bug.open:[\d]+>')!'': gosub 'bug.open',val($replace($replace($strfind($selobj,'<bug.open:[\d]+>'),'<bug.open:'),'>'))
--- bug.sel ---------------------------------
# bug.open
! args[0] - номер обрабатываемой сумки
i = countobj
killvar '$obj_member'
:из инвентаря в память
if i>0:
$obj_member[i] = getobj(i)
i-=1
if i>0: jump 'из инвентаря в память'
end
killobj
i=1
:из сумки в инвентарь
if no i > arrsize('bug_<<args[0]>>'):
dynamic "addobj $bug_<<args[0]>>[i-1]"
i+=1
if no i > arrsize('bug_<<args[0]>>'): jump 'из сумки в инвентарь'
end
killvar 'i'
--- bug.open ---------------------------------
# bug.close
! args[0] - номер обрабатываемой сумки
killobj
i = 1
arrsize('$obj_member')
:из памяти в инвентарь
if no i > arrsize('$obj_member'):
addobj $obj_member[i]
i+=1
if no i > arrsize('$obj_member'): jump 'из памяти в инвентарь'
end
killvar '$obj_member'
killvar 'i'
--- bug.close ---------------------------------
не работает
Странно. Сейчас выложу qsp-файл.
Держи. Попробуй. Если не заработает, скажи в каком месте.
http://aleksversus.narod.ru/res/easy.poket.qsp
Работает, но моя реализация мне больше нравится
Ну. Хозяин барин. :)
В примерах кода “28 в 1” на странице “Разработчикам” есть.
Благодарю, помогло, тоже в такой сумке нуждался
Что-то я в “28 в 1” не нашел. =(
Aleks Versus,
я ошибся, думал вы говорите про всплывающее меню для предметов в инвентаре, а вы говорили про контейнеры. Контейнеров действительно нет в примерах кода.