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

Сравнение очков scoreboard у 4 команд. Как определить победителя и телепортировать его?


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

В теме 3 сообщения

на сервере я создал scoreboard score, который ведёт счёт побед у четырёх команд.  как через команду execute сделать подведение итогов? именно создать логическую операцию в нескольких командных блоках, которые будут сравнивать счёт каждой команды, а команду с наибольшим количеством очков телепортирует на пьедестал с первым местом?? И как, например, нужно учитывать ничью, когда у двух команд одинаковое количество очков?

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

есть мысль, можно вычитать по 1 очку от каждого счёта и таким образом определить место в списке, у кого счёт первее доберётся до 0

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

Мой способ вряд ли можно назвать оптимальным решением, но я его уже придумал, по этому напишу

 

Сперва создаём 4 маркера с тегами в том месте куда должны будут телепортироваться победители после финала игры, важно чтобы между ними было минимальное расстояние, хотя бы в 0.0001 блока.

:Chain_Unconditional: summon minecraft:marker 0 64.01 0 {Tags:["4team","wictory_counter"]}
:Chain_Unconditional: summon minecraft:marker 0 64.02 0 {Tags:["3team","wictory_counter"]}
:Chain_Unconditional: summon minecraft:marker 0 64.03 0 {Tags:["2team","wictory_counter"]}
:Repeating_Unconditional: summon minecraft:marker 0 64.04 0 {Tags:["1team","wictory_counter"]}

Далее записываем в маркеры скорборд от вашего счётчика побед (можно изначально в них записывать), а также присваиваем *wictory счёт 0

:Chain_Unconditional: scoreboard players operation @e[tag=4team] score = ваш счётчик от команды 4
:Chain_Unconditional: scoreboard players operation @e[tag=3team] score = ваш счётчик от команды 3
:Chain_Unconditional: scoreboard players operation @e[tag=2team] score = ваш счётчик от команды 2
:Chain_Unconditional: scoreboard players operation @e[tag=1team] score = ваш счётчик от команды 1
:Repeating_Unconditional: scoreboard players set *wictory score 0

И в конце копируем в *wictory самый большой скорборд, убиваем все маркеры чей скорборд меньше чем это значение, и либо объявляем ничью если осталось больше одного маркера, либо объявляем победу определённой команды и телепортируем победителей 

:Chain_Unconditional: execute at @n[tag=4team] unless entity @n[tag=wictory_counter,distance=0.0001..] run tp @a[team=4] @s
:Chain_Unconditional: execute at @n[tag=3team] unless entity @n[tag=wictory_counter,distance=0.0001..] run tp @a[team=3] @s
:Chain_Unconditional: execute at @n[tag=2team] unless entity @n[tag=wictory_counter,distance=0.0001..] run tp @a[team=2] @s
:Chain_Unconditional: execute at @n[tag=1team] unless entity @n[tag=wictory_counter,distance=0.0001..] run tp @a[team=1] @s
:Chain_Unconditional: execute at @n[tag=wictory_counter] if entity @n[tag=wictory_counter,distance=0.0001..] run say ничья
:Chain_Unconditional: execute as @e[tag=wictory_counter] at @s if score @s score < *wictory score run kill @s
:Repeating_Unconditional: execute as @e[tag=wictory_counter] at @s if score @s score > *wictory score run scoreboard players operation *wictory score = @s score

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

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

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

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

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

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

Войти

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

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

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