Try this:
PHP Code:
#include <amxmodx>
#include <fakemeta>
new bool: g_sprint[33]
new cvar_speed
new cvar_cooldown
new cvar_speedtime
new Float:gStartTime[33]
public plugin_init()
{
register_plugin("Sprint", "0.1", "Mini_Midget");
cvar_speed = register_cvar("sprint_speed", "400");
cvar_cooldown = register_cvar("sprint_cooldown", "20");
cvar_speedtime = register_cvar("sprint_speedtime", "3");
register_forward( FM_CmdStart, "FMCmdStart" );
register_forward( FM_PlayerPreThink, "FMPreThink" );
register_forward(FM_UpdateClientData, "FMUpdateClientData", 1)
}
public client_putinserver(id)
{
g_sprint[id] = false
}
public FMCmdStart( id, uc_handle, randseed )
{
if (!is_user_alive(id))
return FMRES_IGNORED
new Float:curtime = get_gametime()
if ( curtime - gStartTime[id] > get_pcvar_float( cvar_cooldown ) )
{
if(get_uc(uc_handle, UC_Buttons) & IN_USE)
{
g_sprint[id] = true
gStartTime[id] = curtime
}
else
{
g_sprint[id] = false
}
}
return FMRES_IGNORED
}
public FMPreThink(id)
{
if (!is_user_alive(id))
return FMRES_IGNORED
static flag ; flag = pev(id, pev_flags)
static button ; button = pev(id, pev_button)
if ( !(flag & FL_ONGROUND) || (flag & FL_DUCKING) || !(button & IN_FORWARD) ) //Block not on ground or ducking or left, back, right movement keys
return FMRES_IGNORED
static Float: sprinting[3], Float: normal[3]
static speed ; speed = get_pcvar_num(cvar_speed)
velocity_by_aim(id, speed, sprinting) //Speed
pev(id, pev_velocity, normal)
sprinting[2] = normal[2]
if ( g_sprint[id] == true && get_gametime() - gStartTime[id] < get_pcvar_float( cvar_speedtime ) ) //Walking
{
set_pev(id, pev_velocity, sprinting) //Set the speed of sprinting
set_pev(id, pev_button, pev(id,pev_button) & ~IN_ATTACK);
set_pev(id, pev_button, pev(id,pev_button) & ~IN_ATTACK2 );
engclient_cmd(id, "weapon_knife")
//set_pev(id, pev_viewmodel2, "")
}
else if (g_sprint[id] == false) //Running
{
set_pev(id, pev_velocity, normal) //Return to normal speed
}
return FMRES_IGNORED
}
public FMUpdateClientData(id, sendweapons, cd_handle )
{
if ( !is_user_alive(id) || !g_sprint[id])
return FMRES_IGNORED;
set_cd(cd_handle, CD_ID, 0);
return FMRES_HANDLED;
}
__________________