Just tested your previous code and it works fine…
Right, it works fine, but it’s either firing twice or being recieved twice based on the fact that the server script gets printed twice
Can you send a file of the world? It may be working but something is calling the remote twice.
I don’t think that’s necessary. The two scripts I provided are the only ones interacting with the event
If it isnt necessary then figure out why its being called twice.
If your tool calls it once then somthing else is calling it.
Also fix your cooldown, Should be like this
local event = game.ReplicatedStorage.event
local cooldown = true
event.OnServerEvent:Connect(function()
if cooldown then
cooldown = false
--Insert Code.
print("Debounced")
task.wait(1)
cooldown = true
end
end)
Reason being is that everytime you call the remote itll set cooldown
to false meaning there is no “Cooldown”.
You may be reviewing from the Output, which prints on the client and the server. Which may appear to print twice, but it only print’s once.
That makes sense, I am using the output. But would that be the case for just server scripts? I have noticed getting 2x prints
Testing it and it works fine. Personally I think something else is calling it or it is your Debounce.
EDIT: Spamming it
Or he could use a public value for testing, just for further knowing if it does go through…
Local
local replicatedStorage = game:GetService("ReplicatedStorage")
local event = replicatedStorage.event
local tool = script.Parent
tool.Activated:Connect(function()
event:FireServer("ToolClicked")
print("Clicked")
end)
Server
local players = game:GetService("Players")
local replicatedStorage = game:GetService("ReplicatedStorage")
local event = replicatedStorage.event
players.PlayerAdded:Connect(function(player)
local boolean = Instance.new("BoolValue", player)
boolean.Name = "Cooldown"
boolean.Value = false
end)
event.OnServerEvent:Connect(function(player, action)
if player and action == "ToolClicked" then
local cooldown = player:FindFirstChild("Cooldown")
if cooldown.Value == false then
cooldown.Value = true
print("Released")
task.wait(3)
cooldown.Value = false
end
end
end)
I guess what ever works for him…
It’s not a tool, it’s a textbutton
well it would basically be the same as:
local replicatedStorage = game:GetService("ReplicatedStorage")
local event = replicatedStorage.event
local button = script.Parent
button.MouseButton1Click:Connect(function()
event:FireServer("Clicked")
print("Clicked")
end)
And also changing something in the server side of things…
if player and action == "Clicked" then
Would it be possible to remove the player from use in that as I want to use it to access leaderstats at some point
Is it a button? In that case, you don’t need a local script, since MouseButton1Click
fires on the server.
Can you elaborate?
So that I can get a better understanding on what you’re talking about…
On the server script I want to use player
in the OnServerEvent function which would allow me to access the leaderstats and such. So is the use of player in the script you wrote necessary?
Yeah because you’re checking to see who fired the event if you’re using
an if statement for checking the argument in the OnServerEvent,
and also if you’re wanting to give rewards to the player that fired the event…
Could I potentially use plr
then?
Yeah if you prefer calling the player, plr instead
the first argument in a OnServerEvent always starts with the player,
then any other arguments that you might have passed through in the FireServer
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.