Need help with script

idk why my script don’t work

this is the script

game.Players.PlayerAdded:Connect(function(player)
local leaderstatsP = player:WaitForChild("leaderstatsP")
local Sky = leaderstatsP:WaitForChild("Sky")
	if Sky.Value == 1 then
		player.PlayerGui.SkyScript.Disabled = false
		wait(10)
		player.PlayerGui.SkyScript.Disabled = true
	end
end)

and this what i got on output

Infinite yield possible on ‘Players.MONSTERGAMES3609.leaderstatsP:WaitForChild(“Sky”)’

tell me if you want more information

1 Like

Are you sure in leaderstatsP there is a thing called “Sky”?

yea I’m sure

Screenshot 2021-07-15 012932

Is this local Script or a regular script? And where is this placed?

It’s a script and its on ServerScriptService

How do you firstly create that value? I tried this my own and worked, here I leave the script I made:

game.Players.PlayerAdded:Connect(function(player)
	local LeaderstatsP = Instance.new("Folder")
	LeaderstatsP.Name = "leaderstatsP"
	LeaderstatsP.Parent = player
	
	local SkyNew = Instance.new("StringValue")
	SkyNew.Name = "Sky"
	SkyNew.Parent = LeaderstatsP
	
	local leaderstatsP = player:WaitForChild("leaderstatsP")
	local Sky = leaderstatsP:WaitForChild("Sky")
	
	print(Sky.Parent)
	
	if Sky.Value == 1 then
		player.PlayerGui.SkyScript.Disabled = false
		wait(10)
		player.PlayerGui.SkyScript.Disabled = true
	end
end)

Alright, so basically I’m not sure if this will work or not. But I want you to try 2 things.

1st thing:

--Change the the variables Sky and leaderstats to: 
local leaderstatsP = player:WaitForChild("leaderstatsP", 5)
local Sky = leaderstatsP:WaitForChild("Sky", 5)

If this doesn’t work then try:

local leaderstatsP = player:FindForChild("leaderstatsP", true)
local Sky = leaderstatsP:FindForChild("Sky", true)

Let me know if this helped!

there is no issues in the leaderstatsP

they are two don’t work :frowning:

but in first one no output massges

1 Like

Can you show me the script where you made the leaderstatsP

Add game.wait() at the beginning of the script

local DataStoreService = game:GetService("DataStoreService")

local DataStore = DataStoreService:GetDataStore("PetsStats") -- Change this with a different name.

local DataStoreService = game:GetService("DataStoreService")

local DataStore = DataStoreService:GetDataStore("SkyStats") -- Change this with a different name.

game.Players.PlayerAdded:Connect(function(Player)

local LeaderstatsP = Instance.new("Folder", Player)

LeaderstatsP.Name = "leaderstatsP"

local completed = Instance.new('Folder')

completed.Name = 'completed'

completed.Parent = Player

local Pets = Instance.new("IntValue", Player.leaderstatsP)

Pets.Name = "Pets" -- Change "Kills" with your currency.

Pets.Value = 0 or DataStore

local Data = DataStore:GetAsync(Player.UserId)

local Sky = Instance.new("IntValue", Player.leaderstatsP)

Sky.Name = "Sky" -- Change "Kills" with your currency.

Sky.Value = 0 or DataStore

local Data = DataStore:GetAsync(Player.UserId)

local FirePet = Instance.new("IntValue", Player.leaderstatsP)

FirePet.Name = "FirePet" -- Change "Kills" with your currency.

FirePet.Value = 0

if Data then

Pets.Value = Data.Pets -- Change "Kills" with your currency.

Sky.Value = Data.Sky -- Change "Kills" with your currency.

end

end)

game.Players.PlayerRemoving:Connect(function(Player)

DataStore:SetAsync(Player.UserId, {

["Pets"] = Player.leaderstatsP.Pets.Value; -- Change "Kills" with your currency.

["Sky"] = Player.leaderstatsP.Sky.Value; -- Change "Kills" with your currency.

})

end)

I noticed that leaderstatsP is waitforchild, yet when you call it later it it could be the child or the variable. I am not totally sure about this, but it could be an issue. Try making the local leadP instead.

Did you add an event in replicated storage named “Sky”

no but there is a sky named sky

The error is happens before anything is done to sky, the error is when calling sky.

This article should explain some stuff wrong with your script:

i think the problem in local leaderstatsP and local Sky

Try doing everything in a single script:

local DataStoreService = game:GetService("DataStoreService")

local DataStore = DataStoreService:GetDataStore("PetsStats") -- Change this with a different name.

local DataStoreService = game:GetService("DataStoreService")

local DataStore = DataStoreService:GetDataStore("SkyStats") -- Change this with a different name.

game.Players.PlayerAdded:Connect(function(Player)

local LeaderstatsP = Instance.new("Folder", Player)

LeaderstatsP.Name = "leaderstatsP"

local completed = Instance.new('Folder')

completed.Name = 'completed'

completed.Parent = Player

local Pets = Instance.new("IntValue", Player.leaderstatsP)

Pets.Name = "Pets" -- Change "Kills" with your currency.

Pets.Value = 0 or DataStore

local Data = DataStore:GetAsync(Player.UserId)

local Sky = Instance.new("IntValue", Player.leaderstatsP)

Sky.Name = "Sky" -- Change "Kills" with your currency.

Sky.Value = 0 or DataStore

if Sky.Value == 1 then
	player.PlayerGui.SkyScript.Disabled = false
	wait(10)
	player.PlayerGui.SkyScript.Disabled = true
end


local Data = DataStore:GetAsync(Player.UserId)

local FirePet = Instance.new("IntValue", Player.leaderstatsP)

FirePet.Name = "FirePet" -- Change "Kills" with your currency.

FirePet.Value = 0

if Data then

Pets.Value = Data.Pets -- Change "Kills" with your currency.

Sky.Value = Data.Sky -- Change "Kills" with your currency.

end

end)

game.Players.PlayerRemoving:Connect(function(Player)

DataStore:SetAsync(Player.UserId, {

["Pets"] = Player.leaderstatsP.Pets.Value; -- Change "Kills" with your currency.

["Sky"] = Player.leaderstatsP.Sky.Value; -- Change "Kills" with your currency.

})

end)