THE ORB
Studio wird gestartet

Versuch, eine Zahl, einen Boolean oder Text zu indizieren

Ein Script bekam eine andere Art Antwort als erwartet — oft, weil es ein Datenbankergebnis falsch liest.

groupsDiese Funktion hört auf zu funktionierencodeBraucht einen Entwickler

Mach das zuerst

Hier muss man in den Code schauen: das ist ein Fehler im Script, nicht in deiner Einrichtung.

bug_reportFüg lieber deine ganze Konsole ein

Was es bedeutet

. oder [] wurde auf einen Wert angewendet, den es gibt, der aber keine Tabelle ist. Das ist etwas anderes als nil zu indizieren: Etwas IST da, nur vom falschen Typ. Meist heißt das, eine API hat eine andere Form geliefert, als der Code erwartete.

Was es auslöst

Sortiert danach, wie oft es die Antwort ist.

  1. 1

    Eine Native gab ein Handle zurück, keine Tabelle

    local ped = GetPlayerPed(-1) und dann ped.x. Das Handle ist eine Zahl.

  2. 2

    Eine Funktion gab ein boolesches Erfolgsflag zurück

    Viele Helfer geben success, data zurück. Nur den ersten Wert zu nehmen und zu indizieren ergibt genau das.

  3. 3

    Ein Abfrageergebnis eine Ebene zu tief gelesen

    oxmysqls query gibt ein ARRAY von Zeilen zurück. result.identifier indiziert das Array; result[1].identifier ist die Zeile.

  4. 4

    Ein Konfigurationswert als Zahl, wo eine Tabelle erwartet wurde

    Config.Jobs.police, wobei Config.Jobs als Zähler statt als Tabelle geschrieben wurde.

  5. 5

    Zeichenketten-Methoden auf der falschen Seite aufgerufen

    ('x'):upper() ist in Ordnung; x:upper(), wenn x eine Zahl ist, nicht.

Wie du erkennst, welcher deiner ist

print(type(ding), json.encode(ding))

Der Typ in der Meldung sagt dir schon, was es ist; der Wert sagt, woher er kam.

Wo du nachsehen musst

Die Zeile und der Aufruf, der den Wert ein, zwei Zeilen darüber erzeugt hat.

Wie du es behebst

-- oxmysql gibt Zeilen zurück, nicht eine Zeile
local rows = MySQL.query.await('SELECT * FROM users WHERE identifier = ?', { id })
local user = rows and rows[1]
if not user then return end

-- Natives geben Handles zurück
local ped = PlayerPedId()
local coords = GetEntityCoords(ped)   -- DAS ist ein Vektor

Hängst du immer noch an deinem eigenen Code?

Diese Seite sagt, was dieser Fehler üblicherweise bedeutet. Füg deine Konsole in Server Fixer ein: es sortiert alles darin und sagt dir, was zuerst dran ist; und wenn du lieber nicht ranwillst, kann ORBIE das Script reparieren und dir die Resource fertig zum Einsetzen zurückgeben.

bug_reportServer Fixer öffnen

Für diese Art Fehler Script Optimizer liest das Script und repariert den Code dahinter.

Fehler, die mit diesem zusammen auftreten