Как сделать голосование

Perry

Участник
Регистрация
16 Май 2023
Сообщения
11
Как сделать, чтобы игроки могли голосовать за других игроков, но только один раз.
Пример: @rep (ник)
И у игрока прибавляется один голос.
Сам код на голосование знаю, но как сделать, чтобы проголосовать можно было только один раз за игрока?
А то один и тот же будет голосовать бесконечно..
Думаю поняли))
 

maxim34a

Эксперт
Регистрация
10 Июн 2023
Сообщения
551
Как сделать, чтобы игроки могли голосовать за других игроков, но только один раз.
Пример: @rep (ник)
И у игрока прибавляется один голос.
Сам код на голосование знаю, но как сделать, чтобы проголосовать можно было только один раз за игрока?
А то один и тот же будет голосовать бесконечно..
Думаю поняли))
Ну, когда кто-то пишет @rep ник, ты обрезаешь текст, чтобы остался только ник. Затем выбираешь игрока с таким ником и к переменной %selected%rep прибавляешь 1. Чтобы нельзя было голосовать несколько раз - предлагаю каждый раз, когда игрок пишет @rep ник вносить никнейм того, кто пишет в массив %ник%Reps. Затем перед тем как прибавлять 1 к %selected%Rep ты проверяешь, содержится ли никнейм в массиве %selected%Reps(Выборку ты делаешь до "Если"). Как проверить - переносишь массив в строку и делаешь "если текст содержит"
 

Perry

Участник
Регистрация
16 Май 2023
Сообщения
11
Ну, когда кто-то пишет @rep ник, ты обрезаешь текст, чтобы остался только ник. Затем выбираешь игрока с таким ником и к переменной %selected%rep прибавляешь 1. Чтобы нельзя было голосовать несколько раз - предлагаю каждый раз, когда игрок пишет @rep ник вносить никнейм того, кто пишет в массив %ник%Reps. Затем перед тем как прибавлять 1 к %selected%Rep ты проверяешь, содержится ли никнейм в массиве %selected%Reps(Выборку ты

делаешь до "Если"). Как проверить - переносишь массив в строку и делаешь "если текст содержит"
С массивами не совсем понимаю.. Если не сложно, можешь подробнее расписать про момент с массивами?
 

maxim34a

Эксперт
Регистрация
10 Июн 2023
Сообщения
551
С массивами не совсем понимаю.. Если не сложно, можешь подробнее расписать про момент с массивами?
Да, хорошо. Вот смотри. Я тебе распишу сейчас приблизительный код даже.
Форматирование (BB-код):
# - пометки и объяснения кода. Их никуда переписывать не надо

Событие игрок пишет в чат
    Если текст содержит(Сообщение игрока, @rep) {
        #Цифры возможно не 0 и 5, тут надо тестить. Тут крч надо обрезать сообщение игрока чтобы остался только ник
        #не помню какой слот отвечает за переменную. Сохранять надо в переменную repTargetName, обрезать надо текст "Сообщение игрока" из Игровое значение.
        Обрезать текст(Сообщение игрока, 0, 5)
        Выбрать объект(Если имя равно, repTargetReps)
        Вывести массив в строку(%selected%Reps, repsString)
        #Тут и будет проверка, голосовал ли этот игрок за игрока из сообщения. Если нет - добавляем голос.
        #Насчёт имя игрока - вроде в Игровое значение оно есть
        Если текст НЕ содержит(repsString, Имя игрока) {
            Добавить в конец массива(%selected%Reps, Имя игрока)
            Присвоить значение переменной +=(%selected%Rep, 1)
        } Иначе {
            #Шифт + пкм по табличке и выбираешь "Игрок по умолчанию"
            Отправить сообщение игроку(Вы уже голосовали за данного игрока!) 
        }
    }

Вроде бы должно работать. А, и при заходе игрока в игру ты делаешь проверки, если массива %player%Reps не существует - его надо создать. Ну и этот массив должен быть постоянным.
 

Perry

Участник
Регистрация
16 Май 2023
Сообщения
11
Да, хорошо. Вот смотри. Я тебе распишу сейчас приблизительный код даже.
Форматирование (BB-код):
# - пометки и объяснения кода. Их никуда переписывать не надо

Событие игрок пишет в чат
    Если текст содержит(Сообщение игрока, @rep) {
        #Цифры возможно не 0 и 5, тут надо тестить. Тут крч надо обрезать сообщение игрока чтобы остался только ник
        #не помню какой слот отвечает за переменную. Сохранять надо в переменную repTargetName, обрезать надо текст "Сообщение игрока" из Игровое значение.
        Обрезать текст(Сообщение игрока, 0, 5)
        Выбрать объект(Если имя равно, repTargetReps)
        Вывести массив в строку(%selected%Reps, repsString)
        #Тут и будет проверка, голосовал ли этот игрок за игрока из сообщения. Если нет - добавляем голос.
        #Насчёт имя игрока - вроде в Игровое значение оно есть
        Если текст НЕ содержит(repsString, Имя игрока) {
            Добавить в конец массива(%selected%Reps, Имя игрока)
            Присвоить значение переменной +=(%selected%Rep, 1)
        } Иначе {
            #Шифт + пкм по табличке и выбираешь "Игрок по умолчанию"
            Отправить сообщение игроку(Вы уже голосовали за данного игрока!) 
        }
    }

Вроде бы должно работать. А, и при заходе игрока в игру ты делаешь проверки, если массива %player%Reps не существует - его надо создать. Ну и этот массив должен быть постоянным.
Спасибо)) 🥰
 
Сверху