intento de comparar dos valores incompatibles
Un script intentó comparar dos cosas que no se pueden comparar, normalmente un número contra algo que falta o que es texto.
Haz esto primero
Si pasó después de un comando, lo que se escribió en ese comando es la causa probable.
Qué significa
Se usó <, >, <= o >= entre valores que Lua no puede ordenar: attempt to compare nil with number, attempt to compare string with number, attempt to compare two table values.
== no produce esto nunca. Sólo lo hacen los cuatro operadores de orden, y eso acota la búsqueda en la línea indicada de inmediato.
Qué lo provoca
Ordenado por la frecuencia con la que es la respuesta.
- 1
Un nil de un lado
if playerMoney > pricecuando la búsqueda no devolvió nada. El mismo problema de fondo que un index-nil, una línea más tarde. - 2
Un número que llegó como cadena
Valores de configuración escritos como
"100", cargas JSON, y argumentos de comandos. Los argumentos de comandos de FiveM son SIEMPRE cadenas, incluso en/givemoney 1 5000. - 3
Comparar un vector con un número
#(a - b) > 5.0es lo correcto.(a - b) > 5.0compara vectores. - 4
Una columna de la base de datos leída directamente
oxmysql devuelve lo que le da MySQL, y las columnas DECIMAL pueden llegar como cadenas.
Cómo saber cuál es el tuyo
print(type(izquierda), type(derecha))
El mensaje ya nombra los dos tipos, así que en realidad sólo estás confirmando qué variable lleva cuál.
Dónde mirar
La línea que nombra. Si el valor vino de un comando, mirá el análisis de los argumentos; si vino de la base de datos, mirá el tipo de la columna.
Cómo arreglarlo
Convertí una sola vez, en la frontera:
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
-- de acá para abajo es seguro
end)Y para la distancia, usá el operador de longitud:
if #(GetEntityCoords(ped) - target) > 5.0 then return end
¿Sigues atascado en tu propio código?
Esta página es lo que suele significar este error. Pega tu consola en Server Fixer y ordenará todo lo que haya en ella y te dirá qué hacer primero; y si prefieres no tocarlo, ORBIE puede reparar el script y devolverte el recurso listo para soltar.
bug_reportAbrir el Server FixerPara este tipo de error, el Script Optimizer lee el script y repara el código que hay detrás.
Errores que viajan con este
- intento de hacer aritmética con un valor nil
- intento de indexar un valor nil
- no se puede reanudar una corrutina muerta
- SCRIPT ERROR en citizen:/scripting/lua/scheduler.lua
- intento de indexar un número, booleano o texto
- intento de ceder a través de un límite de llamada en C
- desbordamiento de pila
- el índice de la tabla es nil