So I have a script that works fine while It's in the players startergui, it creates a giant laser that moves around and kills anyone it touches, the problem is I want it to start off in the workspace and then be moved into the local players startergui. For some reason, while it's not already in startergui, I get an error that says "Workspace.Script:3: attempt to index local 'player' (a nil value)". I think it's because Roblox hasn't loaded the local player yet. Can someone Please tell me how to fix this issue!?
Script:
-- Get the player, character, and the players gui
local player = game.Players.LocalPlayer
local char = player.CharacterAdded:wait()
local hum = char:WaitForChild("Humanoid")
local gui = player:WaitForChild("PlayerGui")
-- Delay
wait(1)
-- Parent the script to StarterGui and set the properties of wall
script.Parent = gui
wall = Instance.new("Part")
wall.Name = "wall"
wall.Shape = "Cylinder"
wall.Rotation = Vector3.new(0, 0, -90)
wall.Anchored = true
wall.Size = Vector3.new(400, 8, 8)
wall.Transparency = 0.7
wall.Color = Color3.new(255, 0, 0)
wall.CanCollide = false
wall.Material = "Neon"
wall.CFrame = char.Torso.CFrame + char.Torso.CFrame.lookVector * 5
wall.CFrame = wall.CFrame * CFrame.Angles(0, 0, 1/2 * math.pi)
wall.Parent = game.Workspace
-- Move the wall
for i=1, 500 do
-- If the wall hits someone, kill them
function hited(hit)
local hum = hit.Parent:FindFirstChild("Humanoid")
if hum then
hum.Health = 0
end
end
wall.Touched:connect(hited)
-- Set the walls position
wait()
wall.CFrame = wall.CFrame + char.Torso.CFrame.lookVector * 5 + Vector3.new(0, 0, -1)
-- Destroy the wall eventually
if i >= 500 then
wall:destroy()
end
-- If you get killed by the wall, it removes itself
if hum.Health == 0 then
wall:destroy()
end
end
