В силу специфики HiTech серверов игроки пытаются автоматизировать всё, до чего дотягиваются руки. В рамках этого гайда речь пойдёт об macro keybind mod'е - вещи, которая, на мой взгляд очень недооценена. Для первых шагов было выбрано самое болезненное направление на ранних этапах игры - ПОХОД В ШАХТУ
Но сперва - лирическое отступление. В теме с афк машиной и наградами присутствует скрипт, дёргающий персонажа во все стороны *тык*. Простой и изящный, он имеет один изъян - его не выключишь по кнопке. Давайте попробуем это исправить. Если Вы кодили хотя бы раз в жизни, следующий пример будет Вам понятен, однако вызовет острое чувство несправедливости и несовершенности этого мира
Давайте разберём по частям мною написанное... Вводится некая переменная working, имеющая логический тип данных, соответственно умеющая принимать значение 0 (UNSET(working)) и 1 (SET(working)). При нажатии кнопки бинда скрипт начинает проверять, чему же равна эта переменная. Если она 1(скрипт уже запущен), то она станет равна 0 и скрипт завершит работу. Команда LOG выводит в чат сообщение по типу системного, которое видите только Вы, увы, только на латинице. Пока что всё очень просто. Итоговый скрипт получился такой:
Ну а теперь, то, зачем мы здесь собрались. Бот, копающий тоннели. Первая версия бота будет выполнять очень базовые функции. Основной механизм действия понятен - нажимать лкм, ждать, идти вперёд. Получившаяся конструкция выглядит следующим образомкоманды keyup и keydown соответственно либо отжимают либо зажимают кнопку, что используется в скрипте для имитации нажатия кнопки "вперёд" а так же для кнопки "атака"
Работа такого чудо-скрипта показана на видео.
Очевидно, таким результатом мы не удовлетворены, а значит ищем путь к развитию получившегося.
Для финальной итерации необходимо улучшить логическую модель нашего бота. На сей раз алгоритм получился следующий:Как же мы реализуем "глаза" нашему скрипту?
- Проверить, что за блоки стоят перед игроком.
- Если эти блоки не воздух, то посмотреть на них.
- Перевести логическую переменную в состояние, необходимое для начала добычи блока.
- Добыть блоки перед собой, двинуться дальше.
С помощью команды GETID и набора координат x y z мы можем легко узнать, что же это за блок такой там стоит. Осталось только раздобыть координаты. В этом нам поможет гроза всех школьников, сдающих информатику в 11, Леонард Эллер. Он предложил концепцию, названную в честь него углами Эллера. Выглядят они вот так:
.
Прибегнув к небольшим математическим подсчётам, мы вычисляем позиции наших блоков для всех четырёх сторон света.
Совершив необходимые расчеты, реализуем предложенный логический алгоритм, снабдив его маленьким бонусом. Если скрипт обнаружит неподалёку от себя лаву или воду, то перестанет копать и завершит работу.
Финальная часть гайда - как собрать и заставить работать то, что мы сделали ранее. Врубаем хакермод и заходим по пути AppData\Roaming\.minecraftonly\Industrial\liteconf ig\common\macros. Здесь лежат все наши макросы, записаные в txt файлики. Создаём два новых - tunnelDig.txt и tunnelDig_blockPositions.txt. Запихиваем в них код.
Заходим на сервер, вызываем менюшку macro keybind mod ( по умолчанию - 0), биндим кнопку, прописывая следующий текст макроса:
ГОТОВО, ВЫ ВОСХИТИТЕЛЬНЫ!
Получившаяся у нас конструкция довольно "топорная" и действует в "тепличных" условиях. У меня в планах довести эту штуку до ума, добавив следующие плюшки:И любые другие функции, о которых Вы попросите меня в комментариях.
- Автовыбор инструмента(переключение между киркой и лопатой)
- Автоматическое складывание добытых ресурсов в МЭ/сундуки
- Автоматическое употребление еды при возникновении голода
- Атоматическая телепортация в сейф зону при количестве хп меньше заданого
- Если Вы копаете не киркой из мобиуса, то тп на зарядку инструментов или предотвращение поломки инструментов из других материалов
Видео работы бота:
В заключении хочу сказать вот что: я надеюсь, что теория, приведённая выше поможет Вам понять логику моих действий при работе со скриптом, я надеюсь, что мой гайд подтолкнёт других игроков сервера делиться своими уже созданными макросами и создавать новые, ну и, наконец, я надеюсь, что вам было также приятно читать этот гайд, как мне писать его. До новых встреч!