Рецепт инвентаря для Twine 2
Перейти к навигации
Перейти к поиску
Вариант Cheshire для Harlowe 2
Взят отсюда.
- Создайте отдельный параграф
startupи добавьте ему тегstartup - В блок
startupвставьте следующий код:(set: $inventory to (a:))Эта строка создает пустой массив для инвентаря. - Вывод по желанию, можно выбрать один вариант из двух или оба сразу:
Вывод инвентаря внизу страницы
- Создайте блок
inventoryс тегомinventoryи вставьте следующий код:(text: $inventory.join("\n"))(link-repeat: "back")[(goto: (history:)'s last)] - Создайте блок footer с тегом footer. Это шаблон, который будет выводиться внизу страницы. Вставьте следующий код:
(if: (passage:)'s tags contains "inventory"))[](else: (link-repeat: "check inventory")[(goto: "inventory")])
Плавающий блок с инвентарём справа
- Создайте блок footer с тэгом footer и вставьте следующий код:
<div class="inventory">(text: $inventory.join("\n"))</div> - В левом нижнем углу откройте меню и выберите «Редактировать таблицу стилей» и вставьте стиль:
.inventory{border-left: 1px #000 solid;float: right;top: 10%;left: 80%;position: fixed;padding: 20px;display:block;} - Теперь ваш инвентарь отображается в блоке справа на каждой странице.
SugarCube (из Twine Cookbook)
Далее следуют выдержки из аннотированного кода в формате Twee. После двух двоеточий идёт название блока, содержимое можно копировать прямо в редактор.
См. полный код игры в Twine Cookbook. Скопировано по лицензии CC-BY.
:: StoryInit <<set $inventory to []>> <<set $chest to ['щит', 'меч']>> <<set $chestOpen to false>>
В начале игры объявляем переменные, с массивами это важно. Игрок начнёт с щитом и мечом.
:: PassageHeader
Вы носите с собой:
/% если инвентарь пуст, написать "ничего" %/\
<<if $inventory.length is 0>>\
ничего.
<<else>>\
/% перечисляем содержимое через запятую %/\
<<= $inventory.join(', ')>>.
<</if>>
-----
Блок PassageHeader вызывается в начале каждого блока. Этот особый блок есть в SugarCube 2.0.0 и выше.
:: Start
/% Метод Array#push() добавляет вещи в массив инвентаря %/\
Вы входите в маленькую комнату. В углу лежит шлем, который вы решаете взять.
<<run $inventory.push('шлем')>>\
[[Вперёд|ловушка]]
Здесь мы добавляем в инвентарь новую строчку «шлем». Если ещё раз зайти в этот блок, то шлем добавится дважды, но проверка такого слишком усложнит код, поэтому просто не нажимайте на кнопку "Назад".
:: ловушка
Из стены в вашу сторону вылетают отравленные дротики!
/% проверяем, есть ли у игрока вещь %/
<<if $inventory.includes('щит')>>\
Но к счастью, вы закрываетесь за щитом.
<<else>>\
Вам нечем защититься. Вы умираете.
<</if>>