THE ORB
Démarrage du studio

tentative de comparer deux valeurs incompatibles

Un script a tenté de comparer deux choses incomparables, en général un nombre avec quelque chose de manquant ou du texte.

groupsCette fonctionnalité cesse de marchercodeIl faut un développeur

Faites d'abord ceci

Si cela s'est produit après une commande, ce qui a été tapé dedans est la cause probable.

bug_reportCollez plutôt toute votre console

Ce que ça veut dire

<, >, <= ou >= a été utilisé entre des valeurs que Lua ne peut pas ordonner : attempt to compare nil with number, attempt to compare string with number, attempt to compare two table values.

== ne produit jamais ceci. Seuls les quatre opérateurs d'ordre le font, ce qui restreint aussitôt la recherche sur la ligne signalée.

Ce qui la provoque

Classé par fréquence : la cause la plus probable en premier.

  1. 1

    Un nil d'un côté

    if playerMoney > price alors que la recherche n'a rien renvoyé. Le même problème de fond qu'un index-nil, une ligne plus loin.

  2. 2

    Un nombre arrivé sous forme de chaîne

    Des valeurs de config écrites "100", des charges JSON, et des arguments de commande. Les arguments de commande FiveM sont TOUJOURS des chaînes, y compris dans /givemoney 1 5000.

  3. 3

    Comparer un vecteur à un nombre

    #(a - b) > 5.0 est correct. (a - b) > 5.0 compare des vecteurs.

  4. 4

    Une colonne de base lue telle quelle

    oxmysql renvoie ce que MySQL lui donne, et les colonnes DECIMAL peuvent arriver en chaînes.

Comment savoir laquelle est la vôtre

print(type(gauche), type(droite))

Le message nomme déjà les deux types : vous confirmez surtout quelle variable porte lequel.

Où regarder

La ligne nommée. Si la valeur vient d'une commande, regardez l'analyse des arguments ; si elle vient de la base, regardez le type de la colonne.

Comment la corriger

Convertissez une seule fois, à la frontière :

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
    -- sûr à partir d'ici
end)

Et pour la distance, utilisez l'opérateur de longueur :

if #(GetEntityCoords(ped) - target) > 5.0 then return end

Toujours bloqué sur votre propre code ?

Cette page explique ce que cette erreur signifie en général. Collez votre console dans Server Fixer : il classera tout ce qui s'y trouve et vous dira quoi faire en premier ; et si vous préférez ne pas y toucher, ORBIE peut réparer le script et vous rendre la ressource prête à déposer.

bug_reportOuvrir le Server Fixer

Pour ce type d'erreur, le Script Optimizer lit le script et répare le code derrière tout ça.

Les erreurs qui voyagent avec celle-ci