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

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

skyElmax

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

Гуру
high coder
14 Сен 2020
154
114
120
JavaScript:
entity.setMaxSpeed(limiter_maxspeed)  // возвращаем автомобилю его стоковую скорость
Возможно я ошибаюсь, но вместо entity нужно vehicle?
 

skyElmax

Специалист
Автор темы
high coder
15 Сен 2020
151
96
85
Да, спасибо) с системы выдергивал, не обратил внимания.
 
Реакции: Mikhayloff и Ke1thuzad

Etader

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

Mikhayloff

Модератор
Команда форума
high designer
9 Окт 2020
1,310
869
211
Спасибо Серег, это то что мне нужно было
 

19Vitalik70

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

Harland David Sanders

Куратор портала
Команда форума
Куратор портала
VIP
high coder
media
10 Сен 2020
3,063
2,455
219