Макросы: список переменных, условий, команд и др.
-
О том, как ставить макросы, смотри тут
Содержание
Переменные
Окружив переменную символом %, можно вставить её в текст: &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 — номер и название клавиши, вызвавшей скрипт
-
KEY_0
KEY_1
KEY_2
KEY_3
KEY_4
KEY_5
KEY_6
KEY_7
KEY_8
KEY_9
KEY_A
KEY_ADD
KEY_APOSTROPHE
KEY_APPS
KEY_AT
KEY_AX
KEY_B
KEY_BACK
KEY_BACKSLASH
KEY_C
KEY_CAPITAL
KEY_CIRCUMFLEX
KEY_CLEAR
KEY_COLON
KEY_COMMA
KEY_CONVERT
KEY_D
KEY_DECIMAL
KEY_DELETE
KEY_DIVIDE
KEY_DOWN
KEY_E
KEY_END
KEY_EQUALS
KEY_ESCAPE
KEY_F
KEY_F1
KEY_F10
KEY_F11
KEY_F12
KEY_F13
KEY_F14
KEY_F15
KEY_F16
KEY_F17
KEY_F18
KEY_F19
KEY_F2
KEY_F3
KEY_F4
KEY_F5
KEY_F6
KEY_F7
KEY_F8
KEY_F9
KEY_FUNCTION
KEY_G
KEY_GRAVE
KEY_H
KEY_HOME
KEY_I
KEY_INSERT
KEY_J
KEY_K
KEY_KANA
KEY_KANJI
KEY_L
KEY_LBRACKET
KEY_LCONTROL
KEY_LEFT
KEY_LMENU
KEY_LMETA
KEY_LSHIFT
KEY_M
KEY_MINUS
KEY_MOUSE3
KEY_MOUSE4
KEY_MULTIPLY
KEY_N
KEY_NEXT
KEY_NOCONVERT
KEY_NONE
KEY_NUMLOCK
KEY_NUMPAD0
KEY_NUMPAD1
KEY_NUMPAD2
KEY_NUMPAD3
KEY_NUMPAD4
KEY_NUMPAD5
KEY_NUMPAD6
KEY_NUMPAD7
KEY_NUMPAD8
KEY_NUMPAD9
KEY_NUMPADCOMMA
KEY_NUMPADENTER
KEY_NUMPADEQUALS
KEY_O
KEY_P
KEY_PAUSE
KEY_PERIOD
KEY_POWER
KEY_PRIOR
KEY_Q
KEY_R
KEY_RBRACKET
KEY_RCONTROL
KEY_RETURN
KEY_RIGHT
KEY_RMENU
KEY_RMETA
KEY_RSHIFT
KEY_S
KEY_SCROLL
KEY_SECTION
KEY_SEMICOLON
KEY_SLASH
KEY_SLEEP
KEY_SPACE
KEY_STOP
KEY_SUBTRACT
KEY_SYSRQ
KEY_T
KEY_TAB
KEY_U
KEY_UNDERLINE
KEY_UNLABELED
KEY_UP
KEY_V
KEY_W
KEY_X
KEY_Y
KEY_YEN
KEY_Z - CTRL, ALT, SHIFT, KEY_<название> — дают истину, если нажаты
-
~ALT
~CTRL
~KEY_0
~KEY_1
~KEY_2
~KEY_3
~KEY_4
~KEY_5
~KEY_6
~KEY_7
~KEY_8
~KEY_9
~KEY_A
~KEY_ADD
~KEY_APOSTROPHE
~KEY_APPS
~KEY_AT
~KEY_AX
~KEY_B
~KEY_BACK
~KEY_BACKSLASH
~KEY_C
~KEY_CAPITAL
~KEY_CIRCUMFLEX
~KEY_CLEAR
~KEY_COLON
~KEY_COMMA
~KEY_CONVERT
~KEY_D
~KEY_DECIMAL
~KEY_DELETE
~KEY_DIVIDE
~KEY_DOWN
~KEY_E
~KEY_END
~KEY_EQUALS
~KEY_ESCAPE
~KEY_F
~KEY_F1
~KEY_F10
~KEY_F11
~KEY_F12
~KEY_F13
~KEY_F14
~KEY_F15
~KEY_F16
~KEY_F17
~KEY_F18
~KEY_F19
~KEY_F2
~KEY_F3
~KEY_F4
~KEY_F5
~KEY_F6
~KEY_F7
~KEY_F8
~KEY_F9
~KEY_FUNCTION
~KEY_G
~KEY_GRAVE
~KEY_H
~KEY_HOME
~KEY_I
~KEY_INSERT
~KEY_J
~KEY_K
~KEY_KANA
~KEY_KANJI
~KEY_L
~KEY_LBRACKET
~KEY_LCONTROL
~KEY_LEFT
~KEY_LMENU
~KEY_LMETA
~KEY_LSHIFT
~KEY_M
~KEY_MINUS
~KEY_MOUSE3
~KEY_MOUSE4
~KEY_MULTIPLY
~KEY_N
~KEY_NEXT
~KEY_NOCONVERT
~KEY_NONE
~KEY_NUMLOCK
~KEY_NUMPAD0
~KEY_NUMPAD1
~KEY_NUMPAD2
~KEY_NUMPAD3
~KEY_NUMPAD4
~KEY_NUMPAD5
~KEY_NUMPAD6
~KEY_NUMPAD7
~KEY_NUMPAD8
~KEY_NUMPAD9
~KEY_NUMPADCOMMA
~KEY_NUMPADENTER
~KEY_NUMPADEQUALS
~KEY_O
~KEY_P
~KEY_PAUSE
~KEY_PERIOD
~KEY_POWER
~KEY_PRIOR
~KEY_Q
~KEY_R
~KEY_RBRACKET
~KEY_RCONTROL
~KEY_RETURN
~KEY_RIGHT
~KEY_RMENU
~KEY_RMETA
~KEY_RSHIFT
~KEY_S
~KEY_SCROLL
~KEY_SECTION
~KEY_SEMICOLON
~KEY_SLASH
~KEY_SLEEP
~KEY_SPACE
~KEY_STOP
~KEY_SUBTRACT
~KEY_SYSRQ
~KEY_T
~KEY_TAB
~KEY_U
~KEY_UNDERLINE
~KEY_UNLABELED
~KEY_UP
~KEY_V
~KEY_W
~KEY_X
~KEY_Y
~KEY_YEN
~KEY_Z
~LMOUSE
~MIDDLEMOUSE
~RMOUSE
~SHIFT - 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 — насыщенность
-
HIT — значения: NONE, TILE, ..?
HITDATA — значения: 0, ..?
HITID, HITNAME — ид, название
HITPROGRESS — степень разрушенности (1-8)
HITSIDE — на какую сторону блока смотришь
HITX, HITY, HITZ — координаты блока
HIT_AGE
HIT_ALT
HIT_ATTACHED
HIT_AXIS
HIT_BITES
HIT_CHECK_DECAY
HIT_COLOR
HIT_CONTENTS
HIT_DAMAGE
HIT_DECAYABLE
HIT_DELAY
HIT_DISARMED
HIT_ENABLED
HIT_EXPLODE
HIT_EXTENDED
HIT_EYE
HIT_FACING
HIT_FLIP
HIT_HALF
HIT_HAS_BOTTLE_0
HIT_HAS_BOTTLE_1
HIT_HAS_BOTTLE_2
HIT_HAS_RECORD
HIT_HINGE
HIT_IN_WALL
HIT_LAYERS
HIT_LEGACY_DATA
HIT_LEVEL
HIT_LOCKED
HIT_MODE
HIT_MOISTURE
HIT_NODROP
HIT_NORTH, HIT_EAST, HIT_SOUTH, HIT_WEST
HIT_OCCUPIED
HIT_OPEN
HIT_PART
HIT_POWER
HIT_POWERED
HIT_ROTATION
HIT_SEAMLESS
HIT_SHAPE
HIT_SHORT
HIT_SNOWY
HIT_STAGE
HIT_SUSPENDED
HIT_TRIGGERED
HIT_TYPE
HIT_UP
HIT_UPPER
HIT_VARIANT
HIT_WET - 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
- SCREEN
- 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(<клей>,<массив>,[#строка]) — запишет в строку все элементы массива, соединяя "клеем"
Пример 1 (здесь "_" — это клей; результат: "Тов_ка_ч")
&arr[0] = Тов; &arr[1] = ка; &arr[2] = ч
join(_,&arr,&str2)
log(%&str2%) -
indexof(<массив>,<#результат>,<искомое>) — выдаст номер первого элемента, совпавшего с искомым. Выдаст -1, если не найдёт.
Пример 1 (выдаст номер элемента с "ка")
&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(<субъект>,<шаблон>) — если шаблон подходит (то есть условие выполняется)
Пример:
- &v = d e f
- ifmatches(%&v%,(.*) e (.*))
- log(Шаблон подходит)
- else
- log(Шаблон НЕ подходит)
- endif
-
ifcontains(<текст>,<объект>) — если <текст> содержит <объект>
ifbeginswith(<текст>,<объект>) — если <текст> начинается с <объект>
ifendswith(<текст>,<объект>) — если <текст> кончается на <объект>
Пример (если текст содержит "шило")
- &v = В стоге сена есть шило
- ifcontains(%&v%,шило)
- log(истинно)
- endif
Будет работать и с ifendswith, но не с ifbeginswith, потому что "шило" есть в конце, но не в начале текста. - iif(<условие>,<если_истина>,[если_ложь]) — аналогично примеру 1, но c использовfнием echo вместо log
Пример 1:
- a = 0
- if(a)
- log(истина)
- else
- log(ложь)
- endif
Пример 2 (если здоровье < 1.5 сердца, то "/warp spawn"):
- iif(HEALTH < 3,/warp spawn)
Пример 3 (использование 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)
Цикл повторяется <число> раз, но если пропустить <число>, то он будет повторяется без конца.
Пример (выставит 10 раз товар в МИ):
- do(10)
- echo(/ws add 1.99)
- loop
Пока условие ложно, цикл будет повторяться
Пример (напишет 1, 2, 3):
- #i = 1
- do
- log(%#i%)
- inc(#i)
- until(3 < #i)
Пока условие истинно, цикл будет повторяться
Пример (напишет 1, 2, 3):
#i = 1
do
log(%#i%)
inc(#i)
while(#i <= 3)Цикл повторяется (конец-начало + 1) раз, с каждым новым шагом увеличивается на 1 значние переменной
Пример (напишет 2, 3, 4, 5):
for(#i, 2, 5)
log(%#i%)
next
^ цикл повторится 4 раза (= 5-2 + 1) и с каждым новым шагом увеличивается значение #i: 2, 3, 4, 5env: VARNAME
players: PLAYERNAME
effects: EFFECTID, EFFECT, EFFECTNAME, EFFECTPOWER, EFFECTTIME
enchantments: ENCHANTMENTNAME, ENCHANTN
Пример 1 (запишет в файл¹ список игроков)
- foreach(players)
- logto(Игроки.txt,%PLAYERNAME%)
- next
Пример 2 (проверит, если игрок "useigor" в сети)
- status = 1
- foreach(players)
- if(PLAYERNAME = "useigor")
- unset(status)
- log("игрок %PLAYERNAME% есть в сети")
- break
- endif
- if(PLAYERNAME = "useigor")
- next
- if(status)
- log("игрока useigor нету в сети")
- endif
1 - Чтобы кириллица нормально отобразилась в имени файла, файл скрипта должен быть в ANSI
Команды
Некоторые можно писать по-разному, например: ucase(вода,&result) равносильно &result = ucase(вода)
- assign(<перем>,<значение>) — присвоит значение переменной (то же, что и <перем> = <значение>)
- echo(<ввод>) — напишет в чате (для всех)
- log(<ввод>) — напишет в чате (для себя)
- logto(<цель>,<текст>) — выведен текст в цель, которая может быть файлом или полем текста
- wait(<время>) — на время приостановит скрипт: 123 - сек, 123ms - мсек, 123t - тики
-
match(<текст>, <шаблон>, [&результат], [группа]??, [по умолчанию]??) — по шаблону вытащит значения из текста.
Пример (из текста "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(<lwjgl_название>) — введёт событие клавиши (длительность 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) --- хз почему NOT ENOUGHT ITEMS - раньше (осенью 2015) работало, но я не помню, что тогда вводил
- craftandwait(<item[:id]>,[количество],[бросиьт],[verbose]??) — Queues an auto-crafting request and waits for it to complete
- 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
- ...
Модули
-
module_farhit_api17_v0.1.3.jar
Позволяет узнавать сведения о блоке под курсором независимо от расстояния до него (в отличие от стандартных HIT)
Переменные:
- FARHITDIST - расстояние до блока
- FARHIT
- FARHITID
- FARHITDATA
- FARHITNAME
- FARHITSIDE
- FARHITX, FARHITY, FARHITZ
..?
- SignText: module_signtext_api17_v0.2.2.jar
- HTTP: module_http_api17_v0.2.jar
- JSON: module_json_api17_v0.1.jar
- Clipboad: module_clipboard_api17_v0.1.jar
- Пользователя (малыми буквами) — хранятся в .vars.xml и .globalvars.xml, даже после перезагрузки