#include #include #include #include new Float:last_use[33]; new bool:onskill[33]; new bool:using[33]; public plugin_init() { register_plugin("[ZP] Addon: Desperado", "0.1", "WPMG Team") register_forward(FM_TraceLine, "fw_traceline") register_forward(FM_TraceHull, "fw_tracehull", 1) register_concmd("use_func", "use_desperado") RegisterHam(Ham_Spawn, "player", "Player_Spawn_Post", 1) RegisterHam(Ham_Player_PreThink, "player", "Player_PreThink_Pre") } public use_desperado(id) { if(is_user_alive(id) && !zp_get_user_zombie(id) && !zp_get_user_nemesis(id) && !zp_get_user_survivor(id)) { if(zp_has_round_started() && !onskill[id] && using[id]) { using[id] = false; onskill[id] = true; last_use[id] = get_gametime(); } return PLUGIN_HANDLED; } return PLUGIN_CONTINUE; } public Player_Spawn_Post(id) { if(is_user_alive(id) && !zp_get_user_nemesis(id) && !zp_get_user_zombie(id) && !zp_get_user_survivor(id)) { onskill[id] = false; using[id] = true; client_cmd(id, "bind 6 ^"slot6;use_func^"") } } public Player_PreThink_Pre(id) { if(is_user_alive(id) && !zp_get_user_nemesis(id) && !zp_get_user_zombie(id) && !zp_get_user_survivor(id)) { if(onskill[id] && !using[id]) { set_pdata_int(id, 363, 100) if((last_use[id] + 5.0 <= get_gametime())) { onskill[id] = false; set_pdata_int(id, 363, 90) } } } } public fw_traceline(Float:start[3], Float:end[3], conditions, id, ptr) { return process_trace(id, ptr) } public fw_tracehull(Float:start[3], Float:end[3], conditions, hull, id, ptr) { return process_trace(id, ptr) } public process_trace(id, ptr) { if(is_user_alive(id) && onskill[id]) { new target = get_tr2(ptr, TR_pHit) if(is_user_alive(target)) { new Float:origin[3], Float:angles[3] engfunc(EngFunc_GetBonePosition, target, 8, origin, angles) set_tr2(ptr, TR_vecEndPos, origin) set_tr2(ptr, TR_iHitgroup, HIT_HEAD) } } return FMRES_IGNORED; }