Документация по синтаксису и командам для создания текстовых игр на Аперо.

Не зарегистрирован?
Тебе сюда!
Регистрация!

Войди без регистрации
через соц. сеть!
ИЛИ
После входа тебе будут доступны дополнительные текстовые онлайн игры, активно взаимодействующие с игроком, а так же многопользовательские текстовые квесты.
Сейчас в онлайне только 127 гостей.

В игре или на сайте ошибка?
Выдели текст и жми сюда или Ctrl+Enter
Разработчики скажут спасибо :)
Топ Разработка игр

Документация по синтаксису и командам для создания текстовых игр на Аперо.

Осторожно, Бета :)

Обучение: Урок 1Создание новой текстовой игрыСписок текстовых игр в разработке


Локации должны иметь свои уникальные названия, то есть названия локаций не должны повторяться в пределах кода игры.

\имя локации

Название локаций не будет видно пользователю в процессе игры, это служебная информация для автора.

Названием локации может быть сочетание(эти же правила относится к именам переменных):

  • кириллических или латинских символов,
  • знаков нижнего подчеркивания,
  • цифр,
  • пробелов и точек.

Название локации должно содержать хотя бы один кириллический или латинский символ в нижнем регистре или знак нижнего подчеркивания.

В названии локации не рекомендуется использовать зарезервированные команды в верхнем регистре, такие как СТОП(end), КНОПКА(btn), ЕСЛИ(if), ТО(then), ИНАЧЕ(else), КАРТИНКА(image), ССЫЛКА(link), МУЗЫКА(music), ЗВУК(play), ПАУЗА(pause) и д.р.

Примеры правильного объявления локаций(канонический вид):

\конструктор
\онлайн конструктор игр
\конструктор12
\конструктор_12
\конструктор.игр_12
\конструктор игр_12
\онлайн конструктор.игр_12

Удвоенные пробелы, знаки нижнего подчеркивания или точки распознаются как одиночные.

Пробелы или точки в начале и в конце названия локации отбрасываются.

Если в названии локации присутствуют точки:

  • Пробелы, примыкающие к точкам отбрасываются.
  • Каждая часть между точками должна содержать хотя бы один кириллический или латинский символ в нижнем регистре или знак нижнего подчеркивания
  • Каждая часть между пробелами должна содержать хотя бы один кириллический или латинский символ в нижнем регистре или знак нижнего подчеркивания

Регистр символов на уникальность имени локации не влияет, но нельзя использовать только ВЕРХНИЙ регистр.

Примеры объявления локаций, приводимых к каноническому:

\КоНсТрУКтор.игр_12
\ конструктор . игр_12
\конструктор.игр____12
\конструктор....игр_12
\конструктор .игр_12
\ .. конструктор. .. .игр___12 ....

будут приведены к

\конструктор.игр_12

Примеры ошибочного объявления локаций:

\12

Название локации должно содержать хотя бы один кириллический или латинский символ в нижнем регистре или знак нижнего подчеркивания.

\КОНСТРУКТОР

Название локации должно содержать хотя бы один кириллический или латинский символ в нижнем регистре или знак нижнего подчеркивания.

\конструктор.12

Каждая часть между точками должна содержать хотя бы один кириллический или латинский символ в нижнем регистре или знак нижнего подчеркивания

\конструктор 12

Каждая часть между пробелами должна содержать хотя бы один кириллический или латинский символ в нижнем регистре или знак нижнего подчеркивания

\конструктор-12
\конструктор+12
\конструктор№12

Названием локации может быть сочетание кириллических или латинских символов, знаков нижнего подчеркивания, цифр, пробелов и точек.

СТОП (синоним "end") - зарезервированное слово

Чтобы остановить выполнение кода нужно написать так:

\СТОП

Обрати внимание на первый символ в строке "\" - это косая черта, наклоненная влево. Ее так же называют "обратный слэш".

Это специальный символ для платформы, чтобы она понимала, что это команда, а не обычный текст. Если слово "СТОП" в коде было бы написано без обратного слэша, то платформа просто вывела бы его пользователю на экран как обычный текст.

Чтобы понять, как работает команда стоп, выполним следующий пример:

Этот текст будет показан игроку.
\СТОП
А текст после команды стоп - нет.

Посмотрите на результат выполнения. Платформа показывает игроку первую строчку, потом встречает команду СТОП и прекращает выполнение. Все просто.

Само слово стоп тоже не будет видно пользователю в процессе игры, это служебная информация.

\СТОП(имя локации)

Выполнение текущей локации будет остановлено, но будет запущено выполнение локации "имя локации" (аналог goto в urql)

КНОПКА (синоним "btn") - зарезервированное слово

\КНОПКА(имя локации,Текст кнопки)

Будет выведена кнопка при нажатии на которую будет совершен переход на локацию "имя локации"(левая часть до первой "," в скобках), с текстом "Текст кнопки"(правая часть после первой "," в скобках),

\(имя локации,Текст кнопки)

Зарезервированное слово КНОПКА(btn) можно опустить. Кнопка будет функционировать по прежнему. (Рекомендованный способ использования)

Оформление: применяется ко всем кнопкам сразу. По отдельности пользуйтесь bb-кодами \(кнопка,[color=red]текст[/color])

\(АПЕРО.кнопка.полужирный=1)

Делает текст кнопок полужирным.

\(АПЕРО.кнопка.курсив=1)

Начертание текст кнопок курсивом.

\(АПЕРО.кнопка.цвет текста="#ff8800")

Меняет цвет текста кнопки, используются все виды цветового обозначения, такие как "rgb(12,12,12)", в 16-ричном виде "#000000", "#F00" и обычные "red","black".

\(АПЕРО.кнопка.цвет="red")

Меняет цвет фона кнопки, используются все виды цветового обозначения, такие как "rgb(12,12,12)", в 16-ричном виде "#000000", "#F00" и обычные "red","black".

\(АПЕРО.кнопка.без подчеркивания=1)

Таким образом ваш текст в кнопке не будет подчеркиваться.

Делает текст прозрачным. Применяется от 0 до 1, где 0 это видимый 0.5 полупрозрачный а 1 невидимый.

\(АПЕРО.кнопка.высота текста=24)

Высота текста кнопок в пикселях (рекомендуемый диапазон от 12 до 32)

\(АПЕРО.кнопка.высота строки=30)

Высота строки в пикселях (рекомендуемый диапазон от 16 до 36)

Название переменной и ее значение не будет видно пользователю в процессе игры, это служебная информация для автора.(за исключением инвентаря)

\(имя переменной=2)

К именам переменных должны выполняться те же правила, что и для именам локаций

Будет объявлена переменная "имя переменной"(левая часть до "=" в скобках) и ей будет присвоено значение "2"(правая часть после "=" в скобках)

\(имя переменной для текста="текстовое значение")

Переменные могут содержать текстовые значения, для этого правую часть после "=" надо взять в кавычки.

Будет объявлена переменная "имя переменной для текста" и ей будет присвоено значение "текстовое значение"

\(пример=10-5*(3-2))

При присвоении значения можно использовать арифметические действия + - * /, использовать скобки.

Будет объявлена переменная "пример" и ей будет присвоено значение "5"(результат выполнения арифметических действий)

\(переменная=3)
\(пример=10-5*(переменная-2))

Можно пользоваться уже объявленными переменными. (Любая не объявленная или удаленная переменная имеет значение по умолчанию 0.)

Будет объявлена переменная "пример" и ей будет присвоено значение "5"(результат выполнения арифметических действий)

\(переменная=3)
\(пример\(переменная)=10-5*(переменная-2)

Можно использовать другие переменные и в имени новых переменных.

Будет объявлена переменная "пример3" (обратите на тройку в конце имени переменной) и ей будет присвоено значение "5"

\(пример=3)
\(пример=пример+1)

Можно пользоваться уже объявленными переменными.

Будет объявлена переменная "пример" и ей будет присвоено значение "4" (результат сложения "3 + 1")

\(переменная=0)

Для удаления переменной нужно присвоить ей значение 0 или ""

\(КОНСТАНТА=5)
\(КОНСТАНТА=3)

Если имя переменной написано в ВЕРХНЕМ регистре - то это константа. Значение константы присваивается один раз во время объявления и не может быть изменено или удалено в дальнейшем.

Будет объявлена константа "КОНСТАНТА" и ей будет присвоено значение "5"

Инвентарь это личные вещи игрока, которые он может получить или использовать в течение игры.

Отображается в правом верхнем углу окна браузера и может настраиваться.

Если имя переменной начинается со знака нижнего подчеркивания - то это инвентарь. Инвентарь и его количество отображается пользователю

\(_Молот Тора=1)

Таким образом вы создаете одну(1) единицу Молота Тора. Которая будет отображена просто как [ Молот Тора ], в правом верхнем углу экрана.

\(_Спички=5)

Все тоже самое но вы создали предмет в инвентаре в количестве 5 штук и без пробела, что будет отображено как [ Спички (5) ].

Инвентарными переменными можно пользоваться так же, как и обычными.

\(_Спички=_Спички+10)

К имеющимся спичкам будет добавлено еще 10 спичек.

\(_Жизнь.с единицей=1)

Это условие дает возможность отображать количество в инвентаре, даже если оно равно 1. Будет отображено как [ Жизнь (1) ].

Напомним, что все, что в количестве не равном одному будет отображаться с количеством АВТОМАТИЧЕСКИ.

\(_Перчатка Мидаса.локация="Описание Перчатка Мидаса")

Таким образом предмет "Перчатка Мидаса" становится кнопкой и направляет на локацию -> "Описание Перчатка Мидаса". В этой комнате можно написать описание предмета или его предназначение, все зависит от вашей фантазии.

\(_Тупой Нож.название="Острый Нож")

Таким образом вы поменяете название предмета в инвентаре на другое, с "Тупой Нож" на "Острый Нож".

\(_Золото.картинка="kartinka_zolota.png")

Это выражение даст вам возможность отобразить картинку слева от предмета в инвентаре, пример: Золото

\(_Золото.картинка.только=1)

Это даст вам возможность отображать только картинку предмета без текста справа.

\(_Предмет.инверсия=1)

Написав это количество предметов в инвентаре будет расположено слева от предмета.

\(_Фонарь.слева=" [")
\(_Фонарь.справа="] ")

Рассмотрим поподробнее:

\(_Фонарь=2)
\(_Фонарь.слева=" [")
\(_Фонарь.справа="] ")

- этот способ оформления инвентаря даст вам возможность писать слева, или справа, от количества предметов любые символы или буквы. До применения: Фонарь (2). После: Фонарь [2]

\(АПЕРО.инвентарь.слева=" [")
\(АПЕРО.инвентарь.справа="] ")

Приставка АПЕРО.инвентарь вместо названия предмета инвентаря присвоит значение ко всему инвентарю.

\(АПЕРО.инвентарь.скрыть=1)

Если объявлена эта переменная, то весь инвентарь будет скрыт от пользователя. Если удаить переменную \(АПЕРО.инвентарь.скрыть=0), то инвентарь будет снова показан.

\(АПЕРО.инвентарь)

Массив содержащий элементы с именами переменных инвентаря. Доступ к каждому по "АПЕРО.инвентарь.номерX", где X натуральное число от 1 до "АПЕРО.инвентарь.количество"


Как это все применить?

Для начала объявите предмет:

\(_Предмет=1)

Теперь можно приступить к оформлению:

\запуск
Ты взял патроны.
\(_Патроны=2)
\(_Патроны.слева=" [")
\(_Патроны.справа="] ")
\(_Патроны.картинка="patroni.png")
\(_Патроны.картинка.только=1)
\(_Патроны.инверсия=1)
\(_Патроны.локация="Осмотр патронов")
\СТОП

\Осмотр патронов
Патроны для дробовика. Осталось \(_Патроны) шт.
\(АПЕРО.режим вывода="добавить")
\СТОП

Скопируй и посмотри что получится. Ты поймешь, о чем идет речь.

Для отображения значений переменных или выполнения локаций:

\(переменная или локация)

На экран будет выведено значение переменной "переменная или локация". Обрати внимание, если переменная не была объявлена(или была удалена), будет совершено выполнение локации с именем "переменная или локация", после чего выполнение продолжается с позиции в текущей строке.

\(переменная=5)
Значение переменной = \(переменная). Продолжение текста.

Будет выведено "Значение переменной = 5. Продолжение текста."

Значение локации = \(локация). Продолжение текста.
\СТОП

\локация
текст из процедурной локации
\СТОП

Будет выведено "Значение переменной = текст из процедурной локации. Продолжение текста."

\(переменная или локация=5)
Значение переменной, а не локации = \(переменная или локация). Продолжение текста.
\СТОП

\переменная или локация
текст из процедурной локации
\СТОП

Если существует и переменная и локация, то будет получено значение переменной, локация выполняться не будет.

Будет выведено "Значение переменной, а не локации = 5. Продолжение текста."

\(переменная=локация)
\СТОП

\локация
текст из процедурной локации
\СТОП

Значениям переменных можно присваивать и результат выполнения локаций. Обрати внимание, переменной присваивается только последняя строчка из локации. Если в результате выполнения строчек в локации выведено больше одной, то все они, кроме последней, будут отображены пользователю, а только последняя будет использована как значение для переменной.

Будет объявлена переменная "переменная" и ей будет присвоено значение "текст из процедурной локации" (результат сложения "3 + 1")

ЕСЛИ (синоним "if") - зарезервированное слово

ТО (синоним "then") - зарезервированное слово

ИНАЧЕ (синоним "else") - зарезервированное слово

И (синоним "and") - зарезервированное слово

ИЛИ (синоним "or") - зарезервированное слово

\ЕСЛИ(_Спички>0) \ТО У тебя есть спички! \ИНАЧЕ У тебя нет спичек!

Проверка выполнения условия в скобках (_Спички>0), и если оно выполнятся, то выполняется и код после условия(или после \ТО если не опущено) до конца строки или до команды \ИНАЧЕ. Если условие в скобках не выполняется, и есть команда \ИНАЧЕ, то выполнятся код после \ИНАЧЕ до конца строки.

\ЕСЛИ(_Спички>0) У тебя есть спички!

В однострочных условиях, если условие используется без "ИНАЧЕ", то зарезервированное слово \ТО можно опустить

\ЕСЛИ(_Спички>0 И бумага=1) У тебя есть спички и бумага!
\ЕСЛИ(_Спички=0 ИЛИ бумага=0) У тебя чего-то не хватает!

Условия можно объединять в логические связки с помощью И(and), ИЛИ(or) и пользоваться скобками

\ЕСЛИ(_Спички>0) \ТО (У тебя есть спички!
Строка2
Строка3
\) \ИНАЧЕ (У тебя нет спичек!
Строка2
Строка3
\)

Чтобы выполнить код из нескольких строк при прохождении условия, после \ТО (в многострочных условиях \ТО надо писать обязательно) надо поставить открывающуюся скобку. В этом случае код будет выполняться до тех пор, пока не будет найдено "\)" (обратный слэш с закрывающейся скобкой).

Несколько строчек после \ИНАЧЕ будут выполнены аналогичны при НЕпрохождении условия, начиная c "(" и так же до "\)"

ЦИКЛ (синоним "while") - зарезервированное слово

СДЕЛАТЬ (синоним "do") - зарезервированное слово

\ЦИКЛ (икс<5) \СДЕЛАТЬ \(икс)\(икс=икс+1)

Проверка выполнения условия в скобках "(икс<5)", и если оно выполнятся, то выполняется код после \СДЕЛАТЬ (если не опущено) до конца строки, а после выполнения, будет заново проверка условия "(икс<5)", и опять, если оно выполнятся, то выполняется код после \СДЕЛАТЬ. Таким образом код после \СДЕЛАТЬ будет выполняться до тех пор, пока выполняентся условие цикла "(икс<5)".

ВАЖНО: чтобы цикл не был бесконечным (что приведет к ошибке выполнения), после определнного количства повторов, условие должно прекратить выполняться. В данном примере после слова \СДЕЛАТЬ я с каждым повтором вывожу значение "икс" на экран, а затем увеличиваю значение переменной "икс" на 1. А это означает, когда после пяти итераций(повторов) значение переменной "икс" станет равным пяти, условие цикла "(икс<5)" не будет выпоняться (5 < 5 не верно), и выполнение цикла на этом остановится. В результате этого кода будет написано в одну строку: 1234

\ЦИКЛ (икс<5) \(икс)\(икс=икс+1)

В однострочных циклах зарезервированное слово \СДЕЛАТЬ можно опустить

\ЦИКЛ (икс<5) \(икс)\(икс=икс+1)[br]

Для разрыва строк между итерациями (чтобы каждая цифра была написана в отдельной строке) в конце цикла следует написать ББ-код "[br]"

\ЦИКЛ(икс<3) \СДЕЛАТЬ (
В начале итерации икс=\(икс)
\(икс=икс+1)
В конце итерации икс=\(икс)
[br]
\)

Аналогично многострочным условиям, в циклах чтобы выполнить код из нескольких строк, после \СДЕЛАТЬ (в многострочных циклах \СДЕЛАТЬ нельзя опускать) надо поставить открывающуюся скобку. В этом случае код будет выполняться до тех пор, пока не будет найдено "\)" (обратный слэш с закрывающейся скобкой), после чего вернется в начало цикла на первую строчку строчку "\ЦИКЛ(икс<5) \СДЕЛАТЬ (" для повторной проверки выполнения условия.

Результатом выполнения этого кода будет выполнено 3 итерации и написано 6 строк:

В начале итерации икс=
В конце итерации икс=1
В начале итерации икс=1
В конце итерации икс=2
В начале итерации икс=2
В конце итерации икс=3
\определить скорость(дистанция; время)
\(дистанция/время)
\СТОП

Кроме обычных локаций(локаций без параметров), можно создавать локации с параметрами. В данном примере я объявил локацию с именем "определить скорость" с двумя параметрами "дистанция" и "время".Количество параметров может быть любым, но не рекомендуется более 10. Параметры перечисляются после имени локации в скобках через ";" (через точку с запятой). Эти параметры можно использовать для чтения как локальные переменные (тоесть они доступны только в пределах этой локации, и вызванных этой локацией внутренних)

Теперь, переходя на эту локацию, нужно передавать также значения для 2-х параметров, которые можно использовать для чтения как локальные переменные. Делается это так:

\(определить скорость(12;3))

Результатом выполнения этого кода будет число 4. Как это получилось? Здесь идет вызов локации "определить скорость" с двумя значениями для параметров: первое 12 и второе 3, которые написаны в скобках через точку с запятой. Далее движок находит объявленную локацию с двумя параметрами "\определить скорость(дистанция; время)", и последовательно объявляет локальные переменные "дистанция=12" и "время=3". далее выполнятся код локации "\(дистанция/время)" где дистанция(12) делится на время(3) и выводит ответ 4.

Обрати вниммание, если количество параметров в вызываемой и объявленной локациях будут различаться, то движок выведет пустой результат!

Пользоваться локациями с параметрами можно и через кнопки

\(определить скорость(12;3),Какая скорость?)

В этом случае на экран будет выведена кнопка с текстом "Какая скорость?", при нажатии на которую пользователь попадет на локацию "определить скорость" с двумя значениями для параметров 12 и 3.

Обрати вниммание, если количество параметров в вызываемой и объявленной локациях будут различаться, то движок выведет, что локация не найдена!

Поддерживаются некоторые BB-коды:

(ж)Жирный(/ж) или [b]Жирный[/b]

Текст будет выведен так: Жирный

(к)Курсив(/к) или [i]Курсив[/i]

Текст будет выведен так: Курсив

(п)Подчеркнутый(/п) или [u]Подчеркнутый[/u]

Текст будет выведен так: Подчеркнутый

(цвет=красный)Красный(/цвет) или [color=red]Красный[/color] [color=#FF8800]Оранжевый[/color] [color=rgba(0,0,255,0.5)]Полупрозрачный синий[/color]

Текст будет соответственно Красный Оранжевый Полупрозрачный синийСреди стандартных цветов поддерживаются следующие имена (если тебе не подходит не один из этих цветов, пользуйся 16-ричными кодами #FF8800):
red красный, orange оранжевый, yellow желтый, green зеленый, blue голубой, indigo синий, violet сиреневый, purple фиолетовый, pink розовый, silver серебряный, gold золотой, beige бежевый, brown коричневый, gray серый, black черный и white белый.

(шрифт=sans-serif)Шрифт(/шрифт) или [font=sans-serif]Шрифт[/font]

Текст будет выведен так: Шрифт

(размер=26)Размер(/размер) или [size=26]Размер[/size]

Текст будет выведен так: Размер

(таблица)(строка)
(столбец)Строка 1 Столбец 1(/столбец)(столбец)Строка 1 Столбец 2(/столбец)(столбец)Строка 1 Столбец 3(/столбец)
(/строка)
(строка)
(столбец)Строка 2 Столбец 1(/столбец)(столбец)Строка 2 Столбец 2(/столбец)(столбец)Строка 2 Столбец 3(/столбец)
(/строка)
(строка)
(столбец)Строка 3 Столбец 1(/столбец)(столбец)Строка 3 Столбец 2(/столбец)(столбец)Строка 3 Столбец 3(/столбец)
(/строка)
(/таблица)
или
[table]
[tr]
[td]Строка 1 Столбец 1[/td][td]Строка 1 Столбец 2[/td][td]Строка 1 Столбец 3[/td]
[/tr]
[tr]
[td]Строка 2 Столбец 1[/td][td]Строка 2 Столбец 2[/td][td]Строка 2 Столбец 3[/td]
[/tr]
[tr]
[td]Строка 3 Столбец 1[/td][td]Строка 3 Столбец 2[/td][td]Строка 3 Столбец 3[/td]
[/tr]
[/table]

Таблица. Будет выглядеть так:

Строка 1 Столбец 1Строка 1 Столбец 2Строка 1 Столбец 3
Строка 2 Столбец 1Строка 2 Столбец 2Строка 2 Столбец 3
Строка 3 Столбец 1Строка 3 Столбец 2Строка 3 Столбец 3

Можно отобразить таблицу с границами. Для этого надо указать толщину границы, например 3 пикселя, тогда в первой строчке вместо (таблица) или [table] надо написать (таблица=3) или [table=3].

Можно задать фиксированную ширину столбца в пикселях. Для этого вместо (столбец) или [td] надо написать (столбец=100) или [td=100]

Можно некоторые столбцы сделать заголовками. Для этого вместо (столбец) или [td] надо написать (заголовок) или [th]. Эти заголовки аналогичны обычным столбцам, только различаются по цвету фона.

Можно задать фиксированную высоту строки в пикселях. Для этого вместо (строка) или [tr] надо написать (строка=150) или [tr=150]

(таблица=3)
(строка)
(заголовок=100)Строка 1 Столбец 1(/заголовок)(заголовок)Строка 1 Столбец 2(/заголовок)(заголовок)Строка 1 Столбец 3(/заголовок)
(/строка)
(строка)
(столбец)Строка 2 Столбец 1(/столбец)(столбец)Строка 2 Столбец 2(/столбец)(столбец)Строка 2 Столбец 3(/столбец)
(/строка)
(строка=150)
(столбец)Строка 3 Столбец 1(/столбец)(столбец)Строка 3 Столбец 2(/столбец)(столбец)Строка 3 Столбец 3(/столбец)
(/строка)
(/таблица)
или
[table=3]
[tr]
[th=100]Строка 1 Столбец 1[/th][th]Строка 1 Столбец 2[/th][th]Строка 1 Столбец 3[/th]
[/tr]
[tr]
[td]Строка 2 Столбец 1[/td][td]Строка 2 Столбец 2[/td][td]Строка 2 Столбец 3[/td]
[/tr]
[tr=150]
[td]Строка 3 Столбец 1[/td][td]Строка 3 Столбец 2[/td][td]Строка 3 Столбец 3[/td]
[/tr]
[/table]

Таблица с границами толщиной 3, с заголовками в первой строке, с фиксированной шириной 100 для первого столбца и фиксированной высотой 150 для третьей строки будет выглядеть так:

Строка 1 Столбец 1Строка 1 Столбец 2Строка 1 Столбец 3
Строка 2 Столбец 1Строка 2 Столбец 2Строка 2 Столбец 3
Строка 3 Столбец 1Строка 3 Столбец 2Строка 3 Столбец 3

(линия) или [hr]

Горизонтальная линия. Будет выглядеть так:


(разрыв) или [br]

Разрыв строки. Несколько [br] подряд будут работать как один, так как пыстые строки пропускаются. Для создания отступов между абзацами пользуйся

(пробел) или [s]

Пробел

(пусто) или []

Строка нулевой длины (пусто)

Для того, чтобы не запутаться в собственном коде игры, нужно комментировать свой код:

//комментарий до конца строки

Если в тексте поставить два слэша подряд, то это однострочный комментарий до конца строки. Все что написано после - видно только автору.

/* Комментарий
в несколько
строк */

Комментарий в несколько строк или многострочный комментарий. Все, что заключено между /* и */ будет игнорироваться платформой, и видно только автору. Таким образом можно комментировать целые участки кода или скрывать локации в разработке.

Для работы с текстовыми переменными доступны следующие функции

\(АПЕРО.строка.регулярка("Угадай слово!";"/дАй/ui"))

Регулярное выражение строки на "/дАй/ui", вернет 1

\(АПЕРО.строка.длина("Угадай слово!"))

Опрелить длину строки, вернет 13

\(АПЕРО.строка.часть("Угадай слово!";8))

Плучить часть строки начиная с 8-го символа, вернет "слово!"

\(АПЕРО.строка.часть("Угадай слово!";2;3))

Получить часть строки начиная с 2-го символа, не больше 3-х, вернет "гад"

\(АПЕРО.строка.позиция("Угадай слово!";"слово"))

Определить позицию "слово" в строке, вернет 8

\ВВОД(Имя)

Конструкция для ввода пользователем текстового значения, которое будет записано в переменную Имя при следующем переходе.

\ВВОД(Имя,"Вася")

Конструкция для ввода пользователем текстового значения, которое будет записано в переменную Имя при следующем переходе, по умолчанию будет записан текст из второго параметра.

\(АПЕРО.ввод.подсказка="Введите имя")

Если объявлена, то в поле \ВВОД будет добавлена подложка(placeholder) и подсказка при наведении.

\(АПЕРО.ввод.локация="локация")

Если объявлена, то к полю \ВВОД будет добавлена кнопка с галочкой V, при нажатии на которую будет совершен переход на казанную локацию. Также переход будет совершен при нажатии Enter в этом поле.

\(АПЕРО.конец=1)

Эта переменная объявляется в той локации в игре, где игрок доходит до логической концовки (победа или поражение). Вместе с выводом текста локации интерфейс сайта объявит игроку об окончании игры и предложит игроку оставить комментарий об игре.

Переменная автоматически обнуляется после остановки выполнения кода.

\(АПЕРО.время)

Переменная содержит количество секунд с 1 декабря 2014 (Открытие общего доступа Аперо для создания текстовых онлайн по Московскому времени)

Переменная обновляется каждую секунду и доступна только для чтения. Используется для установки пауз, создания таймеров, определение времени суток, дня недели

Если первый входной параметр - числовое значение от 1 до 6 - различные форматы вывода текущей даты.

\(АПЕРО.время(1)) 2017-08-13 18:03:02
\(АПЕРО.время(2)) 2017-08-13
\(АПЕРО.время(3)) 18:03:02
\(АПЕРО.время(4)) 13/08 18:03
\(АПЕРО.время(5)) сегодня
\(АПЕРО.время(6)) сегодня 18:03:02

Если первый входной параметр - текстовая строка - задает формат вывода.

\(АПЕРО.время("Y/m/d H i s")) 2017/08/13 18 03 02

Если во второй параметр передать количество секунд с 1 декабря 2014, то будет выведено не текущее, а заданное время (в заданном формате)

\(АПЕРО.время(1;85055032)) 2017-08-11 10:23:52
\(АПЕРО.время(2;85055032)) 2017-08-11
\(АПЕРО.время(3;85055032)) 10:23:52
\(АПЕРО.время(4;85055032)) 11/08 10:23
\(АПЕРО.время(5;85055032)) 11 августа 2017
\(АПЕРО.время(6;85055032)) 11 августа 2017 10:23:52
\(АПЕРО.время("Y/m/d H i s";85055032)) 2017/08/11 10 23 52
\(АПЕРО.случайно)

Переменная содержит случайное дробное значение от 0 до 0.99999 (дробные числа через точку)

Переменная выдает новое значение при каждом вызове. Используется для создания случайных событий в игре.

\(АПЕРО.случайно(3))

Функция возвращает случайное целое значение от 1 до 3 включительно (1, 2 или 3)

\(АПЕРО.случайно(5;8))

Функция возвращает случайное целое значение от 5 до 8 включительно (5, 6, 7 или 8)

\(АПЕРО.округлить(5.83))

Функция возвращает значение, округленное до целого (6)

\(АПЕРО.округлить(5.83;1))

Функция возвращает значение, округленное с точнстью 1 знаков после запятой (5.8)

\(АПЕРО.отбросить(5.83))

Функция возвращает значение, округленное до целого в меньшую сторону (5)

\(АПЕРО.отбросить(5.83;1))

Функция возвращает значение, округленное в меньшую сторону с точнстью 1 знаков после запятой (5.8)

\(АПЕРО.дополнить(5.83))

Функция возвращает значение, округленное до целого в большую сторону (6)

\(АПЕРО.дополнить(5.83;1))

Функция возвращает значение, округленное в большую сторону с точнстью 1 знаков после запятой (5.9)

\(АПЕРО.степень(2;3))

Возведение числа 2 в степень 3, вернет 8

\(АПЕРО.корень(9))

Квадратный корень числа 9, вернет 3

\(АПЕРО.сохранить="Опушка леса")

Будет сохранено текущее состояние игры. Значение переменной - имя метки для сохранения, которое так же будет видно игроку. Всего для сохранения 3 слота. В разработке: Сохранения происходят по имени метки, тоесть если сохранение с такой меткой уже существует, слот с этой меткой будет перезаписан. 4-я новая метка сохраненная игра перезаписывает 1-ю.

\(АПЕРО.сохранение.скрыть=1)

Пока переменная существует, не доступно "Пользовательское сохранение", игрок не может сохраниться сам, не отображается кнопка сохранения над игрой. На сохранение через АПЕРО.сохранить никак не влияет.

\(АПЕРО.режим вывода="добавить")

Изменят режим вывода информации при переходах по кнопкам и в \АПЕРО.события. Переменная не хранится, а обнуляется после выполнения. Тоетсь используется только для текущего одноразового выполнения.

"добавить" - добавляет результат выполнения в конец контейнера для вывода текста. Старый текст не затирается, все кнопки(кроме той, по которой кликнули) остаются активными. Кнопка, по которой кликнули становится не доступной, текст кнопки закрывается [квадратными скобками].

"повторить" - добавляет результат выполнения в конец контейнера для вывода текста. Старый текст не затирается, все кнопки(включая ту, по которой кликнули) остаются активными.

"выполнить" - после выполнения локации не изменяет содержимого контейнера для вывода текста. Остается висеть иконка вечной загрузки, хотя другие кнопки доступны. Используется для изменения переменных, на которые, например, могут реаировать АПЕРО.события. Также, при объявлении в локации \АПЕРО.события запрещает выводить текст. Осторожно, может ввести в недоумение игрока)

"развернуть" - заменяет кнопку результатом выполнения. Обратите внимание, что при типе блоков \(АПЕРО.блок.тип="параграф") (по умолчанию) блок P будет вложен внутрь существуюего, что создает непредвиденный эффект "пустых строк" вокруг вставленного текста при наведени. Для устранения этих проблем попробуйте поменять АПЕРО.блок.тип, например, на контейнер. В АПЕРО.события не работает.

"динамичный"("динамичный.до") - если динамичный контейнер еще не был добавлен, то добавляет результат выполнения в конец(в начало) контейнера для вывода текста. Если динамичный контейнер уже был добавлен, то заменяется его содержимое. Старый текст не затирается, все кнопки(включая ту, по которой кликнули) остаются активными.

\АПЕРО.до

Локация, которая выполняется каждый раз перед выполнением локации, нажатой по кнопке пользователем.

\АПЕРО.после

Локация, которая выполняется каждый раз после остановки выполнения кода, перед ожиданием действий от пользователя.

\АПЕРО.события

Локация, которая выполняется в режиме реального времени. Автоматический переход совершается примерно раз в секунду.

Используется для срабатывания таймеров, проверки условий для вывода статичной информации. Если игрок не был активен более 5 минут или покинул игру, выполнение останавливается.

\(АПЕРО.локация.выбранная)

Переменная содержит имя локации, выбранной пользователем при последнем нажатии на кнопку. То, что содержится в первой части кнопки до запятой. Не меняется при внутренних переходах через \(локация). Например:

\(город,Идти в город)
\(лес,Идти в лес)
\СТОП

\город
\(АПЕРО.локация.выбранная)
\СТОП

\лес
\(АПЕРО.локация.выбранная)
\СТОП

Результатом выполнения будет текст "город" или "лес", в зависимости от того, что выбрал пользователь.

\(АПЕРО.локация.возврат)

Переменная содержит имя локации, выбранной пользователем при ПРЕДпоследнем нажатии на кнопку. Не меняется при внутренних переходах через \(локация). Удобно использовать в кнопках для возврата на предыдущую локацию или в локациях описания инвентаря(об этом ниже). Например:

\(горы,Идти в горы)
\(лес,Идти в лес)
\СТОП

\лес
Ты в лесу. \(горы,Идти в горы)
\(ничего нет,Заглянуть в кусты)
\СТОП

\горы
Ты в горах. \(лес,Идти в лес)
\(ничего нет,Заглянуть в пещеру)
\СТОП

\ничего нет
Здесь ничего нет.
\(\(АПЕРО.локация.возврат),Назад)
\СТОП

Рассмотрим строку "\(\(АПЕРО.локация.возврат),Назад)" - это создание кнопки с текстом "Назад", а при нажатии на нее мы попадем на локацию, которая содержится в переменной "АПЕРО.локация.возврат", тоесть в лес или горы, в зависимоти от того, где была нажата кнопка.

\(АПЕРО.локация.текущая)\(АПЕРО.локация.предыдущая)

Переменные содержат имя локации, на которую был совершен последний и ПРЕДпоследний переход. Например:

\(лес,Идти в лес)
\СТОП

\лес
Ты в лесу.
Текущая локация1: "\(АПЕРО.локация.текущая)"
Предыдущая локация1: "\(АПЕРО.локация.предыдущая)"
\(горы)
Ты опять в лесу.
Текущая локация3: "\(АПЕРО.локация.текущая)"
Предыдущая локация3: "\(АПЕРО.локация.предыдущая)"
\СТОП

\горы
Ты в горах.
Текущая локация2: "\(АПЕРО.локация.текущая)"
Предыдущая локация2: "\(АПЕРО.локация.предыдущая)"
\СТОП

В результате будет выведено:

Ты в лесу.
Текущая локация1: «лес»
Предыдущая локация1: «»
Ты в горах.
Текущая локация2: «горы»
Предыдущая локация2: «лес»
Ты опять в лесу.
Текущая локация3: «лес»
Предыдущая локация3: «горы»
\(АПЕРО.посетители)

Массив пользователей, запустивших игру(для игры или просмотра за игрой). Доступ к каждому по "АПЕРО.посетители.номерX", где X натуральное число от 1 до АПЕРО.посетители.количество

\(АПЕРО.посетители.номер1.имя)

Имя пользователя, запустившего игру.

\(АПЕРО.посетители.номер1.ключ)

Уникальный ключ посетителя Аперо, запустившего игру.

\(АПЕРО.посетители.номер1.создатель)

Если объявлено, то пользователь, запустивший игру, является создателем текущей ссессии игры(создатель комнаты).

\(АПЕРО.посетители.номер1.участник)

Если объявлена, то пользователь, запустивший игру, зарегистрирован на Аперо и активировал свой е-майл

\КАРТИНКА("файл_картинка.jpg")

Отображение картинки с именем "файл_картинка.jpg".

Для загрузки файлов на сайт используй "аплоад файлов" (в разработке, пока в ручном режиме можно отправлять файлы на e-mail admin[собака]apero.ru с указанием игры, в которой будут использоваться эти файлы, будет загружено в течение суток)

\ЗВУК("файл_звук.mp3")

Проигрывание звука с именем "файл_звук.jpg". Чтобы зациклить звук надо добавить параметр 1: \ЗВУК("файл_звук.mp3", 1)

Для загрузки файлов на сайт используй "аплоад файлов" (в разработке, пока в ручном режиме можно отправлять файлы на e-mail admin[собака]apero.ru с указанием игры, в которой будут использоваться эти файлы, будет загружено в течение суток)

\ССЫЛКА("apero.ru","Текстовые игры онлайн")

Добавить внешнюю ссылку "apero.ru" с текстом "Текстовые игры онлайн". Второй параметр не обязателен.

\(АПЕРО.стиль="ночь")

Перевод оформления игры в ночной стиль. Пока поддерживается только стиль "ночь", "минимализм" и "стандартный"(по умолчанию)

\(АПЕРО.блок.шаблон="отступ.снизу")
\(АПЕРО.блок.шаблон="отступ.сверху")

Вывод следющего блока(только следующего!) будет в сооответствии с шаблоном "картинка" (по центру, отступы, выключена подсветка при наведении на блок и отступ первой строки, стад) Пока поддерживается только шаблон "картинка". Если хочешь продолжать вывод дальше по шаблону, объяви переменную "АПЕРО.блок.шаблон.закрепить"

Переменная автоматичски обнуляется после вывода первого блока, если не объявлена переменная "АПЕРО.блок.шаблон.закрепить"

\(АПЕРО.блок.шаблон.закрепить=1)

Вывод всех блоков будет в сооответствии с шаблоном, пока объявлена эта переменная.

\(АПЕРО.блок.тип="контейнер")

Если тип блока - контейнер, то не будет подсветки при наведении, отступа первой строки. Доступны "контейнер"(div), "в строку"(span) , "выключить"(без добавления оформляющих тэгов) и "параграф"(p)(по умолчанию)

\(АПЕРО.блок.выравнивание текста="по правому краю")

Выравнивание текста(и картинок) внутри блока. Доступны "по ширине", "по правому краю", "по левому краю" и "по центру"(по умолчанию).

\(АПЕРО.блок.цвет текста="red")

Задать цвет для текста. Доступны стандартные именные "red","black" и т.д., в 16-ричном виде "#000000", "#FF0000" и т.д., и в "rgba(255,255,255,0.7)"

\(АПЕРО.блок.высота текста=22)

Высота текста в пикселях (рекомендуемый диапазон от 12 до 32)

\(АПЕРО.блок.высота строки=24)

Высота строки в пикселях (рекомендуемый диапазон от 12 до 32)

\(АПЕРО.блок.ширина=80)

Ширина блока. Если объявлена переменная "АПЕРО.блок.ширина.в процентах", то ширина от 0 до 100 и измеряется в процентах, если не объявлена, то ширина в пикселях.

\(АПЕРО.блок.скрыть=1)

Скрыть блок. Если переменная объявлена, блок не будет отображен пользователю.

\(АПЕРО.блок.позиция="относительная")

Позиция блока. Доступны "относительная", "абсолютная", "фиксированная" и "статичная"(по умолчанию).

\(АПЕРО.блок.слева=320)

Позиция блока слева(зависит от АПЕРО.блок.позиция). Если объявлена переменная "АПЕРО.блок.слева.в процентах", то позиция слева от 0 до 100 и измеряется в процентах, если не объявлена, то позиция слева в пикселях. Если это значение установлено, а значение "АПЕРО.блок.позиция" не установлено, то "АПЕРО.блок.позиция" используется как "относительная".

\(АПЕРО.блок.сверху=90)

Позиция блока сверху(зависит от АПЕРО.блок.позиция). Если объявлена переменная "АПЕРО.блок.слева.в процентах", то позиция сверху от 0 до 100 и измеряется в процентах, если не объявлена, то позиция сверху в пикселях. Если это значение установлено, а значение "АПЕРО.блок.позиция" не установлено, то "АПЕРО.блок.позиция" используется как "относительная".

\(АПЕРО.блок.выравнивание блока="по правому краю")

Выравнивание блока по краю при ширине блока менее 100%. Доступны "по правому краю" и "по левому краю"(по умолчанию).

\(АПЕРО.блок.обтекание="заново")

Обтекание текущего блока относительно предыдущих блоков с "шириной" менее 100% и устновленным значением "выравнивание блока". Если "заново", то отменить обтекание текущего блока относительно предыдущих. Если "включено", то обтекание в стандартном режиме(по умолчанию).

\(АПЕРО.блок.отступ.общий=5)

Отступ блока со всех строн на заданное количество пикселей.

\(АПЕРО.блок.отступ.слева=5)
\(АПЕРО.блок.отступ.справа=5)
\(АПЕРО.блок.отступ.сверху=5)
\(АПЕРО.блок.отступ.снизу=5)

Отступ блока с соответствующей сторны на заданное количество пикселей. Игнорируется, если объявлена переменная "АПЕРО.блок.отступ.общий".

Новинка: Ознакомься с Шаблонами! Наработки кода для обеспечения часто используемого функционала в текстовых квестах

Обучение: Урок 1Создание новой текстовой игрыСписок текстовых игр в разработке

Сделай добро! Расскажи друзьям в соц.сети!
Привлекательный комментарий приветствуется :)

Создай свою текстовую игру онлайн на Apero.ru