I think it means the PM_* functions (engine) are receiving an invalid (NaN = Not a Number) velocity value for the X (0) and Y (1) values.
PHP Code:
// this
velocity[0] = ( origin2[0] * 200000 ) / (distance / 50);
// can be simplified to
velocity[0] = ( origin2[0] * 200000 ) / distance * 50;
// which can be simplified to
velocity[0] = ( origin2[0] * 200000 * 50 ) / distance;
// which can be simplified to
velocity[0] = ( origin2[0] * 10000000 ) / distance;
Now, since Pawn limits values to 32 bits, you are probably breaking this barrier.
I would suggest writing it like this:
PHP Code:
velocity[0] = origin2[0] * ( 10000000 / distance );
This way, you are multiplying by a smaller number so you don't try to break the barrier and then reduce.
So, with what Xanimos and I both said:
PHP Code:
stock create_velocity_vector(victim,attacker,Float:velocity[3])
{
if(!is_user_alive(attacker) || is_user_bot(attacker))
return 0;
new Float:vicorigin[3];
new Float:attorigin[3];
pev( victim, pev_origin, vicorigin);
pev( attacker, pev_origin, attorigin);
new distance = floatround( (vicorigin[0]-attorigin[0]) + (vicorigin[1]-attorigin[1] ) + ( vicorigin[2]-attorigin[2] ) );
new Float:origin2[3]
origin2[0] = vicorigin[0] - attorigin[0];
origin2[1] = vicorigin[1] - attorigin[1];
new Float:largestnum = floatabs(origin2[0]);
if(floatabs(origin2[1])>largestnum) largestnum = floatabs(origin2[1]);
origin2[0] /= largestnum;
origin2[1] /= largestnum;
velocity[0] = origin2[0] * ( 10000000 / distance );
velocity[1] = origin2[1] * ( 10000000 / distance );
if(velocity[0] <= 20.0 || velocity[1] <= 20.0)
velocity[2] = random_float(275.0 , 300.0);
return 1;
}
__________________