[Mod] Расширенный гайд по Macro Keybind mod 1.7.10
Автор: nutcase · Обновлён:
http://eq2.co.uk/minecraft/mods/forumimages/header.png
Вашему вниманию предоставляется первый, русскоязычный, полный для основ гайд по моду
Macro/Keybind mod 0.10.12 на версии MInecraft 1.7.10
ПРИМЕЧАНИЕ: АВТОР НЕ НЕСЕТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ДЕЙСТВИЯ СОЗДАННЫЕ ДЛЯ НАРУШЕНИЯ ПРАВИЛ ИГРОВЫХ СЕРВЕРОВ MCSKILL. ГАЙД СОЗДАН ДЛЯ ИНФОРМИРОВАНИЯ ИГРОКОВ, ИСПОЛЬЗУЙТЕ НА СВОЙ СТРАХ И РИСК. ТАКЖЕ СТОИТ ЗАМЕТИТЬ, ЧТО НА РАЗНЫХ СБОРКАХ МОЖЕТ ОТЛИЧАТЬСЯ.
(В НАЗВАНИЯХ КОМАНД FOR, DO, WHILE НА СЕРВЕРЕ GREGTECH ДОБАВЛЯЕТСЯ СЛОВО SOSAT, НЕ ИСПОЛЬЗУЙТЕ ЕГО НА СВОЕЙ СБОРКЕ/СЕРВЕРЕ)
(от Автора: создано специально для mcskill.net | nutcase)
Описание мода:
Macro/Keybind - клиентская модификация дающие игроку значительное превосходство, как в одиночной игре, так и на сервере. Данный мод позволяет ставить бинды на кнопки, отслеживать игровые события, а также писать неограниченные скрипты. Написан с использованием LiteLoader.
Настройки модификации:
Перейдите во вкладку игровых настроек для выбор функций мода.
Скрытый текст
Для написания макросов нам понадобиться сочетание клавиш " LSHIFT + GRAVE " ( " Левый шифт + ё " )
Нажмите в игре чтобы перейти на экран настроек макросов.
Экран настроек биндов/макросов/скриптов:
После нажатия " LSHIFT + GRAVE " у Вас откроется данное окно:
Скрытый текст
ВЫБОР ЭКРАНА ДЛЯ БИНДА ( НА КНОПКУ / НА ИВЕНТ / ДЛЯ GUI КНОПКИ ЧАТА )
ВЫБОР КНОПКИ ДЛЯ ЗАПИСИ МАКРОСА НА НЕЕ ( БИНД ОПРЕДЕЛЕННОЙ КНОПКИ )
С помощью стрелочек на ВЫБОРЕ ЭКРАНА ДЛЯ БИНДА перейдите на экран ивентов:
Скрытый текст
Разбор всех ивентов:
Скрытый текст
onJoinGame - Событие происходит, когда вы заходите в игру (Одиночную или в сеть). Можете использовать для выполнения команд при входе на сервер.
onChat - Событие происходит при получении сообщения от сервера. Вы можете получить доступ к принятому сообщению используя переменную CHAT.
onHealthChange - Событие происходит, когда ваше здоровье изменяется. Например при повреждении, или же при питании или использовании зелий. Переменная HEALTH.
onFoodChange - Событие при изменении уровня голода. Переменная HUNGER
onArmourChange - Событие при изменении уровня брони. Переменная ARMOUR
onWorldChange - Событие при смене мира. Возникает при путешествиях из мира в мир.
onModeChange - Событие при смене игрового режима
onInventorySlotChange - Событие при изменении определенного слота инвентаря. Переменная OLDINVSLOT
onArmourDurabilityChange - Событие происходит, когда прочность брони меняется.
onOxygenChange - Событие происходит, когда уровень кислорода меняется. Переменная OXYGEN
onXPChange - Событие при изменении уровня опыта. Переменные TOTALXP и XP
onLevelChange - Событие при смене уровня прокачки персонажа. Переменная LEVEL
onItemDurabilityChange - Событие происходит, когда прочность инструмента меняется. Переменная DURABILITY
onWeatherChange - Событие происходит при смене погоды. Переменная RAIN
onPickupItem - Событие при поднятии предмета. Вы можете узнать ID предмета с помощью переменной PICKUPID , имя предмета, используя переменную PICKUPITEM и количество подобранных предметов используя PICKUPAMOUNT
onPlayerJoined - Событие, когда новый игрок заходит на сервер. Можно узнать его ник, используя JOINEDPLAYER
onShowGui - Событие происходит при изменении графического интерфейса. Например, когда игрок открыл сундук. Переменная GUI
onAutoCraftingComplete - Событие происходит, когда процесс автокрафтинга завершен. Переменная REASON
onConfigChange - Это событие возникает при активном изменении конфигурации. Переменная CONFIG
onSendChatMessage - Это событие возникает всякий раз как в чате появляется новое сообщение. Переменная CHAT
Бинд клавиатуры и ивентов:
Перейдите на экран настроек клавиатуры и выберите нужную клавишу (в моем случае это F4)
Скрытый текст
После нажатия у Вас откроется окно редактирования макроса:
Скрытый текст
РЕДАКТИРОВАНИЕ СКРИПТА
ПОМОЩЬ ПО ВСЕМ КОМАНДАМ ДЛЯ СКРИПТОВ И МАКРОСОВ
МИНИ-ПОДСКАЗКА ДЛЯ НАПИСАНИЯ МАКРОСА
КОМАНДА ДЛЯ МАКРОСА
*** ВАЖНО: ЧТОБЫ СОХРАНИТЬ БИНДЫ ВЫ ДОЛЖНЫ НАЖАТЬ НА КНОПКУ ЗАПИСЬ ***
В поле " Редактировать макрос для <F4> " вписываем необходимую нам команду для выполнения. *однострочный вариант
Так же, мы можем перейти в раздел редактирование скрипта и написать скрипт для клавиши F4 *многострочный вариант
Создание скриптов. Синтаксис:
Подошли к самому вкусному разделу, а именно созданию свои "оригинальных" скриптов.
Выбираем необходимую клавишу или ивент и начинаем редактировать скрипт. Я выберу все так же кнопку F4
Скрытый текст
Выберите пункт - Редактировать скрипт
Открывается окно выбора скрипта, другими словами это менеджер Ваших скриптов.
Скрытый текст
ЗДЕСЬ ВСЕ СОХРАНЕННЫЕ СКРИПТЫ
В ПОЛЕ МОЖЕМ ВВЕСТИ ИМЯ ДЛЯ СОЗДАНИЯ НОВОГО СКРИПТА ( К ПРИМЕРУ: " test.txt " )
*** ВАЖНО: ВСЕ НАЗВАНИЯ ФАЙЛОВ ДОЛЖНЫ БЫТЬ НА АНГЛ. ЯЗЫКЕ ***
Создадим новый скрипт, я назову его test.txt
Открывается текстовый редактор, где мы должны написать алгоритм нашего скрипта:
Скрытый текст
МЕНЮ ПОДСКАЗОК
ПОЛЕ ДЛЯ НАПИСАНИЯ СКРИПТА
ВЫХОД ИЗ РЕДАКТОРА
СОХРАНЕНИЕ ФАЙЛА
Синтаксис скриптов и команды:
Здесь предоставлены все команды которые можно использоваться в скрипте:
Скрытый текст
ACHIEVEMENTGET(text,[itemid[:damage]])
Отображает достижение, всплывающее с пользовательским сообщением
ARRAYSIZE(array,[outvar])
Сохраняет размер указанного массива в "outvar"
BIND(bind,keycode)
Установить указанную привязку ключа к указанному коду ключа
BINDGUI(slot,screen)
Привязывает указанный пользовательский экран к указанному слоту
BREAK()
Прерывает выполнение самого внутреннего цикла
CALCYAWTO(xpos,zpos,[#yaw],[#distance])
Рассчитывает абсолютный угол рыскания к указанным координатам
CHATFILTER(enabled)
Включить или отключить фильтр чата
CHATHEIGHT(value,[time])
Установите высоту чата Minecraft во время игры 20-180
CHATHEIGHTFOCUSED(value,[time])
Установите высоту чата Minecraft во время чата в графическом интерфейсе 20-180
CHATOPACITY(value,[time])
Установите непрозрачность чата Minecraft 0-100
CHATSCALE(value,[time])
Установите масштаб чата Minecraft 0-100
CHATVISIBLE(value)
Установить видимость майнкрафт чата
CHATWIDTH(value,[time])
Установить ширину чата Майнкрафт 40-320
CLEARCHAT()
Очищает текущий поток чата
CONFIG(configname)
Переключиться на указанную конфигурацию
CRAFT(item[:damage],[amount],[throw],[verbose])
Очередь на запрос на автоматическое создание
CRAFTANDWAIT(item[:id],[amount],[throw],[verbose])
Поставляет в очередь запрос на автоматическое создание и ожидает его завершения
DEC(#var,[amount])
Уменьшает указанный счетчик на 1 или на указанную сумму
DECODE(input,[output])
Декодированная строка
DISCONNECT()
Отключается от текущей игры или сервера
DO_SOSAT([count])
Начинает цикл, задает количество циклов для ограничения количества циклов
ECHO(text)
Отправляет указанное сообщение в виде чата
ENCODE(input,[output])
Закодированная строка
EXEC(file.txt,[taskname],[params],...)
Создает задачу, запустив указанный файл скрипта
FILTER(enabled)
Включить или отключить фильтр чата
FOG([value])
Переключение расстояния рендеринга или опционально указание расстояния рендеринга
FOR_SOSAT(#var,start,end)
СЛЕДУЮЩИЙ цикл, использующий указанный var в качестве счетчика цикла, #var можно использовать внутри цикла
FOREACH(iterator)
Запускает цикл над указанным итератором
FOV(value,[time])
Устанавливает угол обзора в градусах, указание времени приводит к плавному изменению значения
GAMMA(value,[time])
Устанавливает значение яркости (в процентах), указание времени приводит к плавному изменению значения
GETID(x,y,z,#idvar,[#datavar])
Идентификатор блока в указанной позиции
GETIDREL(xoffset,yoffset,zoffset,#idvar,[#datavar])
Получает идентификатор и, необязательно, значение данных блока по указанным координатам относительно игрока
GETITEMINFO(item[:damage],[namevar],[#maxstacksize],[type],[#dropid])
Получает имя и другую информацию для указанного идентификатора элемента, возвращает «Нет», если элемент недействителен
GETSLOT(item[:damage],#idvar,[startfromslotid])
Получает идентификатор слота, содержащего элемент, соответствующий указанному идентификатору элемента, возвращает -1, если элемент не найден
GETSLOTITEM(slotid,#idvar,[#stacksizevar],[#datavar])
Получает информацию об элементе в указанном слоте
GUI(slot,screen)
Привязывает указанный пользовательский экран к указанному слоту
IIF(condition,truetext,[falsetext])
Встроенный оператор IF, отправляет truetext в виде сообщения чата, если условие выполнено успешно, или отправляет falsetext, если нет
IMPORT(configname)
Наложить указанную конфигурацию
INC(#var,[amount])
Увеличивает указанный счетчик на 1 или на указанную сумму
INDEXOF(array,outvar,searchfor)
Получает первый индекс searchfor в массиве и сохраняет его в outvar, возвращает -1 при ошибке
INVENTORYDOWN([amount])
Прокручивает указанное количество слотов вниз через панель быстрого доступа
INVENTORYUP([amount])
Прокручивает указанное количество слотов вверх через панель быстрого доступа
ITEMID(item)
Получает устаревший (числовой) идентификатор для указанного элемента
ITEMNAME(id)
Получить дескриптор элемента для устаревшего (числового) идентификатора элемента
JOIN(glue,arrayname,[output])
Внедряет указанный массив в строку с разделителями
KEY(bind)
Активирует указанную привязку ключа на 1 тик
KEYDOWN(bind)
Устанавливает указанное состояние привязки клавиш к нажатым, работает только с нажимаемыми привязками
KEYUP(bind)
Устанавливает указанное состояние привязки клавиш как неотжатое, работает только с нажимаемыми привязками
LCASE(input,[output])
Преобразует входную строку в нижний регистр и сохраняет ее в выходных данных
LOG(text)
Выводит указанный текст в поток локального чата
LOGTO(target,text)
Выводит указанный текст в указанную цель, целью может быть имя текстового файла или имя текстовой области
LOOK(yaw,[pitch],[time])
Лица игрока в указанном направлении, префикс углов с + или - для относительных ходов
LOOKS(yaw,[pitch],[time])
Плавно поворачивает игрока в указанном направлении, префикс углов с + или - для относительных ходов
LOOP_SOSAT()
Завершает цикл, который был начат с DO
MATCH(subject,pattern,[target],[group],[default])
Запускает совпадение регулярного выражения для субъекта и помещает результат в цель
MODIFY(newmessage)
Установить новый контент для этого сообщения чата
MUSIC(value,[time])
Устанавливает громкость музыки, указание времени приводит к плавному изменению значения
NEXT()
Завершает цикл FOR-> NEXT
PASS()
Укажите, что это сообщение должно пройти фильтр и завершиться
PICK(item[:damage],[item[:damage]],...)
Выбирает указанный идентификатор элемента, если он находится на панели быстрого доступа, укажите несколько элементов для выбора в порядке предпочтения
PLACESIGN([line1],[line2],[line3],[line4],[showgui])
Размещает знак в мире с указанным текстом (если он у вас есть)
PLAYSOUND(sound)
Играет звук
POP(array,outvar)
Удаляет последнюю запись из хвоста массива и сохраняет ее в outvar
PRESS(lwjgl_name)
Внедряет указанное событие клавиши непосредственно в буфер клавиатуры на 1 такт
PROMPT(target,paramstring,[prompt],[override],[default])
Отображает подсказку (или подсказки), анализируя параметры в paramstring
PUSH(array,value)
Добавляет значение в конец массива
PUT(array,value)
Вставляет значение в первую пустую точку в массиве
RANDOM(#target,[max],[min])
Назначает случайное число между min и max для цели
REPLACE(subject,search,[replace])
Заменить все вхождения поиска заменить в теме
RESOURCEPACKS([pattern],[pattern...])
Устанавливает стек пакета ресурсов в порядке, соответствующем указанным шаблонам
RESPAWN()
Возрождает игрока, если вы мертвы
SENSITIVITY(value,[time])
Устанавливает чувствительность мыши (от 0 до 200), указание времени приводит к плавному изменению значения
SET(target,[value])
Устанавливает значение target в value (или TRUE, если значение опущено)
SETLABEL(labelname,text,[binding])
Sets the text (and optionally binding) of the specified label
Устанавливает текст (и, возможно, привязку) указанной метки
SETPROPERTY(control,property,value)
Устанавливает значение указанного свойства в указанном элементе управления GUI
SETRES(width,height)
Устанавливает размер игрового окна майнкрафт
SETSLOTITEM([item[:damage]],[slot],[amount])
Только творческий режим, установите содержимое слота горячей панели
SHADERGROUP([path])
Устанавливает активную группу шейдеров в путь, соответствующий шейдеру, используйте «+» для выбора следующей группы
SHOWGUI(screen,[esc_screen])
Показать пользовательский экран графического интерфейса
SLOT(item[:damage],#idvar,[startfromslotid])
Получает идентификатор слота, содержащего элемент, соответствующий указанному идентификатору элемента, возвращает -1, если элемент не найден
SLOTCLICK(slot,[button],[shift])
Имитирует нажатие на указанный слот в текущем графическом интерфейсе, опционально используя RMB и ShiftKey
SPLIT(delimiter,source,[output])
Разнесите предоставленную исходную строку в массив
SPRINT()
Устанавливает состояние игрока, чтобы не спринт
SQRT(value,[#outvar])
Рассчитайте квадратный корень из значения и сохраните его в #outvar
STOP([id])
Останавливает текущий макрос или макросы, соответствующие указанному идентификатору
STORE(type,[name])
Сохранить значение в списке, используя текущую среду
STOREOVER(type,[name])
Сохранить значение в списке, используя текущую среду, и перезаписать его, если существует
STRIP(target,text)
Удаляет все коды форматирования из указанного текста и назначает результат цели
TILEID(item)
Получает устаревший (числовой) идентификатор для указанной плитки
TILENAME(id)
Получить дескриптор для устаревшего (числового) идентификатора плитки
TIME([target],[format])
Сохраняет текущее время и дату в целевой файл, при желании используя указанный формат
TOGGLE([flag])
Переключает значение указанного логического флага
TOGGLEKEY(bind)
Переключает состояние нажатия указанной привязки клавиш, работает только с нажимаемыми привязками
TYPE(text)
Внедряет указанную последовательность клавиш непосредственно в буфер клавиатуры со скоростью 1 клавиша за такт
UCASE(input,[output])
Преобразует входную строку в верхний регистр и сохраняет ее в выходных данных
UNIMPORT()
Удалить указанный оверлей конфигурации, если активен
UNSET(flag)
Удаляет указанную переменную
UNSPRINT()
Устанавливает состояние игрока, чтобы не спринт
UNTIL(condition)
Завершает цикл, начатый с DO, но выходит из цикла, если выполняется условие
VOLUME(value,[time])
Устанавливает громкость звука, указание времени приводит к плавному изменению значения
WAIT(item[:id],[amount],[throw],[verbose])
Поставляет в очередь запрос на автоматическое создание и ожидает его завершения
WHILE_SOSAT(condition)
Завершает цикл, начатый с DO, но выходит из цикла, если условие не выполняется
(переведено лично nutcase, копирование для других проектов без разрешения автора запрещено)
Люди которые как я владеют любым языком программирования должны понять как разрабатывать скрипты, для новичков я опишу процесс скриптинга.
Универсальный порядок действий для разработки алгоритма в целях программирования/скриптинга (немного похоже на призыв патронуса) :
1. Определенно точно знать что требуется от алгоритма.
2. Проанализировать каждое действие алгоритма.
3. Привязать мысленно или письменно для каждого действия команду которую выполняет язык программирования (все команды описаны выше)
4. Переписать полученный алгоритм в редактор.
5. Запустить, дорабатывать ошибки и улучшать.
Вернемся к редактированию макроса на клавишу F4
Для примера: Я хочу чтобы при нажатие на F4 у меня прописывалась команда /fly , написалось ТОЛЬКО МНЕ сообщение в чат и отправилось какой либо текст в глобальный чат.
Для выполнения подойдет обычный локальный чат через ECHO(" TEXT ")
Чтобы в чат вышло сообщение которое вижу только я, подойдет команда LOG(" TEXT ")
Ну и как Вы уже поняли, для отправки сообщения в глобальный чат нужно добавить восклицательный знак к тексту в команде ECHO(" !TEXT ")
Скрытый текст
*** ВАЖНО: ПОСЛЕ КАЖДОЙ КОМАНДЫ ЗА СКОБКАМИ НЕОБХОДИМО СТАВИТЬ " ; " ***
ЭТО ОБЩЕПРИНЯТЫЙ ЭСТЕТИЧЕСКИЙ, А В КАКИХ-ТО ЯЗЫКАХ (JAVA) ОБЯЗАТЕЛЬНЫЙ ПАРАМЕТР У ПРОГРАММИСТОВ
Теперь нажимает кнопку ЗАПИСЬ , скрипт сохранился в файле text.txt , мы может убедиться в этом, перейдя в менеджер скриптов:
Скрытый текст
Далее нажимаем кнопку ЗАКРЫТЬ чтобы выйти из менеджера скриптов. Чтобы наш скрипт работал на клавише F4, мы должны привязать файл к клавише, для этого в поле Редактировать макрос для <F4> набираем следующий текст: $${$$<test.txt>}
Из мини-подсказки мы можем узнать следующее об этой команде:
$${ } - между скобками заключается скрипт
$${< >} - между стрелочками пишется имя файла чтобы привязать его к кнопки или ивенту
Скрытый текст
Нажимаем на кнопку ЗАПИСЬ и жмем на клавишу F4 в нашей игре, смотрим на результат:
Скрытый текст
Думаю теперь не у кого не будет вопросов как создавать собственные скрипты.
НЕСКОЛЬКО ПОЛЕЗНЫХ СКРИПТОВ ОТ МЕНЯ:
Автореклама на сервере:
Авторекламу я привязал на ивент при заходе на сервер. Алгоритм следующий:
- Я захожу на сервер
- В глобал чат появляется моя реклама варпа
- Скрипт ждет 10 минут ( правило 3.1 )
- Повторно осуществляет рекламу варпа.
Скрытый текст
Скрипт:
DO_SOSAT;
ECHO(!&dЕсли у Вас закончились ресурсы, восполнить их можете на &6/warp noob);
WAIT(600);
WHILE_SOSAT(1==1);
Команда для бинда в макросе:
$${exec(JONED.txt)}$$
Автофуд на сервере:
Автофуд служит для выполнения команды /feed когда голод падает, привязывается к ивенту onFoodChange:
(Аналогично для /heal)
Скрытый текст
Cкрипт:
IF(HUNGER < 20);
ECHO("/feed");
ENDIF;
Команда для бинда макросе:
$${$$<autofeed.txt>}$$
Спасибо за внимание. Информация об Макросах будет дополняться если это потребуется.