1.7.10 Forge | 3.2 | Обновление

Покупка DLC

Administrator
Команда форума
Resolver Client User
Регистрация
24 Июн 2023
Сообщения
517
Реакции
63
Баллы
28
561

562

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 — статус поиска

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