Рецепт инвентаря для 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>>