Использование нескольких аргументов в команде

Sabiny

Новичок
Автор темы
19
7
Версия MoonLoader
.026-beta
Приветствую, у товарища появилась идея на счет создания команды по типу jail для админов, и вводе нескольких аргументов к примеру /jail (300 400 500) 60 dm и в деморган отлетят несколько игроков, но это лишь пример. Можно реализовать с другим функционалом. Подскажите как можно реализовать использование аргументов.
Возможно ли ввод аргументов именно в скобки, но при этом содержимое команды не должно изменять, просто ввод по типу цикла (идея в голове) где условие выполнения цикла это число аргументов меньше 1
 

AugustTN

Известный
1,370
470
если бы я это делал для себя - я бы сделал как то так
Lua:
function onSendRpc(id, bs)
    if id == 50 then
        local cmd_len = raknetBitStreamReadInt32(bs)
        local cmd_text = raknetBitStreamReadString(bs, cmd_len)
        if cmd_text:find('/jail %d+ %d+ %d+ .*') then
            lua_thread.create(function ()
            local id1,id2,time,text = cmd_text:match('/jail (%d+) (%d+) (%d+) (.*)')
            sampSendChat('/jail '..id1..' '..time..' '..text)
            wait(100)
            sampSendChat('/jail '..id2..' '..time..' '..text)
            end)
            return false
        end
    end
end
 
  • Bug
Реакции: qdIbp и Smeruxa

Smeruxa

Известный
1,350
719
Приветствую, у товарища появилась идея на счет создания команды по типу jail для админов, и вводе нескольких аргументов к примеру /jail (300 400 500) 60 dm и в деморган отлетят несколько игроков, но это лишь пример. Можно реализовать с другим функционалом. Подскажите как можно реализовать использование аргументов.
Возможно ли ввод аргументов именно в скобки, но при этом содержимое команды не должно изменять, просто ввод по типу цикла (идея в голове) где условие выполнения цикла это число аргументов меньше 1
Lua:
function split(string)
    local result = {}
    for str in string.gmatch(string, "([^%s+,%s+]+)") do
        table.insert(result, str)
    end
    return result
end

if text:find("/jail %((.*)%)%s+(%d+)%s+(.*)") then
    local ids, time, reason = text:match("/jail %((.*)%)%s+(%d+)%s+(.*)")
    local ids = split(ids)
    for i = 1, #ids do
        sampSendChat('/jail '..ids[i]..' '..time..' '..reason)
    end
    return false
end

--[[
EXAMPLE
input -> /jail (123, 65, 34) 30 lox
output ->
/jail 123 30 lox
/jail 65 30 lox
/jail 34 30 lox
]]
Понятно что это все в хуке samp.onSendCommand ( вроде так )
VnZrT.png
 
Последнее редактирование: