Показать исходный текстИстория страницыСсылки сюдаНаверх Поделиться Поделиться... Twitter LinkedIn Facebook Pinterest Telegram WhatsApp Yammer RedditНедавние измененияОтправить на эл. почтуПечатьПостоянная ссылка × Содержание Комнаты как куски текста Классы ссылок Комнаты как локации Элементы Пути Для начала повторим основное правило. Игрок всегда находится в какой-нибудь одной активной комнате. Если он выходит из этой комнаты, он попадает в другую. Вы всегда можете получить объект комнаты, в которой находится игрок, при помощи функции salet.here() Комнаты как куски текста Комнаты всегда объявляются одинаковым образом. В самом простом виде это выглядит так: room "pirate", dsc: """ Капитан Блад улыбается и быстро вытаскивает саблю. Резким движением капитан срезает кошелёк с ничего не подозревающего прохожего, рассыпая монеты, а затем делает шаг в сторону, превращаясь обратно в обычного зеваку. * [Вмешаться](intervene) * [Наблюдать дальше](watch) """ Давайте разберём это объявление. room - это название функции room(), которая объявляет собственно комнату. Вы можете написать свою функцию, которая будет называться по-другому и делать объекты другого типа. "pirate" - это ID комнаты. По этой строке вы можете обратиться к этой комнате. По умолчанию ID должен содержать только латинские буквы, символы _- и цифры. (Это меняется в ядре Salet через параметр salet.linkRe) Например, код salet.getRoom("pirate") вернёт объект комнаты, код salet.goTo("pirate") перенесёт в неё игрока, а код salet.isVisited("pirate") расскажет, посещал ли уже игрок эту комнату. dsc - это свойство комнаты. Вы можете объявить сколько угодно свойств; конкретно свойство dsc задаёт описание комнаты. Это тот текст, который видит игрок каждый раз, когда входит в комнату. Текст задан внутри тройных кавычек """ и обрабатывается в формате Markdown. Текст dsc содержит ссылки, которые ведут на другие комнаты. Если после клика на ссылку игрок переходит в другую комнату, то весь текст предыдущей комнаты стирается - игрок уже ушёл оттуда. Вы можете запретить стирать текст предыдущей комнаты, указав у комнаты свойство clear: false Если вы запретите стирать, то текст останется, но все ссылки в нём исчезнут - станут обычным текстом, потому что игрок больше не может действовать в прошлом. Это поведение тоже можно изменить при помощи "клейких" ссылок. Также см. главу Действия, в которой описываются ссылки, действующие внутри текущей комнаты. Классы ссылок Ссылка не обрабатывается Salet, если у неё есть класс raw, например: <a href="out" class="raw">Наружу</a>. Она не стирается при переходе в другую комнату, если у неё есть класс sticky. Ссылка стирается после первого клика, если у неё есть класс once. Вместо того, чтобы вручную писать HTML код каждый раз, когда вам нужна особая ссылка, вы можете сделать функцию CoffeeScript и вставлять её прямо в текст: textlink = (content, ref) -> return "<a href='./_writer_#{ref}' class='once'>#{content}</a>" ... dsc = "Привет #{textlink('всем', 'all')}" Комнаты как локации room "milkroom", dsc: """ ### Мраморный зал Вы находитесь в просторной комнате, выточенной внутри огромной горы молочного камня. Пол и стены замусорены подписями и знаками от предыдущих посетителей. """ С другой стороны, в Salet есть модель мира. И по этой модели, комната уже похожа на реальное строение из стен, пола и потолка. Комнаты связываются между собой путями и могут содержать элементы. Они следят за тем, когда игрок выходит и входит в них. Элементы Элементы задаются в свойстве units. Подробнее см. отдельную главу. Пути Пути - это особый вид ссылок, который введён для упрощения навигации. Вместо того, чтобы объявлять объект или делать ссылку, которая при нажатии будет вести в другую комнату, достаточно объявить свойство ways и добавить туда ID комнаты, в которую возможно выйти: ways: ["plaza"] title: "Мраморный зал" Salet автоматически проходит по массиву ways и выводит ссылки на каждую комнату при помощи их свойств title. Так, если в комнате plaza задано свойство title: "Площадь", то вместо ID plaza будет выведено именно "Площадь". Названия комнат могут быть функцией, т.е. зависеть от текущего состояния игры. ru/guide/rooms.txt Последнее изменение: 2021/01/24 10:42(внешнее изменение)