So I am making a tool that has a GUI appear each time the tool Is equipped and then disappear when the tool Is unequipped, when you click on the GUI It creates a ball that rolls around damaging and also turning people Into stone, the problem Is that for some reason the GUI doesn't spawn a ball
(Btw In order for the ability to work I used a RemoteEvent)
GUI button script (Local script):
local button = script.Parent local RemoteEvent = script.Parent.Parent.Parent:WaitForChild("RemoteEvent") local debounce = false button.MouseButton1Click:Connect(function() if not debounce then debounce = true RemoteEvent:FireClient() wait(5) debounce = false end end)
Ability script (Server script):
local Tool = script.Parent local RemoteEvent = Tool.RemoteEvent RemoteEvent.OnServerEvent:Connect(function() local Ball = Instance.new("Part") local VectorForce = Instance.new("VectorForce") local Attachment = Instance.new("Attachment") Ball.Parent = game.Workspace VectorForce.Parent = Ball Attachment.Parent = Ball VectorForce.Attachment0 = Attachment VectorForce.Force = Vector3.new(120,0,0) Ball.Shape = Enum.PartType.Ball Ball.Position = script.Parent.Parent.Parent.Handle.Position Ball.Orientation = script.Parent.Parent.Parent.Handle.Orientation Ball.Size = Vector3.new(6.52, 6.52, 6.52) Ball.Touched:Connect(function(hit) local humanoid = hit.Parent:WaitForChild("Humanoid") if humanoid then local BigRock = Instance.new("Part") BigRock.Parent = humanoid.Parent.Torso BigRock.Position = humanoid.Parent.Torso BigRock.Anchored = true BigRock.Size = Vector3.new(10,10,10) BigRock.CanCollide = true wait(3) BigRock:Destroy() end end) wait(5) Ball:Destroy() end)
Show GUI when the tool Is equipped and hide GUI when tool Unequipped(Local Script):
wait(1) GUI = script.Parent.AbilityGUI local Player = game.Players.LocalPlayer script.Parent.Equipped:Connect(function() local GUIClone = GUI:Clone() GUIClone.Parent = Player.PlayerGui script.Parent.Unequipped:Connect(function() GUIClone:Destroy() end) end)
:FireClient()
is meant to be used in server scripts, to fire to a LocalScript. Your event is looking for :FireServer()
instead, so you would change :FireClient()
to :FireServer()
.
By the way, you should set the parent of the part last.