LUA Requst Cooldown

Написал для себя, но если хотите можете использовать.
Штука на самом деле полезная.

Допустим, я хочу что бы игрок нормально получал таблицу с сервера, но не хочу что бы злоумышленник закрашил его, отправляя допустим по 49 запросов в 0.5 секунд. Да да, популярная защита от нетов это не перекрывает, к сожалению. И если вы отправляете большой массив данных, то чел отправляя такие запрос в 0.5 секунд будет вызывать лаги.

Просто объясняю зачем это написал и в каких лучше случаях использовать)

Вот сам кодик

Lua:
Развернуть Свернуть Копировать
local RequestCooldowns = {}
RequestCooldowns.Config = {
    Requests = {
        Max = 3,
        InSecond = 1,
    },
    Cooldown = 5,
}


net.Receive('WarnSystem.GetPlayerInfo', function(len, ply)
    local id = ply:UniqueID()
    if !RequestCooldowns[id] then
        // Создание таблицы
        RequestCooldowns[id] = {CurTime() + RequestCooldowns.Config.Requests.InSecond, 0}
    else
        if RequestCooldowns[id][1] > CurTime() then
            // Добавляем счетчик
            RequestCooldowns[id][2] = RequestCooldowns[id][2] + 1
            if RequestCooldowns[id][2] > RequestCooldowns.Config.Requests.Max then
                // Наказание
                RequestCooldowns[id][3] = CurTime() + RequestCooldowns.Config.Cooldown
            end
        elseif RequestCooldowns[id] && RequestCooldowns[id][1] < CurTime() then
            // Если присутствует наказание
            if RequestCooldowns[id][3] then
                // Если наказание прошло
                if RequestCooldowns[id][3] < CurTime() then
                    RequestCooldowns[id] = nil
                    --print('Обнуляем кд наказания')
                end
            else
                RequestCooldowns[id] = nil
                --print('Обнуляем кд по таймеру')
            end
        end
    end

    if RequestCooldowns[id] && RequestCooldowns[id][3] && RequestCooldowns[id][3] > CurTime() then ply:SendNotify(1, 4, 'Вы слишком часто используете это!') return end

end)

Пользователи онлайн

Статистика форума

Темы
29,178
Сообщения
187,189
Пользователи
129,090
Новый пользователь
hgfdhdfgh
Назад
Сверху Снизу