- Регистрация
- 24 Июн 2023
- Сообщения
- 517
- Реакции
- 63
- Баллы
- 28


ChangeLog:
[NEW] Resolver API — скриптовый движок
Добавлен Resolver API — встроенный интерпретатор скриптов. Он позволяет создавать собственные функции из редактора, без изменения Java-кода.
Скрипт состоит из событий и команд:
• событие определяет, КОГДА запустится код;
• команды определяют, ЧТО именно произойдёт.
У каждого события свой отдельный блок кода. Например:
on jump
msg Я прыгнул!
Этот код выполнится при прыжке игрока. Блоки разных событий не смешиваются: клик по названию события в редакторе просто открывает его код.
[NEW] Resolver API — редактор и файлы скриптов
Добавлены создание, редактирование, сохранение, загрузка и удаление скриптов. Скрипты хранятся в папке:
C:\Resolver\ResolverAPI
Файлы имеют расширение .rscript. При сохранении записываются имя, категория, описание и исходный код скрипта.
Новый скрипт создаётся выключенным. Чтобы его события начали выполняться, включи скриптовый модуль в меню. В редакторе можно выбрать событие и писать код отдельно для него. Примеры из руководства можно перенести в редактор.
[NEW] Resolver API — события
Событие отвечает на вопрос «когда выполнять код». Поддерживаются:
• TICK — игровой тик, вызывается часто, примерно 20 раз в секунду.
• PLAYER_TICK — тик игрока.
• JUMP — прыжок локального игрока.
• ATTACK_ENTITY — игрок атаковал цель.
• HURT — обнаружено снижение здоровья игрока.
• DEATH — смерть игрока.
• UPDATE — обновление локального игрока.
• INTERACT — взаимодействие игрока с миром.
• JOIN — появление сущности в клиентском мире.
• CHAT_RECEIVED — получено сообщение чата.
• KEY — событие клавиатуры.
• MOUSE — событие мыши.
• RENDER — событие рендеринга мира.
• ACTION — нажата кнопка настройки типа Action.
Для некоторых событий доступны данные:
$event_target, $event_damage, $event_source, $event_entity,
$event_message, $event_bx, $event_by, $event_bz,
$event_action, $event_keyname, $event_button.
Доступность конкретных данных зависит от события. Например, координаты блока относятся к INTERACT, а текст сообщения — к CHAT_RECEIVED.
События ATTACK и ITEM_TOSS убраны из руководства как ненадёжные. ATTACK_ENTITY — отдельное событие, означающее атаку цели игроком. Наличие обработчика в коде само по себе не подтверждает работу события на каждом клиенте и с каждым модом — это нужно проверять в игре.
[NEW] Resolver API — условия, повторы и остановка
Добавлены условные блоки if / else / end и повторяющиеся блоки repeat N / end.
Поддерживаются сравнения:
== != > < >= <= contains startswith
Пример:
on tick
if $health <= 5
msg Здоровье ниже 5
else
msg Здоровья достаточно
end
Вложенные условия поддерживаются. Для каждого открытого блока if или repeat нужен свой end.
Пример повтора:
on jump
repeat 3
swing
end
Управление выполнением:
• wait 20 — подождать 20 игровых тиков;
• stop — прекратить оставшиеся команды текущего срабатывания.
[NEW] Resolver API — переменные и математика
Переменные создаются командой var. Команды inc и dec изменяют числовое значение. Переменную можно подставить в текст или условие через знак $.
var count 0
inc count 1
dec count 2
math double $count * 2
msg Результат: $double
Для математики доступны:
abs, min, max, clamp, round, floor, ceil, random, pow, sqrt, mod.
Для работы со строками доступны:
concat, upper, lower, trim, length, contains, startswith, replace, substring.
Основные встроенные значения:
$x, $y, $z — координаты;
$yaw, $pitch — поворот игрока;
$health, $food — здоровье и сытость;
$name, $world — имя игрока и мир.
Также команды API могут записывать в переменные данные игрока, мира, инвентаря, блоков и цели под прицелом.
[NEW] Resolver API — настройки скрипта
Настройки объявляются в коде и отображаются в обычном окне настроек модуля:
• setting bool — переключатель true/false;
• setting float — число с начальным значением, минимумом, максимумом и шагом;
• setting choice — выбор одного варианта;
• setting list — редактируемый список строк;
• setting action — кнопка, запускающая блок on action.
Пример:
on tick
setting bool enabled true
setting float threshold 5 0 20 1
setting choice mode 0 legit silent
setting list targets
setting action run
on action
jump
msg Кнопка нажата
Кнопка Action сразу запускает on action. Условие вида «if action run clicked» не используется.
[NEW] Resolver API — сообщения и уведомления
Команды вывода:
• msg — показать локальное сообщение с префиксом API;
• print и log — показать сообщение и записать его в лог;
• chat — отправить текст в игровой чат;
• notify — показать уведомление Resolver, если уведомления включены. Если они отключены, сообщение выводится локально.
Важно: TICK запускается часто. Если notify находится в условии, которое остаётся истинным, уведомление будет повторяться. Чтобы вывести его один раз до восстановления здоровья, используй переменную-флаг:
on tick
if $health <= 5
if $lowHpNotified != true
notify Мало здоровья!
var lowHpNotified true
end
else
var lowHpNotified false
end
Флаг сбрасывается, когда здоровье становится выше 5, поэтому при следующем снижении здоровья уведомление появится снова.
[NEW] Resolver API — команды игрока и мира
Добавлены команды действий и управления:
swing, jump, sneak, sprint,
setyaw, setpitch, tp, slot,
sethealth, setfood, break, place,
attack, useitem, dropitem,
lookat, motion, motionx, motiony, motionz, stopmotion.
Добавлены команды чтения состояния игрока и мира:
gethealth, getmaxhealth, gethealthratio, getfood, getmaxfood,
getair, getmaxair, getarmor, getlevel, getxp,
getx, gety, getz, getyaw, getpitch, getground,
getsprinting, getsneaking, getdimension, getworld, getbiome,
getpos, getrotation, getlookx, getlooky, getlookz,
isburning, iswet, inwater, inlava, onladder, isriding,
getfall, gethotslot.
Для инвентаря:
gethelditem, getheldcount, getslotitem, getslotcount,
inventoryempty, hasitem, finditem, inventorycount,
getarmoritem.
Для блоков и цели под прицелом:
getblock, getblockid, getblockmeta, isblock, distance,
hastarget, gettarget, targethealth, targetdistance,
targetx, targety, targetz, getlookblock, getlookblockid,
getlookblockmeta, getlookside.
Команда чтения обычно записывает результат в указанную переменную. Например:
on tick
gethealth hp
msg Текущее здоровье: $hp
Поведение команд движения, взаимодействия с миром и отправки сообщений зависит от клиента и сервера. Сервер может ограничить или отклонить действие.
[UPD] ResolverBot — поиск и добыча руды
Обновлен поиск целевых блоков для ResolverBot. Поиск Pathfinder расширен до радиуса 100 блоков во всех направлениях и по всей высоте мира. Проверяются блоки вокруг доступных позиций, в том числе сбоку, сверху и снизу.
После добычи найденного блока бот запускает новый поиск следующей цели. Для выбранного блока используется отдельная задача добычи, которая повторно проверяет ID блока и metadata.
Поиск ограничен загруженными чанками и возможностью построить маршрут. Бот не может найти блок в незагруженном чанке или пройти к цели через непроходимое препятствие.
[UPD] ResolverBot — выбор ID, metadata и нескольких блоков
Для команды mine поддерживаются точный ID и metadata, все metadata-варианты через *, а также список целей через запятую.
Примеры:
/resolverbot mine 238742:2
/resolverbot mine 238742:*
/resolverbot mine 19:*,56:*
Первый пример выбирает конкретный вариант блока. Во втором ищутся все metadata-варианты указанного ID. В третьем одновременно задаются два ID.
На скриншоте у губки отображается ID 19:0. Чтобы искать все её варианты, укажи:
/resolverbot mine 19:*
[UPD] ResolverBot — статус поиска
В статусной панели добычи добавлена иконка целевого блока. Время работы поиска ограничено на один игровой тик, а обработанные узлы поля поиска переиспользуются, чтобы не выделять и не очищать заново всю область на каждом повторном поиске.