Basically whenever a player presses a certain button it will act on the player's client, which will fire through the server, and then replicate back to everyone's client.
Here's the scripts:
Local-Script [FireServer]:
local Tool = script.Parent
local Events = Tool:WaitForChild("Events")
local V = Tool:WaitForChild("HandValue").Value
local debris = game:GetService("Debris")
local Player = game.Players.LocalPlayer
local UIS = game:GetService("UserInputService")
local character = Player.Character or Player.CharacterAdded:wait()
repeat wait() until character
local humanoid = character:WaitForChild("Humanoid")
local AroundLeft = Events:WaitForChild("AroundLeft")
local RS = game:GetService("RunService")
local d = true
local GripPos = Tool.GripPos
UIS.InputBegan:Connect(function(input, gameProcessed)
if not gameProcessed then
if input.UserInputType == Enum.UserInputType.Keyboard then
if input.KeyCode == Enum.KeyCode.G then
if d then
d = false
Tool.rMovement.Disabled=true
Tool.lMovement.Disabled=true
Tool.HandValue.Value = 1
Tool.GripPos = Vector3.new(0.5, -0.5, -0.3)
RS.RenderStepped:wait()
AroundLeft:FireServer(GripPos)
Tool.GripPos = Vector3.new(0.5, -0.75, -0.15)
RS.RenderStepped:wait()
AroundLeft:FireServer(GripPos)
Tool.GripPos = Vector3.new(0.5, -1, 0)
RS.RenderStepped:wait()
AroundLeft:FireServer(GripPos)
Tool.GripPos = Vector3.new(0.5, -1.25, 0.25)
RS.RenderStepped:wait()
AroundLeft:FireServer(GripPos)
Tool.GripPos = Vector3.new(0.5, -1.5, 0.5)
RS.RenderStepped:wait()
AroundLeft:FireServer(GripPos)
Tool.GripPos = Vector3.new(0.5, -1.5, 0.75)
RS.RenderStepped:wait()
AroundLeft:FireServer(GripPos)
Tool.GripPos = Vector3.new(0.5, -1.5, 1)
RS.RenderStepped:wait()
AroundLeft:FireServer(GripPos)
Tool.GripPos = Vector3.new(0.5, -1.5, 1.25)
RS.RenderStepped:wait()
AroundLeft:FireServer(GripPos)
Tool.GripPos = Vector3.new(0.5, -1.5, 1.5)
RS.RenderStepped:wait()
AroundLeft:FireServer(GripPos)
Tool.GripPos = Vector3.new(0.5, -1.25, 1.75)
RS.RenderStepped:wait()
AroundLeft:FireServer(GripPos)
Tool.GripPos = Vector3.new(0.5, -1, 2)
RS.RenderStepped:wait()
AroundLeft:FireServer(GripPos)
Tool.GripPos = Vector3.new(0.75, -0.75, 2.25)
RS.RenderStepped:wait()
AroundLeft:FireServer(GripPos)
Tool.GripPos = Vector3.new(1, -0.5, 2.5)
RS.RenderStepped:wait()
AroundLeft:FireServer(GripPos)
Tool.GripPos = Vector3.new(1.25, -0.25, 2.75)
RS.RenderStepped:wait()
AroundLeft:FireServer(GripPos)
Tool.GripPos = Vector3.new(1.5, 0, 3)
RS.RenderStepped:wait()
AroundLeft:FireServer(GripPos)
Tool.GripPos = Vector3.new(1.75, 0.25, 3)
RS.RenderStepped:wait()
AroundLeft:FireServer(GripPos)
Tool.GripPos = Vector3.new(2, 0.5, 3)
RS.RenderStepped:wait()
AroundLeft:FireServer(GripPos)
Tool.GripPos = Vector3.new(2.25, 0.75, 3)
RS.RenderStepped:wait()
AroundLeft:FireServer(GripPos)
Tool.GripPos = Vector3.new(2.5, 1, 3)
RS.RenderStepped:wait()
AroundLeft:FireServer(GripPos)
Tool.GripPos = Vector3.new(2.75, 1.25, 3)
RS.RenderStepped:wait()
AroundLeft:FireServer(GripPos)
Tool.GripPos = Vector3.new(3, 1.5, 3)
RS.RenderStepped:wait()
AroundLeft:FireServer(GripPos)
Tool.GripPos = Vector3.new(2.75, 1.75, 2.75)
RS.RenderStepped:wait()
AroundLeft:FireServer(GripPos)
Tool.GripPos = Vector3.new(2.5, 2, 2.5)
RS.RenderStepped:wait()
AroundLeft:FireServer(GripPos)
Tool.GripPos = Vector3.new(2.25, 2.25, 2.25)
RS.RenderStepped:wait()
AroundLeft:FireServer(GripPos)
Tool.GripPos = Vector3.new(2, 2.5, 2)
RS.RenderStepped:wait()
AroundLeft:FireServer(GripPos)
Tool.GripPos = Vector3.new(1.75, 2.75, 1.75)
RS.RenderStepped:wait()
AroundLeft:FireServer(GripPos)
Tool.GripPos = Vector3.new(1.5, 3, 1.5)
RS.RenderStepped:wait()
AroundLeft:FireServer(GripPos)
Tool.GripPos = Vector3.new(1.25, 3.25, 1.75)
RS.RenderStepped:wait()
AroundLeft:FireServer(GripPos)
Tool.GripPos = Vector3.new(1, 3.5, 1)
RS.RenderStepped:wait()
AroundLeft:FireServer(GripPos)
Tool.GripPos = Vector3.new(0.75, 3.25, 0.75)
RS.RenderStepped:wait()
AroundLeft:FireServer(GripPos)
Tool.GripPos = Vector3.new(0.5, 3, 0.5)
RS.RenderStepped:wait()
AroundLeft:FireServer(GripPos)
Tool.GripPos = Vector3.new(0.5, 2.75, 0.25)
RS.RenderStepped:wait()
AroundLeft:FireServer(GripPos)
Tool.GripPos = Vector3.new(0.5, 2.25, 0)
RS.RenderStepped:wait()
AroundLeft:FireServer(GripPos)
Tool.GripPos = Vector3.new(0.5, 2.5, 0)
RS.RenderStepped:wait()
AroundLeft:FireServer(GripPos)
Tool.lMovement.Disabled=false
d=true
end
end
end
end
end)
ServerScript [FireAllClients]:
local Tool = script.Parent
local Events = Tool:WaitForChild("Events")
local AroundLeft = Events:WaitForChild("AroundLeft")
local d = true
local GripPos = Tool.GripPos
AroundLeft.OnServerEvent:Connect(function(GripPosition) --What was given from firing the server
if d then
d = false
AroundLeft:FireAllClients(GripPosition)
wait()
d = true
end
end)
LocalScript [OnClientEvent]:
local Tool = script.Parent
local Events = Tool:FindFirstChild("Events")
local AroundLeft = Events:WaitForChild("AroundLeft")
local RS = game:GetService("RunService")
AroundLeft.OnClientEvent:Connect(function() --I've added GripPosition here, same result.
Tool.GripPos = Vector3.new(0.5, -0.5, -0.3) --then changed Tool.GripPos to GripPosition, nothing worked.
RS.RenderStepped:wait()
Tool.GripPos = Vector3.new(0.5, -0.75, -0.15)
RS.RenderStepped:wait()
Tool.GripPos = Vector3.new(0.5, -1, 0)
RS.RenderStepped:wait()
Tool.GripPos = Vector3.new(0.5, -1.25, 0.25)
RS.RenderStepped:wait()
Tool.GripPos = Vector3.new(0.5, -1.5, 0.5)
RS.RenderStepped:wait()
Tool.GripPos = Vector3.new(0.5, -1.5, 0.75)
RS.RenderStepped:wait()
Tool.GripPos = Vector3.new(0.5, -1.5, 1)
RS.RenderStepped:wait()
Tool.GripPos = Vector3.new(0.5, -1.5, 1.25)
RS.RenderStepped:wait()
Tool.GripPos = Vector3.new(0.5, -1.5, 1.5)
RS.RenderStepped:wait()
Tool.GripPos = Vector3.new(0.5, -1.25, 1.75)
RS.RenderStepped:wait()
Tool.GripPos = Vector3.new(0.5, -1, 2)
RS.RenderStepped:wait()
Tool.GripPos = Vector3.new(0.75, -0.75, 2.25)
RS.RenderStepped:wait()
Tool.GripPos = Vector3.new(1, -0.5, 2.5)
RS.RenderStepped:wait()
Tool.GripPos = Vector3.new(1.25, -0.25, 2.75)
RS.RenderStepped:wait()
Tool.GripPos = Vector3.new(1.5, 0, 3)
RS.RenderStepped:wait()
Tool.GripPos = Vector3.new(1.75, 0.25, 3)
RS.RenderStepped:wait()
Tool.GripPos = Vector3.new(2, 0.5, 3)
RS.RenderStepped:wait()
Tool.GripPos = Vector3.new(2.25, 0.75, 3)
RS.RenderStepped:wait()
Tool.GripPos = Vector3.new(2.5, 1, 3)
RS.RenderStepped:wait()
Tool.GripPos = Vector3.new(2.75, 1.25, 3)
RS.RenderStepped:wait()
Tool.GripPos = Vector3.new(3, 1.5, 3)
RS.RenderStepped:wait()
Tool.GripPos = Vector3.new(2.75, 1.75, 2.75)
RS.RenderStepped:wait()
Tool.GripPos = Vector3.new(2.5, 2, 2.5)
RS.RenderStepped:wait()
Tool.GripPos = Vector3.new(2.25, 2.25, 2.25)
RS.RenderStepped:wait()
Tool.GripPos = Vector3.new(2, 2.5, 2)
RS.RenderStepped:wait()
Tool.GripPos = Vector3.new(1.75, 2.75, 1.75)
RS.RenderStepped:wait()
Tool.GripPos = Vector3.new(1.5, 3, 1.5)
RS.RenderStepped:wait()
Tool.GripPos = Vector3.new(1.25, 3.25, 1.75)
RS.RenderStepped:wait()
Tool.GripPos = Vector3.new(1, 3.5, 1)
RS.RenderStepped:wait()
Tool.GripPos = Vector3.new(0.75, 3.25, 0.75)
RS.RenderStepped:wait()
Tool.GripPos = Vector3.new(0.5, 3, 0.5)
RS.RenderStepped:wait()
Tool.GripPos = Vector3.new(0.5, 2.75, 0.25)
RS.RenderStepped:wait()
Tool.GripPos = Vector3.new(0.5, 2.25, 0)
RS.RenderStepped:wait()
Tool.GripPos = Vector3.new(0.5, 2.5, 0)
RS.RenderStepped:wait()
end)
Disregard all the Tool.GripPos, I just need to know why this doesn't work when I'm in game. In all, I'm changing the Tool's Grip Position and moving it around, while making it move around 60 FPS compared to the 30 FPS ROBLOX has.
Thanks,
LukeGabrieI

3 comments
it didn't work lol
also add gripPosition parameter in OnClientEvent
that didnt work either.