THE ORB
Démarrage du studio

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.

groupsCette fonctionnalité cesse de marchercodeIl faut un développeur

Faites d'abord ceci

Celui-ci demande de regarder le code : c'est une erreur du script, pas de votre installation.

bug_reportCollez plutôt toute votre console

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

    Une native a renvoyé un handle, pas une table

    local ped = GetPlayerPed(-1) puis ped.x. Le handle est un nombre.

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

    Un résultat de requête lu un niveau trop profond

    Le query d'oxmysql renvoie un TABLEAU de lignes. result.identifier indexe le tableau ; result[1].identifier est la ligne.

  4. 4

    Une valeur de config qui est un nombre là où une table était attendue

    Config.Jobs.policeConfig.Jobs a été écrit comme un compteur plutôt qu'une table.

  5. 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 vecteur

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