THE ORB
Arrancando el studio

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.

groupsEsa función deja de andarcodeNecesita un desarrollador

Haz esto primero

Si pasó después de un comando, lo que se escribió en ese comando es la causa probable.

bug_reportMejor pega tu consola entera

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. 1

    Un nil de un lado

    if playerMoney > price cuando la búsqueda no devolvió nada. El mismo problema de fondo que un index-nil, una línea más tarde.

  2. 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. 3

    Comparar un vector con un número

    #(a - b) > 5.0 es lo correcto. (a - b) > 5.0 compara vectores.

  4. 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 Fixer

Para este tipo de error, el Script Optimizer lee el script y repara el código que hay detrás.

Errores que viajan con este