It seems some people still struggle with this so here is a copy/paste way of detecting click button presses/releases in your plugins.
Make sure to include sdktools at the top of your plugin if it's not there already
Code:
#include <sdktools>
These also need to go somewhere near the top of the file
Code:
#define MAX_BUTTONS 25
new g_LastButtons[MAXPLAYERS+1];
If you don't already have these forwards, add them, else just add the contents
Code:
public OnClientDisconnect_Post(client)
{
g_LastButtons[client] = 0;
}
public Action:OnPlayerRunCmd(client, &buttons, &impulse, Float:vel[3], Float:angles[3], &weapon)
{
for (new i = 0; i < MAX_BUTTONS; i++)
{
new button = (1 << i);
if ((buttons & button))
{
if (!(g_LastButtons[client] & button))
{
OnButtonPress(client, button);
}
}
else if ((g_LastButtons[client] & button))
{
OnButtonRelease(client, button);
}
}
g_LastButtons[client] = buttons;
return Plugin_Continue;
}
Now you can use these function to detect the buttons
Code:
OnButtonPress(client, button)
{
// do stuff
}
OnButtonRelease(client, button)
{
// do stuff
}
List of detectable buttons at time of writing (
full list here):
Code:
#define IN_ATTACK (1 << 0)
#define IN_JUMP (1 << 1)
#define IN_DUCK (1 << 2)
#define IN_FORWARD (1 << 3)
#define IN_BACK (1 << 4)
#define IN_USE (1 << 5)
#define IN_CANCEL (1 << 6)
#define IN_LEFT (1 << 7)
#define IN_RIGHT (1 << 8)
#define IN_MOVELEFT (1 << 9)
#define IN_MOVERIGHT (1 << 10)
#define IN_ATTACK2 (1 << 11)
#define IN_RUN (1 << 12)
#define IN_RELOAD (1 << 13)
#define IN_ALT1 (1 << 14)
#define IN_ALT2 (1 << 15)
#define IN_SCORE (1 << 16) // Used by client.dll for when scoreboard is held down
#define IN_SPEED (1 << 17) // Player is holding the speed key
#define IN_WALK (1 << 18) // Player holding walk key
#define IN_ZOOM (1 << 19) // Zoom key for HUD zoom
#define IN_WEAPON1 (1 << 20) // weapon defines these bits
#define IN_WEAPON2 (1 << 21) // weapon defines these bits
#define IN_BULLRUSH (1 << 22)
#define IN_GRENADE1 (1 << 23) // grenade 1
#define IN_GRENADE2 (1 << 24) // grenade 2