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
Данный скрипт стоит у меня на сервере, никаких нареканий по его работе нет.
На клиентской стороне просто добавьте это:

JavaScript:
let radioOffTimer = 0; // переменная в которую мы записываем время
mp.events.add('render', () => { // рендер каждого кадра
    if (mp.players.local.vehicle && new Date().getTime() - radioOffTimer < 15000) { // Где 15000 это время в МС
        mp.game.audio.setRadioToStationName("OFF"); // эта функция переводит стояние радио в "выключенное" (работает только в рендере)
    }
});
mp.events.add("playerEnterVehicle", (vehicle, seat) => {
    radioOffTimer = new Date().getTime(); // записываем время
});

Думаю норм разъяснил что за что отвечает.

Есть еще способ от Harland David Sanders, говорят что он работает, но я сомневаюсь что он будет четко работать
Он короче и практичнее.
JavaScript:
mp.events.add('playerEnterVehicle', (vehicle, seat) => {
    setTimeout(() => {
        mp.game.audio.setRadioToStationName("OFF");
    }, 1000);
});

Еще способ, оптимизированный!!! Спасибо UchihaMadara
JavaScript:
let radioOffTimer = 0 // переменная в которую мы записываем время
function onRender() {
    let vehicle = mp.players.local.vehicle // получаем vehicle
    let currentTime = new Date().getTime() - radioOffTimer
    if (vehicle && currentTime < 1500) { // В течении 1500мс будет выключать радио
        mp.game.audio.setRadioToStationName("OFF") // эта функция переводит состояние радио в "выключенное" (работает только в рендере)
    }
    if (currentTime > 1500) {
        mp.events.remove("render", onRender) // Удаляем обработчик события
    }
}

mp.events.add("playerEnterVehicle", (vehicle, seat) => {
    radioOffTimer = new Date().getTime() // записываем время
    mp.events.add('render', onRender) // добавляем событие
});
 
Последнее редактирование:
Реакции: OGNEMET4IK и Agressor

Agressor

Специалист
27 Окт 2020
373
54
93
Большое спасибо!
 
Реакции: skyElmax

Harland David Sanders

Куратор портала
Команда форума
Куратор портала
VIP
high coder
media
10 Сен 2020
3,060
2,451
219
Можно попроще сделать и поудобнее вариант
Данный код каждый раз при посадке в машину, спустя 1 секунду выключает радио (задержка сделана потому что сам эвент playerEnterVehicle срабатывает при открытии двери), но при этом есть возможность включить радио и слушать пока не выйдешь из авто:

JavaScript:
mp.events.add('playerEnterVehicle', (vehicle, seat) => {
    radioTimerId = setInterval(() => {
        radio_sync();
    }, 1000);
});

function radio_sync() {
    mp.game.audio.setRadioToStationName("OFF");
    clearInterval(radioTimerId);
};

(http://imgur.com/jXRXHVe)
 
Последнее редактирование:
Реакции: skyElmax и Agressor

Agressor

Специалист
27 Окт 2020
373
54
93
Респуха бро)))
 
Реакции: skyElmax

skyElmax

Специалист
Автор темы
high coder
15 Сен 2020
151
96
85
Пошла битва тогда...
Еще короче и удобнее:
JavaScript:
mp.events.add('playerEnterVehicle', (vehicle, seat) => {
    setTimeout(() => {
        mp.game.audio.setRadioToStationName("OFF");
    }, 1000);
});

Я не уверен что это будет работать, зная Rage может что то произойти и 1 секунда пройдет до того момента когда сядет игрок в автомобиль. Мой способ полностью искореняет включение радио, даже если будут какие либо ошибки рейджа
 
Реакции: Agressor

2pac

Профессиональный клоун
14 Сен 2020
152
88
89
Этот способ хорошо работает, месяца 2 назад так сделал, всё четко
 
Реакции: skyElmax

Agressor

Специалист
27 Окт 2020
373
54
93
Этот код действует так: садишься в машину, музон включается и сразу выключается... нужно так, чтобы он изначально не включался
 

skyElmax

Специалист
Автор темы
high coder
15 Сен 2020
151
96
85
Я сократил код харланда и не более, там же я написал про в этом методе могут быть ошибки разного рода. В моем методе если вы сядете в автомобиль то в течении 15ти секунд (настраивается) радио нельзя управлять.
 

UchihaMadara

Гуру
high coder
27 Окт 2020
512
225
101
Для такого есть setTimeout, когда нужно отложить вызов функции
И setTimeout(setInterval) ничем не лучше, он так же забивает стек, как и событие render
ТС так же предоставил негодный вариант
 

Harland David Sanders

Куратор портала
Команда форума
Куратор портала
VIP
high coder
media
10 Сен 2020
3,060
2,451
219
Ждем твоих мануалов и уроков.
 
Реакции: skyElmax

skyElmax

Специалист
Автор темы
high coder
15 Сен 2020
151
96
85

skyElmax

Специалист
Автор темы
high coder
15 Сен 2020
151
96
85

UchihaMadara

Гуру
high coder
27 Окт 2020
512
225
101
Лучший вариант по данной теме будет таков:

JavaScript:
let radioOffTimer = 0 // переменная в которую мы записываем время
function onRender() {
    let vehicle = mp.players.local.vehicle // получаем vehicle
    let currentTime = new Date().getTime() - radioOffTimer
    if (vehicle && currentTime < 1500) { // В течении 1500мс будет выключать радио
        mp.game.audio.setRadioToStationName("OFF") // эта функция переводит состояние радио в "выключенное" (работает только в рендере)
    }
    if (currentTime > 1500) {
        mp.events.remove("render", onRender) // Удаляем обработчик события
    }
}
mp.events.add("playerEnterVehicle", (vehicle, seat) => {
    radioOffTimer = new Date().getTime() // записываем время
    mp.events.add('render', onRender) // добавляем событие
})
 
Реакции: geneff

Etader

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

wearnings

Активный участник
12 Окт 2020
52
14
33
28
Ну на клиентской делаем так! Если помог то LIKE

 

skyElmax

Специалист
Автор темы
high coder
15 Сен 2020
151
96
85
Так синхронизируйте это, в интернете есть достаточно скриптов которые синхронят радио, просто им никто не пользуется, и те кто хочет слушать пусть слушают, по умолчанию на сервере оно выключено.