Как сделать анти-спам

maxim34a

Эксперт
Регистрация
10 Июн 2023
Сообщения
551
достаточно сделать выборку игрока по умолчанию после блока ждать
Там трабла не в префиксах. Неверно составленная логика. Я описал тут:
Нет, он не будет работать. У нас получается такая логика:
Игрок пишет в чат -> Присваиваем значение переменной 1 -> Ждать(5 секунд) -> Присваиваем значение переменной 0
Игрок СНОВА пишет в чат, пока идёт отсчёт тех 5 секунд, тем самым снова присваивая значений переменной 1 и запуская все то же самое.
К тому же, проверка на "Если значение" идёт через 5 секунд, и если игрок опять же в течении этих 5 секунд напишет в чат - все сломается.
Простой выборкой не получится пофиксить.
Вот-вот. Люди даже не думают об оптимизации кода. Недавно видел код Murder Mistery от Cllebrel, там такой бардак, я еле разобрался где что
 

onn512

Эксперт
Регистрация
2 Май 2023
Сообщения
152
А есть и другие ошибки, за 1 тик например)
Не видел таких лимитов по действиям на 1 тик.
11111 вот что происходит, когда следуешь советам onn512 и делаешь бесконечный цикл)0) Чувак пробил лимит в 6400)
Ты видел его код? Ты уверен, что ошибка связана с вечно работающим циклом, а не с какой-то рекурсивной функцией?
 

maxim34a

Эксперт
Регистрация
10 Июн 2023
Сообщения
551
Ты видел его код? Ты уверен, что ошибка связана с вечно работающим циклом, а не с какой-то рекурсивной функцией?
Не факт что с вечно работающим циклом. Я имею ввиду, вот что происходит если ты не оптимизируешь свой код - а твой код с вечным циклом полное кхм-кхм с точки зрения оптимизации
 

onn512

Эксперт
Регистрация
2 Май 2023
Сообщения
152
Не факт что с вечно работающим циклом. Я имею ввиду, вот что происходит если ты не оптимизируешь свой код - а твой код с вечным циклом полное кхм-кхм с точки зрения оптимизации
Твой цикл забагался с 2 игроками1688385321450.png
 

maxim34a

Эксперт
Регистрация
10 Июн 2023
Сообщения
551
Твой цикл забагался с 2 игрокамиПосмотреть вложение 1610
ТВОЙ код не работает, потому что мой код базируется на твоём)
Зачем отвлекаешь меня, если не умеешь кодить? Майнленд в цикле отнимает по 2 секунды, это мои проблемы? Используй цикличную функцию и всё. С 2 игроками протестил, все работает как часы.

UPD: Выборку можно убрать.
 

Sokolli

Участник
Регистрация
3 Май 2023
Сообщения
117
Да..
Я тут посмотрел что за кринж кинул
Лучше так:

Код:
Событие чата: если переменная НЕ равна: "<%player%_cooldown> - 1"
присвоить переменную: "<player%_cooldown> - 1"
Ждать 40
присвоить переменную: "<player%_cooldown> - "
Иначе: сообщение "&2System &8 > &fНе сори в чат!"
Отменить событие
Здесь он не будет при каждом сообщении присваивать "1"
Если это надо вставить в префиксы
То нужно вставить в начало строки условие, а в конце поставить дополнительно поршень и "иначе" с сообщением

А зачем тут циклы обсуждают "ждать" не легче?
 
Последнее редактирование:

onn512

Эксперт
Регистрация
2 Май 2023
Сообщения
152
Потому что ты не умеешь править. Перестань отвлекать меня по пустякам,
Ты ушёл от темы обсуждения вечного цикла, которую сам же начал.
Твоё личное мнение, необоснованное никакими аргументами, и ничего более.
Повторюсь, код onn512 - полная лажа
Сделай лучше. Только как ты сделаешь наигранное время игрока без вечного цикла или вечной цикличной функции?
такой цикл выполняет только 3 действия в 5 тиков
1 действие в 20 тиков. Блок выборки не влияет на количество выполненных действий.
Не может. Мы запускаем цикл 1 раз, когда игрок пишет в чат.
Ещё как может. Цикл один, активных задержек много. Одна задержка чата закончилась, цикл останавливается, в то время как другие задержки остались и больше не обрабатываются.

Теперь я объясню, почему использование одного вечного цикла в игре является, как минимум, хорошим решением с точки зрения оптимизации и не только:
  1. Оптимизация. Цикл один для всех игроков, что означает, что если цикл выполняет 1 действие каждые 20 тиков с одним игроком, то с 50 игроками в игре также будет 1 действие в 20 тиков.
  2. Экономия места и удобство. Данный цикл занимает всего одну строку кода и способен одновременно выполнять несколько задач, таких как обновление скорборда, наигранное время, задержка чата и т.д. При этом он будет использовать примерно 15 действий, независимо от онлайна в игре.
 

maxim34a

Эксперт
Регистрация
10 Июн 2023
Сообщения
551
Теперь я объясню, почему использование одного вечного цикла в игре является, как минимум, хорошим решением с точки зрения оптимизации и не только:
  1. Оптимизация. Цикл один для всех игроков, что означает, что если цикл выполняет 1 действие каждые 20 тиков с одним игроком, то с 50 игроками в игре также будет 1 действие в 20 тиков.
  2. Экономия места и удобство. Данный цикл занимает всего одну строку кода и способен одновременно выполнять несколько задач, таких как обновление скорборда, наигранное время, задержка чата и т.д. При этом он будет использовать примерно 15 действий, независимо от онлайна в игре.
Именно поэтому все кодеры отказываются от вечных циклов, да? Юзай что хочешь, мне то какое дело, но твой код все равно мусор с точки зрения программирования: что если игроки будут стоять в афк или просто не писать ничего в чат? М? К тому же, а толку от твоего цикла для всех игроков, если по правилам он запускается все равно личный для каждого? Насчет второго пункта, ну запихни в if'ы несколько действий, будет тебе таймер многофункциональный.

Объясню первое, если ты запускаешь цикл от лица одного игрока, а потом выбираешь всех игроков и производишь с ними действия, то по логике оно сначало выбирает первого игрока - производит действие, выбирает второго - производит действие и так далее, так что смысла от твоего вечного цикла ровно 0.


Оптимизирует он код через вечный цикл, ага, поверил...
 
Сверху