Вот вспомогательная функция:Code
stock fm_get_aim_origin2(index, Float:origin[3], Float:offset = 0.0) {
new Float:start[3], Float:view_ofs[3]
pev(index, pev_origin, start)
pev(index, pev_view_ofs, view_ofs)
xs_vec_add(start, view_ofs, start)
new Float:dest[3]
pev(index, pev_v_angle, dest)
engfunc(EngFunc_MakeVectors, dest)
global_get(glb_v_forward, origin)
xs_vec_mul_scalar(origin, 9999.0, dest)
xs_vec_add(start, dest, dest)
engfunc(EngFunc_TraceLine, start, dest, DONT_IGNORE_MONSTERS, index, 0)
get_tr2(0, TR_vecEndPos, dest)
if (!offset) {
origin = dest
return 1
}
xs_vec_sub(dest, start, dest)
xs_vec_mul_scalar(origin, xs_vec_len(dest) + offset, origin)
xs_vec_add(start, origin, origin)
return 1
}
Просто указываешь (дробную) величину смещения (offset) (в HL единицах). Смещение производится относительно vecEndPos. Отрицательное смещение приблизит точку к игроку, положительное - отдалит. Нулевое смещение (по умолчанию) выдает "чистый" vecEndPos.
Прим.: Используется XS библиотека by PM [ #include <xs> ].