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

Определение двух последних игроков в команде


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

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

привет,и снова я,чел,который делает pubg внутри майнкрафта.Я решил реализовать дуо режим,полноценный,и игра проверяет,когда остаётся 2 игрока - пишет их в чате,и что они победили,но когда я закрыл майнкрафт,я подумал о другой стороне медали:
А что если эти люди будут из разных команд?
так я это оставить не смог,и решил подумать над решением проблемы.Ничего не смог придумать,и решил отписать а этом форуме,ибо уту по любому найдётся люди,которые разбираются в этой сфере явно лучше меня.
В общем,сейчас команда в цепной,всегда активном командном блоке,выглядит так:
/tellraw @a [{"text":"Победили игроки ","color":"yellow"},{"selector":"@a[gamemode=adventure]","color":"gold"}]
Не маловажное условие:у меня есть счётчик игроков Players
Мне же нужно,чтобы она проверяла,что осталось 2 последних выживших игрока в режиме приключения,и они из одной и той же команды(у меня команды называются как "team1-team10")
Важные условия для срабатывания кб:
1)должно остаться 2 игрока в режиме приключения
2)оба игрока состоят в одной и той же команде
3)кб не срабатывает,если осталось 2 игрока и они в разных командах

дополнение: У меня есть счётчик игроков,который называется Players
Команда выглядит так: execute if score *players Players matches 2 run Say 1
но мне нужно,чтобы я мог не только указать,что игроков осталось двое,но и также,что они находятся в одной команде.Команды,которые у меня есть - team1-team10

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

scoreboard players set *teams_alive Players 0
execute if entity @a[gamemode=adventure,team=team1] run scoreboard players add *teams_alive Players 1
execute if entity @a[gamemode=adventure,team=team2] run scoreboard players add *teams_alive Players 1
execute if entity @a[gamemode=adventure,team=team3] run scoreboard players add *teams_alive Players 1
execute if entity @a[gamemode=adventure,team=team4] run scoreboard players add *teams_alive Players 1
execute if entity @a[gamemode=adventure,team=team5] run scoreboard players add *teams_alive Players 1
execute if entity @a[gamemode=adventure,team=team6] run scoreboard players add *teams_alive Players 1
execute if entity @a[gamemode=adventure,team=team7] run scoreboard players add *teams_alive Players 1
execute if entity @a[gamemode=adventure,team=team8] run scoreboard players add *teams_alive Players 1
execute if entity @a[gamemode=adventure,team=team9] run scoreboard players add *teams_alive Players 1
execute if entity @a[gamemode=adventure,team=team10] run scoreboard players add *teams_alive Players 1
 
execute if score *teams_alive Players matches 1 run say победили игроки: @a[gamemode=adventure]
execute if score *teams_alive Players matches 0 run say никто не победил
Ссылка на комментарий
Поделиться на другие сайты

1 час назад, GhostoFBU сказал:
scoreboard players set *teams_alive Players 0
execute if entity @a[gamemode=adventure,team=team1] run scoreboard players add *teams_alive Players 1
execute if entity @a[gamemode=adventure,team=team2] run scoreboard players add *teams_alive Players 1
execute if entity @a[gamemode=adventure,team=team3] run scoreboard players add *teams_alive Players 1
execute if entity @a[gamemode=adventure,team=team4] run scoreboard players add *teams_alive Players 1
execute if entity @a[gamemode=adventure,team=team5] run scoreboard players add *teams_alive Players 1
execute if entity @a[gamemode=adventure,team=team6] run scoreboard players add *teams_alive Players 1
execute if entity @a[gamemode=adventure,team=team7] run scoreboard players add *teams_alive Players 1
execute if entity @a[gamemode=adventure,team=team8] run scoreboard players add *teams_alive Players 1
execute if entity @a[gamemode=adventure,team=team9] run scoreboard players add *teams_alive Players 1
execute if entity @a[gamemode=adventure,team=team10] run scoreboard players add *teams_alive Players 1
 
execute if score *teams_alive Players matches 1 run say победили игроки: @a[gamemode=adventure]
execute if score *teams_alive Players matches 0 run say никто не победил

А если у меня в каждой команде (team1-team10) по 2 игрока,это будет работать?

Ещё такой момент:мне нкжно победителей объявить вне зависимости от того,умер один из составляющей команды или нет(они же оба вклад в победу вложили,не так ди?)

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

Но код интересный,даже немного нового узнал

 

Дополнено:я понял как этот код работает,он проверяет,есть ли в команде кто-то,если есть - добавляет 1 в счётчик команды вне зависимости от числа участников команды.Я правильно понял?

Как создать scoreboard teams_alive?

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

12 минут назад, Cored сказал:

Как создать scoreboard teams_alive?

Она появится сам из первой строчки, главное чтоб была задача Players
Создать задачу Players можно с помощью: scoreboard objectives add Players dummy

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

13 минут назад, NotDen сказал:

Она появится сам из первой строчки, главное чтоб была задача Players
Создать задачу Players можно с помощью: scoreboard objectives add Players dummy

Пасиба

Такой ещё вопрос:

Я понимаю что ты не тот чел,что написпл выше все команды,но мб ты сможешь помочь тоже

Вот в счётчике team_alive допустим 5

Как из счётчика вычитается 1?в коде я не вижу команды,которая отвечает за вычитание одного из счётчика,емли команда мертва

Нужно же как-то зафиксировать,что команда мертва

Типа,можно через execute if entity @a[gamemode=adventure,team=team1] run scoreboard players отнять(хз как будет) *teams_alive Players 1

Это сработает?

И как вычитать из счётчика?слкчаем не remove?

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

Только что, Cored сказал:

Пасиба

Такой ещё вопрос:

Я понимаю что ты не тот чел,что написпл выше все команды,но мб ты сможешь помочь тоже

Вот в счётчике team_alive допустим 5

Как из счётчика вычитается 1?в коде я не вижу команды,которая отвечает за вычитание одного из счётчика,емли команда мертва

Нужно же как-то зафиксировать,что команда мертва

Типа,можно через execute if entity @a[gamemode=adventure,team=team1] run scoreboard players отнять(хз как будет) *teams_alive Players 1

Это сработает?

И как вычитать из счётчика?

Для *teams_alive отсчет идёт вверх
С начала записывается 0, и за каждую живую команду прибавляется 1

6 минут назад, Cored сказал:

И как вычитать из счётчика?слкчаем не remove?

Для вычитания вместо add используется remove

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

18 минут назад, NotDen сказал:

Для *teams_alive отсчет идёт вверх
С начала записывается 0, и за каждую живую команду прибавляется 1

Для вычитания вместо add используется remove

Я когда последнее писал - перепутал гейммод,я хотел написать gamemode=spectator,и в таокм случае если оба игрокп а этой команде спектаторы - они кикаются из неё(чтобы постоянно 1 не вычитался) и отнимается 1 у teams_alive

Это сработает,как думаете?

 

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

2 минуты назад, Cored сказал:

Я когда последнее писал - перепутал гейммод,я хотел написать gamemode=spectator,и в таокм случае если оба игрокп а этой команде спектаторы - они кикаются из неё(чтобы постоянно 1 не вычитался) и отнимается 1 у teams_alive

Это сработает,как думаете?

20 минут назад, NotDen сказал:

Для *teams_alive отсчет идёт вверх
С начала записывается 0, и за каждую живую команду прибавляется 1

Планируется что данные команды будут вызываться с каждым умершим или постоянно
Каждый раз счетчик будет сбрасываться и считаться заново

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

17 минут назад, NotDen сказал:

Планируется что данные команды будут вызываться с каждым умершим или постоянно
Каждый раз счетчик будет сбрасываться и считаться заново

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

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

Только что, Cored сказал:

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

Ну...

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

1 минуту назад, NotDen сказал:

Ну...

Код,который чел тот скинул - он прибавляет 1 к teams_alive,но не вычитает в случае гибели команды

Таким образом игра никогда не закончится

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

1 минуту назад, Cored сказал:

Таким образом игра никогда не закончится

22 минуты назад, NotDen сказал:

Планируется что данные команды будут вызываться с каждым умершим или постоянно
Каждый раз счетчик будет сбрасываться и считаться заново

1 минуту назад, Cored сказал:

Код,который чел тот скинул - он прибавляет 1 к teams_alive,но не вычитает в случае гибели команды

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

scoreboard players set *teams_alive Players 0

В самом начале стоит сброс значения

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

1 минуту назад, NotDen сказал:

 

Я не понимаю

Можешь переформулировать?

Если что,ещё раз:

Код выше(в самом верху) добааляет один к teams_alive

Но там нигде нет вычитания,то есть вот у меня умерли 2 команды(в команде по 2 человека,вычитания должно быть только тогда,когда все участники команды имеют гейммод наблюдателя) и осталась одна команда.Но в счётчике по прежнему будут чилиться 3 команды,разве нет?

3 минуты назад, NotDen сказал:

 

А,погоди

Я кажется понял

Ты предлагаешь весь этот код поставить в цикличный(самая первач команда) и цепные всегда активные командные блоки?

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

Только что, Cored сказал:

Но там нигде нет вычитания,то есть вот у меня умерли 2 команды(в команде по 2 человека,вычитания должно быть только тогда,когда все участники команды имеют гейммод наблюдателя) и осталась одна команда.Но в счётчике по прежнему будут чилиться 3 команды,разве нет?

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

2 минуты назад, Cored сказал:

А,погоди

Я кажется понял

Ты предлагаешь весь этот код поставить в цикличный(самая первач команда) и цепные всегда активные командные блоки?

Да

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

1 минуту назад, NotDen сказал:

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

Да

Всё,понял

Извиняюсь что туплю,спасибо огромное

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

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

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

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

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

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

Войти

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

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

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