Ir para conteúdo
  • Cadastre-se

(Resolvido)[RESOLVIDO] Talkactions ver quantidade de money


Ir para solução Resolvido por Balkalima,

Posts Recomendados

  • 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 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  :cool:

 

Link para o post
Compartilhar em outros sites

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

 

Link para o post
Compartilhar em outros sites

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.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo