HelpDesk Помощь в каждом кубике!
Список переменных условий команд

Макросы: список переменных, условий, команд (+примеры)

Переменные

Окружив переменную символом %, можно вставить её в текст: &b = вода;

log(тут %&b% %PLAYER%)

Пользователя (малыми буквами) — хранятся в .vars.xml и .globalvars.xml, даже после перезагрузки

~ или без приставки — флаг: 0 — FALSE, не ноль — TRUE (z = 1 или ~z = 1)

# — целое число (например: #a = 123, но не 123.45 или 123,45)

& — строка (например: &b = вода)

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

ifcontains(%&v%, "шило") равносильно ifcontains(%&v%,шило), но не ifcontains(%&v%, шило), потому что пробел считается частью текста, то есть " шило", а не "шило"

@ — глобальная, видна всем скриптам (например: @flag = 1, @#int = 321, @&str = строка)

Игровые (БОЛЬШИМИ буквами)

Ввод

  • KEYID, KEYNAME — номер и название клавиши, вызвавшей скрипт

  • CTRL, ALT, SHIFT, KEY_<название> — дают истину, если нажаты

  • CONFIG — текущая конфигурация

    Мир

  • ONLINEPLAYERS, MAXPLAYERS — число игроков в сети и максимум

  • DAYTIME, DAY, TICKS, DAYTICKS, TOTALTICKS — игровое время, тики (в творческом можно задать: /time set <число>)

  • RAIN — сила дождя (0–100)

  • SERVER, SERVERNAME, SERVERMOTD — сервер: адрес, название, ?

  • SEED — семя (ключ для генератора)

  • TEXTUREPACK — пакет текстур

    Игрок

  • PLAYER, DISPLAYNAME — имя игрока

  • XPOS, YPOS, ZPOS — координаты: x – широта, y – высота, z – долгота

  • BIOME — биом (например, Plains)

  • HEALTH, ARMOUR — здоровье (0–20), броня (0–20)

  • HUNGER — голод (0–20)

  • OXYGEN — кислород

  • LEVEL — уровень

  • XP, TOTALXP — опыт: на текущем уровне, всего

  • MODE, GAMEMODE — режим: 0 – SURVIVAL, 1 – CREATIVE, 2 – ADVENTURE, 3 – SPECTATOR (в творческом: /gamemode <число>)

  • INVSLOT — выбранный слот (1–9)

  • LIGHT — освещённость

  • DIMENSION — измерение: NETHER, SURFACE, END, UNKNOWN

  • ITEM, ITEMCODE, ITEMNAME, ITEMDAMAGE, ITEMIDDMG — предмет

  • DURABILITY — долговечность (для проверки: F3+h)

  • FPS — кадров в секунду

  • SATURATION — насыщенность

  • DIFFICULTY, LOCALDIFFICULTY — сложность: PEACEFUL - 0, EASY - 75, NORMAL - 150, HARD - 225

  • HELMID, HELMNAME, HELMDAMAGE, HELMDURABILITY - айди шлема, его имя/текущая прочность/максималная прочность

  • CHESTPLATEID, CHESTPLATENAME, CHESTPLATEDAMAGE, CHESTPLATEDURABILITY - айди нагрудника, его имя/текущая прочность/максималная прочность

  • LEGGINGSID, LEGGINGSNAME, LEGGINGSDAMAGE, LEGGINGSDURABILITY - айди штанов, их имя/текущая прочность/максималная прочность

  • BOOTSID, BOOTSNAME, BOOTSDAMAGE, BOOTSDURABILITY - айди сапогов, их имя/текущая прочность/максималная прочность

  • CONTAINERSLOTS — число слотов в сундуке (?)

  • CHUNKUPDATES — обновления чанка

  • VEHICLE, VEHICLEHEALTH — транспортное средство: название, здоровье

  • STACKSIZE — размер стека

  • UUID — UUID игрока

  • CANFLY, FLYING — полёт: возможность, процесс (в творческом: /gamemode 1 -- затем двойной прыжок)

Массивы

  • Флагов: arr_f[0] = 0; arr_f[1] = 1; arr_f[2] = arr_f[1]
  • Чисел: #arr_n[0] = 123; #arr_n[1] = 321; #arr_n[2] = #arr_n[0]
  • Строк: &arr_s[0] = азъ; &arr_s[1] = букы; &arr_s[2] = %&arr_s[0]%
  • log(%arr_f[0]% | %arr_f[1]% | %arr_f[2]%)
  • log(%#arr_n[0]% | %#arr_n[1]% | %#arr_n[2]%)
  • log(%&arr_s[0]% | %&arr_s[1]% | %&arr_s[2]%)

  • split(<разделитель>,<строка>,[массив]) — поместит разделённые строки в массив

Пример 1 (здесь пробел - это разделитель, то есть " ")

&str = Тов ка ч;

split( ,%&str%,&arr);

#max = arraysize(&arr);

#max = #max - 1;

for(#i,0,%#max%);

log(%&arr[%#i%]%);

next;

  • join(<клей>,<массив>,[#строка]) — запишет в строку все элементы массива, соединяя "клеем"

Пример 2 (здесь "_" — это клей; результат: "Тов_ка_ч")

&arr[0] = Тов; &arr[1] = ка; &arr[2] = ч;

join(_,&arr,&str2);

log(%&str2%);

  • indexof(<массив>,<#результат>,<искомое>) — выдаст номер первого элемента, совпавшего с искомым. Выдаст -1, если не найдёт.

Пример 3 (выдаст номер элемента с "ка")

&arr[0] = Тов; &arr[1] = ка; &arr[2] = ч;

indexof(&arr,#n,ка);

log(%#n%);

Регистр не имеет значения, а значит найдёт и Ка / КА / кА

  • push(<массив>,<значение>) — положит значение в конец массива (то же, что и <массив>[] = <значение>, например, #arr[] = 123)
  • pop(<массив>,<значение>) — возьмёт последнее значение в массиве
  • put(<массив>,<значение>) — вставит значение в первый пустой элемент (??)
  • arraysize(<массив>,[#результат]) — выдаст размер массива (номер последнего элемента+1)
  • Удаление массива: unset(<массив>[]) -- например: unset(#arr[])

Условия

  • =, == — равно (5 = 5)(5 == 5)("вода" = "вода")("вода" == "вода")

  • != — неравно (5 != 4)

  • >, < — больше (5 > 4), меньше (4 < 5)

  • >=, <= — больше/равно (5 >= 5)(5 >= 4), меньше/равно (5 <= 5)(4 <= 5)

  • && — и ((<условие>) && (<условие>) — истинно, если выполняются оба условия)

  • || — или ((<условие>) || (<условие>) — истинно, если выполняется хотя бы одно условие)

  • if(<условие>) — если условие выполняется

  • else — иначе (если условие НЕ выполнилось)

  • elseif(<условие>) — else+if (если условие НЕ выполнилось, то проверит ещё одно условие)

  • endif — конец

  • ifmatches(<субъект>,<шаблон>) — если шаблон подходит (то есть условие выполняется)

Пример 4:

&v = d e f;

ifmatches(%&v%,(.) e (.));

log(Шаблон подходит);

else;

log(Шаблон НЕ подходит);

endif

  • ifcontains(<текст>,<объект>) — если <текст> содержит <объект>
  • ifbeginswith(<текст>,<объект>) — если <текст> начинается с <объект>
  • ifendswith(<текст>,<объект>) — если <текст> кончается на <объект>

Пример 5 (если текст содержит "шило")

&v = В стоге сена есть шило;

ifcontains(%&v%,шило);

log(истинно);

endif

(Будет работать и с ifendswith, но не с ifbeginswith, потому что "шило" есть в конце, но не в начале текста)

  • iif(<условие>,<если_истина>,[если_ложь]) — аналогично примеру 1, но c использованием echo вместо log

Пример 6:

a = 0;

if(a);

log(истина);

else;

log(ложь);

endif

Пример 7 (если здоровье < 1.5 сердца, то "/spawn"):

iif(HEALTH < 3,/spawn)

Пример 8 (использование elseif: подбор причины; например, можно заменить "нужда" на "битсы")

&v = битсы;

if(&v = "пони");

log("думаю, да, %&v%");

elseif(&v = "желание");

log("вполне возможно, что %&v%");

elseif(&v = "нужда");

log("да, %&v%");

else;

log("не знаю");

endif

Циклы

  • break — прервёт цикл
  • inc, dec(<#число>,[количество]) — увеличит/уменьшит (#число = #число +/- количество)
  • inc(#i), dec(#i) равносильны inc(#i, 1), dec(#i, 1)

Цикл повторяется <число> раз, но если пропустить <число>, то он будет повторяется без конца.

Пример 9 (10 раз перешлёт Jerry 1 битс (:з)):

do(10);

echo(/pay Jerry 1);

loop;

Пока условие ложно, цикл будет повторяться:

Пример 10 (напишет 1, 2, 3):

#i = 1;

do;

log(%#i%);

inc(#i);

until(3 < #i)

Пока условие истинно, цикл будет повторяться:

Пример 11 (напишет 1, 2, 3):

#i = 1;

do;

log(%#i%);

inc(#i);

while(#i <= 3);

Цикл повторяется (конец-начало + 1) раз, с каждым новым шагом увеличивается на 1 значние переменной:

Пример 12 (напишет 2, 3, 4, 5):

for(#i, 2, 5);

log(%#i%);

next;

(^ цикл повторится 4 раза (= 5-2 + 1) и с каждым новым шагом увеличивается значение #i: 2, 3, 4, 5)

Пример 13 (запишет в файл Игроки.txt список игроков)

foreach(players);

logto(Игроки.txt,%PLAYERNAME%);

next;

Пример 14 (проверит, если игрок "useigor" в сети)

status = 1;

foreach(players);

if(PLAYERNAME = "useigor");

unset(status);

log("игрок %PLAYERNAME% есть в сети");

break;

endif;

next;

if(status);

log("игрока useigor нету в сети");

endif;

(Чтобы кириллица нормально отобразилась в имени файла, файл скрипта должен быть в ANSI)

Команды

Некоторые можно писать по-разному, например: **ucase(вода,&result)** равносильно **&result = ucase(вода)**
  • assign(<перем>,<значение>) — присвоит значение переменной (то же, что и <перем> = <значение>)
  • echo(<ввод>) — напишет в чате (для всех)
  • log(<ввод>) — напишет в чате (для себя)
  • logto(<цель>,<текст>) — выведен текст в цель, которая может быть файлом или полем текста
  • wait(<время>) — на время приостановит скрипт: 123 - сек, 123ms - мсек, 123t - тики
  • match(<текст>, <шаблон>, [&результат], [группа]??, [по умолчанию]??) — по шаблону вытащит значения из текста.

Пример 15 (из текста "a b c" вытащит то, что находится слева и справа от " b "):

&v = a b c;

match(%&v%, "(.) b (.)",{&x,&y});

log(%&x%|%&y%);

  • set(<переменная>,[значение]) — задать истину/значение
  • unset(<флаг>) — задать ложь, удалить переменную/массив (массив с [], например, arr[])
  • toggle([флаг]) — переключит флаг (например, истина станет ложью, и наоборот)
  • sqrt(<число>,[#результат]) — квадратный корень (например, для 9 даст 3, для 10 то же, так как целое число)
  • ucase, lcase(<ввод>,[&результат]) — переведёт в верхний, нижний регистр
  • disconnect() — отключит от сервера
  • sprint(), unsprint() — начать/кончить бег
  • clearchat() — очистит чат
  • unsafe(число); ...; endunsafe — этот блок ограничивает число исполнений: чем больше число, тем больше скорость исполнения команд
  • key(<название>) — нажмёт клавишу (длительность 1 тик): inventory, drop, chat, attack, use, pick
  • keydown, keyup(<название>) — зажмёт/отожмёт клавишу: forward, back, left, right, jump, sneak; если между keydown и keyup не будет задержки, то они не будут работать
  • togglekey(<название>) — то же, что и keydown/keyup; если клавиша была зажата, то отожмёт, и наоборот
  • type(<текст>) — будет нажимать клавиши каждый 1 тик (например, type(wwwwwddwdwddw))
  • press() — введёт событие клавиши (длительность 1 так), например, press(KEY_Q)
  • inventoryup, inventorydown(<число>) — прокрутит <число> раз вперёд/назад выбор слота
  • slot(<число>) — выберет слот
  • itemid(<предмет>), itemname(<ид>) — выдаст ид/название предмета (например, #id=itemid(stone); &name=itemname(1))
  • placesign([строка1],[строка2],[строка3],[строка4],[показатьГИП]) — поставит табличку с текстом (если она имеется), например: placesign(%DATE%,%TIME%,SPLEEF201508) )
  • achievementget(<текст>,[itemid[:damage]]) — покажет достижения с данным текстом, например: achievementget( Накормить Спайка,stone:123)
  • craft(< предмет[:урон] >,[количество],[бросить],[verbose]??) — сделает предмет, если имееются составные материалы, например: craft(snow,1)
  • stop([ид]) — остановит текущий макрос или макрос с данным заданием (см. ниже) или ИД (если создать переменную, то в файле .vars.xml будет виден ид)
  • exec(<файл>,[задание],[параметры]) — запускает файл со скриптом, который будет работать параллельно (например, exec(beoumin_pryg.txt).

    Дав "задание" можно по его названию остановить скрипт. Например, exec(file.txt и zadanjo); stop(zadanjo)

    Параметры - переданные переменные ($$[1], $[2], ...). Например, exec(file.txt,zadanjo,znak), а в самом файле log($$[1]). Поскольку $$[число] не работает в условиях (по крайней мере, у меня), перед проверкой нужно получить значение, например, &var1 = $$[1] (можно и #var1, var1 в зависимости от нужды), а затем в условии использовать: if(&var1 = "znak");

log(да: %&var1% или $$[1]); else; log(не: %&var1% или $$[1]); endif

Разные полезности

setres(<ширина>,<высота>) — задаст размер окна с игрой; DISPLAYWIDTH, DISPLAYHEIGHT

fog([значение]) — переключит/задаст расстояние прорисовки

fov(<значение>,[время]) — задаст поле зрения (пример: fov(225, 10)); FOV (обычно 30–110)

gamma(<значение>,[время]) — задаст яркость; GAMMA (обычно 0-100, до 200)

music(<значение>,[время]) — задаст громкость музыки; MUSIC

volume(<значение>,[время]) — задаст громкость звука; SOUND (ещё есть AMBIENTVOLUME, BLOCKVOLUME, NEUTRALVOLUME, HOSTILEVOLUME, PLAYERVOLUME, RECORDVOLUME, WEATHERVOLUME)

look, looks(<горизонталь>,[вертикаль],[время]) — абсолютно поворачивает в указанное направление (или относительно: +, -; например: +90, -0)

DIRECTION — направление: N – север, E – восток, S – юг, W – запад

YAW, CARDINALYAW — угол поворота по горизонтали (начало на юге, на севере)

PITCH — угол поворота по вертикали

calcyawto(< x>, < y>, [#результат], [#расстояние]) — выдаст угол поворота по горизонтали к x,y. Пример: #a=calcyawto(-3138,-1381,#a2,#d); log(%#a%=%#a2% %#d%); #a=#a+180; look(%#a%,0)

config(<название>) — переключит на данную конфигурацию; CONFIG

import(<название>) — перекроет данную конфигурацию

unimport()— удалит перекрытие данной конфигурации, если активна

resourcepacks([pattern],[pattern],...) — задаст стек пакета ресурсов в соответствии данными patterns; RESOURCEPACKS

sensitivity(<значение>,[время]) — задаст чувствительность мыши; SENSITIVITY (0-200)

shadergroup([путь]) — задаёт активный shader group на shader соответствующего пути, используй "+" для выбора следующей группы; SHADERGROUP

gui (<название>) — покажет ГИП (графический интерфейс пользователя): chat, menu, inventory, options, video, controls, macrobind, macroconfig

showgui(<название>) — покажет редактируемый ГИП, например: showgui(inchat); GUI

time(<&результат>,[формат]) — выдаст текущее время и дату, можно указать формат; DATE, TIME, DATETIME

Last modified 2019-07-23