2.5 Переменные, функции, константы

В ActiveUsers используются два типа синтаксиса переменных: PHP и Cover41, так сложилось исторически и сейчас AU медленно дрейфует в сторону полного перехода на Cover41. 

PHP-переменные

Этот тип переменных очень похож на работу с одноименным языком программирования (php). Их основная идея в том, что каждый блок в схеме имеет свой номер и набор свойств. Номер блока виден в его правом верхнем углу, а список свойств можно увидеть, нажав значок </> в заголовке окна редактирования блока.

Например, у блока номер 10 есть свойство по имени "v". В этом случае, переменная для обращения к этому свойству, будет называться $b10_v, где:

$ - признак переменной

10 - номер блока

_ - разделитель номера блока и имени поля

v - имя свойства

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

Действия с PHP-переменными, функции

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

($b10_v * 5) / ($b10_v - 1) 

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

Функции

ceil(A) - округлить А в большую сторону

floor(А) - округлить А в меньшую сторону

rand(А, B) - случайное число в диапазоне между А и B

min(A, B, C...) - вернет минимальное значение

max(A, B, C...) - максимальное значение

time() - время в секундах с 1 янв 1970, также известное как unix_timestamp

stime(A) - перевести A из формата unix_timestamp в понятное человеку время. 301 секунда превратится в "5 мин. 1 сек."

intval(A) - превращаем А в целое число

pow(A, B) - вернёт A в степени B. Например, pow(2, 3) = 8

sqrt(A) - корень из А. sqrt(9) = 3

Арифметические операции

Поддерживаются все основные арифметические операции + - * / и скобки ()

Создание переменных блоками

У некоторых действия и условий, (например у "есть данные в массиве" и "значение в хранилище") есть дополнительные переменные, хранящие ключ и значение полученной из хранилища записи, например для 10-го блока $b10_key и $b10_value. Если $b10_value - массив (зависит от структуры вашего хранилища), то получить доступ к его значениям можно, записав ключи через точку, например $b10_value.price

Такие блоки как ВРМ, переход по ссылке, тоже могут после прохождения системой блока, генерировать переменные. Обычно такие переменные на выходе будут иметь вид $b10_value. В блоке создания комментария таким образом можно получить ID созданного комментария для дальнейшей работы с ним.

Переменные ресурсов 

$res_15 - значение ресурса с ID 15 у инициатора активности (или другой цели, если блок позволяет их выбирать)

$res_15_1234567_4 - значение ресурса с ID 15 у пользователя ВК с ID 1234567. Ссылки на конкретных пользователей удобны для создания глобальных переменных, например вы можете зачислить себе 10 единиц ресурса Приз и проверять в блоксхемах, не закончились ли они, отнимая по одному при каждом выйгрыше. Зачем в этой формуле нужна _4 - как-нибудь в другой раз. 

Доступ к хранилищам

$data39_data.basefont.family

$ - работаем с переменными

data - это будет хранилище

39 - хранилище ID 39

_ - разделитель

data.basefont.family - уровни массива хранилища. Вместо data тут ещё может быть schema, если нужен доступ к структуре

Константы

$text - введённый пользователем текст как есть (если не был преобразован блоками коррекции ввода)

$num_1, $num_2 - числительные в тексте пользователя. Например, в предложении "У чернобыльской кошки 6 лап и 4 глаза", $num_1 будет равно 6, а $num_2 соответственно 4. Удобно использовать для полу-автоматической проверки домашних работ

$from_id - ссылка на инициатора активности, независимо от того, кого мы выберем целью блока. Например, в качестве цели выбираем администратора группы, отправляем ему сообщение, в котором формируем ссылку с переменной http://vk.com/id{b0_from_id} - на пользователя, который запустил активность. Бывает полезно, если нужно оповестить, что кто-то получил приз или заработал бан.

$obj_id - ID поста для комментария или темы для обсуждения, созданного инициатором активности.

$el_id - ID объекта, комментария или сообщения, созданного инициатором активности.

$from_link - ссылка на объект, инициировавший активность (доступно не для всех видов активностей)

Вставка переменных в сообщения и комментарии

К сожалению, в описанном виде PHP-переменные могут использоваться только внутри самой схемы. Если же необходимо вывести их в сообщение - то создаётся блок действие с типом Переменная, в который записывается текст переменной. И затем в тексте сообщения пишется например {b15_v}, если номер блока с объявленной переменной равен 15. 

Напоминаем, этот вид переменных устаревает и ему на смену приходит более удобный Cover41