Интерактивные истории, текстовые игры и квесты
Регистрация / Вход
Посетите наш новый сайт AXMAJS.RU
Модуль для работы с инвентарём «Inventory»
Борис Семёнов (Morych), 24.04.13 | Практика ASM
Версия 1.1
Модуль для работы с инвентарём «Inventory» представляет собой отдельный sm-файл, который содержит необходимые параграфы и объекты для организации полнофункционального инвентаря в вашем проекте. Теперь вам не обязательно заниматься программированием и отладкой этой части истории, можно просто добавить модуль и настроить его под себя.
Возможности
- перечисляем предметы одной строкой в следующем виде: предмет1, предмет2 ... и предметN
- оформляем перечисление предметов как ссылками, так и простым текстом
- выбираем предмет нажатием ссылки и выводим его описание и возможные действия с ним
- при количестве предметов от двух и более показываем быстрые действия сразу со всеми предметами перечисления
- перемещаем предметы с одной сцены на другую
- кладём любые предметы в другие предметы-контейнеры и достаём их оттуда, учитывая при этом объём предмета и пространство контейнера
- добавляем к описанию выбранного предмета-контейнера перечисление содержащихся в нём предметов
- покупаем и продаём предметы, устанавливая индивидуальную наценку для каждого магазина
- отдаём любые предметы другим персонажам
Важные замечания
В основе модуля «Inventory» лежит использование списков. Поэтому для стабильной работы вам понадобится версия «AXMA Story Maker» не ниже 1.9.9. В названиях параграфов и объектов модуля используется префикс «m_». Убедитесь, что в вашей истории нет одноимённых объектов и параграфов.Как добавить модуль «Inventory» в свою историю?
Откройте «AXMA Story Maker» с проектом, в который нужно добавить инвентарь. Нажмите кнопку «Загрузить» на главной панели инструментов, а затем выберите пункт меню «Добавить». В появившемся диалоговом окне выберите файл «Inventory.sm» и нажмите кнопку «Открыть». В ответ на запрос программы, заменять ли одноимённые параграфы, ответьте «нет». Будет добавлено 11 новых параграфов с зелёной маркировкой.Функции параграфов и объектов
1. m_Init
Параграф для инициализации объектов. Этот параграф обязательно нужно вызвать в начале истории. Здесь заполняются списки различных свойств предметов:$m_listItem — названия всех предметов в винительном падеже;
$m_listPosition — начальное расположение всех предметов (название сцены или контейнера, имя героя или торговца);
$m_listVolume — условный объём всех предметов;
$m_listSpace — условное свободное пространство внутри всех контейнеров (обычно пространство меньше объёма); если в контейнере изначально находятся предметы, нужно учесть это;
$m_listPrice — номинальная цена всех предметов (если цена равна 0, то продать такой предмет нельзя). Имя героя хранится в объекте $m_hero и по умолчанию равно «гг».
2. m_Items
Этот параграф перечисляет все предметы в заданной позиции, а также выводит ссылки для быстрых действий над всеми этими предметами. Объект $m_itemsEnabled отвечает за то, в каком виде показывать предметы: true — в виде ссылок, false — в виде простого текста (по умолчанию true). Перед каждым вызовом параграфа необходимо установить значения следующих объектов:$m_position — позиция предметов перечисления;
$m_textPosition — текст, с которого начинается перечисление (например, «Вы видите»);
$m_textEmpty — текст, который выводится вместо перечисления при отсутствии предметов (например, «Здесь ничего нет.»). После вызова параграфа значение объекта $m_total будет равно количеству предметов перечисления.
3. m_Title
Этот параграф должен выводиться на каждой сцене. Показывает ссылку «инвентарь», деньги, название сцены и последнее действие героя с предметами. Объект $m_inventoryEnabled отвечает за доступность инвентаря: true — доступен, false — закрыт (по умолчанию true). Перед вызовом параграфа необходимо установить значение объекта $m_location соответственно названию текущей сцены. По ссылке «инвентарь» отображается список предметов, которые герой держит в руках (позиция которых равна $m_hero).4. m_ItemActions
Этот параграф показывает описание выбранного предмета и базовые действия с ним в зависимости от ситуации. При отсутствии описания показывается описание по умолчанию. Если выбран предмет-контейнер, после описания будут перечислены содержащиеся в нём предметы (кроме контейнеров в продаже). Название выбранного предмета содержится в объекте $m_item.5. m_SpecialActions
В этом параграфе содержатся уникальные действия для каждого предмета. Также может содержаться изображение предмета или дополнительное динамическое описание. Вывод информации осуществляется по условию, в зависимости от названия выбранного предмета ($m_item), текущей сцены ($m_location) и т.д.6. m_Search
Этот параграф производит поиск определённого предмета в заданной позиции. Перед вызовом параграфа необходимо установить значения следующих объектов:$m_searchPosition — позиция для поиска (если значением является пустая строка, то позиция не учитывается);
$m_searchItem — название предмета для поиска (если значением является пустая строка, то название не учитывается). После вызова параграфа объект $m_searchList будет содержать список индексов всех найденных предметов. Объект $m_searchIndex будет содержать индекс одного из найденных предметов, выбранный случайным образом. Если поиск не дал результатов, значение объекта $m_searchIndex будет равно -1.
7. m_Move
Этот параграф перемещает выбранный предмет в другую позицию. Под перемещением предмета понимается смена его позиции или владельца. После перемещения текущий параграф-сцена обновится, объект $m_index будет содержать индекс активного предмета, $m_boxIndex — индекс контейнера, с которым взаимодействует предмет, а объект $m_textAction — автоматически сформированный текст действия героя. Код этого действия будет содержаться в объекте $m_action (список всех кодов смотрите ниже). На основании кода можно соответствующим образом описать реакцию сцены или персонажей на действия героя.8. m_MoveAll
Этот параграф перемещает сразу несколько предметов данного перечисления в другую позицию. После вызова параграфа значение объекта $m_count будет равно количеству перемещённых предметов. Это количество не всегда будет совпадать с общим числом предметов перечисления. Например, у героя может не хватить денег для покупки всех предметов торговца. Здесь также устанавливаются значения объектов $m_action и $m_textAction.9. m_RefreshLocation
Этот параграф обновляет текущую сцену. В версии модуля 1.0 название каждого параграфа, который вызывает m_RefreshLocation, следует занести в список $m_listPassage при инициализации объектов. Начиная с версии 1.1 делать этого не нужно.10. m_предмет
Параграф-образец для обычных предметов (не контейнеров). Дублируйте этот параграф для каждого предмета, занесённого в список предметов $m_listItem. Названия новых параграфов должны полностью, включая падеж, совпадать с названиями предметов списка. В каждом новом параграфе следует заменить текст «m_предмет» на название данного предмета. Здесь также следует задать описание предмета (объект $m_description).11. m_коробку
Параграф-образец для предметов-контейнеров. Порядок настройки аналогичен описанному в предыдущем параграфе. В готовой истории два эти параграфа-образца можно удалить.Торговля и передача предметов другим персонажам
Для установки режима торговли на какой-либо сцене следует после вызова параграфа m_Title задать значения следующих объектов:$m_trader — имя текущего торговца;
$m_market — параметр торговли (коэффициент наценки): больше 0, если герой будет покупать, и меньше 0, если герой будет продавать. Стоимость предмета при покупке или продаже будет равна номинальной цене умноженной на коэффициент наценки и округлённой до ближайшего целого. В режиме торговли к описанию выбранного предмета добавляется также его стоимость. Объект $m_money отвечает за количество денег героя. Деньги торговцев бесконечны. Для установки режима передачи предмета другому персонажу следует после вызова параграфа m_Title внести в объект $m_giveTo имя другого персонажа.
Коды действий
После каждого действия героя объект $m_action принимает одно из следующих значений:0 — действия нет;
Успешные действия:
1— герой взял предмет;2 — герой бросил предмет находившийся в руках;
3 — герой извлёк предмет из контейнера;
4 — герой поместил предмет в контейнер;
5 — герой передал предмет другому персонажу;
6 — герой купил предмет у торговца;
7 — герой продал предмет торговцу;
8 — герой взял все предметы перечисления;
9 — герой бросил все предметы находившиеся в руках;
10 — герой извлёк все предметы из контейнера;
11 — герой отдал все предметы другому персонажу;
12 — герой купил все предметы у торговца;
14 — герой продал все предметы торговцу;
Частично завершённые действия:
13 — герой купил у торговца все предметы, на которые хватило денег;15 — герой продал торговцу все предметы, цена которых была больше 0;
Неудачные действия:
-4 — герой хотел поместить предмет в контейнер, но там не хватило места;-6 — герою не хватило денег, чтобы купить предмет у торговца;
-7 — герой попытался продать торговцу предмет, цена которого равна 0;
-12 — герой хотел купить у торговца все предметы, но денег не хватило ни на один;
-14 — герой хотел продать торговцу все предметы, но цена каждого равна 0. В следующей статье смотрите пример индивидуальной настройки модуля.
Комментарии: 9.
Профиль
Закрыть
Показать все комментарии
25.04.13 11:14
Поддержка своих тем оформления возможно появится уже в версии 2.0, остальное — только в долгосрочной перспективе.
17.02.16 18:40
Замечательная вещь. Применили бы вы ещё модуль на примере(как это было сделано обыкновенным руководством)
17.02.16 21:39
Ой, не заметил остальные части рук-ства, прошу прощения
Для того, чтобы оставлять комментарии, необходимо зарегистрироваться и подтвердить в профиле указанный
При использовании любых материалов блога обязательно указание ссылки на источник
Вот это работка! Думаю это многим пригодится для их Игр!