разбор кода луа

Lance Sterling

Потрачен
Автор темы
140
8
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Lua:
function checkFlood(nick, id)
    local lastMessage = {}

    if lastMessage[nick] then
        local curTime = os.time()
        local diff = curTime - lastMessage[nick].time

        if diff <= 5 then
            flood_warning()
        end
    end

    lastMessage[nick] = {
        id = id,
        time = os.time()
    }
end
кароче как это работает, не пон разберите мне пожалуйста понятным человеческим языком, с ос тайм нихера не знаю,я чайник крч @chapo
 

teresen

Участник
28
16
Не знаю чо вы взялись за это, раз даже капельку из этого не понимаете. Но в общем, checkFlood проверяет, не было ли слишком много сообщений от одного пользователя за короткий промежуток времени. Она принимает два параметра: ник пользователя и его идентификатор.Затем проверяется, было ли уже получено какое-либо последние сообщение от данного пользователя. Если да, то текущее время и разница между текущим временем и временем последнего сообщения передается собственно вам, всё просто, не так ли? Если разница меньше или равна 5, это значит, что пользователь посылает сообщения слишком быстро, и вызывается функция предупреждения о флуде. Последнее сообщение данного пользователя сохраняется в массиве, в котором содержатся идентификатор пользователя и точное время получения сообщения.
 
  • Нравится
Реакции: Mintha

Lance Sterling

Потрачен
Автор темы
140
8
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Не знаю чо вы взялись за это, раз даже капельку из этого не понимаете. Но в общем, checkFlood проверяет, не было ли слишком много сообщений от одного пользователя за короткий промежуток времени. Она принимает два параметра: ник пользователя и его идентификатор.Затем проверяется, было ли уже получено какое-либо последние сообщение от данного пользователя. Если да, то текущее время и разница между текущим временем и временем последнего сообщения передается собственно вам, всё просто, не так ли? Если разница меньше или равна 5, это значит, что пользователь посылает сообщения слишком быстро, и вызывается функция предупреждения о флуде. Последнее сообщение данного пользователя сохраняется в массиве, в котором содержатся идентификатор пользователя и точное время получения сообщения.
взялся я что бы научится. вы же таким же были как я когда то
 

Lance Sterling

Потрачен
Автор темы
140
8
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Не знаю чо вы взялись за это, раз даже капельку из этого не понимаете. Но в общем, checkFlood проверяет, не было ли слишком много сообщений от одного пользователя за короткий промежуток времени. Она принимает два параметра: ник пользователя и его идентификатор.Затем проверяется, было ли уже получено какое-либо последние сообщение от данного пользователя. Если да, то текущее время и разница между текущим временем и временем последнего сообщения передается собственно вам, всё просто, не так ли? Если разница меньше или равна 5, это значит, что пользователь посылает сообщения слишком быстро, и вызывается функция предупреждения о флуде. Последнее сообщение данного пользователя сохраняется в массиве, в котором содержатся идентификатор пользователя и точное время получения сообщения.
[ML] (error) flood_warning.lua: D:\ãîòîâàÿ íîðì èãðà ìîðäîð\moonloader\flood_warning.lua:60: table index is nil
stack traceback:
D:\ãîòîâàÿ íîðì èãðà ìîðäîð\moonloader\flood_warning.lua:60: in function 'checkFlood'
D:\ãîòîâàÿ íîðì èãðà ìîðäîð\moonloader\flood_warning.lua:41: in function 'callback'
...íîðì èãðà ìîðäîð\moonloader\lib\lib\samp\events\core.lua:77: in function 'process_event'
...íîðì èãðà ìîðäîð\moonloader\lib\lib\samp\events\core.lua:100: in function 'process_packet'
...íîðì èãðà ìîðäîð\moonloader\lib\lib\samp\events\core.lua:127: in function <...íîðì èãðà ìîðäîð\moonloader\lib\lib\samp\events\core.lua:126>
[ML] (error) flood_warning.lua: Script died due to an error. (105E092C)

[ML] (error) flood_warning.lua: D:\ãîòîâàÿ íîðì èãðà ìîðäîð\moonloader\flood_warning.lua:60: table index is nil
stack traceback:
D:\ãîòîâàÿ íîðì èãðà ìîðäîð\moonloader\flood_warning.lua:60: in function 'checkFlood'
D:\ãîòîâàÿ íîðì èãðà ìîðäîð\moonloader\flood_warning.lua:41: in function 'callback'
...íîðì èãðà ìîðäîð\moonloader\lib\lib\samp\events\core.lua:77: in function 'process_event'
...íîðì èãðà ìîðäîð\moonloader\lib\lib\samp\events\core.lua:100: in function 'process_packet'
...íîðì èãðà ìîðäîð\moonloader\lib\lib\samp\events\core.lua:127: in function <...íîðì èãðà ìîðäîð\moonloader\lib\lib\samp\events\core.lua:126>
[ML] (error) flood_warning.lua: Script died due to an error. (105E092C)
Lua:
--библиотеки
script_author('Lance_Sterling')
require 'lib.moonloader'
local imgui = require 'imgui'
local encoding = require "encoding"
local memory = require 'memory'
local ffi = require 'ffi'
local imguiad = require 'lib.imgui_addons'
local samp = require 'lib.samp.events'
local rkeys = require 'lib.rkeys'
local inicfg = require 'inicfg'
local GK = require 'game.keys'
local hook = require("hooks")
local vkeys = require 'vkeys'
local dlstatus = require('moonloader').download_status
local Matrix3X3 = require "matrix3x3"
local Vector3D = require "vector3d"
local fa = require 'fAwesome5'
encoding.default = 'CP1251'
u8 = encoding.UTF8

--переменные
flood = 0

--код
function main()
    while not isSampAvailable() do wait(100) end
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    sampAddChatMessage('{FF8000}[Flood Warning]: {FFFFFF}Загружен')
    sampAddChatMessage('{FF8000}[Flood Warning]: {FFFFFF}Автор сидит тут: https://vk.com/maksytka_desighner')
end
function flood_warning()
    printStyledString('WARNING', 1500, 2)
    addOneOffSound(0, 0, 0, 1052)
    sampAddChatMessage('{FF8000}[Flood Warning]: {FFFFFF}'..lastMessage[nick].nick..'['..lastMessage[nick].id..'] написал(а) сообщение в чат более 3-х раз!!')
end
function samp.onServerMessage(color, text)
    if text:find('(%w+_%w+)%[(%d+)%]') then
        nick, id = text:match('(%w+_%w+)%[(%d+)%]')
        flood = flood + 1
        checkFlood()
    end
end
function checkFlood(nick, id)
    local lastMessage = {}

    if lastMessage[nick] then
        local curTime = os.time()
        local diff = curTime - lastMessage[nick].time

        if diff <= 5 then
            flood_warning()
        end
    end

    lastMessage[nick] = {
        nick = nick,
        id = id,
        time = os.time()
    }
end
 

teresen

Участник
28
16
В функции checkFlood переменная lastMessage не была инициализирована. Чтобы исправить ошибку, прежде всего, нужно инициализировать переменную. Это можно сделать, добавив код после объявления переменной flood:
Код:
local lastMessage = {}
 

Lance Sterling

Потрачен
Автор темы
140
8
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
В функции checkFlood переменная lastMessage не была инициализирована. Чтобы исправить ошибку, прежде всего, нужно инициализировать переменную. Это можно сделать, добавив код после объявления переменной flood:
Код:
local lastMessage = {}
как только пишу в чат любое одно сообщение сразу ошибка
[ML] (system) flood_warning.lua: Loaded successfully.
[ML] (error) flood_warning.lua: D:\готовая норм игра мордор\moonloader\flood_warning.lua:60: table index is nil
stack traceback:
D:\готовая норм игра мордор\moonloader\flood_warning.lua:60: in function 'checkFlood'
D:\готовая норм игра мордор\moonloader\flood_warning.lua:42: in function 'callback'
...норм игра мордор\moonloader\lib\lib\samp\events\core.lua:77: in function 'process_event'
...норм игра мордор\moonloader\lib\lib\samp\events\core.lua:100: in function 'process_packet'
...норм игра мордор\moonloader\lib\lib\samp\events\core.lua:127: in function <...норм игра мордор\moonloader\lib\lib\samp\events\core.lua:126>
[ML] (error) flood_warning.lua: Script died due to an error. (20D9EFBC)
или как только скрипт видит любого чела с айди
 

Smeruxa

Известный
1,294
680
как только пишу в чат любое одно сообщение сразу ошибка
[ML] (system) flood_warning.lua: Loaded successfully.
[ML] (error) flood_warning.lua: D:\готовая норм игра мордор\moonloader\flood_warning.lua:60: table index is nil
stack traceback:
D:\готовая норм игра мордор\moonloader\flood_warning.lua:60: in function 'checkFlood'
D:\готовая норм игра мордор\moonloader\flood_warning.lua:42: in function 'callback'
...норм игра мордор\moonloader\lib\lib\samp\events\core.lua:77: in function 'process_event'
...норм игра мордор\moonloader\lib\lib\samp\events\core.lua:100: in function 'process_packet'
...норм игра мордор\moonloader\lib\lib\samp\events\core.lua:127: in function <...норм игра мордор\moonloader\lib\lib\samp\events\core.lua:126>
[ML] (error) flood_warning.lua: Script died due to an error. (20D9EFBC)
или как только скрипт видит любого чела с айди
конечно будет ошибка, ты обращаешься к индексу, который равен nil
massiv["Nick"] = 56 - пример правильной записи
А когда используешь функцию в переменную пишешь НИЧЕГО
checkFlood()
massiv[nil] = nil
Когда нужно заполнять переменные раз уж ты их создал
checkFlood(nick, id)
massiv[nick] = id
Ошибка в 41 строке
 

Lance Sterling

Потрачен
Автор темы
140
8
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
конечно будет ошибка, ты обращаешься к индексу, который равен nil
massiv["Nick"] = 56 - пример правильной записи
А когда используешь функцию в переменную пишешь НИЧЕГО
checkFlood()
massiv[nil] = nil
Когда нужно заполнять переменные раз уж ты их создал
checkFlood(nick, id)
massiv[nick] = id
Ошибка в 41 строке
блять пиздец я даун ничего не понимаю, спасибо что я понял что я дебил