static Float:aiming[33][3], sprite;
public plugin_precache() {
precache_sound("exparrow_hook/exparrow_hook.wav")
sprite = engfunc(EngFunc_PrecacheModel, "sprites/laserbeam.spr");
register_plugin("Hook", "1.0", "h4rdcup.ru");
register_concmd("+hook", "hook_on");
register_concmd("-hook", "hook_off");
if(~get_user_flags(id) & ACCESS) {
client_print_color(id, print_team_red, "^1Недостаточно прав для использования ^3hook");
if(!task_exists(TASK_INDEX_HOOK + id)) {
fm_get_aim_origin(id, aiming[id]);
emit_sound(id, CHAN_STATIC, "exparrow_hook/exparrow_hook.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
set_task(0.1, "hook_think", TASK_INDEX_HOOK + id, _, _, "b");
hook_think(TASK_INDEX_HOOK + id);
fm_set_user_rendering(id, kRenderFxGlowShell, random_num(0, 255), random_num(0, 255), random_num(0, 255), kRenderNormal, 16)
message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
fm_set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 16)
remove_task(TASK_INDEX_HOOK + id);
public hook_think(task) {
new id = task - TASK_INDEX_HOOK;
new Float:origin[3], Float:velocity[3];
pev(id, pev_origin, origin);
message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte(TE_BEAMENTPOINT);
write_coord(floatround(aiming[id][0]));
write_coord(floatround(aiming[id][1]));
write_coord(floatround(aiming[id][2]));
write_byte(random_num(50, 255));
write_byte(random_num(50, 255));
write_byte(random_num(50, 255));
new Float:distance = get_distance_f(aiming[id], origin);
velocity[0] = (aiming[id][0] - origin[0]) * (4.0 * 400.0 / distance);
velocity[1] = (aiming[id][1] - origin[1]) * (4.0 * 400.0 / distance);
velocity[2] = (aiming[id][2] - origin[2]) * (4.0 * 400.0 / distance);
set_pev(id, pev_velocity, velocity);