Fivem script fehler?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Um den genauen Grund herauszufinden, musst du in dir die Codestelle anschauen, auf die die Fehlermeldung verweist. Sie liegt in Zeile 11 der Datei commands.lua.

Konkret wird für die Variable xPlayer ein boolscher Typ berechnet, auf dem das Skript folgend versucht, eine Operation durchzuführen, die ein boolscher Typ nicht unterstützt.

Beispiel:

local xPlayer = getPlayerObject()
xPlayer:doSomething()

Wenn die fiktive Funktion getPlayerObject bei Misserfolg den Wert false liefert, würde die Ausführung der nachfolgenden Zeile scheitern, denn ein boolscher Wert kennt keine Methode namens doSomething.

Eine Lösung für dieses konkrete Beispiel wäre der Einbau einer zusätzlichen Abfrage, bevor doSomething aufgerufen wird.

local xPlayer = getPlayer()

if (xPlayer) then
  xPlayer:doSomething()
end

boolean kennt nur wahr oder falsch (1 oder 0) als Werte. Sieht aus, als ob das Script hier einen Wert außerhalb dieses Bereichs nutzen will.


Destranix  11.02.2023, 17:14

Habe beim protieren von DOOM gelernt, das boolean auch noch andere Werte als 0 und 1 kennt ;-)

(Aber die haben glücklicherweise ihren eigenen boolean-Typ definiert, den man dann einfach als Integer definieren konnte, dann hat es wieder gepasst.)

0
Kwalliteht  11.02.2023, 17:21
@Destranix

Ja, es gibt auch einige Sprachen, die akzeptieren 0 als falsch und jeden anderen Wert als richtig. Genau genommen ist bei denen Boolean ein Variant, der 0 und ungleich 0 kennt. Dem kann man alles numerische als Wert zuweisen. Geht abber nicht in allen Sprachen. Wie es mit Lua ist, weiß ich nicht.

0
Destranix  11.02.2023, 17:22
@Kwalliteht

Ich weiß. Problem bei Doom war nur, dass das mit dem C++ "bool" nicht zurecktkam, da es dem eine "-1" zuwies, was der Typ nicht kann, da der tatsächlich nur "true" und "false" kennt.

0
petergr688 
Fragesteller
 11.02.2023, 17:23

weis du wie man das fixt

0
Kwalliteht  11.02.2023, 18:03
@petergr688

Keine Ahnung, habe mich mit Lua noch nicht beschäftigt. Könntest eine Abfrage starten, ob der Wert ungleich 0 ist (also wahr).

0