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

FilteringEnabled Code Runs Multiple Times Time When It Should Run Once?

Asked by
INOOBE_YT 387 Moderation Voter
8 years ago

So, I have made a FilteringEnabled walkspeed boost pad. When touched, instead of the person who touched it gets the boost, everyone in the server gets it and it runs once per person in the server. Is there any way to make it run once and for the person who touched the part?

01--Server script
02local Button = script.Parent.Button
03local Event = game.ReplicatedStorage["Remote Events"]["Bonus_Walkspeed_Pad"]
04local Duration = 3
05local Boost = 2
06 
07 
08Event.OnServerEvent:connect(function(Player)
09    local Character = Player.Character
10    local Humanoid = Character:FindFirstChild("Humanoid")
11    Button.CFrame = Button.CFrame * CFrame.new(0, -0.1, 0)
12    Button.BrickColor = BrickColor.new("Dark stone grey")
13    Humanoid.WalkSpeed = Humanoid.WalkSpeed * Boost
14    wait(Duration)
15    Button.CFrame = Button.CFrame * CFrame.new(0, 0.1, 0)
16    Button.BrickColor = BrickColor.new("Bright green")
17    Humanoid.WalkSpeed = Humanoid.WalkSpeed / Boost
18end)
01--Local script
02local RemoteEventFolder = game.ReplicatedStorage:WaitForChild("Remote Events")
03local RemoteEvent = RemoteEventFolder["Bonus_Walkspeed_Pad"]
04local Model = game.Workspace["Button FilteringEnabled"]
05local Enabled = true
06 
07Model:FindFirstChild("Button").Touched:connect(function(Hit)
08    if Hit.Parent and Hit.Parent:FindFirstChild("Humanoid") and game.Players:FindFirstChild(Hit.Parent.Name) and Hit.Parent:FindFirstChild("Humanoid").Health > 0 then
09        if Enabled == true then
10            Enabled = false
11            RemoteEvent:FireServer()
12            wait(4)
13            Enabled = true
14        else
15            print("Already Fired, waiting for cooldown.")
16        end
17    end
18end)
0
Nothing about this seems incorrect to me. Can you provide a ROBLOX Place we can enter in Edit Mode to see what might be causing this? adark 5487 — 8y
0
Here is the uncopylocked model in-game. https://www.roblox.com/games/684260392/Testing INOOBE_YT 387 — 8y

2 answers

Log in to vote
0
Answered by 8 years ago
Edited 8 years ago

Your local scripts are checking to see if any player is touching the brick, instead of just the LocalPlayer. Then, regardless of which player they found, they tell the server "Activate for my player please" (as the LocalPlayer is always sent as the first argument to RemoteEvents/Functions). The server has no debounce, and so doesn't mind giving more than one person a boost.

You should merge the scripts into a single Script (on the server), removing all references to the RemoteEvent (where you normally call the RemoteEvent, just call the function responsible for boosting a player). There needn't be any client/LocalScript interaction here, since Touched events fire on the server as well.

Ad
Log in to vote
0
Answered by 6 years ago

Yes there is, Try using Firing a client only for the player,which raises the walkspeed.

0
This was answered a year ag0 INOOBE_YT 387 — 6y
0
oh sorry. Wait ae you a scripter? in that case you can help me with a few of my scripts Danielp533 16 — 6y

Answer this question