tentativa de comparar dois valores incompatíveis
Um script tentou comparar duas coisas que não dá para comparar, normalmente um número contra algo que falta ou que é texto.
Faça isto primeiro
Se aconteceu depois de um comando, o que foi digitado nele é a causa provável.
O que significa
Foi usado <, >, <= ou >= entre valores que o Lua não consegue ordenar: attempt to compare nil with number, attempt to compare string with number, attempt to compare two table values.
== nunca produz isso. Só os quatro operadores de ordem produzem, e isso estreita a busca na linha indicada na hora.
O que causa isso
Ordenado pela frequência com que é a resposta.
- 1
Um nil de um lado
if playerMoney > pricequando a busca não devolveu nada. O mesmo problema de fundo que um index-nil, uma linha depois. - 2
Um número que chegou como string
Valores de configuração escritos como
"100", cargas JSON, e argumentos de comandos. Os argumentos de comandos do FiveM são SEMPRE strings, inclusive em/givemoney 1 5000. - 3
Comparar um vetor com um número
#(a - b) > 5.0é o certo.(a - b) > 5.0compara vetores. - 4
Uma coluna do banco lida diretamente
O oxmysql devolve o que o MySQL dá, e colunas DECIMAL podem chegar como strings.
Como saber qual é o seu
print(type(esquerda), type(direita))
A mensagem já nomeia os dois tipos, então na verdade você só está confirmando qual variável tem qual.
Onde olhar
A linha que ele nomeia. Se o valor veio de um comando, olhe a análise dos argumentos; se veio do banco, olhe o tipo da coluna.
Como consertar
Converta uma vez só, na fronteira:
RegisterCommand('givemoney', function(source, args)
local target = tonumber(args[1])
local amount = tonumber(args[2])
if not target or not amount or amount <= 0 then return end
-- daqui para baixo é seguro
end)E para distância, use o operador de comprimento:
if #(GetEntityCoords(ped) - target) > 5.0 then return end
Ainda travado no seu próprio código?
Esta página é o que esse erro costuma significar. Cole o seu console no Server Fixer e ele vai ordenar tudo o que estiver lá e te dizer o que fazer primeiro; e se você preferir não mexer, o ORBIE consegue consertar o script e te devolver o resource pronto para soltar.
bug_reportAbrir o Server FixerPara esse tipo de erro, o Script Optimizer lê o script e conserta o código por trás disso.
Erros que andam junto com este
- tentativa de fazer aritmética com um valor nil
- tentativa de indexar um valor nil
- não dá para retomar uma corrotina morta
- SCRIPT ERROR em citizen:/scripting/lua/scheduler.lua
- tentativa de indexar um número, booleano ou texto
- tentativa de yield através de um limite de chamada em C
- estouro de pilha
- o índice da tabela é nil