Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Функция GetVehicleVelocity | SetVehicleVelocity

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;
    }
}
Тут показано как по оси z Т/С поднимается на определенную высоту(добавляют к z: 0.2).
Но если вам нужно ускорить автомобиль по горизонтали то на офф. форуме сампа уже есть решение:

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 в указанные переменные.
На этом как-бы всё. Надеюсь кому-то помог).
 
Последнее редактирование модератором:
Сверху Снизу