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.
Mach das zuerst
Hier muss man in den Code schauen: das ist ein Fehler im Script, nicht in deiner Einrichtung.
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
Eine Native gab ein Handle zurück, keine Tabelle
local ped = GetPlayerPed(-1)und dannped.x. Das Handle ist eine Zahl. - 2
Eine Funktion gab ein boolesches Erfolgsflag zurück
Viele Helfer geben
success, datazurück. Nur den ersten Wert zu nehmen und zu indizieren ergibt genau das. - 3
Ein Abfrageergebnis eine Ebene zu tief gelesen
oxmysqls
querygibt ein ARRAY von Zeilen zurück.result.identifierindiziert das Array;result[1].identifierist die Zeile. - 4
Ein Konfigurationswert als Zahl, wo eine Tabelle erwartet wurde
Config.Jobs.police, wobeiConfig.Jobsals Zähler statt als Tabelle geschrieben wurde. - 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 VektorHä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 öffnenFür diese Art Fehler Script Optimizer liest das Script und repariert den Code dahinter.