Roblox Studio: Wie kann ich den Fehler "attempt to compare number < string - Client - LocalScript:2" beheben?
Ich habe bei Roblox Studio in einem Skript ein Problem.
Skript:
script.Parent.MouseButton1Click:Connect(function()
if 100 < script.Parent.Parent.Parent.Parent.counter.Frame.Counter.Text
then
script.Parent.Parent.Parent.Parent.counter.Frame.Counter.Text = script.Parent.Parent.Parent.Parent.counter.Frame.Counter.Text - script.Parent.Text
script.Parent.Parent.Parent.Parent.Rebirth.Frame.Counter.Text = script.Parent.Parent.Parent.Parent.Rebirth.Frame.Counter.Text + 1
end
end)
Der Fehler heißt:
23:11:02.520 Players.4747Vr_de.PlayerGui.rebith.ScrollingFrame.1RebirthButton.LocalScript:2: attempt to compare number < string - Client - LocalScript:2
Bitte schreibt, wenn ihr wisst, wie man das beheben kann.
1 Antwort
1) Ein Text lässt sich genauso wenig sinnvoll mit einer Zahl vergleichen, wie ein Buchstabe mit einem Elefant. Du brauchst eine Konversion, die die Zahlenwerte aus dem Text parst.
Beispiel:
local numberInText = "12"
local number = tonumber(numberInText)
2) Noch eine Bemerkung zu deinem restlichen Code: Deine ewig langen Punktverkettungen sind gar nicht gut.
Zum einen sind sie nicht gut lesbar und steigern das Fehlerrisiko. Du brauchst dich ja nur einmal bei einem .Parent verzählen. Nutze daher Variablen.
local parent = script.Parent
parent.MouseButton1Click:Connect(function()
local root = script.Parent.Parent.Parent.Parent
local counter = root.counter.Frame.Counter
local counterValue = tonumber(counter.Text)
if 100 < counterValue then
counter.Text = counterValue - tonumber(parent.Text)
root.Rebirth.Frame.Counter.Text = tonumber(root.Rebirth.Frame.Counter.Text) + 1
end
end)
Zum anderen kann sich doch sicherlich schnell einmal die Struktur ändern, sodass der gesamte Ausdruck ins Leere läuft. Da wäre es wohl besser, sich eine Art GetAncestor-Methode zu schreiben. Wenn ich das richtig sehe, gibt es so etwas auch schon: FindFirstAncestor.