hoojpop
@hoojpop

Ошибка скрипта: bad argument #2 to 'format' (number expected, got string) stack traceback: [C]: in function 'format'?

Возникает ошибка при запросе функции:

function SampEvents.onServerMessage(color, msg)
        if msg:find('Вы можете взять %d+ материалов.') and not sampIsChatInputActive() then
            sampSendChat(string.format('/get guns %d', msg))
        end
    end


Ошибка:

[ML] (error) main.lua: D:\Games\SAMP\moonloader\main.lua:34: bad argument #2 to 'format' (number expected, got string)
    stack traceback:
        [C]: in function 'format'
        D:\Games\SAMP\moonloader\main.lua:34: in function 'callback'
        D:\Games\SAMP\moonloader\lib\samp\events\core.lua:80: in function <D:\Games\SAMP\moonloader\lib\samp\events\core.lua:54>
    [ML] (error) main.lua: Script died due to error. (1E3671AC)


Что не так, подскажите пожалуйста.
  • Вопрос задан
  • 1796 просмотров
Решения вопроса 1
dollar
@dollar Куратор тега Lua
Делай добро и бросай его в воду.
sampSendChat(string.format('/get guns %d', tonumber(msg)))


А еще можно проще:
sampSendChat('/get guns ' .. msg))
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@q27off
В качестве аргумента для функции string.format передается строка, а не число. Замените модификатор в описателе формата с %d на %s.
Ответ написан
Комментировать
При использовании аргумента %d функция string.format() ожидает, что вы передадите ей число вторым аргументом. Но, судя по описанию ошибки, вы передаёте строку

Попробуйте так
sampSendChat(string.format('/get guns %s', msg))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы