Kod: Tümünü seç
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#define PLUGIN "parachute"
#define AUTHOR "cheap_suit"
#define VERSION "1.1"
new const g_paramodel[] = "models/yarasaparac.mdl"
new g_entmodel[33], cvar_fallspeed
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_forward(FM_PlayerPreThink, "ctozel")
RegisterHam(Ham_Killed, "player", "bacon_killed")
cvar_fallspeed = register_cvar("parachute_fallspeed", "100.0")
}
public plugin_precache()
precache_model(g_paramodel)
public client_connect(id)
parachute_reset(id)
public client_disconnected(id)
parachute_reset(id)
public bacon_killed(victim, attacker, shouldgib)
parachute_reset(victim)
public parachute_reset(id)
{
if(g_entmodel[id] > 0 && pev_valid(g_entmodel[id]))
engfunc(EngFunc_RemoveEntity, g_entmodel[id])
g_entmodel[id] = 0
}
public ctozel(id)
{
if(get_user_team(id) == 2)
{
fwd_playerprethink(id)
}
}
public fwd_playerprethink(id)
{
if(!is_user_alive(id))
return FMRES_IGNORED
static Float:frame, flags; flags = pev(id, pev_flags)
if(g_entmodel[id] > 0 && (flags & FL_ONGROUND))
{
if(pev(g_entmodel[id], pev_sequence) != 2)
{
set_pev(g_entmodel[id], pev_sequence, 2)
set_pev(g_entmodel[id], pev_gaitsequence, 1)
set_pev(g_entmodel[id], pev_frame, 0.0)
set_pev(g_entmodel[id], pev_fuser1, 0.0)
set_pev(g_entmodel[id], pev_animtime, 0.0)
set_pev(g_entmodel[id], pev_framerate, 0.0)
return FMRES_IGNORED
}
frame = pev(g_entmodel[id], pev_fuser1) + 2.0
set_pev(g_entmodel[id], pev_fuser1, frame)
set_pev(g_entmodel[id], pev_frame, frame)
if(frame > 254.0)
{
engfunc(EngFunc_RemoveEntity, g_entmodel[id])
g_entmodel[id] = 0
}
}
if(pev(id, pev_button) & IN_USE)
{
static Float:velocity[3]
pev(id, pev_velocity, velocity)
if(velocity[2] < 0.0)
{
if(g_entmodel[id] < 1)
{
g_entmodel[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
if(g_entmodel[id] > 0)
{
engfunc(EngFunc_SetModel, g_entmodel[id], g_paramodel)
set_pev(g_entmodel[id], pev_classname, "parachute")
set_pev(g_entmodel[id], pev_aiment, id)
set_pev(g_entmodel[id], pev_owner, id)
set_pev(g_entmodel[id], pev_movetype, MOVETYPE_FOLLOW)
set_pev(g_entmodel[id], pev_sequence, 0)
set_pev(g_entmodel[id], pev_gaitsequence, 1)
set_pev(g_entmodel[id], pev_frame, 0.0)
set_pev(g_entmodel[id], pev_fuser1, 0.0)
}
}
else if(g_entmodel[id] > 0)
{
static Float:fallspeed; fallspeed = get_pcvar_float(cvar_fallspeed) * -1.0
velocity[2] = (velocity[2] + 40.0 < fallspeed) ? velocity[2] + 40.0 : fallspeed
set_pev(id, pev_velocity, velocity)
set_pev(id, pev_sequence, 3), set_pev(id, pev_gaitsequence, 1)
set_pev(id, pev_frame, 1.0), set_pev(id, pev_framerate, 1.0)
if(pev(g_entmodel[id], pev_sequence) == 0)
{
frame = pev(g_entmodel[id], pev_fuser1) + 1.0
set_pev(g_entmodel[id], pev_fuser1, frame)
set_pev(g_entmodel[id], pev_frame, frame)
if(frame > 100.0)
{
set_pev(g_entmodel[id], pev_animtime, 0.0)
set_pev(g_entmodel[id], pev_framerate, 0.4)
set_pev(g_entmodel[id], pev_sequence, 1)
set_pev(g_entmodel[id], pev_gaitsequence, 1)
set_pev(g_entmodel[id], pev_frame, 0.0)
set_pev(g_entmodel[id], pev_fuser1, 0.0)
}
}
}
}
else if(g_entmodel[id] > 0)
{
engfunc(EngFunc_RemoveEntity, g_entmodel[id])
g_entmodel[id] = 0
}
}
else if((pev(id, pev_oldbuttons) & IN_USE) && g_entmodel[id] > 0)
{
engfunc(EngFunc_RemoveEntity, g_entmodel[id])
g_entmodel[id] = 0
}
return FMRES_IGNORED
}