Код
/*
Выставит для транспорта моментальную скорость в Км/ч.
(!) Скорость не постоянная, а моментальная и, Вам понадобится таймер,
чтобы сделать подобие постоянной скорости с помощью этой функции.
(?) Функция учитывает текущие углы поворота транспорта и базируется
в основном на текущей скорости транспорта.
(?) Если транспорт стоит и новая скорость больше 0, то он поедет вперед.
(?) Если транспорт едет вперед/назад, а новая скорость больше/меньше текущей,
то транспорт продолжит ехать, не меняя направление, но уже с новой скоростью.
---
vehicleid игровой ИД транспорта
speed_mph новая скорость транспорта в КМ/Ч
---
Ничего не возвращает.
*/
stock setVehicleSpeed ( vehicleid, speed_mph )
{
if ( speed_mph < 1 ) speed_mph = 1;
new Float: v[3], cur_speed_mph;
GetVehicleVelocity( vehicleid, v[0], v[1], v[2] );
cur_speed_mph = floatround( 200.0 * floatsqroot( v[0]*v[0] + v[1]*v[1] + v[2]*v[2] ), floatround_floor );
if ( cur_speed_mph <= 0 )
{
new Float: zAngle;
GetVehicleZAngle( vehicleid, zAngle );
new Float: newVelX = floatcos( (zAngle -= 270.0), degrees ) * speed_mph / 200.0;
SetVehicleVelocity( vehicleid, newVelX, floattan(zAngle,degrees) * newVelX, 0.0 );
return;
}
new Float: vMultiplier = float(speed_mph) / float(cur_speed_mph);
SetVehicleVelocity( vehicleid, v[0] * vMultiplier, v[1] * vMultiplier, v[2] * vMultiplier );
}
Автор: MX_Master