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

Why isn't this script working ? I putted it inside an Script

Im trying to make an zone system using teleport pads It's in an Script it gives me : Workspace.Zones.Portal1.TeleportPads.Part1.Script:7: attempt to index nil with 'leaderstats'

--By zamsongod.
--Unlike Clockwork's teleporter, this one teleports ANYTHING not just people!
--Make sure the Part to teleport to is in the same group as this Part.
--Feel FREE to Copy, Abuse and Covet!
local player = game:GetService("Players")
local plr = player.LocalPlayer
local leaderstats = plr.leaderstats
local Teleport = "Part2" --Put the name of the Part between the ""s.
function Touch(hit) --Indicates that the Part has been Touched.
	if leaderstats.Prestige.Value >= 1 then
		if script.Parent.Locked == false and script.Parent.Parent:findFirstChild(Teleport).Locked == false then script.Parent.Locked = true script.Parent.Parent:findFirstChild(Teleport).Locked = true --Checks Debounce.
			local Pos = script.Parent.Parent:findFirstChild(Teleport) --Gets the Part to teleport to.
			hit.Parent:moveTo(Pos.Position) wait(1) script.Parent.Locked = false script.Parent.Parent:findFirstChild(Teleport).Locked = false end end --Takes you there and Ends the Function.
end
script.Parent.Touched:connect(Touch) --Listens out for Touchers.

4 comments

0

Is this a LocalScript?

0

It Index's as a nil because there is no 'leaderstats' within plr. If there is a leaderboard you'll need to specify it as "leaderstats" and if it is already it needs to be within the StarterPlayerScripts. You can also rewrite and create an Instance where you can create a leaderboard within the script.

0

i already have an leaderstats, and it's in a Script not localscript

0

If you already have a leaderboard system in-game change the leaderstats variable to local leaderstats = game:FindFirstChild("Leaderboard") -- Leaderboard being whatever the leaderboard name is

1 answer

✓ Accepted answer

Changed :

local Players = game:GetService("Players")
local Teleport = "Part2"

script.Parent.Touched:Connect(function(hit)
	local player = Players:GetPlayerFromCharacter(hit.Parent)
	local leaderstats = player.leaderstats
	if leaderstats.Prestige.Value >= 1 then
		if script.Parent.Locked == false and script.Parent.Parent:findFirstChild(Teleport).Locked == false then
			script.Parent.Locked = true script.Parent.Parent:findFirstChild(Teleport).Locked = true
		  local Pos = script.Parent.Parent:findFirstChild(Teleport)
			hit.Parent:moveTo(Pos.Position) wait(1) script.Parent.Locked = false script.Parent.Parent:findFirstChild(Teleport).Locked = false
		end
	end
end)

5 comments

0

thx it works now

0

You have some deprecation in your code, for example: moveto should be MoveTo, :findFirstChild should be:FindFirstChild

0

You didn't explain what you changed, on the code so that should have been in the comments.

0

i only help him fix : Workspace.Zones.Portal1.TeleportPads.Part1.Script:7: attempt to index nil with 'leaderstats , and he can see local player then he can remember this

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