[РЕШЕНО] Голосование

GromoverGets

Эксперт
Регистрация
2 Май 2023
Сообщения
243
У меня есть цикл с голосованием, когда человек пишет в чат ник того, кого он хочет кикнуть и по окончанию голосования идёт подсчёт голосов ну и соответственно кик из игры. Проблема в том, что после каждого голоса идёт проверка "Если у игрока за которого голосовали голосов больше, чем у предыдущего "лидера" по голосам, то в переменную лидер_ник ставится ник того, за кого проголосовали". Однако после конца голосования кикает сразу несколько игроков, у кого одинаково большое количество голосов. Возможно ли каким-либо способом сделать, чтобы по окончании голосования если оказывается, что несколько игроков имеют одинаково большое количество голосов, то кикает рандомно?

Переменные:
"Лидер_ник" - Ник текущего лидера по голосам
"ник лоли" - ник того, за кого проголосовал игрок (сообщением в чате 1 раз во время голосования)
"лидер_голосов" - итак понятно, сколько у текущего лидера голосов
"%selected% кол-во голосов" и его же версия с плейсхолдером %player% - сколько у отдельного игрока сейчас голосов
 

maxim34a

Эксперт
Регистрация
10 Июн 2023
Сообщения
538
Очень необычное название для переменной)0)
У меня есть цикл с голосованием, когда человек пишет в чат ник того, кого он хочет кикнуть и по окончанию голосования идёт подсчёт голосов ну и соответственно кик из игры. Проблема в том, что после каждого голоса идёт проверка "Если у игрока за которого голосовали голосов больше, чем у предыдущего "лидера" по голосам, то в переменную лидер_ник ставится ник того, за кого проголосовали". Однако после конца голосования кикает сразу несколько игроков, у кого одинаково большое количество голосов. Возможно ли каким-либо способом сделать, чтобы по окончании голосования если оказывается, что несколько игроков имеют одинаково большое количество голосов, то кикает рандомно?

Переменные:
"Лидер_ник" - Ник текущего лидера по голосам
"ник лоли" - ник того, за кого проголосовал игрок (сообщением в чате 1 раз во время голосования)
"лидер_голосов" - итак понятно, сколько у текущего лидера голосов
Не понимаю, почему возникает такая проблема. У первого игрока 1 голос, его ник и кол-во голосов стоит в переменных "Лидер_ник" и "лидер_голосов". За второго игрока проголосовали 2 раза, теперь его ник и его кол-во голосов перезаписывается в те две переменные. Так почему возникает такая ошибка?
Напиши полностью свой кол для голосов.
 

GromoverGets

Эксперт
Регистрация
2 Май 2023
Сообщения
243
Очень необычное название для переменной)0)

Не понимаю, почему возникает такая проблема. У первого игрока 1 голос, его ник и кол-во голосов стоит в переменных "Лидер_ник" и "лидер_голосов". За второго игрока проголосовали 2 раза, теперь его ник и его кол-во голосов перезаписывается в те две переменные. Так почему возникает такая ошибка?
Напиши полностью свой кол для голосов.
Код в 2 строки: Цикл отсчёта и событие чата.
Некоторые новые переменные:
%player%голосование_за_игрока - проголосовал ли игрок (1 - нет, 0 - да)
queue - переменная очереди, также используется для подсчёта оставшихся игроков (кого не кикнули)

Цикл [Голосование, 20] >
Выбрать объект (Случайный игрок) >
Если переменная [Голосование время >= 1] >
{
Отнять [Голосование время -= 1] >
Объединить тексты [сообщение = &e&l* &7Время до конца голосования &aГолосование время &aсекунд. &e&l*]
Экшн бар [Все] (сообщение)
Выбрать игроков по усл. (%player%голосование_за_игрока = 1)
Титл [Выборка] (&eВыбери игрока; &eза кого голосуешь)
}
Иначе
{
Остановить цикл (голосование)
Если переменная (queue > Мест в бункере)
{
Установить переменную (Время до голосования = 80)
Если переменная (лидер_ник = -)
{
Отправить сообщение (По результатам голосования никто не выбыл)
}
Иначе
{
Выбрать игроков по усл. (Имя равно лидер_ник)
Отнять (queue -= 1)
Установить переменную (%selected%_game = false)
Поставить предмет [Выборка] (Игра уже идёт)
Телепорт [Выборка]
Отправить сообщение [Все] (По результатам голосования игрок лидер_ник исключён.)
Установить переменную [%selected%кол-во голосов = 0]
Выбрать объект [Случайный игрок]
Начать цикл [обсуждение]
Выбрать игроков по усл. (Имеет предмет "в игре")
Установить переменную (%selected%голосование_за_игрока = 0)
Установить переменную (%selected%раскрывал в раунде = 0)
}
}
Иначе
{
Вызвать функцию [end]
}
}

Событие игрока [Событие чата]
Если переменная (%player%голосование_за_игрока = 1)
Установить переменную (%player% игрок найден? = нет)
Выбрать игроков по усл. (Имя равно сообщение игрока)
Если переменная (%selected%_game = true)
{
Установить переменную (%default% игрок найден? = да)
}
Выбрать игрока по умолч.
Если переменная (%player% игрок найден? = да)
{
Выбрать игроков по усл (Имя равно сообщение игрока)
Установить переменную (ник лоли = текущее имя)
Прибавить (%selected% кол-во голосов += 1)
Отправить сообщение [Все] (Игрок %default% проголосовал за ник лоли. Уже %selected% кол-во голосов голосов.)
Установить переменную (%player%голосование_за_игрока = 0)
Если переменная (%selected% кол-во голосов > лидер_голосов)
{
Установить переменную (лидер_голосов = %selected% кол-во голосов)
Установить переменную (лидер_ник = %selected%)
}
}

Вроде как весь код. И на всякий случай: Голоса всех игроков кроме кикнутого обнуляются перед стартом цикла голосование в конце цикла обсуждение. Тоже самое происходит с ником лидера и его голосами.
 

maxim34a

Эксперт
Регистрация
10 Июн 2023
Сообщения
538
Событие игрока [Событие чата]
Если переменная (%player%голосование_за_игрока = 1)
Установить переменную (%player% игрок найден? = нет)
Выбрать игроков по усл. (Имя равно сообщение игрока)
Если переменная (%selected%_game = true)
{
Установить переменную (%default% игрок найден? = да)
}
Выбрать игрока по умолч.
Если переменная (%player% игрок найден? = да)
{
Выбрать игроков по усл (Имя равно сообщение игрока)
Установить переменную (ник лоли = текущее имя)
Прибавить (%selected% кол-во голосов += 1)
Отправить сообщение [Все] (Игрок %default% проголосовал за ник лоли. Уже %selected% кол-во голосов голосов.)
Установить переменную (%player%голосование_за_игрока = 0)
Если переменная (%selected% кол-во голосов > лидер_голосов)
{
Установить переменную (лидер_голосов = %selected% кол-во голосов)
Установить переменную (лидер_ник = %selected%)
}
}
У тебя тут есть бесполезные штуки. Вот смотри. В этом если "Если переменная (%selected%_game = true)". Зачем тебе проверка на %player% игрок найден? Никаких "Иначе" у тебя не стоит, значит ты можешь засунуть код из "Если переменная (%player% игрок найден? = да)" в "Если переменная (%selected%_game = true)". Второе, зачем тебе "Выбрать игрока по умолч."? Прекрасно используется %default%, а эта выборка просто занимает место.

А вообще, я кажись понял чего оно у тебя не работает. Твоё условие "Если переменная (%selected% кол-во голосов > лидер_голосов)" никогда не будет верно, потому что "лидер_голосов" не существует. Перед запуском голосования присваивай "лидер_голосов" значение 0.
 

GromoverGets

Эксперт
Регистрация
2 Май 2023
Сообщения
243
У тебя тут есть бесполезные штуки. Вот смотри. В этом если "Если переменная (%selected%_game = true)". Зачем тебе проверка на %player% игрок найден? Никаких "Иначе" у тебя не стоит, значит ты можешь засунуть код из "Если переменная (%player% игрок найден? = да)" в "Если переменная (%selected%_game = true)". Второе, зачем тебе "Выбрать игрока по умолч."? Прекрасно используется %default%, а эта выборка просто занимает место.

А вообще, я кажись понял чего оно у тебя не работает. Твоё условие "Если переменная (%selected% кол-во голосов > лидер_голосов)" никогда не будет верно, потому что "лидер_голосов" не существует. Перед запуском голосования присваивай "лидер_голосов" значение 0.
Перед началом голосования в другом цикле присваивается это значение и я могу скинуть его код. "Игрок найден" нужен, чтобы писать в чат во время голосования, исключая ложные срабатывания, а также несуществующих в системе игроков. %player%game = true - проверка, дабы убрать попытки кика игроков, которые сидят в мире и либо зашли после начала игры, либо были кикнуты ранее
 

maxim34a

Эксперт
Регистрация
10 Июн 2023
Сообщения
538
Перед началом голосования в другом цикле присваивается это значение и я могу скинуть его код. "Игрок найден" нужен
Мм... Попробуй при каждом голосе выводить значенение этого игрока и кол-во голосов, посмотрим что будет.
 

GromoverGets

Эксперт
Регистрация
2 Май 2023
Сообщения
243
Сверху