Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
2

What is wrong with this script?

Asked by 7 years ago
Edited 7 years ago

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:

01Player = game.Players.LocalPlayer
02Mouse = Player:GetMouse()
03 
04 
05 
06if Mouse.Target:IsA("BasePart") then
07    Player.PlayerGui.Selection.Label.Visible = true
08    Player.PlayerGui.Selection.Label.X = Mouse.X
09    Player.PlayerGui.Selection.Label.Y = Mouse.Y
10    Player.PlayerGui.Selection.Label.Text = Mouse.Target.Name
11else
12    Player.PlayerGui.Selection.Label.Visible = false
13end

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

Log in to vote
1
Answered by
shayner32 478 Trusted Moderation Voter
7 years ago

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

01Player = game.Players.LocalPlayer
02Mouse = Player:GetMouse()
03 
04 
05if Mouse.Target then
06    if Mouse.Target:IsA("BasePart") then
07        Player.PlayerGui.Selection.Label.Visible = true
08        Player.PlayerGui.Selection.Label.X = Mouse.X
09        Player.PlayerGui.Selection.Label.Y = Mouse.Y
10        Player.PlayerGui.Selection.Label.Text = Mouse.Target.Name
11    else
12        Player.PlayerGui.Selection.Label.Visible = false
13    end
14end

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

0
ah you got it just before me! AuthenticOakChair 68 — 7y
0
Oh thank you very much PixelZombieX 8 — 7y
Ad
Log in to vote
1
Answered by 7 years ago

You can't compare a nil value you must do

01Player = game.Players.LocalPlayer
02Mouse = Player:GetMouse()
03 
04 
05 
06if Mouse.Target then
07    Player.PlayerGui.Selection.Label.Visible = true
08    Player.PlayerGui.Selection.Label.X = Mouse.X
09    Player.PlayerGui.Selection.Label.Y = Mouse.Y
10    Player.PlayerGui.Selection.Label.Text = Mouse.Target.Name
11else
12    Player.PlayerGui.Selection.Label.Visible = false
13end

Answer this question