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

Библиотечка, дополняющая инвентарь

Описание​

Библиотечка, дополняющая возможности стандартного инвентаря QSP.

Позволяет простыми командами добавлять и удалять предметы, при этом их количество будет верно отображаться в инвентаре. Например, если вы добавляете 15 шишек, в инвентаре они отобразятся, как "Шишка (15 шт.)". Добавляете ещё 15 шишек, и в инвентаре теперь отображается "Шишка (30 шт.)". Учёт количества шишек берёт на себя библиотечка.

Вы можете добавлять предметы в обход функций библиотечки, они не помешают её работе, но и учитываться ею не будут.

В прикреплённом архиве вы найдёте саму библиотечку (lib/inventory_advanced.qsp), а так же пример работы с ней (invadv_test.qsp).

Автор оригинальной версии Ntropy настаивает на сохранении авторства, если вы используете библиотечку в своём проекте.

Оставить благодарность автору, или связаться с ним, можно по почте:

Ntropy (...@yandex.ru)

Адаптировал библиотечку под плееры версии 5.9.5 и выше Aleks Versus.

Использование​

Для использования библиотечки в собственном проекте:

  • распакуйте папку "lib" из скачанного архива в папку со своей игрой;
  • подключите библиотечку, написав в своей игре на самой первой локации команду inclib 'lib/inventory_advanced.qsp'.

Теперь вы можете использовать локации-функции библиотечки для управления предметами.

Локации могут вызываться как функции и как процедуры. Функции, как правило, возвращают значения, процедуры — никогда не возвращают.

Если вам нужно вызвать локацию, как функцию, в коде игры пишете:

@название_локации('в скобках перечисляем аргументы')

Если вам нужно вызвать локацию, как процедуру, в коде игры пишете:

@@название_локации 'аргументы можно не заключать в скобки'

Команды библиотечки​

  • ia_add_obj — добавление предмета в инвентарь. Не возвращает значения. Общая запись:

    @@ia_add_obj <$название предмета>, <количество>, <$тип>
    • <$Название предмета> — это строковое название предмета, например 'Шишки', 'Деньги', 'Радиоактивный пепел'.
    • <количество> — сколько предметов хотите добавить. Если не указать, или указать 0, добавится один предмет к уже имеющемуся количеству.
    • <$тип> — строка, обозначающая, в чём считаются предметы: 'шт.', 'руб.', 'кг.'. Если не указать, или указать пустую строку, будет выводиться только количество.
  • ia_del_obj — удаление предмета из инвентаря. Не возвращает значение. Общая запись:

    @@ia_del_obj <$название предмета>, <количество>
    • <$Название предмета> — это строковое название предмета, например 'Шишки', 'Деньги', 'Радиоактивный пепел'.
    • <количество> — сколько предметов хотите удалить. Если не указать, или указать 0, удалится один предмет из уже имеющегося количества. В функцию встроена защита от избыточного удаления (количество предметов не может стать меньше нуля).
  • ia_obj_count — устанавливает или возвращает количество предметов с указанным названием. Общая запись:

    ! для установки количества предметов
    @@ia_obj_count <$название предмета>, <количество>
    ! для получения количества предметов
    @ia_obj_count(<$название предмета>)
    • <$Название предмета> — это строковое название предмета, например 'Шишки', 'Деньги', 'Радиоактивный пепел'.
    • <количество> — какое число предметов хотите установить. Если не указать количество, функция вернёт число предметов. Если указать 0, число предметов в инвентаре станет равно нулю.
  • ia_obj_type — устанавливает или возвращает единицы измерения предмета. Общая запись:

    ! для установки количества предметов
    @@ia_obj_type <$название предмета>, <$тип>
    ! для получения количества предметов
    @ia_obj_type(<$название предмета>)
    • <$Название предмета> — это строковое название предмета, например 'Шишки', 'Деньги', 'Радиоактивный пепел'.
    • <$тип> — строка, обозначающая, в чём считаются предметы: 'шт.', 'руб.', 'кг.'. Если не указать, функция вернёт текущие единицы измерения для данного предмета. Если указать пустую строку, единицы измерения для предмета удалятся.

Дополнительные функции библиотечки​

  • ia_obj_get_title — возвращает описание предмета, как оно должно отображаться в инвентаре, например "Радиоактивный пепел (1 кг.)". Это техническая локация библиотечки. Общая запись:

    @ia_obj_get_title(<$название предмета>)
    • <$Название предмета> — это строковое название предмета, например 'Шишки', 'Деньги', 'Радиоактивный пепел'.
  • ia_obj_get_pos — возвращает номер предмета в инвентаре. Если предмет в инвентаре отсутствует, возвращает 0. Эта локация не используется библиотечкой, однако она может быть полезна. Общая запись:

    @ia_obj_get_pos(<$название предмета>)
    • <$Название предмета> — это строковое название предмета, например 'Шишки', 'Деньги', 'Радиоактивный пепел'.

Скачать​