Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

Leadstats Won't Show Up & No Errors?

I have a script, but it won't show the leaderstats.

function oa(object)
    local player = game.Players:playerFromCharacter(object)
print(error)
:Destroy()
    if player ~= nil then
        local ls = player.leaderstats
        local sl = game.Workspace:FindFirstChild(ls.Stage.Value)
        print("obby")
        object.Torso.CFrame = object.Torso.CFrame + Vector3.new(0,3,0)
        wait()
        object.Torso.CFrame = sl.CFrame + Vector3.new(0,3,0)
    end 
end

function oe(object)
    if object.className == "Player" then
        local ack = Instance.new("IntValue")
        ack.Name = "leaderstats"
        local ack2 = Instance.new("IntValue")
        ack2.Name = "Stage"
        ack2.Value = 1
        ack2.Parent = ack
        ack.Parent = object
    end 
end

game.Players.ChildAdded:connect(oe)
game.Workspace.ChildAdded:connect(oa)

I am like half asleep so if It is obvious, sorry. :/

3 answers

✓ Accepted answer

You should be using Players.PlayerAdded and Player.CharacterAdded for stuff like this. I assume you might be testing it in-studio without starting up a server.

There's a usual case where the player joins before the server scripts run. This means events like ChildAdded and PlayerAdded miss that player's join. You want to run the function through all players in-game before connecting the event or just test through starting a server or playing the actual place.

local PlayerAdded = function(player)
	
	--leaderstat stuff
	
	local CharacterAdded = function(character)
		--character stuff + you have access to leaderstats!
	end
	CharacterAdded(player.Character or player.CharacterAdded:Wait())
	--applies the function to the first character added
	player.CharacterAdded:Connect(CharacterAdded)
	--applies the function to further character respawns

end)

for _, player in next, game.Players:GetPlayers() do
	PlayerAdded(player)
end
--applies the function to all players in-game
game.PlayerAdded:Connect(PlayerAdded)
--applies the function to all arriving players

Oops, sorry the error was the :Destroy(); I wrote it in the wrong script. Sorry for wasting your time. :>

game.Players.PlayerAdded:Connect(function(player)
	local ack = Instance.new("Folder",player)
        ack.Name = "leaderstats"
        local ack2 = Instance.new("IntValue",ack)
        ack2.Name = "Stage"
        ack2.Value = 1
end)

This discussion is preserved as it was. New answers, comments, and votes are closed.