I am currently working on a feature where you can click on certain objects and interact with them in different ways (this is why I have many variables set up, and are not being used). I have first started making interaction with an enemy possible (through setting a combat variable to true and making selection box to red, though I hope to expand it later). When testing this script, scrolling over an NPC will not allow you to see a selectionbox, and clicking it will do nothing, it also shows no errors. I would GREATLY appreciate it if you could figure out what is wrong with the following code:
-- Setting all variables
local player = game.Players.LocalPlayer
local character = player.Character
if not character or character.Parent == nil then
character = player.CharacterAdded:wait()
end
local charpos = character.Torso.Position
local mouse = player:GetMouse()
local selection = Instance.new("SelectionBox", player.PlayerGui)
selection.Color = BrickColor.new("Medium stone grey")
local combat = script.combat
local talking = script.talking
local reading = script.reading
local questing = script.questing
--check target and make variables when mouse moves
mouse.Move:connect(function()
local target = mouse.Target
local hum = target.Parent:FindFirstChild("Humanoid")
local hrp = target.Parent:FindFirstChild("HumanoidRootPart")
local enemy = target.Parent:FindFirstChild("enemy")
local friend = target.Parent:FindFirstChild("friendly")
local quest = target.Parent:FindFirstChild("quest")
local book = target.Parent:FindFirstChild("book")
--check if the target is an npc and not a player
if target.Parent:IsA("Model") and hum ~= nil and hrp ~= nil then
selection.Adornee = target.Parent
-- if the target has the enemy value in it
if target.Parent.enemy == true then
--and the player clicks on target
mouse.Button1Down:connect(function()
--and the player is close enough
local targetpos = target.Parent.Torso.Position
if player:DistanceFromCharacter(targetpos) < 40 then
--set combat equal to true, and make the selectionbox red
combat.Value = true
selection.Ardornee = target.Parent
selection.Color = BrickColor.new("Bright red")
end
end)
end
end
end)
Thank you for reading :)

6 comments
Line 28, you misspelled Adornee and spelled "Ardornee". Also, on line 25 you assumed the target's parent is a player and it has a Torso. I would recommend checking that first. Another tip is for line 34 where you check the magnitude from the character's position and the target's position. That is a rather inaccurate method, I highly recommend using DistanceFromCharacter instead.
Thanks for the corrections, however, it still doesn't seem to work, and no errors are occurring. Also, I put the line of code that declares targetpos in a place where it is guaranteed to have a torso.
Line 37 is also spelled as "Ardornee" when it should be Adornee.
It might also help to find out what is working and what is not by printing to the output. You can check to make sure the function is being called correctly, and each if statement is correct or not.
I might also add that on line 18, you check the mouse's target object; however, it is possible for the target to be nil, so you should check for that in the case the mouse is not hovering over any object.
You just assume 'target.Parent.enemy' exists even when it may not.