Не понимаю как реализовать функцию с printString

Brooklyn123

Новичок
Автор темы
24
0
Версия MoonLoader
.027.0-preview
У меня есть код, который ловит репорт, хотелось бы чтобы в части с функцией, было 2 printString
1) который активируется, когда репорт словлен
Lua:
if text:find('%[(%W+)%] от (%w+_%w+)%[(%d+)%]:') and active and not sampIsCursorActive() then
        sampSendChat('/ot')
        active = not active
        printString('rep: ~g~poimal', 1500)
    end

2) когда репорт не удалось словить
Как это можно реализовать?

Полный код

Lua:
require 'lib.moonloader'
local sampev = require 'lib.samp.events'
local vkeys = require 'vkeys'

local active = false

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end

    sampAddChatMessage('{7442c8}[rep]: {87CEFA}Скрипт загружен!', -1)

    while true do
        wait(0)
        if isKeyJustPressed(0x73) and not isSampfuncsConsoleActive() and not sampIsChatInputActive() and not sampIsDialogActive() and not isPauseMenuActive() then
            active = not active
            printString('rep: '..(active and '~g~activated' or '~r~disabled'), 1500)
        end
    end
end

function sampev.onServerMessage(color, text)
    if text:find('%[(%W+)%] от (%w+_%w+)%[(%d+)%]:') and active and not sampIsCursorActive() then
        sampSendChat('/ot')
        active = not active
        printString('rep: ~g~poimal', 1500)
    end
end
 
Решение
function onReceivePacket(id, bs)
local v = {}
for i = 1, raknetBitStreamGetNumberOfBytesUsed(bs) do
table.insert(v, raknetBitStreamReadInt8(bs))
end
raknetBitStreamResetReadPointer(bs)
raknetBitStreamIgnoreBits(bs, 8)
if raknetBitStreamReadInt8(bs) then
raknetBitStreamIgnoreBits(bs, 32)
local len = raknetBitStreamReadInt32(bs)
if len > 0 and len < 1024 then
local text = raknetBitStreamReadString(bs, len)
if text:find('Никто из игроков не задавал') and active then
printStringNow('Oh... ~r~Ne poimal')
end
end
end
end

MrRazrab

Известный
487
237
Lua:
function onReceivePacket(id, bs)
    local v = {}
    for i = 1, raknetBitStreamGetNumberOfBytesUsed(bs) do
        table.insert(v, raknetBitStreamReadInt8(bs))
    end
    raknetBitStreamResetReadPointer(bs)
    raknetBitStreamIgnoreBits(bs, 8)
    if raknetBitStreamReadInt8(bs) then
        raknetBitStreamIgnoreBits(bs, 32)
        local len = raknetBitStreamReadInt32(bs)
        if len > 0 and len < 1024 then
            local text = raknetBitStreamReadString(bs, len)
            if text:find('Никто из игроков не задавал') then
                printStringNow('Oh... ~r~Ne poimal')
            end
        end
    end
end
 

Brooklyn123

Новичок
Автор темы
24
0
Lua:
function onReceivePacket(id, bs)
    local v = {}
    for i = 1, raknetBitStreamGetNumberOfBytesUsed(bs) do
        table.insert(v, raknetBitStreamReadInt8(bs))
    end
    raknetBitStreamResetReadPointer(bs)
    raknetBitStreamIgnoreBits(bs, 8)
    if raknetBitStreamReadInt8(bs) then
        raknetBitStreamIgnoreBits(bs, 32)
        local len = raknetBitStreamReadInt32(bs)
        if len > 0 and len < 1024 then
            local text = raknetBitStreamReadString(bs, len)
            if text:find('Никто из игроков не задавал') then
                printStringNow('Oh... ~r~Ne poimal')
            end
        end
    end
end
а можно ли сделать как-то, чтобы оно было в sapmev,onServerMessage ?
 

Brooklyn123

Новичок
Автор темы
24
0
зачем получать данные с цеф в функции получения серверного сообщения в чате?
я имею ввиду можно ли реализовать это в функции sapmev,onServerMessage? Чтобы отдельную функцию не писать
 

MrRazrab

Известный
487
237
я имею ввиду можно ли реализовать это в функции sapmev,onServerMessage? Чтобы отдельную функцию не писать
нет, оказывается разные функции выполняют разные функции, поэтому нельзя в чате найти цеф уведомление
 

Brooklyn123

Новичок
Автор темы
24
0
нет, оказывается разные функции выполняют разные функции, поэтому нельзя в чате найти цеф уведомление
Нельзя ли сделать так, чтобы при открывании диалогового окна вылазила выполнялась эта функция

Lua:
if text:find('%[(%W+)%] от (%w+_%w+)%[(%d+)%]:') and active and not sampIsCursorActive() then
        sampSendChat('/ot')
        active = not active
        printString('rep: ~g~poimal', 1500)
end

А если диалоговое окно не открывается то писалось "не поймал" и не прекращалась ловля репорта?
 

MrRazrab

Известный
487
237
Нельзя ли сделать так, чтобы при открывании диалогового окна вылазила выполнялась эта функция

Lua:
if text:find('%[(%W+)%] от (%w+_%w+)%[(%d+)%]:') and active and not sampIsCursorActive() then
        sampSendChat('/ot')
        active = not active
        printString('rep: ~g~poimal', 1500)
end

А если диалоговое окно не открывается то писалось "не поймал" и не прекращалась ловля репорта?
можно но мне лень делать весь скрипт за тебя