[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
setVehicleSpeed
vertДата: Суббота, 11.01.2014, 19:44 | Сообщение # 1
PAWN
Группа: Пользователь
Сообщений: 422
Статус: Offline
Код

/*
   Выставит для транспорта моментальную скорость в Км/ч.

   (!) Скорость не постоянная, а моментальная и, Вам понадобится таймер,
     чтобы сделать подобие постоянной скорости с помощью этой функции.

   (?) Функция учитывает текущие углы поворота транспорта и базируется
     в основном на текущей скорости транспорта.

   (?) Если транспорт стоит и новая скорость больше 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


Skype: avg.kazax
VK: vk.com/ukazax
 
  • Страница 1 из 1
  • 1
Поиск: