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

Впервые мы столкнулись с необходимостью работы с переменными, когда делали игру Бойцовский клуб. В первых версиях урон от удара был фиксированным, составлял 15 единиц здоровья и это было совершенно не интересно - бой выигрывал тот, кто первым наносил удар. Тогда мы научили поле "Количество" принимать не только числа, но и функцию rand(10,20), которая возвращала случайное число от 10 до 20. 

Функции

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

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

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

Переменные блоков

Блоки могут ссылаться на значения друг друга, используя для этого переменные вида $b12_v, где 

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

12 - номер блока (можно увидеть в заголовке окна редактирования блока)

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

v - имя поля. В блоке может быть несколько полей, в которые вводятся значения, на любое можно сослаться. Узнать имена полей и переменных можно, нажав значок исходного кода в заголовке окна редактирования блока. 

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

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

$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 - ссылка на объект, инициировавший активность (доступно не для всех видов активностей)