lua

Lance Sterling

Потрачен
Автор темы
140
8
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
помогите сделать скрипт, если чел флудит в чат три раза любым сообщением то выводит варнинг Lua
я вопщем попытался сделать и мне скрипт флудит каждым сообщением которое содержит ник и ид, код:
желательно кидать не весь код сразу а то что изменилось что бы я понял ваш ход действий
@chapo

Код:
--библиотеки

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



--переменные

flood1 = 0

flood2 = 0

flood3 = 0



--код

function main()

    if not isSampLoaded() or not isSampfuncsLoaded() then return end

    while not isSampAvailable() do wait(100) 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}'..nick3..'['..id3..'] написал(а) сообщение в чат более 3-х раз!!')

end

function samp.onServerMessage(color, text)

    if text:find('(%w+_%w+)%[(%d+)%]') then

        nick, id = text:match('(%w+_%w+)%[(%d+)%]')

        flood1 = 1

        if text:find('(%w+_%w+)%[(%d+)%]') then

            nick2, id2 = text:match('(%w+_%w+)%[(%d+)%]')

            if nick == nick2 then

                flood2 = 1

                if text:find('(%w+_%w+)%[(%d+)%]') then

                    nick3, id3 = text:match('(%w+_%w+)%[(%d+)%]')

                    if nick2 == nick3 then

                        flood3 = 1

                        flood_warning()

                    end

                end

            end

        end

    end
end
 

teresen

Участник
28
16
Код:
local samp = require("samp.events")
function main()

    if not isSampLoaded() or not isSampfuncsLoaded() then return end

    while not isSampAvailable() do wait(100) 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}'..nick3..'['..id3..'] написал(а) сообщение в чат более 3-х раз!!')

end

function samp.onServerMessage(color, text)

    if text:find('(%w+_%w+)%[(%d+)%]') then

        nick, id = text:match('(%w+_%w+)%[(%d+)%]')

        flood1 = 1

        if text:find('(%w+_%w+)%[(%d+)%]') then

            nick2, id2 = text:match('(%w+_%w+)%[(%d+)%]')

            if nick == nick2 then

                flood2 = 1

                if text:find('(%w+_%w+)%[(%d+)%]') then

                    nick3, id3 = text:match('(%w+_%w+)%[(%d+)%]')

                    if nick2 == nick3 then

                        flood3 = 1

                        flood_warning()

                    end

                end

            end

        end

    end

end
Вот исправленный вроде.
 
Последнее редактирование:

YarikVL

Известный
Проверенный
4,814
1,820
помогите сделать скрипт, если чел флудит в чат три раза любым сообщением то выводит варнинг Lua
я вопщем попытался сделать и мне скрипт флудит каждым сообщением которое содержит ник и ид, код:
желательно кидать не весь код сразу а то что изменилось что бы я понял ваш ход действий
@chapo

Код:
--библиотеки

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



--переменные

flood1 = 0

flood2 = 0

flood3 = 0



--код

function main()

    if not isSampLoaded() or not isSampfuncsLoaded() then return end

    while not isSampAvailable() do wait(100) 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}'..nick3..'['..id3..'] написал(а) сообщение в чат более 3-х раз!!')

end

function samp.onServerMessage(color, text)

    if text:find('(%w+_%w+)%[(%d+)%]') then

        nick, id = text:match('(%w+_%w+)%[(%d+)%]')

        flood1 = 1

        if text:find('(%w+_%w+)%[(%d+)%]') then

            nick2, id2 = text:match('(%w+_%w+)%[(%d+)%]')

            if nick == nick2 then

                flood2 = 1

                if text:find('(%w+_%w+)%[(%d+)%]') then

                    nick3, id3 = text:match('(%w+_%w+)%[(%d+)%]')

                    if nick2 == nick3 then

                        flood3 = 1

                        flood_warning()

                    end

                end

            end

        end

    end
end
Зачем создавать идентичную тему?
 

Lance Sterling

Потрачен
Автор темы
140
8
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Код:
function main()

    if not isSampLoaded() or not isSampfuncsLoaded() then return end

    while not isSampAvailable() do wait(100) 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}'..nick3..'['..id3..'] написал(а) сообщение в чат более 3-х раз!!')

end

function samp.onServerMessage(color, text)

    if text:find('(%w+_%w+)%[(%d+)%]') then

        nick, id = text:match('(%w+_%w+)%[(%d+)%]')

        flood1 = 1

        if text:find('(%w+_%w+)%[(%d+)%]') then

            nick2, id2 = text:match('(%w+_%w+)%[(%d+)%]')

            if nick == nick2 then

                flood2 = 1

                if text:find('(%w+_%w+)%[(%d+)%]') then

                    nick3, id3 = text:match('(%w+_%w+)%[(%d+)%]')

                    if nick2 == nick3 then

                        flood3 = 1

                        flood_warning()

                    end

                end

            end

        end

    end

end
Вот исправленный вроде.
не работает
 

teresen

Участник
28
16
Проверьте все ли библиотеки вы подключили.

Код:
local samp = require("samp.events")
function main()

    if not isSampLoaded() or not isSampfuncsLoaded() then return end

    while not isSampAvailable() do wait(100) 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}'..nick3..'['..id3..'] написал(а) сообщение в чат более 3-х раз!!')

end

function samp.onServerMessage(color, text)

    if text:find('(%w+_%w+)%[(%d+)%]') then

        nick, id = text:match('(%w+_%w+)%[(%d+)%]')

        flood1 = 1

        if text:find('(%w+_%w+)%[(%d+)%]') then

            nick2, id2 = text:match('(%w+_%w+)%[(%d+)%]')

            if nick == nick2 then

                flood2 = 1

                if text:find('(%w+_%w+)%[(%d+)%]') then

                    nick3, id3 = text:match('(%w+_%w+)%[(%d+)%]')

                    if nick2 == nick3 then

                        flood3 = 1

                        flood_warning()

                    end

                end

            end

        end

    end

end
Вот исправленный вроде.
Я подправил чутка. Но если и так не получится, то у вас в коде в библиотеках точно что-то не то.
 

Lance Sterling

Потрачен
Автор темы
140
8
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Проверьте все ли библиотеки вы подключили.


Я подправил чутка. Но если и так не получится, то у вас в коде в библиотеках точно что-то не то.
sa-mp-051.png


как только скрипт видит чела с ником и айди он сразу решает что он флудер
 
  • Эм
  • Bug
Реакции: Homayk и YarikVL

teresen

Участник
28
16
Посмотреть вложение 180628

как только скрипт видит чела с ником и айди он сразу решает что он флудер
Вам нужно использовать функцию samp.onServerMessage() для проверки частоты сообщений, которые отправляет игрок. Вы можете сохранить информацию о последних двух сообщениях игрока и проверить, что они были отправлены в пределах определенного временного промежутка. Если игрок превысил этот предел, вы можете сообщить о флудере.
 

Lance Sterling

Потрачен
Автор темы
140
8
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Вам нужно использовать функцию samp.onServerMessage() для проверки частоты сообщений, которые отправляет игрок. Вы можете сохранить информацию о последних двух сообщениях игрока и проверить, что они были отправлены в пределах определенного временного промежутка. Если игрок превысил этот предел, вы можете сообщить о флудере.
можно код? плиз

а то я чайник и не понел ничего, в коде понятнее будет
 
  • Эм
Реакции: YarikVL

teresen

Участник
28
16
можно код? плиз

Я не буду вам вписывать функцию в ваш код. Включите логику и попробуйте сами.
Скину вам пример кода с этой функцией:
Код:
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

function samp.onServerMessage(color, text)
    if text:find('(%w+_%w+)%[(%d+)%]') then
        nick, id = text:match('(%w+_%w+)%[(%d+)%]')
        checkFlood(nick, id)
    end
end
Не думаю что вам нужно описание каждого действия тут.