Lua: Wieso wird das Label nicht geändert?

Hallo Leute!

Es ist vielleicht ein bisschen komisch, Fragen zum Programmieren hier zu stellen, aber ich komme wirklich einfach nicht weiter.

Ich habe dieses Lua-Skript geschrieben, welches die Geschwindigkeit und ein TextLabel eines Spielers ändern soll, wenn er mit einem Baum Interagiert.

Mein Problem ist, dass wenn ich interagiere, zwar die Geschwindigkeit geändert wird, jedoch nicht das Label. Außerdem wird beides nicht auf den richtigen Wert gesetzt, nachdem man aus dem Spiel und wieder hineingeht.

Außerdem wird kein Fehlercode angezeigt.

Das Skript:

local Players = game:GetService("Players")
local DataStoreService = game:GetService("DataStoreService")
local speedDataStore = DataStoreService:GetDataStore("PlayerSpeedData12")
local tree = workspace:FindFirstChild("Tree2")
if tree then
local prompt = tree.Part.Attachment.ProximityPrompt
if prompt then
prompt.Triggered:Connect(function(player)
-- Überprüfen, ob der Player ein gültiger Spieler ist
if player and player:IsA("Player") then
local userId = player.UserId
local success, hasInteracted = pcall(function()
return speedDataStore:GetAsync("HasInteracted_" .. userId)
end)
if success and hasInteracted then
warn("Player has already interacted with the tree")
return
end
local character = player.Character
if character then
local humanoid = character:FindFirstChildOfClass("Humanoid")
if humanoid then
-- Erhöhe die Geschwindigkeit
if humanoid.WalkSpeed then
humanoid.WalkSpeed = (humanoid.WalkSpeed or 16) + 0.5
end
end
-- Erhöhe den Wert des TextLabels
local playerGui = player:WaitForChild("PlayerGui")
if playerGui then
local screenGui = playerGui:FindFirstChild("ScreenGui") 
if screenGui then
local textLabel = screenGui:FindFirstChild("SpeedFrame"):FindFirstChild("SpeedCounter"):FindFirstChild("Speed")
if textLabel and textLabel:IsA("TextLabel") then
wait(0.1)
local successText, savedText = pcall(function()
return speedDataStore:GetAsync("SpeedText_" .. userId)
end)
if successText and savedText then
textLabel.Text = savedText
else
textLabel.Text = "1.00"
end
-- Speichere den aktualisierten Text
pcall(function()
speedDataStore:SetAsync("SpeedText_" .. userId, textLabel.Text)
end)
end
else
warn("ScreenGui nicht gefunden")
end
else
warn("PlayerGui nicht gefunden")
end
else
warn("Character nicht gefunden")
end
local success, errorMessage = pcall(function()
speedDataStore:SetAsync("HasInteracted_" .. userId, true)
if humanoid then
speedDataStore:SetAsync("WalkSpeed_" .. userId, humanoid.WalkSpeed)
end
end)
if not success then
warn("Fehler beim Speichern der Daten: " .. errorMessage)
end
else
warn("Ungültiger Spieler")
end
end)
else
warn("ProximityPrompt nicht gefunden")
end
else
warn("Tree2 nicht gefunden")
end
Players.PlayerAdded:Connect(function(player)
local userId = player.UserId
local success, savedSpeed = pcall(function()
return speedDataStore:GetAsync("WalkSpeed_" .. userId)
end)
local successText, savedText = pcall(function()
return speedDataStore:GetAsync("SpeedText_" .. userId)
end)
if success then
player.CharacterAdded:Connect(function(character)
local humanoid = character:WaitForChild("Humanoid")
if savedSpeed and humanoid then
if humanoid.WalkSpeed then
humanoid.WalkSpeed = savedSpeed
end
end
local playerGui = player:WaitForChild("PlayerGui")
if playerGui then
local screenGui = playerGui:FindFirstChild("ScreenGui") 
if screenGui then
local textLabel = screenGui:FindFirstChild("SpeedFrame"):FindFirstChild("SpeedCounter"):FindFirstChild("Speed")
if textLabel and textLabel:IsA("TextLabel") then
wait(0.1)
if successText and savedText then
textLabel.Text = savedText
else
textLabel.Text = "0"
end
else
warn("TextLabel nicht gefunden")
end
else
warn("ScreenGui nicht gefunden")
end
else
warn("PlayerGui nicht gefunden")
end
end)
else
warn("Fehler beim Laden der gespeicherten Geschwindigkeit für Spieler " .. userId)
end
end) 

Ich wäre wirklich sehr dankbar, wenn mir jemand weiterhelfen kann!

Fehler, Code, lua, Programmiersprache

Meistgelesene Fragen zum Thema Lua