function samp.onServerMessage помогите

Gustafen

Новичок
Автор темы
3
0
Версия MoonLoader
.026-beta
Помогите решить проблему, раньше был чат админов в самп вот такой: А стал такой: И скрипт по принятии форм перестал принимать формы и выводить сообщения о том что: [Info] {FF8C00}Пришла форма, чтобы принять ее нажмите >> K << | Чтобы отклонить >> P <<
Вот скрипт, помогите сделать чтобы видело новый админ чат и можно было принимать формы других админов:
Lua:
require 'lib.moonloader'
local samp = require 'lib.samp.events'

local active_forma = false
local stop_forma = false

local allForms = {"kick", "mute", "jail", "jailoff", "sethp", "sban", "banoff", "muteoff", "sbanoff", "spplayer", "slap", "unmute", "unjail", "sban", "spcar", "ban", "sban", "warn", "skick", "setskin", "ao", "unban", "unwarn", "setskin", "skick", "banip", "offban", "offwarn", "plveh", "sban", "ptp", "o", "aad", "givegun", "avig", "aunvig", "setadmin", "givedonate", "spawncars",
"mpwin", "prefix", "asellhouse", "delacc", "asellbiz", "money", "test", 'iban'}   

function main()
    while not isSampLoaded() do wait(100) end
    while true do
        wait(0)
    end
end

function samp.onServerMessage(clr, text)
    if active_forma then
        if text:find('%[.*%] (%w+_?%w+)%[(%d+)%]%: [Forma] +') then
            printStyledString("Form skipped", 1000, 4)
            active_forma = false
            stop_forma = true
        end
    end
    for k,v in ipairs(allForms) do
        if text:match("%[.*%] "..getMyNick().."%["..getMyId().."%]%: /"..v.."%s") then
            return true
        else
            if text:match("%[.*%] (%w+_?%w+)%[(%d+)%]%: /"..v.."%s") then
                admin_nick, admin_id, admin_other = text:match("%[.*%] (%w+_?%w+)%[(%d+)%]%: /"..v.."%s(.*)")
                sampAddChatMessage('{FF0000}[Info] {FF8C00}Пришла форма, чтобы принять ее нажмите >> K << | Чтобы отклонить >> P <<', 0xFFFF0000)
                active_forma = true
                cmd = v
                forma()
            end
        end
    end
end

function forma()
    if active_forma then
        lua_thread.create(function()
            lasttime = os.time()
            lasttimes = 0
            time_out = 10
            while lasttimes < time_out do
                lasttimes = os.time() - lasttime
                wait(0)
                printStyledString("ADMIN FORM " .. time_out - lasttimes .. " WAIT", 1000, 4)
                if lasttimes == time_out then
                    active_forma = false
                    printStyledString("Forma skipped", 1000, 4)
                end
                if isKeyJustPressed(VK_K) and not sampIsChatInputActive() and not sampIsDialogActive() then
                    printStyledString("Admin form accepted", 1000, 4)
                    sampSendChat("/"..cmd.." "..admin_other.." || "..admin_nick)
                    wait(1000)
                    sampSendChat('/a [Forma] +')
                    --lasttimes = 11
                    active_forma = false
                elseif isKeyJustPressed(VK_P) and not sampIsChatInputActive() and not sampIsDialogActive() then
                    printStyledString('You missed the form', 1000, 4)
                    --lasttimes = 11
                    active_forma = false
                end
                if stop_forma then
                    --lasttimes = 11
                    active_forma = false
                    break
                end
            end
        end)
    else   
        if isKeyJustPressed(VK_P) and not sampIsChatInputActive() and not sampIsDialogActive() then
            printStyledString('You can’t skip the form temporarily', 1000, 4)
        end
    end
end

function getMyNick()
    local result, id = sampGetPlayerIdByCharHandle(playerPed)
    if result then
        local nick = sampGetPlayerNickname(id)
        return nick
    end
end

function getMyId()
    local result, id = sampGetPlayerIdByCharHandle(playerPed)
    if result then
        return id
    end
end

А вот из чат лога админ чат:
Код:
[22:56:47] {6DB64B}[A] Joseph_Shelby[21]{ffffff}: 123

ПОМОГИТЕ ПРОШУ, УЖЕ БОЛЬШЕ НЕДЕЛИ ПЫТАЮСЬ РЕШИТЬ ЭТУ ПРОБЛЕМУ НО НЕ ПОЛУЧАЕТСЯ(
 

Gustafen

Новичок
Автор темы
3
0
Lua:
local admnick, admid, msg = text:match("%{6DB64B%}%[A%] (.+)%[(%d+)%]%{ffffff%}: (.+)")
print( admnick, admid, msg )
Сейчас попробую, а можешь подсказать куда точно прям нужно вставлять?

Lua:
local admnick, admid, msg = text:match("%{6DB64B%}%[A%] (.+)%[(%d+)%]%{ffffff%}: (.+)")
print( admnick, admid, msg )
Не помогло, ещё заметил то что я добавил в начало скрипта
Форматирование (BB-код):
sampAddChatMessage('Forms скрипт успешно загружен', 0xFFFF0000)
А сообщение при заходе в самп не высвечивается, не знаю в чём проблема, вот полностью как выглядит:

Форматирование (BB-код):
function main()
    while not isSampLoaded() do wait(100) end
    sampAddChatMessage('Forms скрипт успешно загружен', 0xFFFF0000)
    while true do
        wait(0)
    end
end

Помогите(

Lua:
local admnick, admid, msg = text:match("%{6DB64B%}%[A%] (.+)%[(%d+)%]%{ffffff%}: (.+)")
print( admnick, admid, msg )
И нужно чтобы он не просто сообщение админа видел скрипт, а именно команды /ban и т.д, чтобы как только в адм чате есть /ban допустим и айди и т.д, то он сразу это видел и высвечивалось дальше там, но то что ты сказал, не помогло решить проблему
 
Последнее редактирование:
  • Эм
Реакции: qdIbp

qdIbp

Автор темы
Проверенный
1,439
1,180
Ты же сам написал что нужна помощь с samp.onServerMessage
так что тут сложного сделать так
Lua:
if text:match("%{6DB64B%}%[A%] (.+)%[(%d+)%]%{ffffff%}: (.+)") then
     sampAddChatMessage('hui',-1)
end

И нужно чтобы он не просто сообщение админа видел скрипт, а именно команды /ban и т.д, чтобы как только в адм чате есть /ban допустим и айди и т.д, то он сразу это видел и высвечивалось дальше там, но то что ты сказал, не помогло решить проблему
Может еще за тебя в школу ходить?
 
  • Нравится
  • Вау
Реакции: Lance_Sterling и YarikVL