Перейти к содержанию

Кио

Пользователи
  • Постов

    86
  • Зарегистрирован

  • Посещение

  • Победитель дней

    3

Весь контент Кио

  1. Выполняй это /scoreboard objectives add Sneak minecraft.custom:minecraft.sneak_time В цикличный командный блок засовывай это /kill @a[scores={Sneak=1}] В а в цепной вслед за ним это /scoreboard players reset @a Sneak Особенно весело будет, если включишь цикличный до того, как поставить цепной.
  2. Обращаюсь к профи. Я ищу способ заставить моба автоматически прокладывать маршрут. Например, я призываю метку на нужных координатах и зомби туда отправляется, обходит все углы, проходит лабиринты и.т.д. Пользуясь тем ИИ, который в него уже заложен. Два способа я уже придумал, но они так себе. Первый - призвать невидимую беременую черепаху, дать ей скорость и назначить ей точкой дома нужные координаты. Она побежит туда откладывать яйца. А я буду телепортировать вслед за ней нужного моба. Но есть проблема - черепаха жирная и пролезает только в проём в 2 блока. А значит и моб, который за ней следует, будет игнорировать проходы в один блок. Мелкая черепаха не выход. Её тоже можно сделать беременой, но она от этого никуда не побежит. А ещё черепаха низкая и может заползти в проход в один блок, где следующий за ней моб благополучно удавится. Второй способ - взять условного зомби, дать ему радиус зрения в дофигалирад блоков, в целевой точке заспавнить другого моба, от его имени призвать стрелу, которая попадёт в этого зомби, спровоцировав его бежать к обидчику. А затем за этим зомби уже телепортировать целевого моба. Проблема в том, что работает это фигово. Во-первых, когда мобы отдаляются от игрока больше, чем на 50 блоков, их ИИ отключается. И при возвращении игрока они начинают тупить и забывают обидчика, нужно как-то детектировать этот затуп и опять призывать стрелу. А ещё этого моба запросто могут переагрить другие мобы, игрок или вообще случайное получение урона. Оно тоже может сбить агр. В общем так себе решение. Поэтому вопрос знатокам: как можно менее костыльно решить этот вопрос? Цель не просто заставить идти по проложенному маршруту. Цель - заставить моба самостоятельно прокладывать этот маршрут в любой обстановке.
  3. Не прочитал про 1.12.2. Там у /execute не было такого функционала, а нормальны тэгов и вовсе не завезли. Команды /team тоже не было. Приходилось на игроков надевать кнопки с тэгами и так их отличать. Тебе придётся либо так, либо через команду /scoreboard что-то мутить.
  4. Дам очень полезный совет на будущее. Что бы не искать нужную команду тысячу лет и точно не ошибиться, спроси у самого майнкрафта, как он записывает даннные сущностей. Команда /data get entity Тот формат, который выводится, точно будут работать при выполнении любых команд. И не ориентируйся на то, что если сам майнкрафт не ругается на тэг, то он правильный. В данные моба можно что угодно записать, и он будет эти данные хранить. Например, можно сделать так: /summon minecraft:zombie ~ ~ ~ {Tip:zombak, Owner:Kio, Harakter:Leniviy, Chena:40griven }
  5. Сперва выдаёшь им тэги /tag @a[distance=..10] add R А потом проверяешь, остались ли игроки с этими тэгами. Тэги можно забирать при смерти, выходе за зону и.т.п. /execute unless entity @e[tag=R] run say @a EndGame! Green win /execute unless entity @e[tag=G] run say @a EndGame! Red win
  6. Проще всего нарисовать в блокбенче и вложить в карту текстурпак с этой моделью. Но можно и без текстур, стойка для брони + кожаная броня нужного цвета + голова покрасивее + ещё пара невидимых стоек, которые держат оружие, которым этот труп убили. Топор в голове там, меч в туловище и.т.п. А если хочется сделать такой труп, что бы все ахнули, как такое возможно без текстур, то используй карты, вставленные в рамки. Во-первых, рамки можно сделать невидимыми (EntityTag:{Invisible:1b}). Во-вторых карты тоже поддерживают прозрачность. В-третьих в карты можно загрузить любое изображение, какое пожелаешь, строить его в мире не обязательно. И в-четвёртых, о чём мало кто знает, рамки можно ставить под любым углом. (/tp @e[type=minecraft:item_frame] ~ ~ ~ ~ ~). Правда, есть две проблемы. Им всё ещё нужен твёрдный блок рядом и карты в них отражаются по всем осям, от чего начинают смотреться кривовато и это нужно учитывать. Но потенциально таким способом можно создать абсолютно любую 3D модель без текстур (полигоны и все дела). Даже анимированную модель, ибо ID карты в рамке можно менять командами.
  7. Создаёшь скорборд, считающий количество установленных игроком динамитов. Когда скорборд становится равным 1 выполняешь следующие действия: Относительно игрока проверяешь все блоки по направлению его взляда (через ^). Понадобится 7-10 команд, что бы точно захватить все боки, до которых он может дотянутся. Если среди этих блоков обнаружен динамит, призываешь через summon в этой точке динамит. Блок динамита заменяешь на воздух. Обнуляешь скорборд игрока. Через функцию /schedule выполняешь отложеный на 3 секунды запуск функции с выдачей динамита.
  8. Создаёшь два скорборда. Первый - счётчик смертей. Второй - счётчик количества игроков. И в циклическом КБ ищешь игрока, имеющего 1 смерть. Если находится - уменьшаешь скорборд количества игроков и выводишь его значениев чат (на minecraft.tools есть генератор сообщений со значениями скорбордов). Потом обнуляешь число смертей этого игрока. И всё.
  9. Создаёшь два скорборда. Первый - счётчик смертей. Второй - счётчик количества игроков. И в циклическом КБ ищешь игрока, имеющего 1 смерть. Если находится - уменьшаешь скорборд количества игроков и выводишь его значениев чат (на minecraft.tools есть генератор сообщений со значениями скорбордов). Потом обнуляешь число смертей этого игрока. И всё.
  10. Возможно, но через костыли. Нужно отслеживать, когда игрок бросил яйцо, отсчитывать КД скорбордом и если он бросает ещё раз, не дождавшись окончания КД, удалять летящий предмет и выдавать его обратно игроку. Но можно поступить проще - взять эндержемчуг и наложить на него свои текстуры.
  11. Ищи этот предмет на земле. Если нашёлся - удаляй с земли и выдавай игроку, у которого его нет. Так же можно привязать предмет к определённому слоту. Удаляешь его из любого другого слота и с земли, а в указанный постоянно выдаёшь. Ещё можно зачаровать предмет на несъёмность и надеть на голову игроку.
  12. На версии 1.19 можно по скорборду количества смертей следить, когда кого-то убьют. Брать у него nbt-тэг последнего места смерти и там спавнить труп. До версии 1.19 информации о последнем месте смерти не было, так что нужны костыли. Например, надевать на голову игрокам неснимаемый предмет с особым тэгом и искать его на земле. Если лежит - значит там кого-то убили. Удаляем предмет, призываем труп. Ещё можно каждый тик перемещать вслед за игроком маркер и призывать на месте маркера труп. Сам труп можно сварганить из арморстенда, кожаной брони, головы и редстоун-пыли.
  13. Да, это можно сделать при помощи текстур. Рисуешь нужную модельку в блокбэнче и настраиваешь её отображение в слоте головы. Потом накладываешь эту модельку на любой предмет с зачарование несъёмности(по традиции берут каменную кнопку) и при начале раунда надеваешь на голову убийце. Если без текстур, то только искать голову с подходящим скином и надевать её. Ну и кожаную броню нужного цвета как вариант.
  14. Можно костылями. Накладываешь модель флейты на удочку с морковью, а потом все подзорные трубы с нужным названием заменяешь на удочку при взятии в руку. Клики ПКМ реализуешь через скорборд. Флейта как труба по идее работать уже и не должна.
  15. Такое было ещё на дивёрсити лет пять назад. Выдаёшь предмет с тэгом, допустим так: /give @a minecraft:nether_star{Test:1} А потом ищешь его в руке в цикличном командном блоке и если он есть, ставишь блоки на нужные координаты (цепочкой либо функцией): execute if data entity @p SelectedItem.tag.Test run setblock 0 70 0 minecraft:stone Если предмета нет, аналогично убираешь execute unless data entity @p SelectedItem.tag.Test run setblock 0 70 0 minecraft:air Так же вместо кучи КБ можно использовать метки. В циклические блоки вставляешь только две команды: /execute if data entity @p SelectedItem.tag.Test at @e[type=minecraft:marker,tag=Test] run setblock ~ ~ ~ stone /execute unless data entity @p SelectedItem.tag.Test at @e[type=minecraft:marker,tag=Test] run setblock ~ ~ ~ air А потом по карте ставишь метки командой /summon minecraft:marker ~ ~ ~ {Tags:[Test]} Когда ты держишь в руках предмет, выданный в начале, в тех местах, где метки, будут появляться блоки камня. Когда предмет убираешь, блоки будут пропадать.
  16. Делаешь скорборд на количество применений кирки. Потом если игрок держит в руках эту кирку, в цикличной функции вокруг каждого игрока внутри каждого блока, до которого он может дотянутся, если этот блок не равен воздуху и там нет маркера, призываешь маркер с тэгом. Все маркеры, возле которых нет игрока, удаляются. Если игрок убирает кирку из рук, так же удаляются. После этого каждый раз, когда количество применений кирки в скорборде увеличивается на один, ты ищешь ближайший маркер с этим тэгом, который находится в блоке воздуха. Именно этот блок был сломан. И дальше в зависимости от того, куда смотрит игрок, филом разрушаешь территорию 3*3 в соотвтетствующей плоскости с выпадением предметов. Удаляешь маркеры в воздухе, обнуляешь скорборд использований кирки. Думаю, понятно объяснил, сможешь написать сам. Если лень писать самому, за символическую плату могу это для тебя реализовать.
  17. Выполняй эти две команды. scoreboard objectives add Timer dummy scoreboard players set Const Timer 20 А эти четыре помещай в функцию. Либо в цикличные КБ, тогда последняя не нужна. scoreboard players add T Timer 1 execute if score T Timer > Const Timer run summon minecraft:zombie execute if score T Timer > Const Timer run scoreboard players add Level Timer 1 execute if score T Timer > Const Timer run scoreboard players set T Timer 0 schedule function <название датапака>\timer 1s
  18. Это в цикличный командный блок напиши. /execute at @e[type=!minecraft:player] if block ~ ~ ~ cobweb run effect give @e[distance=0..1] minecraft:wither 1 1 true Ещё парой команд можно сделать так, что бы только некоторая паутина наносила урон.
  19. Спасибо за развёрнутый ответ. Те команды с тремя камнями были приведены как пример. Мне была нужна эта функция для постепенной постройки сложных структур, вроде статуй, которые нельзя закодировать в виде функции, поэтому такой способ не подойдёт. Тема старая и я уже придумал подобное рекурсивное решение: допустим если есть 1 000 000 команд setblock, из количества команд извлекается квадратный корень и округляется. Я пронумеровал команды и разделил на 1000 групп по 1000 команд. Затем создал скорборд и 1000 функций формата 1.mcfunction 2.mcfunction и.т.д. В начале первой функции я увеличиваю скорборд на единицу, после чего вызываю 1000 команд execute, которые сверяют значение скорборда с числами 1,2,3...1000. В случае равенства выполняется команда setbloсk с номером, соответствующим значению скорборда. В конце функции если счётчик меньше 1000, вызывается эта же самая функция ещё раз спустя 1 тик при помощи schedule. Если счётчик достиг тысячи, вызывается функция номер 2, в которой так же перебираются значения от 1001 до 2000. Далее третья функция и.т.д. до тысячной функции. Это позволило избежать лагов, которые возникали, когда я засовывал миллион эксекутов был в одну функцию или по одному эксекуту в миллион функций, хотя линейной сложности вычисления я и не добился, но улучшил с O(n^2) до O(n*sqrt(n)). В итоге получилось это. Я штук 5 разных строений создал для видео при помощи такого метода постепенной постройки, пока мне не надоело.
  20. Меня интересует возможность сохранить весь чат в текстовый файл, что-то вроде лога, но в одиночной игре. Каким модом это можно реализовать хотя бы на одной версии с 1.12 по 1.15 включительно? Вариант с возможностью скопировать весь чат Ctr+C тоже подойдёт.
  21. А каким образом это реализовать с точными координатами? С data storage не работал, поэтому был бы благодарен готовой команде или хотя бы её шаблону.
  22. Знаю, что нельзя. Поэтом и предложил перед округлением умножить их на большое число, что бы погрешность была минимальной. Можете подсказать реализацию в виде команды?
  23. У меня вот такая проблема - необходимо выводить в чат или в скорборд координаты игрока. Не округлённые, а точные, со всеми знаками и, желательно, направлением взгляда. Вывод каждый тик. Подойдёт вывод в скорборд, допустим, координат, умноженных на 100000, что бы целое число было. Цель этого - записать точные траектории, по которым движется игрок, допустим, когда проходит паркур, что бы создать реалистичного бота на карте, который аналогично игроку паркурил бы и двигался.
×
×
  • Создать...