PDA

Просмотр полной версии : [Вопрос] Функция Скорости



Skyline
28.09.2014, 02:43
Здравствуйте, подскажите пожалуйста функцию, которой можно ставить ограничение скорости для определенного ID машин.

Unknown
28.09.2014, 07:19
SetPlayerVelocity: указан скорость игрока.
GetPlayerVelocity: Получить скорость игрока.
GetVehicleVelocity: Получить скорость транспортного средства.
SetVehicleAngularVelocity: Установите угловую скорость автомобиля.

http://wiki.sa-mp.com/wiki/SetVehicleVelocity

Skyline
28.09.2014, 16:00
А можно привести пример использования, просто я не очень пойму как замедлить транспорт по координатам.

L0ndl3m
28.09.2014, 16:26
Не совсем уверен, что вас понял, если вы имели ввиду про лимит скорости, могу посоветовать данную функцию:


LimitPlayerVehicleSpeed(const playerid, const speed)
{
new
Float: v_vel_x,
Float: v_vel_y,
Float: v_vel_z,
vehicleid = GetPlayerVehicleID(playerid);

GetVehicleVelocity(vehicleid, v_vel_x, v_vel_y, v_vel_z);

return (floatround(floatsqroot((v_vel_x * v_vel_x) + (v_vel_y * v_vel_y) + (v_vel_z * v_vel_z)) * 195) > speed)
? SetVehicleVelocity(vehicleid, v_vel_x * 0.98, v_vel_y * 0.98, v_vel_z * 0.98)
: 0;
}


Данная функция возвращает 2 значения, в случае если транспорт, в котором находится игрок наберёт скорость больше чем параметр speed ( 2 аргумент в функции ), то вернёт единицу ( т.е. скорость больше допущенной ), иначе - нуль ( если не удалось выполнить функцию, либо транспорт не достиг скорости больше чем значение аргумента speed ).

Пример использования:


const
MAX_VEHICLE_SPEED = 120;

if(LimitPlayerVehicleSpeed(playerid, MAX_VEHICLE_SPEED))
{
new
str[50];

format(str, 50, "Вы достигли лимита скорости в транспорте: %i ед.", MAX_VEHICLE_SPEED);
SendClientMessage(playerid, -1, str);
}


Либо вот так, без сообщения:

LimitPlayerVehicleSpeed(playerid, 120);

Рекомендую использовать функцию в паблике OnPlayerUpdate ( в данном случае, как мне кажется, может нагрузка и будет ( не думаю, что она будет заметна ), но выглядит очень реалистично, т.е. никаких резких торможений нет, если скорость транспорта достигнет лимита - скорость будет установлена практически точно на ту скорость, которая лимитирована, всё плавно ).

Skyline
28.09.2014, 23:07
А как тогда ее привязать для определенного транспортного средства, по ID машины.

underwoker
29.09.2014, 21:33
А как тогда ее привязать для определенного транспортного средства, по ID машины.
Проверкой на ид машины.