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

система определения вхождения и покидания определённой зоны 1.21.10


Rozy

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

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

Мне нужно реализовать систему которая будет определять вход в определённую область или её покидание, и запускать для соответствующего игрока одну из функций, эти области задаются при помощи сферы т.е. distance=..10 но не думаю что это важно, области генерируются динамически, т.е. задаются маркерами их может быть сколько угодно штук и каждая должна действовать независимо. проблема в том что нужно постараться избежать использование макросов. Хотя не факт что реализация без макросов окажется менее нагружающей чем версия с ними, из идей которые у меня есть, это задавать айди в виде скорборда и игрокам и этим областям и уже проводить проверки через эти скорборды, проблема в том, что в таком случае придётся хранить массив айдишников которые придётся итерацией перебирать что тоже не есть очень хорошо, в общем жду ваших идей

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

14 часов назад, Rozy сказал:

Мне нужно реализовать систему которая будет определять вход в определённую область или её покидание, и запускать для соответствующего игрока одну из функций, эти области задаются при помощи сферы т.е. distance=..10 но не думаю что это важно, области генерируются динамически, т.е. задаются маркерами их может быть сколько угодно штук и каждая должна действовать независимо. проблема в том что нужно постараться избежать использование макросов. Хотя не факт что реализация без макросов окажется менее нагружающей чем версия с ними, из идей которые у меня есть, это задавать айди в виде скорборда и игрокам и этим областям и уже проводить проверки через эти скорборды, проблема в том, что в таком случае придётся хранить массив айдишников которые придётся итерацией перебирать что тоже не есть очень хорошо, в общем жду ваших идей

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

 

execute as @a at точка if entity @s[distance..10] unless score @s чекать matches 1 run scoreboard players set @s чекать 1

 

execute as @a[scores={чекать=1}] at точка unless entity @s[distance=..10] run scoreboard players set @s чекать 0

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

5 минут назад, cota5 сказал:

ну хорошо, at сущность, так подойдёт? нинадо тут душнить

я подумал что он имел ввиду туда координаты написать

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

В 07.12.2025 в 21:38, Rozy сказал:

Мне нужно реализовать систему которая будет определять вход в определённую область или её покидание, и запускать для соответствующего игрока одну из функций, эти области задаются при помощи сферы т.е. distance=..10 но не думаю что это важно, области генерируются динамически, т.е. задаются маркерами их может быть сколько угодно штук и каждая должна действовать независимо. проблема в том что нужно постараться избежать использование макросов. Хотя не факт что реализация без макросов окажется менее нагружающей чем версия с ними, из идей которые у меня есть, это задавать айди в виде скорборда и игрокам и этим областям и уже проводить проверки через эти скорборды, проблема в том, что в таком случае придётся хранить массив айдишников которые придётся итерацией перебирать что тоже не есть очень хорошо, в общем жду ваших идей

Через плагин, но все же. как варик - создать таймер, который будет срабатывать условно раз в секунду. Все твои зоны хранятся в конфиге плагина, каждая зона это просто точка в мире и её радиус. Каждую секунду этот таймер берёт всех игроков на сервере и проверяет для каждого, не находится ли он внутри какой-нибудь из твоих зон. Чтобы понять, что игрок именно вошел или вышел, а не просто находится внутри, плагин хранит в памяти информацию о том, кто в какой зоне был во время прошлой проверки, на счет оптимизации - хз, но удобнее тем, что пользоваться в разы проще, чем /execute at.. блаблабла, командные блоки и все остальное

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

  • 2 недели спустя...
В 18.12.2025 в 19:57, келсИ сказал:

норм всё с оптимизацией будет, если нормально баккит рунейбл юзать

да зачем какие-то плагины, 2 команды и всё

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

59 минут назад, Rozy сказал:

в 2 команды не получится

да?

 

В 08.12.2025 в 12:35, cota5 сказал:

execute as @a at точка if entity @s[distance..10] unless score @s чекать matches 1 run scoreboard players set @s чекать 1

 

execute as @a[scores={чекать=1}] at точка unless entity @s[distance=..10] run scoreboard players set @s чекать 0

и чем это те не подходит?

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

15 часов назад, cota5 сказал:

да?

 

и чем это те не подходит?

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

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

54 минуты назад, Rozy сказал:

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

Во 1 определение дистанции идет от точки, с чего ты взял что от игрока? Мы взяли точку как центр зоны, и проверчем находится ли в дистанции ..10 блоков от центра этой точки.

А по поводу многослойности, либо сделай систему у очков на скорборде, либо неск скорбордов создай, это не сложно

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

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

Во 1 определение дистанции идет от точки, с чего ты взял что от игрока? Мы взяли точку как центр зоны, и проверчем находится ли в дистанции ..10 блоков от центра этой точки.

А по поводу многослойности, либо сделай систему у очков на скорборде, либо неск скорбордов создай, это не сложно

короче, фигня твой метод, если хочешь подробный объяснений напиши мне в дс я там в гс могу объяснить что и как не так

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

1 час назад, смегевемене сказал:

развивайте свои навыки печатанья! 

слушай, я выбрал голосовой способ общения потому что это быстрее, проще, а так же я имел возможность включить демку, что так же делает это и нагляднее, и вообще что за притензия? мы с челом созвонились, поговорили, он всё понял. что не так то?

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

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

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

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

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

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

Войти

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

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

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