Here this should be more reliable !
PHP Code:
stock shift_entity_position(ent, Float:forw, Float:right, Float:up)
{
static Float:vOrigin[3], Float:vAngle[3], Float:vForward[3], Float:vRight[3], Float:vEnd[3];
pev(ent, pev_origin, vOrigin);
pev(ent, pev_angles, vAngle);
angle_vector(vAngle,ANGLEVECTOR_FORWARD, vForward); //or use EngFunc_AngleVectors
angle_vector(vAngle,ANGLEVECTOR_RIGHT, vRight);
vEnd[0] = vOrigin[0] + (vForward[0] * forw) + (vRight[0] * right);
vEnd[1] = vOrigin[1] + (vForward[1] * forw) + (vRight[1] * right);
vEnd[2] = vOrigin[2] + up;
static iTr2; iTr2 = create_tr2();
engfunc(EngFunc_TraceLine, vOrigin, vEnd, DONT_IGNORE_MONSTERS, ent, iTr2);
get_tr2(iTr2, TR_vecEndPos, vEnd);
free_tr2(iTr2);
set_pev(ent, pev_origin, vEnd);
}
public Item_think(ent)
{
static owner, Float:fStartPos[3], Float:fvOFS[3], Float:fAngles[3];
owner = pev(ent, pev_owner);
// How to use ?
pev(owner, pev_origin, fStartPos);
pev(owner, pev_view_ofs, fvOFS);
pev(owner, pev_v_angle, fAngles);
Float:fAngles[0] = 0.0;
fStartPos[2] += fvOFS[2];
set_pev(ent, pev_origin, fStartPos);
set_pev(ent, pev_angles, fAngles);
shift_entity_position(ent, 100.0, 0.0, 0.0); //100.0 just for testing, might be smaller
set_pev(ent, pev_nextthink, get_gametime()+0.1);
}
can you confirm this works?
__________________