Неудачная попытка реализации с string.format()

Scra1chy

Известный
Автор темы
36
2
Привет. На сервере есть команда /su (id) (stars) (reason), например: /su 1 3 test. Сейчас при вводе команды и параметров либо ничего не происходит, либо скрипт уходит в ошибку.
Как сделать что бы оно работало?
p.s извиняюсь за такое быдло описание и код)

Lua:
function cmdSu(id, stars, reason)
    lua_thread.create(function()
        sampSendChat(string.format("/su %d %d %s", id, stars, reason))
        print(string.format("/su %d %d %s", id, stars, reason))
        -----------------------------------------------
        --sampSendChat(string.format("/su %d %d %s") id, stars, reason)
        --print(string.format("/su %d %d %s") id, stars, reason)
        ----------------------
        --sampSendChat("/su ", id, stars, reason)
        --sampSendChat(string.format("/su " .. '%id' .. stars .. reason))
        --print(string.format("/su " .. '%id' .. stars .. reason))
        wait(1000)
        sampSendChat("текст")
    end)
end


Код:
[ML] (error) Police Helper | Remake: ...Scratchy\Desktop\GTA SA LUA\moonloader\Police_Helper.lua:142: bad argument #2 to 'format' (number expected, got nil)
stack traceback:
    [C]: in function 'format'
    ...Scratchy\Desktop\GTA SA LUA\moonloader\Police_Helper.lua:142: in function <...Scratchy\Desktop\GTA SA LUA\moonloader\Police_Helper.lua:141>
stack traceback:
    [C]: in function 'create'
    ...Scratchy\Desktop\GTA SA LUA\moonloader\Police_Helper.lua:141: in function <...Scratchy\Desktop\GTA SA LUA\moonloader\Police_Helper.lua:140>
[ML] (error) Police Helper | Remake: Script died due to an error. (162417C4)
 
Последнее редактирование:

Scra1chy

Известный
Автор темы
36
2
Речь шла об аргументах в функции, а не о том примере
Честно, не понял вообще( сейчас имею такое

Lua:
function split(str, delim, plain)
    local tokens, pos, plain = {}, 1, not (plain == false) --[[ delimiter is plain text by default ]]
    repeat
        local npos, epos = string.find(str, delim, pos, plain)
        table.insert(tokens, string.sub(str, pos, npos and npos - 1))
        pos = epos and epos + 1
    until not pos
    return tokens
end
-------------------------------------------------

function cmdSu(params)
    local strings = split(id, ' ')
    lua_thread.create(function()
        local id, stars, reason = unpack(split(params, ' '))
        print("/su "..id.." "..stars.." "..reason)
        wait(1000)
        sampSendChat("текст")
    end)
end
 

Yuan

Участник
77
26
Честно, не понял вообще( сейчас имею такое

Lua:
function split(str, delim, plain)
    local tokens, pos, plain = {}, 1, not (plain == false) --[[ delimiter is plain text by default ]]
    repeat
        local npos, epos = string.find(str, delim, pos, plain)
        table.insert(tokens, string.sub(str, pos, npos and npos - 1))
        pos = epos and epos + 1
    until not pos
    return tokens
end
-------------------------------------------------

function cmdSu(params)
    local strings = split(id, ' ')
    lua_thread.create(function()
        local id, stars, reason = unpack(split(params, ' '))
        print("/su "..id.." "..stars.." "..reason)
        wait(1000)
        sampSendChat("текст")
    end)
end
Как сложно. Попробуй так:

Lua:
function cmdSu(params)
    local result, _, id, stars, reason = params:find("^(%d+)%s(%d+)%s(.-)$")
    if result then
        print("/su "..id.." "..stars.." "..reason)
        print(strinf.format("/su %d %d %s", tonumber(id), tonumber(stars), reason))
        lua_thread.create(function()
            wait(1000)
            sampSendChat("текст")
        end)
    else
        print("Аргументы не найдены")
    end
end
 
  • Нравится
Реакции: Scra1chy

Scra1chy

Известный
Автор темы
36
2
Как сложно. Попробуй так:

Lua:
function cmdSu(params)
    local result, _, id, stars, reason = params:find("^(%d+)%s(%d+)%s(.-)$")
    if result then
        print("/su "..id.." "..stars.." "..reason)
        print(strinf.format("/su %d %d %s", tonumber(id), tonumber(stars), reason))
        lua_thread.create(function()
            wait(1000)
            sampSendChat("текст")
        end)
    else
        print("Аргументы не найдены")
    end
end

Благодарю)

Как сложно. Попробуй так:

Lua:
function cmdSu(params)
    local result, _, id, stars, reason = params:find("^(%d+)%s(%d+)%s(.-)$")
    if result then
        print("/su "..id.." "..stars.." "..reason)
        print(strinf.format("/su %d %d %s", tonumber(id), tonumber(stars), reason))
        lua_thread.create(function()
            wait(1000)
            sampSendChat("текст")
        end)
    else
        print("Аргументы не найдены")
    end
end
Есть ссылки что бы можно было узнать поподробней об этом?) find("^(%d+)%s(%d+)%s(.-)$") и другом