Postado Abril 29, 2020 5 anos Solução Olá pessoal, estou utilizando o TFS 0.4 Bom, meu servidor tem o talkactions para ver a quantidade de money que o player tem "!q" (muito comum em diversos servidores), porem está acontecendo um problema com o método doNumberFormat pois quando eu mando o parâmetro para ele ele apresenta erro dizendo que esperava uma string e recebe null, mas eu já printei o tipo de dado que estou mandando e o tipo de dado que ele esta recebendo e ambos são string, se alguém souber o que está acontecendo O erro é este aqui: Citar [15:59:23.676] [Error - TalkAction Interface] [15:59:23.679] data/talkactions/scripts/money.lua:onSay [15:59:23.683] Description: [15:59:23.685] data/lib/050-function.lua:122: bad argument #1 to 'gsub' (string expected, got nil) [15:59:23.691] stack traceback: [15:59:23.694] [C]: in function 'gsub' [15:59:23.696] data/lib/050-function.lua:122: in function 'doNumberFormat' [15:59:23.700] data/talkactions/scripts/money.lua:4: in function <data/talkactions/scripts/money.lua:1> Código o data/talkactions/scripts/money.lua function onSay(cid, words, param, channel) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have " .. doNumberFormat(tostring(getPlayerMoney(cid))) .. " gold.") return true end Obs: já tentei mandar sem o tostring e o erro é o mesmo citado acima, o que me faz crer que o erro seja do método doNumberFormat Código do data/lib/050-function.lua function doNumberFormat(i) local str, found = string.gsub(i, "(%d)(%d%d%d)$", "%1,%2", 1), 0 repeat str, found = string.gsub(ret, "(%d)(%d%d%d),", "%1,%2,", 1) until found == 0 return str end REP+ para quem conseguir ajudar! -- Edit 1 RESOLVIDO, podem fechar o tópico O erro se encontrava, como suspeitado, no método doNumberFormat, onda na 4ª linha do 050-function.lua, estava utilizando uma variável não declarada, para quem estiver com o mesmo problema estrei colocando a solução: troque em data/lib/050-function.lua o método doNumberFormat por: function doNumberFormat(i) local str, found = string.gsub(i, "(%d)(%d%d%d)$", "%1,%2", 1), 0 repeat str, found = string.gsub(str, "(%d)(%d%d%d),", "%1,%2,", 1) until found == 0 return str end Editado Abril 29, 2020 5 anos por Balkalima Problema resolvido (veja o histórico de edições) Ajudar os outros sobre o que se sabe não dói pois amanhã quem pode precisar de ajuda é você! Só sei que nada sei. ~ Sócrates
Postado Maio 2, 2020 5 anos Olá @Balkalima, tudo bem? Aqui está o script: function onSay(cid, words, param, channel) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have " .. doNumberFormat(getPlayerMoney(cid)) .. " gold.") return true end
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.