Code:
new Float:vStart[ 3 ];
pev( iPlayer, pev_origin, vStart );
new Float:vStop[ 3 ];
pev( iPlayer, pev_mins, vStop );
vStop[ 0 ] = vStop[ 1 ] = 0.0;
xs_vec_add( vStart, vStop, vStop );
vStop[ 2 ] -= 80.0; // 80 units below player's feet
engfunc( EngFunc_TraceLine, vStart, vStop, 0, iPlayer, 0 );
new Float:fFraction;
get_tr2( 0, TR_flFraction, fFraction );
if( fFraction != 1.0 )
{
new Float:vPlaneNormal[ 3 ];
get_tr2( 0, TR_vecPlaneNormal, vPlaneNormal );
new Float:vVelocity[ 3 ];
xs_vec_mul_scalar( vPlaneNormal, 500.0, vVelocity ); // 500.0 = speed
set_pev( iPlayer, pev_velocity, vVelocity );
}
__________________