#include <amxmodx>
#include <amxmisc>
#include <engine>
#define PLUGIN "Side Jump"
#define VERSION "0.9"
#define AUTHOR "~Miczu"
new SideJump[33]
new Float:SideJumpDelay[33]
new moze[33]
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_cvar("amx_sj_delay","4.5")
register_cvar("amx_sj_power","2.0")
register_cvar("amx_sj_hight","300.0")
register_clcmd("amx_give_skok", "DajSkok", ADMIN_KICK, " < nicname > - Dodaje skok graczowi")
register_clcmd("amx_remove_skok", "UsunSkok", ADMIN_KICK, " < nicname > - Usuwa skok graczowi")
}
public DajSkok(id, level, cid) {
if(!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED;
new szTarget[32];
read_argv(1, szTarget, 31);
new iTarget = cmd_target(id, szTarget, CMDTARGET_ALLOW_SELF|CMDTARGET_ONLY_ALIVE|CMDTARGET_NO_BOTS);
if(iTarget && moze[iTarget] == 0) {
moze[iTarget] = 1;
}
return PLUGIN_CONTINUE;
}
public UsunSkok(id, level, cid) {
if(!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED;
new szTarget[32];
read_argv(1, szTarget, 31);
new iTarget = cmd_target(id, szTarget, CMDTARGET_ALLOW_SELF|CMDTARGET_ONLY_ALIVE|CMDTARGET_NO_BOTS);
if(iTarget && moze[iTarget] == 1) {
moze[iTarget] = 0;
}
return PLUGIN_CONTINUE;
}
public client_PreThink(id)
{
if(is_user_connected(id) && moze[id])
{
new button = entity_get_int(id, EV_INT_button)
new up = (button & IN_FORWARD)
new down = (button & IN_BACK)
new moveright = (button & IN_MOVERIGHT)
new moveleft = (button & IN_MOVELEFT)
new jump = (button & IN_JUMP)
new flags = entity_get_int(id, EV_INT_flags)
new onground = flags & FL_ONGROUND
if( (moveright || moveleft) && !up && !down && jump && onground)
SideJump[id] = 1
}
}
public client_PostThink(id)
{
if(is_user_connected(id) && moze[id])
{
new Float:gametime = get_gametime()
new button = entity_get_int(id, EV_INT_button)
new up = (button & IN_FORWARD)
new down = (button & IN_BACK)
new moveright = (button & IN_MOVERIGHT)
new moveleft = (button & IN_MOVELEFT)
new jump = (button & IN_JUMP)
new Float:vel[3]
new Float:delay=get_cvar_float("amx_sj_delay")
new Float:pow=get_cvar_float("amx_sj_power")
new Float:hight=get_cvar_float("amx_sj_hight")
entity_get_vector(id,EV_VEC_velocity,vel)
if( (gametime - SideJumpDelay[id] > delay) && SideJump[id] && jump && (moveright || moveleft) && !up && !down) {
vel[0] *= pow
vel[1] *= pow
vel[2] = hight
entity_set_vector(id,EV_VEC_velocity,vel)
SideJump[id] = 0
SideJumpDelay[id] = gametime
}
else
SideJump[id] = 0
}
}