MrJunior
Компетентный
Я знаю, есть 2 темы уже. Но там практический копипаст с вики.
Итак, сейчас я расскажу вам о полезных функциях в плане использования скорости авто. Эту скорость можно менять по всем осям: x, y - по горизонтали, z - вертикаль. Если вам нужен определенный результат к примеру как поднять машину на некую высоту то тут поможет пример с вики:
PHP:
public OnPlayerCommandText(playerid, cmdtext[])
{
if (!strcmp("/carjump", cmdtext))
{
if(!IsPlayerInAnyVehicle(playerid)) return 1;
new Float:velocity_X = 0.0, Float:velocity_Y = 0.0, Float:velocity_Z = 0.0;
GetVehicleVelocity(GetPlayerVehicleID(playerid), velocity_X, velocity_Y, velocity_Z);
SetVehicleVelocity(GetPlayerVehicleID(playerid), velocity_X, velocity_Y, velocity_Z + 0.2);
return 1;
}
}
Но если вам нужно ускорить автомобиль по горизонтали то на офф. форуме сампа уже есть решение:
PHP:
stock SetVehicleSpeed(vehicleid, Float:speed)
{
new Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2, Float:a;
GetVehicleVelocity(vehicleid, x1, y1, z1);
GetVehiclePos(vehicleid, x2, y2, z2);
GetVehicleZAngle(vehicleid, a); a = 360 - a;
x1 = (floatsin(a, degrees) * (speed/100) + floatcos(a, degrees) * 0 + x2) - x2;
y1 = (floatcos(a, degrees) * (speed/100) + floatsin(a, degrees) * 0 + y2) - y2;
SetVehicleVelocity(vehicleid, x1, y1, z1);
}
Note: Speed is multiplied by 100 from the default velocity speeds.
Перевод:
Скорость умножается на 100 из скорости по умолчанию(Май Иншгиш - про Инглиш)
Примечание: эта функция работает исключительно на Т/C в каком присутствует кто-либо. На пустой функция не действует! Также функция добавлена в 0.3a. Ранее работать не будет!
Возвращаемые значения: 1 - функция успешно выполнена. 0 - функция не выполнена.
Теперь о GetVehicleVelocity:
С помощю функции можно узнать скорость по всем осям. Функция использовалась в предыдущем примере SetVehicleSpeed.
Как гласит 'отличный' пример с википедии:
PHP:
public OnPlayerCommandText(playerid, cmdtext[])
{
if (!strcmp("/GetMyCarVelocity", cmdtext) && IsPlayerInAnyVehicle(playerid))
{
new Float:Velocity[3], output[80];
GetVehicleVelocity(GetPlayerVehicleID(playerid), Velocity[0], Velocity[1], Velocity[2]);
format(output, sizeof(output), "Ваша скорость по коодинате X%f, Y%f, Z%f", Velocity[0], Velocity[1], Velocity[2]);
SendClientMessage(playerid, 0xFFFFFFFF, output);
return 1;
}
return 0;
}
Примечание: функция добавлена в 0.3a. Ранее работать не будет!
Возвращаемые значения: никаких нет. Только записывает скорость T/C в указанные переменные.
На этом как-бы всё. Надеюсь кому-то помог).
Последнее редактирование модератором:
