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.
Faites d'abord ceci
Si cela s'est produit après une commande, ce qui a été tapé dedans est la cause probable.
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
Un nil d'un côté
if playerMoney > pricealors que la recherche n'a rien renvoyé. Le même problème de fond qu'un index-nil, une ligne plus loin. - 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
Comparer un vecteur à un nombre
#(a - b) > 5.0est correct.(a - b) > 5.0compare des vecteurs. - 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 FixerPour 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
- tentative d'arithmétique sur une valeur nil
- tentative d'indexer une valeur nil
- impossible de reprendre une coroutine morte
- SCRIPT ERROR dans citizen:/scripting/lua/scheduler.lua
- tentative d'indexer un nombre, un booléen ou du texte
- tentative de yield à travers une frontière d'appel C
- débordement de pile
- l'index de la table est nil