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

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

skyElmax

Специалист
FrontEnd developer
15 Сен 2020
151
89
105
Здравствуйте. В интернете не нашел урока(мануала) или скрипта который позволяет игроку ограничить скорость, к примеру в населенных пунктах. Хорошо подойдет для 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

Гуру
BackEnd developer
14 Сен 2020
157
108
121
JavaScript:
entity.setMaxSpeed(limiter_maxspeed)  // возвращаем автомобилю его стоковую скорость
Возможно я ошибаюсь, но вместо entity нужно vehicle?
 

skyElmax

Специалист
FrontEnd developer
15 Сен 2020
151
89
105
Да, спасибо) с системы выдергивал, не обратил внимания.
 
Реакции: Mikhayloff и Ke1thuzad

Etader

Участник портала
15 Сен 2020
130
23
82
сделайте радары для установки на дорогах что бы они фиксировали превышаемую скорость и выписывали штраф
 

Mikhayloff

⚡️UI Designer
Команда форума
Moderator
High designer
9 Окт 2020
1,575
784
211
Спасибо Серег, это то что мне нужно было
 

19Vitalik70

Новый участник
18 Сен 2021
44
2
8
а ограничение скорости возле EMS и LSPD как прописать? Там нужно на квартал сделать и что бы срабатывала автоматом.
 

Harland David Sanders

🍔 ChefBurger
Команда форума
High developer
10 Сен 2020
3,671
2,848
219