OnPlayerCommand: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
|||
Line 17: | Line 17: | ||
==Example== | ==Example== | ||
<section name="Server" class="server" show="true"> | <section name="Server" class="server" show="true"> | ||
This example implements an anti-flood protection timer for commands | This example implements an anti-flood protection timer for commands. | ||
'''Be sure to give the resource a function.kickPlayer right. | |||
Also, note, that if the server freezes for a frame and a player executes a command 2x he/she'll get kicked, because those 2 commands will be processed after each other, with very little delay''' | |||
<syntaxhighlight lang="lua"> | <syntaxhighlight lang="lua"> | ||
local CMD_INTERVAL = 200 --// The interval that needs to pass before the player can execute another cmd | local CMD_INTERVAL = 200 --// The interval that needs to pass before the player can execute another cmd | ||
Line 23: | Line 25: | ||
local executions = setmetatable({}, { --// Metatable for non-existing indexes | local executions = setmetatable({}, { --// Metatable for non-existing indexes | ||
__index = function(t, | __index = function(t, player) | ||
return getTickCount()-CMD_INTERVAL | |||
end | end | ||
}) | }) |
Revision as of 19:53, 11 October 2018
This event is triggered when a player issues a command.
Parameters
string command
Source
The source of this event is the player who tried to execute a command.
Result of cancelling this event
The command will not be executed.
Example
Click to collapse [-]
ServerThis example implements an anti-flood protection timer for commands. Be sure to give the resource a function.kickPlayer right. Also, note, that if the server freezes for a frame and a player executes a command 2x he/she'll get kicked, because those 2 commands will be processed after each other, with very little delay
local CMD_INTERVAL = 200 --// The interval that needs to pass before the player can execute another cmd local KICK_AFTER_INTERVAL = 50 --// Kick the player if they execute more than 20 cmds/sec local executions = setmetatable({}, { --// Metatable for non-existing indexes __index = function(t, player) return getTickCount()-CMD_INTERVAL end }) addEventHandler("onPlayerCommand", root, function() if (executions[source]-getTickCount()<=CMD_INTERVAL) then if (executions[source]-getTickCount()<=KICK_AFTER_INTERVAL) then kickPlayer(source, "Anti-Flood", "Don't flood") end cancelEvent() end executions[source] = getTickCount() end )
This example disables the hardcoded command 'whois'
addEventHandler("onPlayerCommand",root, function(command) if (command == "whois") then cancelEvent() end end)
See Also
Player events
- onPlayerACInfo
- onPlayerBan
- onPlayerChangeNick
- onPlayerChat
- onPlayerClick
- onPlayerCommand
- onPlayerConnect
- onPlayerContact
- onPlayerDamage
- onPlayerJoin
- onPlayerLogin
- onPlayerLogout
- onPlayerMarkerHit
- onPlayerMarkerLeave
- onPlayerModInfo
- onPlayerMute
- onPlayerNetworkStatus
- onPlayerPickupHit
- onPlayerPickupLeave
- onPlayerPickupUse
- onPlayerPrivateMessage
- onPlayerQuit
- onPlayerScreenShot
- onPlayerSpawn
- onPlayerStealthKill
- onPlayerTarget
- onPlayerUnmute
- onPlayerVehicleEnter
- onPlayerVehicleExit
- onPlayerVoiceStart
- onPlayerVoiceStop
- onPlayerWasted
- onPlayerWeaponFire
- onPlayerWeaponSwitch
Event functions
- addEvent
- addEventHandler
- cancelEvent
- cancelLatentEvent
- getEventHandlers
- getLatentEventHandles
- getLatentEventStatus
- removeEventHandler
- triggerEvent
- wasEventCancelled