How would i make a cooldown on a function? (like with CurTime)
4 replies, posted
So I have a function:
[CODE]function org.InviteMember(org,ply,perms, args)
if org != nil then
if OG.CheckPermission(perms, "-i") then
-- invite member
local plyS = args[1]
if plyS == ply then OG.SendMessage(ply, "You cannot invite yourself!") return end
if plyS:GetOrg() == nil then
-- Send invite
org.invites[plyS:UniqueID()] = "Received"
OG.RefreshOrgData(plyS:GetOrg())
DarkRP.createQuestion("Would you like to join " .. ply:GetOrg():GetName() .. "! \n -Invited by " .. ply:Nick(), "memberinvite".. ply:UniqueID(), plyS, 30, QFunc, ply, plyS )
else
OG.SendMessage(ply, "That player is already in an organisation!")
-- Different org
end
else
OG.SendMessage(ply, "You do not have the required permissions to invite a member!")
-- doesnt have required perms
end
else
OG.SendMessage(ply, "You are not in an organisation!")
-- Not in an org
end
end[/CODE]
How would I go about making a cooldown for this because I found that you can spam this on someones screen and it's really annoying. I was experimenting with CurTime() and I have no idea on how to use it. Please help.
I assume this is serverside.
A table indexed by player names containing the time when a player is allowed to resend an invite should work.
[CODE]
local playerInviteTimers = {}
local inviteDelay = 15
-- setup the table
for _, ply in pairs( player.GetAll() ) do
playerInviteTimers[ ply:SteamID() ] = 0
end
local invitePlayer = function( ply, args )
if playerInviteTimers[ ply:SteamID() ] < CurTime() then
sendInvite()
playerInviteTimers[ ply:SteamID() ] = CurTime() + inviteDelay
else
dontSendInvite()
end
end
[/CODE]
This should be simple enough to add to your code, though maybe in a different format.
[lua]
function org.InviteMember(org,ply,perms, args)
if ply.LastInvite then --Check if variable exists.
if ply.LastInvite > CurTime() then --Check if they still have a time delay.
OG.SendMessage(ply, "You are sending invites too fast!") --Inform client.
return --End the function entirely.
end
end
ply.LastInvite = CurTime() + 5 --Set new delay to 5 seconds in the future.
if org != nil then
if OG.CheckPermission(perms, "-i") then
-- invite member
local plyS = args[1]
if plyS == ply then OG.SendMessage(ply, "You cannot invite yourself!") return end
if plyS:GetOrg() == nil then
-- Send invite
org.invites[plyS:UniqueID()] = "Received"
OG.RefreshOrgData(plyS:GetOrg())
DarkRP.createQuestion("Would you like to join " .. ply:GetOrg():GetName() .. "! \n -Invited by " .. ply:Nick(), "memberinvite".. ply:UniqueID(), plyS, 30, QFunc, ply, plyS )
else
OG.SendMessage(ply, "That player is already in an organisation!")
-- Different org
end
else
OG.SendMessage(ply, "You do not have the required permissions to invite a member!")
-- doesnt have required perms
end
else
OG.SendMessage(ply, "You are not in an organisation!")
-- Not in an org
end
end
[/lua]
[editline]22nd December 2016[/editline]
You should change ply.LastInvite to ply.NextAllowedInvite for it to make more sense.
[QUOTE=find me;51569433][lua]
function org.InviteMember(org,ply,perms, args)
if ply.LastInvite then --Check if variable exists.
if ply.LastInvite > CurTime() then --Check if they still have a time delay.
OG.SendMessage(ply, "You are sending invites too fast!") --Inform client.
return --End the function entirely.
end
end
ply.LastInvite = CurTime() + 5 --Set new delay to 5 seconds in the future.
if org != nil then
if OG.CheckPermission(perms, "-i") then
-- invite member
local plyS = args[1]
if plyS == ply then OG.SendMessage(ply, "You cannot invite yourself!") return end
if plyS:GetOrg() == nil then
-- Send invite
org.invites[plyS:UniqueID()] = "Received"
OG.RefreshOrgData(plyS:GetOrg())
DarkRP.createQuestion("Would you like to join " .. ply:GetOrg():GetName() .. "! \n -Invited by " .. ply:Nick(), "memberinvite".. ply:UniqueID(), plyS, 30, QFunc, ply, plyS )
else
OG.SendMessage(ply, "That player is already in an organisation!")
-- Different org
end
else
OG.SendMessage(ply, "You do not have the required permissions to invite a member!")
-- doesnt have required perms
end
else
OG.SendMessage(ply, "You are not in an organisation!")
-- Not in an org
end
end
[/lua]
[editline]22nd December 2016[/editline]
You should change ply.LastInvite to ply.NextAllowedInvite for it to make more sense.[/QUOTE]
Crap man, thank you so much. It works perfectly!
Try to learn from it. Very simple but very effective. The only things I added were at the top, commented.
Sorry, you need to Log In to post a reply to this thread.