Урок Как сделать ограничитель скорости для автомобиля

skyElmax

Участник портала
Автор темы
high coder
17
9
12
Здравствуйте. В интернете не нашел урока(мануала) или скрипта который позволяет игроку ограничить скорость, к примеру в населенных пунктах. Хорошо подойдет для RP серверов. К примеру у Вас есть фракция LSPD и нужно поддерживать скорость для недопущения ДТП, тем более с синхронизацией в RageMP 0.3.7 существенные проблемки.

JavaScript:
let limiter = false; // создадим переменную, которая отвечает за состояние ограна (вкл/выкл)
JavaScript:
let limiter_maxspeed = undefined; //создадим переменную в которую будем записывать максимальную скорость авто
JavaScript:
mp.keys.bind(0x4F, true, function() // 0x4F это символьное имя константы клавиши "O" (англ.)
{ 
    if (mp.players.local.vehicle) { // проверка на нахождение в автомобиле
        if(limiter) { // проверка на состояние ограничителя (вкл/выкл)
            mp.players.local.vehicle.setMaxSpeed(limiter_maxspeed) // возвращаем автомобилю его стоковую скорость
            limiter_maxspeed = undefined; //очищаем переменную в которую мы ранее записывали стоковую максималку авто
            limiter = false; // выключаем ограничитель
        }
        else {
            limiter_maxspeed = mp.game.vehicle.getVehicleModelMaxSpeed(mp.players.local.vehicle.model); // записываем стоковую скорость автомобиля в переменную
            mp.players.local.vehicle.setMaxSpeed(60/3.6); // ограничиваем скорость авто, где 60 это скорость на которую мы ограничиваем автомобиль, где 3.6 это перевод в км/ч
            limiter = true; // включаем ограничитель
        }
    }
});
JavaScript:
mp.events.add("playerLeaveVehicle", (vehicle, seat) => { //  Срабатывает, когда игрок выходит из машины.

        vehicle.setMaxSpeed(limiter_maxspeed)  // возвращаем автомобилю его стоковую скорость
        limiter_maxspeed = undefined; //очищаем переменную в которую мы ранее записывали стоковую максималку авто
        limiter = false; // выключаем ограничитель
})
Все это нужно вставить в любое место клиентской части вашего сервера. (Пример: client_packages/index.js)


Важное замечание, я тестировал на бета версии мультиплеера 1.1!
Если автомобилю сначала установить скорость (setMaxSpeed), а затем использовать getVehicleModelMaxSpeed, то getVehicleModelMaxSpeed вернёт значение которое вы установили ранее.


Ссылки на использованные функции и ивенты:
Key::bind
Entity::setMaxSpeed
Vehicle::getVehicleModelMaxSpeed
PlayerLeaveVehicle
Ссылка на названия кнопок
 
Последнее редактирование:

koltr

Участник портала
VIP
high coder
14
8
12
JavaScript:
entity.setMaxSpeed(limiter_maxspeed)  // возвращаем автомобилю его стоковую скорость
Возможно я ошибаюсь, но вместо entity нужно vehicle?
 

skyElmax

Участник портала
Автор темы
high coder
17
9
12
JavaScript:
entity.setMaxSpeed(limiter_maxspeed)  // возвращаем автомобилю его стоковую скорость
Возможно я ошибаюсь, но вместо entity нужно vehicle?
Да, спасибо) с системы выдергивал, не обратил внимания.
 

Etader

Участник портала
26
4
12
сделайте радары для установки на дорогах что бы они фиксировали превышаемую скорость и выписывали штраф