tentative d'indexer un nombre, un booléen ou du texte
Un script a reçu une réponse d'un type différent de celui attendu, souvent en lisant mal un résultat de base de données.
Faites d'abord ceci
Celui-ci demande de regarder le code : c'est une erreur du script, pas de votre installation.
Ce que ça veut dire
. ou [] a été utilisé sur une valeur qui existe mais n'est pas une table. C'est différent d'indexer nil : quelque chose EST là, simplement du mauvais type. Cela signifie en général qu'une API a renvoyé une forme différente de celle attendue par le code.
Ce qui la provoque
Classé par fréquence : la cause la plus probable en premier.
- 1
Une native a renvoyé un handle, pas une table
local ped = GetPlayerPed(-1)puisped.x. Le handle est un nombre. - 2
Une fonction a renvoyé un booléen de succès
Beaucoup d'utilitaires renvoient
success, data. Ne prendre que la première valeur et l'indexer donne exactement ceci. - 3
Un résultat de requête lu un niveau trop profond
Le
queryd'oxmysql renvoie un TABLEAU de lignes.result.identifierindexe le tableau ;result[1].identifierest la ligne. - 4
Une valeur de config qui est un nombre là où une table était attendue
Config.Jobs.policeoùConfig.Jobsa été écrit comme un compteur plutôt qu'une table. - 5
Des méthodes de chaîne appelées du mauvais côté
('x'):upper()va bien ;x:upper()quand x est un nombre, non.
Comment savoir laquelle est la vôtre
print(type(chose), json.encode(chose))
Le type dans le message vous dit déjà ce que c'est ; la valeur vous dit d'où elle vient.
Où regarder
La ligne, et l'appel qui a produit la valeur une ou deux lignes au-dessus.
Comment la corriger
-- oxmysql renvoie des lignes, pas une ligne
local rows = MySQL.query.await('SELECT * FROM users WHERE identifier = ?', { id })
local user = rows and rows[1]
if not user then return end
-- les natives renvoient des handles
local ped = PlayerPedId()
local coords = GetEntityCoords(ped) -- CECI est un vecteurToujours 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.