I don't know if it'll work because I don't know if ents have view_ofs or v_angle. You'll just have to try. Works with players.
Code:
stock PointByAim(ent, vel, Float:retPoint[3]) {
#if !defined _engine_included && !defined _fakemeta_included
#assert You need to include engine or fakemeta!
#endif
new Float:entOrigin[3], Float:entOffsets[3];
#if defined _engine_included
if ( ! is_valid_ent(ent) ) {
#else
if ( ! pev_valid(ent) ) {
#endif
log_amx("[PointByAim] Entity %d is not valid", ent);
return;
}
#if defined _engine_included
entity_get_vector(ent, EV_VEC_origin, entOrigin);
entity_get_vector(ent, EV_VEC_view_ofs, entOffsets);
#else
pev(ent, pev_origin, entOrigin);
pev(ent, pev_view_ofs, entOffsets);
#endif
entOrigin[0] += entOffsets[0];
entOrigin[1] += entOffsets[1];
entOrigin[2] += entOffsets[2];
#if defined _engine_included
entity_get_vector(ent, EV_VEC_v_angle, entOffsets);
#else
pev(ent, pev_v_angle, entOffsets);
#endif
angle_vector(entOffsets, ANGLEVECTOR_FORWARD, entOffsets);
retPoint[0] = entOrigin[0] + entOffsets[0] * vel;
retPoint[1] = entOrigin[1] + entOffsets[1] * vel;
retPoint[2] = entOrigin[2] + entOffsets[2] * vel;
}
__________________