Переменные и условный оператор

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

Для этого предназначены:
Переменные
Условный оператор IF…ELSE

Освоить работу с этими средствами сможет каждый, хотя, возможно, тем, кто дружит с информатикой и математикой, будет проще.

Содержание

Переменные

С помощью переменных можно хранить знания о собеседниках или любую другую текстовую информацию. Сейчас при написании шаблонов можно использовать 13 переменных, имеющих заранее заданное целевое назначение, и 100 "свободных", которые владельцы инфов могут использовать по своему усмотрению.
Переменные с заданным целевым назначением имеют «говорящие» имена. Например, %user_name – это переменная, предназначенная для хранения имени собеседника. В ее имени употреблены английские слова user ("пользователь") и name ("имя"). Такие переменные активно используются разработчиками при создании базы шаблонов стандартного инфа, на основе которого в проекте создаются все пользовательские инфы.
Срок жизни таких переменных не ограничен, т.е. их значения запоминаются и хранятся между отдельными разговорами.

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

Список доступных переменных

Переменные с заданным назначением:
%user_name (предназначена для хранения имени собеседника)
%user_gender (предназначена для хранения информации о поле собеседника)
%user_zodiac (предназначена для хранения информации о знаке зодиака собеседника)
%user_age (предназначена для хранения возраста собеседника)
переменные вида user_X (предназначены для хранения любых других сведений о собеседнике):
%user_1
%user_2
%user_3
%user_4
%user_5
%user_6
%user_7
%user_8
%user_9
%user_10

Свободные переменные(100 штук):
%var1
%var2
%var3
%var4
%var5
%var6
%var7
%var8
%var9
%var10
...
%var100
Переменные с автоматически заполняемым значением (этим переменным невозможно присвоить какое-либо другое значение):
%auto_date - переменная, значение которой - актуальная дата в формате год-месяц-день ("2011-03-08")
%auto_time - переменная, значение которой - актуальное время (по московскому часовому поясу)

Формат переменных

Все переменные проекта – текстовые. Это значит, что в качестве их значения выступает текст. Даже если вы зададите значение переменной "2" или "22" или даже "22222" или любое другое число, то система все равно будет воспринимать это значение как текст, а не как число.
Символ "%" в начале имени переменной – обязательный.

Как работать с переменными

Вначале надо присвоить переменной значение, т.е. сохранить в ней какую-то информацию. Это делается в момент ответа инфа.
ВАЖНО: переменным %auto_date и %auto_time невозможно вручную присвоить какое-либо значение. Их значение задается автоматически.
После того, как у переменной появилось значение, его можно использовать:
• вывести в ответ инфа, т.е. просто взять и напечатать в ответе,
• выбрать ответ инфа в зависимости от значения переменной.
Если переменная больше не нужна в диалоге, то ее можно обнулить, т.е. удалить записанную в ней информацию.
ВАЖНО: переменные %auto_date и %auto_time обнулить невозможно.
Пример с именем собеседника:
Например, вы хотите запомнить имя собеседника, в некоторых случаях выводить его в ответ инфа (т.е. показать, что ваш инф помнит собеседника), а в других случаях выбрать ответ в зависимости от того, известен инфу этот собеседник или нет. Вот как будут выглядеть шаблоны:

Что написано в шаблонах Пример диалога
Запоминаем имя:
$ Меня зовут *
# Рад познакомиться. [%user_name="[*1]"]
Гость: Меня зовут Вася
Инф: Раз познакомиться.
Выводим имя собеседника в ответ инфа:
$ Пока, инф.
# До свидания, [%user_name]
Гость: Пока, инф.
Инф: До свидания, Вася.
Выбираем ответ в зависимости от значения переменной %user_name:
$ Ты помнишь, как меня зовут?
# [if (%user_name)] {Конечно. Ты [%user_name].}
# [if (!%user_name)] {Нет. Ты свое имя мне не называл.}
Гость: Ты помнишь, как меня зовут?
Инф: Конечно. Ты Вася.
или
Гость: Ты помнишь, как меня зовут?
Инф: Нет. Ты свое имя мне не называл.
Не хотим больше хранить имя собеседника, обнуляем переменную
$ Ты дурак.
# Все, я с тобой больше не дружу, и забыл, как тебя зовут. [%user_name=""]
Гость: Ты дурак.
Инф: Все, я с тобой больше не дружу, и забыл, как тебя зовут.


Присвоение значения переменной и обнуление переменной

Присвоить значение переменной или обнулить ее можно в ответах инфа.

Синтаксис: [%переменная = "значение"]
Команда присвоения переменной всегда окружается квадратными скобками, которые здесь являются служебными символами. Значение переменной всегда стоит в кавычках.
Примеры присвоения значения:
$ Я рок-н-ролл танцую.
# Завидую. Инфы танцевать не могут [%var1="танцы"]

$ * ненавижу * танцевать *
$ * танцевать * ненавижу *
$ * не танцую *
# Жаль. Будь я человеком, обязательно бы танцевала. [%var1="не любит танцы"]

$ Мне ** лет.
# Классный возраст! [%user_age="[*1]"]

Пример обнуления переменной:
$ Не хочу, чтобы ты говорил про мой возраст.
# Как скажешь [%user_age=""]

Присвоение значения переменной с помощью функции set

Функция set( "Аргумент1", "Аргумент2", "Аргумент3" ) подставляет на своё место Аргумент2 и присваивает его значение переменной, указанной в Аргументе1. Аргумент3 по умолчанию равен пустой строке. Если его указать отличным от пустой строки, то на место функции set никакой текст подставлен не будет и произойдёт только присваивание значения переменной.

Например,
$ меня зовут **
#Приятно познакомиться, [@set("user_name", "[@Fltr("[*1]")]")]!

Гость: меня зовут вася
Инф: Приятно познакомиться, Вася!

Или:
$ меня зовут **
# Я запомню, как тебя зовут. [@set("user_name", "[@Fltr("[*1]")]", "1")]

$ * как * меня * зовут *
# Ты [%user_name].

Гость: меня зовут лена
Инф: Я запомню, как тебя зовут.
Гость: ну и как меня зовут?
Инф: Ты Лена.

Вывод значения переменной в ответе инфа

Для того, чтобы инф "озвучил" значение переменной в ответе, надо просто прописать в ответе эту переменную.
Синтаксис: [%переменная]
Квадратные скобки обязательны.

Пример:
$ Пока, робот!
# До свидания, [%user_name]!

Проверка значения переменной и выбор ответа (использование условного оператора)

Инф может выдавать разные ответы в зависимости от значения переменной или от наличия/отсутствия запомненной переменной. Для этого используется условный оператор IF...ELSE. Альтернативная часть, начинающаяся с ELSE не обязательна. Проверка осуществляется в ответах инфа.

Синтаксис оператора IF...ELSE

Проверка на существование значения у переменной
[if(%переменная)]{Ответ1 инфа.}[else]{Ответ2 инфа}
Пример шаблона:
[if(%user_name)]{Ну что, [%user_name], как дела?}[else]{Как дела, незнакомец?}

Проверка на отсутствие значения у переменной
Символ «!» выступает как служебный и обозначает отрицание.
[if(!%переменная)]{Ответ1 инфа.}[else]{Ответ2 инфа.}
Примеры шаблонов:
$* я *
#[if(!%user_name)]{Вот ты все про себя. А я даже не знаю, как тебя зовут}[else]{[%user_name], я тебя узнал.}
или шаблон без использования части с "else"
$* я *
#[if(!%user_name)]{Вот ты все про себя. А я даже не знаю, как тебя зовут}
#[if(%user_name)] {[%user_name], я тебя узнал.}

$ * потанцуем *
# [if(%var1="не любит танцы")]{Ты же не любишь танцевать...}[else]{Конечно, потанцуем! Ты же любишь танцевать!}
или шаблон без использования части с "else"
$ * потанцуем *
# [if(%var1="не любит танцы")]{Ты же не любишь танцевать...}
# [if(%var1="любит танцы")]{Конечно, потанцуем! Ты же любишь танцевать!}
# [if(!%var1)]{А ты любишь танцевать?}

Проверка на совпадение с конкретным значением
[if(%переменная = "значение")]{Ответ1 инфа.}[else]{Ответ1 инфа.}
Пример шаблона:
$ * дай ссылку на * летние фотки *
# [if(%user_name="Твой Вася")]{Там же, где всегда они лежат.}[else]{Извини, эта ссылка только для Васи.}

ВАЖНО: пока что переменные и оператор IF...ELSE можно использовать только в разделе Мои шаблоны. В разделах Предустановленные темы, Нераспознанные реплики и Реакции на события их использовать нельзя.
Кроме того, переменные нельзя вставлять в инлайн-словари.