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

14.6. Как делать динамические/считаемые предметы?

В: Как делать динамические/считаемые предметы? В: Как делать стакающиеся предметы? В: Как делать предметы, рядом с названиями которых выводится их количество?

О: Допустим, на разных локациях мы можем подбирать одинаковые предметы с названием "Грибочек". Если мы просто пропишем везде команду:

addobj "Грибочек"

, то наш инвентарь окажется захламлён множеством одинаковых "Грибочков". Чтобы избежать этого, обычно заводят переменную, которая ведёт подсчёт числа предметов, и тогда код каждого подъёма грибочков слегка усложняется:

if грибочек = 0:
! если мы ещё не собрали ни одного грибочка
! добавляем предмет
addobj "Грибочек"
end
! увеличиваем число собранных грибочков на 1
грибочек += 1

Затем можно выводить число грибочков на экран при щелчке по предмету "Грибочек".

Но как же сделать, чтобы в окне инвентаря отображалась актуальная информация о числе "Грибочков", и нам не приходилось щёлкать по предмету?

Мы можем изменить описание предмета, указав его количество вместе с названием, и это описание заменит собой название предмета в окне предметов:

! увеличиваем число грибочков
грибочек += 1
! добавляем предмет с указанным количеством
modobj "Грибочек", "Грибочек (<<грибочек>> шт.)"

Иными словами, всякий раз, как мы изменяем количество, нам нужно обновить описание предмета с помощью оператора modobj.

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

if $selobj = "Грибочек":
...

Рабочий пример: скачать.