Неактуально пиздец с луа я уже забелся

Lance_Sterling

Известный
Автор темы
802
284
Версия MoonLoader
.026-beta
вот код
какого хуя выводится условие
elseif formacmd:match('offwarn %w+_%w+ ') then
sampAddChatMessage('/a '..formaname..', вводи: /offwarn [Ник] [Причина]2', -1)
если должно
elseif formacmd:match('offwarn %w+_%w+ .+') then
-- lastCmd = '/'..formacmd..' '..u8:decode(mainIni.settings.forma)..' '..formaname:match('%a')..'.'..formasname
sampAddChatMessage('huy naxyu')
Код:
sampRegisterChatCommand('test', function()
        formacmd = 'offwarn Porn_Hub Офф от смерти(Ранее)'
        formaname = 123
        if formacmd == 'offwarn' then
            sampAddChatMessage('/a '..formaname..', вводи: /offwarn [Ник] [Причина]4', -1)
        elseif formacmd == 'offwarn ' then
            sampAddChatMessage('/a '..formaname..', вводи: /offwarn [Ник] [Причина]3', -1)
        elseif formacmd:match('offwarn %w+_%w+  .+') then
            -- lastCmd = '/'..formacmd..' '..u8:decode(mainIni.settings.forma)..' '..formaname:match('%a')..'.'..formasname
            sampAddChatMessage('huy naxyu')
        elseif formacmd:match('offwarn %w+_%w+ ') then
            sampAddChatMessage('/a '..formaname..', вводи: /offwarn [Ник] [Причина]2', -1)
        elseif formacmd:match('offwarn %w+_%w+') then
            sampAddChatMessage('/a '..formaname..', вводи: /offwarn [Ник] [Причина]1', -1)
        end
    end)

upd: сука это ебаный пробел в formacmd:match('offwarn %w+_%w+--[[Вот тут пробел блять ебать я клоун]] .+')
 
Последнее редактирование:
  • Ха-ха
Реакции: Andrinall
Решение
elseif formacmd:match('offwarn %w+_%w+ ') then
Lua:
-- где-то выше main
local cmdlist = {
    ['test'] = { "%w+_%w+", ".*" }
}

-- в main
sampRegisterChatCommand('test', function(forma)
    if #forma == 0 then return end
    if checkArgs('/test', forma) then
        print('аргументы гуд')
        return
    end
    print('аргументы капут')
end

функцию checkArgs можно стащить из этого сообщения -

Andrinall

Известный
688
533
elseif formacmd:match('offwarn %w+_%w+ ') then
Lua:
-- где-то выше main
local cmdlist = {
    ['test'] = { "%w+_%w+", ".*" }
}

-- в main
sampRegisterChatCommand('test', function(forma)
    if #forma == 0 then return end
    if checkArgs('/test', forma) then
        print('аргументы гуд')
        return
    end
    print('аргументы капут')
end

функцию checkArgs можно стащить из этого сообщения -
 

Lance_Sterling

Известный
Автор темы
802
284
Lua:
-- где-то выше main
local cmdlist = {
    ['test'] = { "%w+_%w+", ".*" }
}

-- в main
sampRegisterChatCommand('test', function(forma)
    if #forma == 0 then return end
    if checkArgs('/test', forma) then
        print('аргументы гуд')
        return
    end
    print('аргументы капут')
end

функцию checkArgs можно стащить из этого сообщения -
звучит как не плохой код, спасибо но я пофиксил :)
хороший код я не пишу, так что обьясни
['test'] = { "%w+_%w+", ".*" }
че это тест че как работает не понел вопще
 

Andrinall

Известный
688
533
звучит как не плохой код, спасибо но я пофиксил :)
хороший код я не пишу, так что обьясни
['test'] = { "%w+_%w+", ".*" }
че это тест че как работает не понел вопще
это таблица, где в качестве ключей - имя команды без / в начале, содержимое ячейки - аргументы, их может быть несколько и они будут заключены в отдельную таблицу(варианты)

['test'] = { { "%w+_%w+", "%d+" }, ".*" }
тоесть в 1 аргументе или ник или какое-то число, например id, а во 2 - всё что есть до конца строки
 

Lance_Sterling

Известный
Автор темы
802
284
это таблица, где в качестве ключей - имя команда без / а начале, содержимое ячейки - аргументы, их может быть несколько и они будут заключены в отдельную таблицу(варианты)

['test'] = { { "%w+_%w+", "%d+" }, ".*" }
тоесть в 1 аргументе или ник или какое-то число, например id, а во 2 - всё что есть до конца строки
звучит ахуенно, как юзать?😆
да я нуб и вопще не знаю как че тут делать
 

Andrinall

Известный
688
533
звучит ахуенно, как юзать?😆
да я нуб и вопще не знаю как че тут делать
тут зависит всё от того куда ты это хочешь пихнуть.
Вообще это хорошо подходит для принятия форм из админского чата, но можно и в другом использовать.

По сути просто забиваешь таблицу паттернами для аргументов, указывая ключом для ячейки имя команды и всё, просто через checkArgs("/команда", аргументы) проверяешь всё ли совпало
 

Lance_Sterling

Известный
Автор темы
802
284
тут зависит всё от того куда ты это хочешь пихнуть.
Вообще это хорошо подходит для принятия форм из админского чата, но можно и в другом использовать.

По сути просто забиваешь таблицу паттернами для аргументов, указывая ключом для ячейки имя команды и всё, просто через checkArgs("/команда", аргументы) проверяешь всё ли совпало
так я это и делаю)
у меня куча команд, можешь языком простых смертных обьяснить?👉👈
 

Andrinall

Известный
688
533
так я это и делаю)
у меня куча команд, можешь языком простых смертных обьяснить?👉👈
Гуглишь lua pattern matching, читаешь это всё, усваиваешь, пробуешь как работает на деле...

Потом берёшь и составляешь, скажем так список из имен команд и паттернов для сравнения.

Lua:
local cmdlist = {
    ["ban"] = { { "%d+", "%w+_%w+" }, { "%d+", "%d+%w" }, ".*" }
}

тоесть /ban [ID/Nick] [time/time m, h, d, w] [reason]
time m, h, d, w это типо с указанием конкретной ед. измерения времени(минуты, часы, дни, недели)