Quote:
Originally Posted by Natsheh
Whats/where the model origin ?
Also you don't need to subtract the view offset from the origin its already doing it here
shift_entity_position(iEnt, 100.0, 0.0, -fvOFS[2])
Its seems the origin of the model is in the model feet try to subtract the offset and player origin offset from the origin
shift_entity_position(iEnt, 100.0, 0.0, -fvOFS[2] - 36.0)
Now if the user is crouching you can decrease the player origin offset
shift_entity_position(iEnt, 100.0, 0.0, -fvOFS[2] - (pev(id, pev_flags) & FL_DUCKING ? 18.0 : 36.0))
|
Yes, now I checking if player is in duck using get_user_button(). Now it works as intended. Thank you all
PHP Code:
public ent_ThinkPre(iEnt)
{
if(!pev_valid(iEnt))
return
static className[32]
pev(iEnt, pev_classname, className, charsmax(className))
if(!equali(className, g_szClassName))
{
return
}
new id = pev(iEnt, pev_owner)
if(is_user_alive(id))
{
new button = get_user_button(id)
new Float:fStartPos[3], Float:fvOFS[3], Float:fAngles[3]
pev(id, pev_origin, fStartPos)
pev(id, pev_view_ofs, fvOFS)
pev(id, pev_angles, fAngles)
fAngles[0] = 0.0
if(!(button & IN_DUCK))
{
fStartPos[2] -= fvOFS[2]
}
set_pev(iEnt, pev_origin, fStartPos)
set_pev(iEnt, pev_angles, fAngles)
if(button & IN_FORWARD)
{
entity_set_aim(iEnt, id, true);
}
else
{
entity_set_aim(iEnt, id);
}
shift_entity_position(iEnt, 100.0, 0.0, -fvOFS[2])
engfunc(EngFunc_DropToFloor, iEnt)
set_pev(iEnt, pev_nextthink, get_gametime() + 0.01)
}
}
__________________