So I'm making a turret, a switch has to be stepped on in order to activate the turret, the turret will always look at the player's mouse. But how do I get the mouse of the player that stepped on the button instead of getting everyone's mouse? Here is the script that makes the turret follow the mouse (Everyone's mouse?)
This Script is not a LocalScript, and it is inside Workspace.
function FollowMouse(p)
script.Parent.ControllableTurret1.ActivatePart.Touched:connect(function()
repeat wait() until game.Workspace.ControllableTurret1.TestingCannon.SpinningPart.Base
while true do
local pos
local player = game.Players.LocalPlayer
local m = player:GetMouse()
local t = m.Hit
if t then
pos = t
local base = game.Workspace.ControllableTurret1.TestingCannon.SpinningPart:WaitForChild("Base")
local h = player.Character:WaitForChild("Head")
base.CFrame = CFrame.new(base.Position,Vector3.new(t.X,t.Y,t.Z))
--tor["Neck"].C0 = CFrame.new(0,1,0) * CFrame.Angles(-math.asin((m.Origin.p - m.Hit.p).unit.y) + 1.55,3.15,0)
end
wait()
end
end)
end
FollowMouse()
^Also this Script is disabled^, an another script would activate this script. If you want to see that script as well, here it is:
local effectPart = game.Workspace.ControllableTurret1.EffectPart
local activePart = game.Workspace.ControllableTurret1.ActivatePart
local sp = script.Parent
local followMouse = game.Workspace.FollowMouseScript
local fireballControl = sp.FireballControl
local buttonPressed = false
--Store whether the button is pressed in a local variable
activePart.Touched:connect(function(hit)
if not buttonPressed then
-- Is it not pressed?
buttonPressed = true
-- Mark it as pressed, so that other handlers don't execute
if hit.Parent and activePart.BrickColor ~= BrickColor.new("Sea green") then
local hum = hit.Parent:FindFirstChild("Humanoid")
if hum and effectPart.BillboardGui.StatusText.Text ~= "COOLDOWN" or hum and effectPart.BillboardGui.StatusText.Text ~= "ACTIVATED" then
activePart.BrickColor = BrickColor.new("Sea green")
effectPart.BrickColor = BrickColor.new("Sea green")
effectPart.BillboardGui.StatusText.Text = "ACTIVATED"
effectPart.BillboardGui.StatusText.TextColor3 = Color3.new(0,255,0)
activePart.Active:Play()
game.Workspace.ControllableTurret1.TestingCannon.SpinningPart.Base.Material = "Neon"
game.Workspace.ControllableTurret1.TestingCannon.SpinningPart.Barrel.Material = "Neon"
activePart.ParticleEmitter.Enabled = true
sp.CannonStuff.Ammo.Visible = true
sp.FireballControl.Disabled = false
followMouse.Disabled = false
end
end
wait(10) -- Amount of time before it deactivates again.
activePart.BrickColor = BrickColor.new("Cool yellow")
effectPart.BrickColor = BrickColor.new("Cool yellow")
effectPart.BillboardGui.StatusText.Text = "COOLDOWN"
effectPart.BillboardGui.StatusText.TextColor3 = Color3.new(255,255,0)
activePart.Deactive:Play()
game.Workspace.ControllableTurret1.TestingCannon.SpinningPart.Base.Material = "SmoothPlastic"
game.Workspace.ControllableTurret1.TestingCannon.SpinningPart.Barrel.Material = "SmoothPlastic"
sp.CannonStuff.Ammo.Visible = false
activePart.ParticleEmitter.Enabled = false
activePart.ParticleEmitter2.Enabled = true
sp.FireballControl.Disabled = true
followMouse.Disabled = true
wait(7) -- Cooldown
activePart.BrickColor = BrickColor.new("Dark stone grey")
effectPart.BrickColor = BrickColor.new("Dark stone grey")
if sp.CannonStuff.Ammo.Amount.Value > 0 then
effectPart.BillboardGui.StatusText.Text = "AVAILABLE"
elseif sp.CannonStuff.Ammo.Amount.Value == 0 then
effectPart.BillboardGui.StatusText.Text = "NO AMMO, AVAILABLE."
effectPart.BillboardGui.StatusText.TextColor3 = Color3.new(255,0,0)
end
activePart.ParticleEmitter2.Enabled = false
effectPart.BillboardGui.StatusText.TextColor3 = Color3.new(255,255,255)
buttonPressed = false
-- Mark it as not pressed, so other handlers can execute again
end
end)
^This script is inside a GUI. (That is inside StarterGUI)^ And it's a Script, not a LocalScript.

2 comments
Is FE on? If so, Scripts won’t work in GUI.
No, FE is off.