This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

Вопрос Как сделать так, чтобы машина не теряла скорость

MrJagger

Новый участник
19 Янв 2025
23
3
15
Приветствую, написал функцию, которая меняет машину игрока на другую

Server-Side
JavaScript:
function changeDynamicVehiclePlayer(player, veh) {
    if(!player.vehicle) return console.log(`Player not vehicle`);

    const velocity = veh.velocity; // скорость
    const heading = veh.rotation;; // rotate
    const oldVeh = player.vehicle;

    //veh.destroy();
    
    if(player.carCurrent === 1) {
        const pos = player.position;
        const vehicle = alt.CreateVehicle("gt750", pos.x, pos.y, pos.z, heading, 52, 15, player.dimension, "admin", true);
        player.putIntoVehicle(vehicle, 0);
        player.carCurrent = 2;
        vehicle.engine = true;
        vehicle.rotation = heading;

        player.call('vehicle:applyVelocity', [velocity.x, velocity.y, velocity.z]);

        veh.destroy();
    } else {
        const pos = player.position;
        const vehicle = alt.CreateVehicle("bullet", pos.x, pos.y, pos.z, heading, 37, 15, player.dimension, "admin", true);
        player.putIntoVehicle(vehicle, 0);
        player.carCurrent = 1;
        vehicle.engine = true;
        vehicle.rotation = heading;

        player.call('vehicle:applyVelocity', [velocity.x, velocity.y, velocity.z]);
        veh.destroy();
    }
}

Все прекрасно работает, но после смены транспорта машина теряет скорость, как избежать это?

Client-Side
JavaScript:
mp.events.add('vehicle:applyVelocity', (x, y, z) => {
    const veh = mp.players.local.vehicle;
    if (!veh) return;

    veh.setVelocity(x, y, z);
});
 

ghostnuller

Новый участник
Мошенник
21 Июл 2025
24
1
13
Тебе надо менять значения максимальной скорости машины тоже, через

let MaxSpeed = mp.game.vehicle.getVehicleModelMaxSpeed(veh.model);
и
veh.setMaxSpeed(MaxSpeed)
 

MrJagger

Новый участник
19 Янв 2025
23
3
15
В общем, решил задачу. Для тех, кому интересно:
Client-side

JavaScript:
let currentVelocity = null;

let changeCar = false;

mp.events.add('vehicle:applyVelocity', (x, y, z) => {
    const veh = mp.players.local.vehicle;
    if (!veh) return;
    
    currentVelocity =  { x, y, z };
    changeCar = true;
});

mp.events.add('render', () => {
    if(player.vehicle) {
        if(changeCar) {
            player.vehicle.setVelocity(currentVelocity.x, currentVelocity.y, currentVelocity.z);
            changeCar = false;
        }
    }
});

Если вкратце, с сервера получаем velocity, записываем координаты в переменную currentVelocity и с помощью клиентского тика изменяем velocity. Скорость чуть-чуть падает, но в глаза не бросается
 
Реакции: Inoi и XDeveluxe