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

хочу телепортировать моба к игроку если у них одинаковое значение в скорборде


Рекомендуемые сообщения

В теме 8 сообщений

Цель такая - сделать возможность призывать сущностей привязанных к определённому игроку. Так что-бы это работало в мультиплеере и можно было устраивать зарубы с использованием армий нежити или что-то типо того.

 

Пока-что механизм работает так: Один кусок механизма проверяет есть ли рядом с игроком яйцо, и если его нет, то он его спавнит и пихает в него значение скорборда игрока. При этом я даже не могу проверить отсутствие по близости яйца с идентичным скорбордом, проверяю отсутствие обычного яйца, что в теории может поломать механизм

цикличный///execute as @a[tag=BombardiroСroсodilo] at @s unless entity @e[distance=..1,type=egg,tag=BombardiroСroсodilo] run summon egg ~ ~ ~ {NoGravity:1b,Tags:["BombardiroСroсodilo"]}

цепной условный///execute as @e[tag=BombardiroСroсodilo,type=egg] at @s run scoreboard players operation @s ID = @p[tag=BombardiroСroсodilo] ID

Потом я проверяю как далеко от яйца находится его владелец. Если он близко, то телепортирую яйцо (ещё ближе). А если он далеко то я его удаляю, тем самым генерирую для игрока новое яйцо. 

цикличный///execute as @e[type=minecraft:egg,tag=BombardiroСroсodilo] at @s if score @s ID = @p[tag=BombardiroСroсodilo,distance=1..] ID run kill @s

цикличный///execute as @e[type=minecraft:egg,tag=BombardiroСroсodilo] at @s if score @s ID = @p[tag=BombardiroСroсodilo,distance=..1] ID run tp @s @p[tag=BombardiroСroсodilo]

Если подытожить, то я не телепортирую яйцо к его владельцу как хотелось бы, а телепортирую его к ближайшёму игроку, а в случае если оно теряется, генерирую его заново. Мне такой расклад не очень нравится, но что-то менее костыльное я из себя выдавить не смог.

 

Нужен совет о том что с этим делать, версия 1.21.1, хочу обойтись без датапаков (может перехочу)
 

Ссылка на комментарий
Поделиться на другие сайты

  • 4 месяца спустя...
12 часов назад, ArtemLog2 сказал:

хм

вылетело из головы что хотел скачать БЕСИТ!

Ссылка на комментарий
Поделиться на другие сайты

Здесь нужен датапак. При спавне моба:
1. Игрок записывает свой айди в фейк игрока
2. Моб получает айди с фейк игрока. Теперь у моба и игрока одинаковые айди

scoreboard players operation #id id = @s id
execute summon minecraft:pig run scoreboard players operation @s id = #id id


Функция выполнятся от имени моба:
1. Моб записывает свой айди в фейк игрока
2. Телепортируется к игроку, у которого совпадают айди

scoreboard players operation #search id = @s id
tp @s @a[predicate=test:match_id,limit=1]

Предикат для сравнения айди:

{
  "condition": "minecraft:value_check",
  "value": {
    "type": "minecraft:score",
    "target": "this",
    "score": "id"
  },
  "range": {
    "min": {
      "type": "minecraft:score",
      "target": {
        "type": "minecraft:fixed",
        "name": "#search"
      },
      "score": "id"
    },
    "max": {
      "type": "minecraft:score",
      "target": {
        "type": "minecraft:fixed",
        "name": "#search"
      },
      "score": "id"
    }
  }
}
Ссылка на комментарий
Поделиться на другие сайты

8 часов назад, GhostoFBU сказал:

Предикат для сравнения

Не знал что так можно, всё делал этой штукой, но показанное в видосе это геморрой какой то для такого простого действия как телепортация. Спасибо что поделился 

 

Ссылка на комментарий
Поделиться на другие сайты

20 часов назад, GhostoFBU сказал:

Здесь нужен датапак. При спавне моба:
1. Игрок записывает свой айди в фейк игрока
2. Моб получает айди с фейк игрока. Теперь у моба и игрока одинаковые айди

scoreboard players operation #id id = @s id
execute summon minecraft:pig run scoreboard players operation @s id = #id id


Функция выполнятся от имени моба:
1. Моб записывает свой айди в фейк игрока
2. Телепортируется к игроку, у которого совпадают айди

scoreboard players operation #search id = @s id
tp @s @a[predicate=test:match_id,limit=1]

Предикат для сравнения айди:

{
  "condition": "minecraft:value_check",
  "value": {
    "type": "minecraft:score",
    "target": "this",
    "score": "id"
  },
  "range": {
    "min": {
      "type": "minecraft:score",
      "target": {
        "type": "minecraft:fixed",
        "name": "#search"
      },
      "score": "id"
    },
    "max": {
      "type": "minecraft:score",
      "target": {
        "type": "minecraft:fixed",
        "name": "#search"
      },
      "score": "id"
    }
  }
}

а разве нельзя записывать uuid игрока прямо в моба?

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, Shomen сказал:

а разве нельзя записывать uuid игрока прямо в моба?

по идее нет, потому что выдаст ошибку

Ссылка на комментарий
Поделиться на другие сайты

2 часа назад, PhoenixTechu сказал:

по идее нет, потому что выдаст ошибку

Можно, у сущностей есть NBT-тег data, это как компонент custom_data для предметов, туда можно записывать любую дату, например, как в данном случае - UUID игрока

3 часа назад, Shomen сказал:

а разве нельзя записывать uuid игрока прямо в моба?

Можно, но что легче сравнивать и оптимизированней: массив чисел и работа с NBT данными или сравнение чисел в скорборде?

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...