latuchek Опубликовано 21 мая, 2025 Поделиться Опубликовано 21 мая, 2025 в кратце, я видел на ютубе что можно сделать через команду execute, что когда игрок нажимает на жителя и рядом с ним в каком либо радиусе(к примеру в 5 блоков) есть житель с определенным айди то этот житель что-либо говорил Ссылка на комментарий Поделиться на другие сайты Поделиться
NanChik Опубликовано 21 мая, 2025 Поделиться Опубликовано 21 мая, 2025 крч нужен интерекшн и скорборд который считаем сколько раз ты на него нажимаешь и в зависимости от поинтов скорборда нужная фраза Ссылка на комментарий Поделиться на другие сайты Поделиться
Щербатый бесстыдник Опубликовано 21 мая, 2025 Поделиться Опубликовано 21 мая, 2025 Сначала сделай скорборд /scoreboard objectives add Dialog minecraft.custom:minecraft.talked_to_villager (пропиши в чат) Если хочешь ВЕДАТЬ, то пропиши и следующую команду и нажми на жителя (любого) /scoreboard objectives setdisplay sidebar Dialog (тоже в чат) /scoreboard objectives setdisplay sidebar (чтобы отменить предыдущее) Теперь когда ты нажимаешь на жителя тебе прибавляется 1 значение в только что созданный скорборд. Далее упомянутым тобой execute, нужно проверить есть ли у игрока это значение. И если оно есть вывести в чат ему желанный текст. Чтобы красиво отформатировать текст можно воспользоваться tellraw генераторами execute as @a[scores={Dialog=1..}] at @s run tellraw @s "текст который житель должен говорить" (цикличный, всегда активный, стрелка должна указывать на следующий) execute as @a[scores={Dialog=1..}] at @s run scorboard scoreboard players set @s Dialog 0 (цепной, всегда активный, стрелка в сторону от предыдущего) Но все жители при таком варианте будут говорить одно и тоже. По этому тебе нужно распихать им теги или что-то в этом роде, чтобы фильтровать одного жителя от другого. Я предлагаю такой вариант - Первая команда активирует игрока начавшего диалог [scores={Dialog=1..}], имеющего жителя [type=minecraft:villager] на расстоянии 7ми блоков [distance=..7] с уникальным тегом [tag=BrrBrrPatapim] и если находит, то выводит ему текст конкретно для жителя с конкретно этим тегом. Следующая команда отличается только тегом и наверное сообщением для игрока. Последняя команда как и в предыдущем варианте просто чистит скорборд диалога чтобы игроку не спамило в чат. execute as @a[scores={Dialog=1..}] at @s if entity @e[type=minecraft:villager,tag=BrrBrrPatapim,distance=..7] run tellraw @s "я брр брр патапим" (цикличный, всегда активный) execute as @a[scores={Dialog=1..}] at @s if entity @e[type=minecraft:villager,tag=GlorboFrutodrillo,distance=..7] run tellraw @s "я глорбо фрутодрилло" (цикличный, всегда активный) execute as @a[scores={Dialog=1..}] at @s run scorboard scoreboard players set @s Dialog 0 (цепной, всегда активный) Единственная проблема в том что моя команда не проверяет жителя по которому нажали, она просто ищет жителя рядом с игроком в момент когда игрок получил единицу скорборда, а это значит что механизм может лагать если 2 разных жителя будут рядом в тот момент когда игрок нажмёт по одному из них. Ему просто может выдать не тот текст. Это 100% можно как-то исправить но мне лень думать. Если не узнаешь как, то просто поставь жителей подальше друг от друга Чтобы дать жителю тег подлети к нему вплотную и впиши в чат эту команду: /tag @e[type=minecraft:villager,distance=..3] add GlorboFrutodrillo (в место GlorboFrutodrillo можешь писать любые нужные тебе теги) таким образом если тыкнуть по жителю находясь рядом с жителем с тегом "BrrBrrPatapim" в чат тебе напишет "я брр брр патапим", а если рядом будет "GlorboFrutodrillo" то в чат напишет "я глорбо фрутодрилло". А ещё вопросы по командным блокам лучше в эту часть форма задавать, там больше шансов что ответят (ответят лучше чем я) Skerate 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
latuchek Опубликовано 28 мая, 2025 Автор Поделиться Опубликовано 28 мая, 2025 спа В 22.05.2025 в 01:23, Sench_mp4 сказал: Сначала сделай скорборд /scoreboard objectives add Dialog minecraft.custom:minecraft.talked_to_villager (пропиши в чат) Если хочешь ВЕДАТЬ, то пропиши и следующую команду и нажми на жителя (любого) /scoreboard objectives setdisplay sidebar Dialog (тоже в чат) /scoreboard objectives setdisplay sidebar (чтобы отменить предыдущее) Теперь когда ты нажимаешь на жителя тебе прибавляется 1 значение в только что созданный скорборд. Далее упомянутым тобой execute, нужно проверить есть ли у игрока это значение. И если оно есть вывести в чат ему желанный текст. Чтобы красиво отформатировать текст можно воспользоваться tellraw генераторами execute as @a[scores={Dialog=1..}] at @s run tellraw @s "текст который житель должен говорить" (цикличный, всегда активный, стрелка должна указывать на следующий) execute as @a[scores={Dialog=1..}] at @s run scorboard scoreboard players set @s Dialog 0 (цепной, всегда активный, стрелка в сторону от предыдущего) Но все жители при таком варианте будут говорить одно и тоже. По этому тебе нужно распихать им теги или что-то в этом роде, чтобы фильтровать одного жителя от другого. Я предлагаю такой вариант - Первая команда активирует игрока начавшего диалог [scores={Dialog=1..}], имеющего жителя [type=minecraft:villager] на расстоянии 7ми блоков [distance=..7] с уникальным тегом [tag=BrrBrrPatapim] и если находит, то выводит ему текст конкретно для жителя с конкретно этим тегом. Следующая команда отличается только тегом и наверное сообщением для игрока. Последняя команда как и в предыдущем варианте просто чистит скорборд диалога чтобы игроку не спамило в чат. execute as @a[scores={Dialog=1..}] at @s if entity @e[type=minecraft:villager,tag=BrrBrrPatapim,distance=..7] run tellraw @s "я брр брр патапим" (цикличный, всегда активный) execute as @a[scores={Dialog=1..}] at @s if entity @e[type=minecraft:villager,tag=GlorboFrutodrillo,distance=..7] run tellraw @s "я глорбо фрутодрилло" (цикличный, всегда активный) execute as @a[scores={Dialog=1..}] at @s run scorboard scoreboard players set @s Dialog 0 (цепной, всегда активный) Единственная проблема в том что моя команда не проверяет жителя по которому нажали, она просто ищет жителя рядом с игроком в момент когда игрок получил единицу скорборда, а это значит что механизм может лагать если 2 разных жителя будут рядом в тот момент когда игрок нажмёт по одному из них. Ему просто может выдать не тот текст. Это 100% можно как-то исправить но мне лень думать. Если не узнаешь как, то просто поставь жителей подальше друг от друга Чтобы дать жителю тег подлети к нему вплотную и впиши в чат эту команду: /tag @e[type=minecraft:villager,distance=..3] add GlorboFrutodrillo (в место GlorboFrutodrillo можешь писать любые нужные тебе теги) таким образом если тыкнуть по жителю находясь рядом с жителем с тегом "BrrBrrPatapim" в чат тебе напишет "я брр брр патапим", а если рядом будет "GlorboFrutodrillo" то в чат напишет "я глорбо фрутодрилло". А ещё вопросы по командным блокам лучше в эту часть форма задавать, там больше шансов что ответят (ответят лучше чем я) спасибо, особенно за то что подсказали куда писать, если что-то мне надо будет Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
В теме 4 сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти