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

What is wrong with this script?

I'm trying to make a little GUI pop up and display the name of the Brick the mouse is pointing to. Here is my script:

Player = game.Players.LocalPlayer
Mouse = Player:GetMouse()



if Mouse.Target:IsA("BasePart") then
	Player.PlayerGui.Selection.Label.Visible = true
	Player.PlayerGui.Selection.Label.X = Mouse.X
	Player.PlayerGui.Selection.Label.Y = Mouse.Y
	Player.PlayerGui.Selection.Label.Text = Mouse.Target.Name
else
	Player.PlayerGui.Selection.Label.Visible = false
end

But I keep getting this error:

Players.Player1.PlayerGui.LocalScript:6: attempt to index field 'Target' (a nil value)

Does anyone know why this is happening.

2 answers

✓ Accepted answer

Your script could be running before Mouse is set as anything. To prevent this, you'd check if Mouse.Target exists first.

Player = game.Players.LocalPlayer
Mouse = Player:GetMouse()


if Mouse.Target then
	if Mouse.Target:IsA("BasePart") then
	    Player.PlayerGui.Selection.Label.Visible = true
	    Player.PlayerGui.Selection.Label.X = Mouse.X
	    Player.PlayerGui.Selection.Label.Y = Mouse.Y
	    Player.PlayerGui.Selection.Label.Text = Mouse.Target.Name
	else
	    Player.PlayerGui.Selection.Label.Visible = false
	end
end

Keep in mind that the code will only run once unless it's in a loop, so most likely, nothing will happen.

2 comments

0

ah you got it just before me!

0

Oh thank you very much

You can't compare a nil value you must do

Player = game.Players.LocalPlayer
Mouse = Player:GetMouse()



if Mouse.Target then
    Player.PlayerGui.Selection.Label.Visible = true
    Player.PlayerGui.Selection.Label.X = Mouse.X
    Player.PlayerGui.Selection.Label.Y = Mouse.Y
    Player.PlayerGui.Selection.Label.Text = Mouse.Target.Name
else
    Player.PlayerGui.Selection.Label.Visible = false
end

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