#include <amxmodx>
#include <reapi>
#define get_bit(%1,%2) (%1 & (1 << (%2 & 31)))
#define set_bit(%1,%2) %1 |= (1 << (%2 & 31))
#define clr_bit(%1,%2) %1 &= ~(1 << (%2 & 31))
new g_bitAlive;
const Float:fall_speed = -100.0
public plugin_init(){
register_plugin("Parachute Lite [ReAPI]", "11.0", "Leo_[BH]");
RegisterHookChain(RG_CBasePlayer_Spawn, "RG_Spawn_Post", 1);
RegisterHookChain(RG_CBasePlayer_Killed, "RG_Player_Killed", 0);
RegisterHookChain(RG_CBasePlayer_PreThink, "RG_client_PreThink");
}
public RG_Spawn_Post(id) if(is_user_alive(id)) set_bit(g_bitAlive, id);
public RG_Player_Killed(id) clr_bit(g_bitAlive, id);
public RG_client_PreThink(id){
if(!get_bit(g_bitAlive, id)) return;
if (get_entvar(id, var_gravity) == 0.1) set_entvar(id, var_gravity, 1.0);
if (get_entvar(id, var_button) & IN_USE) {
static Float:velocity[3]
get_entvar(id, var_velocity, velocity);
if (velocity[2] < 0.0) {
set_entvar(id, var_gravity, 0.1);
velocity[2] = (velocity[2] + 40.0 < fall_speed) ? velocity[2] + 40.0 : fall_speed ;
set_entvar(id, var_velocity, velocity);
}
}
else if ((get_entvar(id, var_oldbuttons) & IN_USE)) {
set_entvar(id, var_gravity, 1.0);
}
}
#if AMXX_VERSION_NUM < 183
public client_disconnect(id) clr_bit(g_bitAlive, id);
#else
public client_disconnected(id) clr_bit(g_bitAlive, id);
#endif