К созданию этой темы меня подтолкнул один сайт с описанием мода Macro / Keybind mod (MKB) ссылка на Minecraftforum.net, который я приведу чуть ниже.
Я пользуюсь этим модом довольно давно, еще с версии 1.5.2. Как-то раз я решил поискать в всемирной паутине что-нибудь новенькое по данному моду. Меня интересовало как можно полное и понятное описание команд, скриптов и прочих фич.. )) И вот, в первых числах результата поиска, что меня удивило, я наткнулся на очень интересную тему одного форума. Это был сайт сервера Minecraft, где была выложена тема с подробным гайдом по моду Macro / Keybind mod. Естественно, тема на русском языке + опубликованы некоторые полезные скрипты.
В этой теме я хочу представить наши наработки скриптов для данного мода. Признаюсь честно, скрипты пишу не сам :) . Я пока-что учусь и в этом мне помогает мой брат и админ этого сайта 0Forest0.
Ну и конечно же очень помог гайд по моду, за что отдельное спасибо создателю!
Если жизни отнимаються медленно (например когда Вас бьют на ПВП), через каждые 2 сердечка в чат выводится сообщение "Ааайй...!" , При этом когда у Вас жизней становиться меньше 4 сердечек, скрипт Вас телепортирует домой! Восстановление Авто-телепортации происходит автоматически при добавлении жизней больше 5 сердечек или вручную если зажать клавишу "SHIFT". При этом в чат выводится сообщение "Авто-тп восстановлен!".
Создайте текстовый файл, например, "teleport.txt" и скопируйте в него сам скрипт. Файл сохранить по адресу: "C:\Users\[пользователь]\AppData\Roaming\.minecraft\liteconfig\common\macros\teleport.txt". В моде Macro / Keybind (MKB) в событии "onHealthChange" прописать код:
Код
$$<teleport.txt>
Примечание: Если Вам надоело выкрикивание "Ааайй...!" в чате (ибо за это могут наложить МУТ или даже забанить за флуд), Просто скопируйте в свой файл "teleport.txt" вот эту часть скрипта:
Скрипт оказался очень полезен для игры на серверах. Например если вы отлучились от компьютера и оставили Стива где-то в дремучем лесу ночью)) На него обязательно нападут монстры! И тут Вас спасет Авто-телепорт...
Недостатки: Данный скрипт бесполезен на ПВП зонах, где отключены команды /spawn и /home. Тогда Вас спасет только Ваши ловкость и умения
Полезный совет: На точке дома под собой установите 1 блок воды и постройте рядом маяк на восстановление жизней! При сражениях на МОБ-арене или ПВП-арене Вас могут ударить мечем на заговор огня, могут поджечь, Вы можете упасть в лаву или упасть с большой высоты... При телепортации домой вы попадаете в блок воды и сразу тушитесь от огня, смягчается удар от падения и маяк сразу восстанавливает жизни! Вы становитесь почти бессмертными!!!
- Заменена стандартная система вывода сообщения "<ник> сообщение" на "Ник: сообщение (Если в сообщении есть ссылка, то оно не модифицируется, дабы можно было на неё кликнуть)" - Заменена система личных сообщений: *->Ник: сообщение - Для отправки сообщения Нику *Ник: сообщение - Для получения сообщения от Ника *Добавлен звуковой сигнал при получении сообщения - Добавлено отслеживание слов в сообщении и оповещение при нахождении звуковым сигналом (Я для себя сделал поиск по словам Ласт, ласт, ЛастЛайф и т.д. и слышу звуковой сигнал, когда ко мне обращаются). Также перед этим сообщением выводится !-------!
Что изменилось:
Первым делом мне не понравилось как отображается ЛС в чате, ИМХО. И я подумал, в Майне всегда была проблема с ЛС. Когда чат переполнен и тебе кто-нибудь написал личку, сообщение быстро уйдет с поля зрения и Вы его можете легко пропустить. Я немного улучшил систему ЛС в фильтре чата Macro / Keybind mod. Теперь любое сообщение, с ником отправителя, принятое в ЛС, будет дублироваться на экране (у меня внизу экрана), сопровождаться звуковым сигналом и держаться ооочень долго пока Вы не вернетесь в игру (выключите паузу или выйдите с чата) и не прочтете его!
Естественно, для этого необходимо добавить в GUI "ingame" текстовое поле с именем "LS" (logto(LS,&6%&from%&f: &r%&msg %) ;) и выставить время 400 ticks.
Как Вы уже заметили вначале скрипта стоит проверка на буквосочетания "RON" и "stew" ("RON|stew"). Это буквосочетания моего ника _IeRONim_ и Jmstew0319. Естественно, здесь нужно будет изменить на буквосочетание с Вашего ника! Например, "TEV" с ника Steve. При этом будут определяться и маленькие и большие буквы. Т.е. регистр не имеет значения.
Немного разобравшись с массивами, использовав готовые скрипты с инета, я запилил свой скрипт который позволяет видеть кто зашел на сервер даже если на сервере отключена данная функция. И если на сервер зайдет "Ваш друг" (список "друзей" храниться в отдельном текстовом файле), на экране высветится сообщение "[ваш друг] в игре".
По моему мнению это очень полезный скрипт, позволяющий создать свой список друзей и Вы всегда будете видеть когда Ваш друг зашел на сервер!
Как Вы уже заметили переменная "&players" задается с текстового файла "friends.txt" (&players = $$). Т.е. Вам необходимо создать файл "friends.txt" и сохранить его в папку настроек Macro / Keybind mod. Эта папка находиться по адресу: "C:\Users\[имя пользователя]\AppData\Roaming\.minecraft\liteconfig\common\macros\friends.txt". В случае если ник с файла "friends.txt" совпадет с ником вошедшего игрока, на экране высветиться сообщение "[ваш друг] в игре" и воспроизводиться звуковой сигнал (playsound(mob.zombie.unfect)). Следовательно необходимо создать в GUI "Ingame" текстовое поле с именем "JoinedPlayer" (logto(JoinedPlayer, "§6§l§n%JOINEDPLAYER%§r в игре!")) как показано на скрине ниже. Вы его можете разместить на экране где Вам будет удобно.
Сам скрипт Вам нужно будет скопировать в файл, например, "JoinedPlayer.txt", поместить его в папку Macro / Keybind mod (C:\Users\[имя пользователя]\AppData\Roaming\.minecraft\liteconfig\common\macros\JoinedPlayer.txt) и в событии OnPlayerJoined указать данный код:
Код
$$<JoinedPlayer.txt>
При каждом заходе игрока на сервер будет вылазить окошко с сообщением (как при получении нового достижения) "[игрок] в игре" (achievementget(§6§l%JOINEDPLAYER%§r в игре!,skull:3)).
Примечание:
Ники Ваших друзей в файле "friends.txt" нужно писать через 1 пробел. Например "Vlados Jemis Stewe Notch ..."
Все что происходит в чате записывается в текстовый файл "Chat.txt". Файл находится по адресу: "C:\Users\[User]\AppData\Roaming\.minecraft\liteconfig\common\macros\logs\Chat.txt". Данный скрипт будет полезен админам серверов. В логе чата ведется запись даты, времени, ника игрока и текста сообщения. Админ всегда может посмотреть кто, когда и что написал в чат и наказать нарушителя :)
Этот скрипт следит за Вас за Вашим голодом. Если Вы проголодались и жизни перестали восстанавливаться, он Вам сообщает что необходимо подкрепиться. А если вы проигнорируете его предупреждения и голод усилится, скрипт заставит Стива взять в руку что-нибудь съедобное из инвентаря и съесть это! С помощью того скрипта Ваш Стив никогда не будет голодным :) Данный скрипт на Авто-Еду я взял в просторах инета и немного его усовершенствовал )
Как Вы уже заметили, сообщение о том что Вы проголодались выводиться не в чат, а на экран. Т.е. Необходимо заранее создать текстовую область с именем "eat" для вывода этого сообщения как показано на скрине ниже и выставить время показа сообщения 100 ticks. И, естественно, создать файл с названием, например, "Eat.txt", скопировав скрипт в него. И указать в событии "OnFoodChange" код:
Код
$$<Eat.txt>
Если Вам кажется что предупреждение или Авто-еда срабатывает слишком рано (или поздно), его можно настроить изменив минимальное значение голода в проверке: для предупреждения - if(%HUNGER% <=17); для Авто-еды - #minfood=13. Исходя из того, что 1 ножка = 2 голода, 10 ножек = 20 голода.
Сообщение отредактировал _IeRONim_ - Четверг, 10.11.2016, 12:12
IFMATCHES(%CHATCLEAN%,"roni|рон") // -->> В кавычках прописываете буквосочетание своего ника через "|" log(&6!--------------------------------------------------!) playsound(entity.item.pickup); ENDIF IFMATCHES(%CHATCLEAN%,"http|www") link=true ENDIF
IFMATCHES(%CHATCLEAN%,"\[.+\].*$") match(%CHATCLEAN%,"(\[.+\]) (.+): (.*)$",{&rang,&player,&msg};) IFMATCHES("%@&friends%","(,|^)%&player%(,|$)") // -->> Проверка на совпадение ника в чате со списком Ваших друзей modify("&3[Ваш друг]&7 %&rang% &6%&player%&7: &5%&msg%") // -->> Добавление префикса [Ваш друг] и цвета сообщения ENDIF
В общем чате перед сообщениями Ваших друзей (проверка с глобальной переменной @&friends) будет ставится цветной префикс "[Ваш друг]" и сообщение выделяться цветом.
Ваши сообщения также выделяются цветом. А вместо ника пишется: "Я: текст"
На экране в поле "LS" теперь отображаются не только полученные личные сообщения, но и отправленные чтобы Вы могли видеть всю переписку с игроком. Отправленные личные сообщения выделяются другим цветом. logto(LS,&4Я &2-> &6%&to%&f: &2%&msg%)
Добавлен ЛОГ личных сообщений. Все переписки с игроками сохраняются в текстовых файлах в папке ".minecraft\liteconfig\common\macros\logs". Причем, каждый текстовый файл будет назван НИКом игрока, с которым вы вели беседу и в нем будет сохранена вся переписка с ним. logto(%&to%.txt,%DATE% %TIME%: Я -> %&to%: %&msg%) logto(%&from%.txt,%DATE% %TIME%: %&from%: %&msg%)
Добавлен счетчик сообщений. После обновления мода "mod_macros_0.14.1_for_1.11" сообщения на экране исчезают по истечению времени, указанном в настройках метки, даже если вы были на паузе или в другом GUI экране. Для удобства я добавил счетчик непрочитанный сообщений. На экране (у меня в левом углу) отображается количество сообщений и НИК последнего кто написал мне. Просмотреть сообщения можно в тектовом файле по адресу: ".minecraft\liteconfig\common\macros\logs" Для сброса счетчика добавьте кнопку на основной GUI экран "Сброс счетчика ЛС" и пропишите в нее данный код: $${@#lscount=0;@&from="";LOGTO(LS,&2Счетчик ЛС сброшен!)}$$
Открыть настройки мода (Shift+~ по ум.), в левом верхнем углу нажать на кнопку и выбрать Edit chat filter
Скопировать скрипт и вставить его в chat filter
Необходимо добавить в GUI "ingame" текстовое поле с именем "LS" и выставить время 400 ticks.
*Все изменения касаются только мультиплеерной игры. Так как проверки ников начинаются с "[...]". В одиночной игре данный скрипт работать не будет!
Сообщение отредактировал _IeRONim_ - Четверг, 29.06.2017, 14:49
Итак, изначально идея была в следующем - cоздать управляемый список друзей, с которым можно было совершать различные действия (писать личку, отправлять запросы ТП, добавлять, переименовывать и удалять друзей). Также изменить скрипт "Друг зашел на сервер" чтобы он считывал ники с этого-же списка. В MKB есть подобный встроенный список друзей. Вызвать его можно командой $$F. Но он хранится в отдельном файле ".friends.txt" и макрос, к сожалению, не способен считать с него информацию.
Я частично решил эту проблему создав свой список друзей, используя одну глобальную строчную переменную @&friends. И вот что получилось:
Система друзей состоит из двух скриптов:
скрипт быстрого добавление в друзья "Friends-record.txt".
скрипт:
IF(@set) &p=%HITNAME% IF(HIT="PLAYER"); IFMATCHES(%@&friends%,"(,|^)%&p%(,|$)") LOGTO(LS,&6%&p%&4 уже в друзьях!) ELSE // -->> Добавление друга IF(@&friends = "") @&friends="%&p%" ELSE @&friends="%@&friends%,%&p%" ENDIF LOGTO(LS,&6%&p% &2добавлен(а) в Ваш список друзей!) ECHO(/tell %&p% [БОТ] Вы добавлены в список друзей %PLAYER%'а!) // -->> Отправляет ЛС-оповещение игороку, которого вы добавили в друзья (эту строку можно удалить) ENDIF ELSE LOGTO(LS,&6%&p% &4нельзя добавить в друзья &2:)) ENDIF ELSE PROMPT(&p,"$$U","Добавить в друзья") IF(&p != "") IFMATCHES(%@&friends%,"(,|^)%&p%(,|$)") LOGTO(LS,&6%&p%&4 уже в друзьях!) ELSE // -->> Добавление друга IF(@&friends = "") @&friends="%&p%" ELSE @&friends="%@&friends%,%&p%" ENDIF LOGTO(LS,&6%&p% &2добавлен(а) в Ваш список друзей!) ECHO(/tell %&p% [БОТ] Вы добавлены в список друзей %PLAYER%'а!) // -->> Отправляет ЛС-оповещение игороку, которого вы добавили в друзья (эту строку можно удалить) ENDIF ENDIF ENDIF
и скрипт вызова управляемого списка друзей "Friends-list.txt"
скрипт:
PROMPT(&friend,"$$[Choice friend[%@&friends%]u]","Friends-list") // -->> Буква "u" представляет список в виде выбора игроков с иконками IF(&friend != "") PROMPT(&choice,"$$[Variant[Написать,ТП,Переименовать,Удалить]]","Вариант для (%&friend%)") ENDIF // -->> Выбор "Написать" IF(&choice="Написать") ECHO(/tell %&friend% Привет) ENDIF // -->> Выбор "ТП" IF(&choice="ТП") ECHO(/call %&friend%) ENDIF // -->> Выбор "Переименовать" IF(&choice="Переименовать") PROMPT(&rename,"$$U","Переименование (%&friend%)") IF(&rename != "") IFMATCHES(%@&friends%,"(,|^)%&rename%(,|$)") LOGTO(LS,&6%&rename%&4 уже в друзьях!) ELSE REPLACE(@&friends,"%&friend%","%&rename%") LOGTO(LS,&6%&friend% &7переименован в &6%&rename%) ENDIF ENDIF ENDIF // -->> Выбор "Удалить" IF(&choice="Удалить") IFMATCHES(%@&friends%,"(,|^)%&friend%,") REPLACE(@&friends,"%&friend%,","") ENDIF IFMATCHES(%@&friends%,",%&friend%(,|$)") REPLACE(@&friends,",%&friend%","") ENDIF LOGTO(LS,&6%&friend% &2удален со списка друзей) ENDIF &friend="" &choice=""
1. Скопируйте 1-й скрипт в файл "Friends-record.txt", 2-ой скрипт в файл "Friends-list.txt". 2. Сохранить оба файла по адресу: ".minecraft\liteconfig\common\macros" 3. Установить на клавишу "быстрого добавления в друзья" (например, "ср. кнопка мыши") действие $${SET(@set);EXEC(Friends-record.txt)}$$ и на ту-же клавишу через CTRL, действие $${UNSET(@set);EXEC(Friends-record.txt)}$$ 4. Установить на другую клавишу, например "F" действие
Код
$$<Friends-list.txt>
для вывода списка друзей. 5. Необходимо добавить в GUI "ingame" текстовое поле с именем "LS" и выставить время 400 ticks.
Скрипт быстрого добавления в друзья "Friends-record.txt" содержит два варианта записи друга в список:
1. Подойти к игроку, навести на него курсор и нажать кнопку. Ник игрока, на которого Вы смотрите, проверяется с существующим списком друзей (переменная @&friends). Если такой есть в списке, выводится сообщение "[ник] уже в друзьях!". Если нету - добавляется в список и выводится сообщение "[ник] добавлен(а) в Ваш список друзей!"
2. Нажать другую кнопку и выбрать игрока со списка онлай-игроков. Либо ввести ник самостоятельно. Ник, который Вы ввели, также проходит процедуру проверки.
Эти два способа управляются с помощью флага @set. Соответственно, необходимо установить 2 действия на одну кнопку (для удобства):
Это можно сделать установив, например, эти действия на среднюю кнопку мыши с условием нажатия на CTRL
Еще одна клавиша открывает список ваших друзей. Для этого нужно установить на клавишу запуск второго скрипта:
Код
$$<Friends-list.txt>
В этом списке выбираете ник и дальше какое действие хотите сделать (написать, отправить ТП, переименовать или удалить) Во всех случаях скрипт проверяет на наличие введенного ника в списке друзей и выводит соответствующее сообщение!
Также изменен скрипт "Друг зашел на сервер" с использованием глобальной переменной списка друзей @&friends, но об этом позже.
Сообщение отредактировал _IeRONim_ - Четверг, 20.07.2017, 15:12
Мы уже используем усовершенствованный "список друзей". Теперь имеет смысл изменить скрипт "Друг зашел на сервер" так, чтобы он считывал ники не с текстового файла "friends.txt", а с той-же глобальной переменной @&friends, где хранится наш список друзей. Все глобальные переменные хранятся в файле .globalvars.xml, который находится по адресу "...minecraft\liteconfig\common\macros"
Используя одну глобальную переменную, данный скрипт удалось сократить до пяти строк и работа его стала в разы быстрее.
IFMATCHES("%@&friends%","(,|^)%JOINEDPLAYER%(,|$)") logto(JoinedPlayer, "&6&l&n%JOINEDPLAYER%&r в игре!") playsound(entity.player.levelup) ENDIF achievementget(§6§l%JOINEDPLAYER%§r в игре!,skull:3)
1. Для установки Вам нужно будет скопировать скрипт в файл, например, "JoinedPlayer.txt", поместить его в папку "..\.minecraft\liteconfig\common\macros\" и в событии OnPlayerJoined указать данный код:
Код
$${$$<JoinedPlayer.txt>}$$
2. Добавить текстовое поле с названием "JoinedPlayer" на экран GUI "ingame" для вывода сообщения на экран.
Сообщение отредактировал _IeRONim_ - Суббота, 26.11.2016, 11:39
Как-то я решил поэкспериментировать с командой GETID(...). Команда возвращает ID блока по указанным координатам в мире и записывает его в переменную. Первая мысль - сделать сканер алмазной руды :). Набросал небольшой простенький скрипт который сканирует руды, находящиеся под вами в радиусе 1 блок (т.е. квадрат 3x3). Добавил возможность выбора типа руды. Если скрипт находит совпадение, выводит в чат сообщение с точными координатами найденной руды.
Скрипт получился немного читерский, но, возможно, кому пригодится... )