Code: Select all
#include <amxmodx>#include <fakemeta>#include <hamsandwich>#include <zombieplague> #define PLUGIN "parachute"#define AUTHOR "cheap_suit"#define VERSION "1.1" new const g_paramodel[] = "models/parachute.mdl"new g_entmodel[33], cvar_fallspeed public plugin_init(){ register_plugin(PLUGIN, VERSION, AUTHOR) register_forward(FM_PlayerPreThink, "fwd_playerprethink") RegisterHam(Ham_Killed, "player", "bacon_killed") cvar_fallspeed = register_cvar("parachute_fallspeed", "80.0")} public plugin_precache() precache_model(g_paramodel) public client_connect(id) parachute_reset(id) public client_disconnect(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 zp_user_infected_post(id) parachute_reset(id) public fwd_playerprethink(id){ if(!is_user_alive(id) || zp_get_user_zombie(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}
Parašiutus turės nuolatos, bet tik žmonės.