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

Update a Moving Handle From Tool Using RenderStepped? [Client-Server-Client]

Asked by 5 years ago
Edited 5 years ago

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

1 answer

Log in to vote
0
Answered by 5 years ago

There's a problem in your server script.

The first parameter in OnServerEvent is the player who fired a remote, so GripPosition would be the second parameter.

just switch to this:

AroundLeft.OnServerEvent:Connect(function(plr, GripPosition)

and it should work even though I didn't really check the rest of the code

0
it didn't work lol LukeGabrieI 73 — 5y
0
also add gripPosition parameter in OnClientEvent g1o2r3d4a5n6 350 — 5y
0
that didnt work either. LukeGabrieI 73 — 5y
Ad

Answer this question