-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
По поводу управления инвентарем хочу сказать вот что: лично мне не хватает идентификаторов объектов. Попробую объяснить.
Сейчас AddObj принимает название объекта, DelObj удаляет объект по названию, а obj проверяет, есть ли такой объект у игрока по названию предмета. Всё это, конечно, хорошо, пока не возникает следующая задача.
Нужно создать предмет "Лейка", которую можно наполнять и опустошать. Эти два состояния хочется отображать пользователю в инвентаре следующим образом: "Полная лейка" и "Пустая лейка". Если бы функции инвентаря работали по идентификаторам, то достаточно было бы написать что-то такое:
# begin
@лейка_создать()
AddObj $лейка['id'], @лейка_название()
GT 'сад'
-
# лейка_создать
$лейка['id'] = 'watering-can'
лейка['полная'] = 0
-
# лейка_название
if лейка['полная']:
$result[0] = 'Полная лейка'
exit
end
$result[0] = 'Пустая лейка'
-
# сад
'Вокруг раскинулись цветы.'
if no (obj $лейка['id']):
act 'Взять лейку':
Msg 'Лейка — у тебя.'
AddObj $лейка['id'], @лейка_название()
GT $curLoc
end
else
if no (лейка['полная']):
act 'Набрать воду':
Msg 'Лейка заполнена до краев.'
SetObj $лейка['id'], @лейка_название()
GT $curLoc
end
else
act 'Полить цветы':
Msg 'Цветы благополучно политы.'
SetObj $лейка['id'], @лейка_название() &! такого оператора нет, а мог бы быть!
GT $curLoc
end
end
act 'Выбросить лейку':
Msg 'Лейка улетает в кусты.'
DelObj $лейка['id']
GT $curLoc
end
end
-
Текущие инструменты по работе с инвентарем
Процедуры:
- AddObj — добавляет предмет по названию
- DelObj — удаляет предмет по названию
- KillObj — удаляет предмет по индексу
Функции:
Операторы:
- obj — проверяет по названию, существует ли предмет в инвентаре
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels