Для начала повторим основное правило. Игрок всегда находится в какой-нибудь одной активной комнате. Если он выходит из этой комнаты, он попадает в другую. > Вы всегда можете получить объект комнаты, в которой находится игрок, при помощи функции ''%%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%%'' Если вы запретите стирать, то текст останется, но все ссылки в нём исчезнут - станут обычным текстом, потому что игрок больше не может действовать в прошлом. Это поведение тоже можно изменить при помощи "клейких" ссылок. Также см. главу [[ru:guide:actions|Действия]], в которой описываются ссылки, действующие внутри текущей комнаты. ==== Классы ссылок ==== Ссылка не обрабатывается Salet, если у неё есть класс ''%%raw%%'', например: ''%%Наружу%%''. Она не стирается при переходе в другую комнату, если у неё есть класс ''%%sticky%%''. Ссылка стирается после первого клика, если у неё есть класс ''%%once%%''. Вместо того, чтобы вручную писать HTML код каждый раз, когда вам нужна особая ссылка, вы можете сделать функцию CoffeeScript и вставлять её прямо в текст: textlink = (content, ref) -> return "#{content}" ... dsc = "Привет #{textlink('всем', 'all')}" ===== Комнаты как локации ===== room "milkroom", dsc: """ ### Мраморный зал Вы находитесь в просторной комнате, выточенной внутри огромной горы молочного камня. Пол и стены замусорены подписями и знаками от предыдущих посетителей. """ С другой стороны, в Salet есть модель мира. И по этой модели, комната уже похожа на реальное строение из стен, пола и потолка. Комнаты связываются между собой //путями// и могут содержать //элементы.// Они следят за тем, когда игрок выходит и входит в них. ==== Элементы ==== Элементы задаются в свойстве ''%%units%%''. Подробнее см. [[ru:guide:units|отдельную главу.]] ==== Пути ==== Пути - это особый вид ссылок, который введён для упрощения навигации. Вместо того, чтобы объявлять объект или делать ссылку, которая при нажатии будет вести в другую комнату, достаточно объявить свойство ''%%ways%%'' и добавить туда ID комнаты, в которую возможно выйти: ways: ["plaza"] title: "Мраморный зал" Salet автоматически проходит по массиву ''%%ways%%'' и выводит ссылки на каждую комнату при помощи их свойств ''%%title%%''. Так, если в комнате ''%%plaza%%'' задано свойство ''%%title: "Площадь"%%'', то вместо ID ''%%plaza%%'' будет выведено именно "Площадь". Названия комнат могут быть функцией, т.е. зависеть от текущего состояния игры.