Мануал Как выключить радио при посадке в автомобиль

skyElmax

Начинающий специалист
Автор темы
high coder
102
45
57
Данный скрипт стоит у меня на сервере, никаких нареканий по его работе нет.
На клиентской стороне просто добавьте это:

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, говорят что он работает, но я сомневаюсь что он будет четко работать :D
Он короче и практичнее.
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) // добавляем событие
});
 
Последнее редактирование:
  • Like
Реакции: CHungro

CHungro

Активный участник
201
19
37
Большое спасибо!
 
  • Like
Реакции: skyElmax

Harland David Sanders

Куратор портала
Команда форума
Куратор портала
471
286
105
Можно попроще сделать и поудобнее вариант :cool:
Данный код каждый раз при посадке в машину, спустя 1 секунду выключает радио (задержка сделана потому что сам эвент playerEnterVehicle срабатывает при открытии двери), но при этом есть возможность включить радио и слушать пока не выйдешь из авто:

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

function radio_sync() {
    mp.game.audio.setRadioToStationName("OFF");
    clearInterval(radioTimerId);
};
 
Последнее редактирование:
  • Like
Реакции: skyElmax и CHungro

CHungro

Активный участник
201
19
37
Можно попроще сделать и поудобнее вариант :cool:
Данный код каждый раз при посадке в машину, спустя 1 секунду выключает радио (задержка сделана потому что сам эвент playerEnterVehicle срабатывает при открытии двери), но при этом есть возможность включить радио и слушать пока не выйдешь из авто:

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

function radio_sync() {
    mp.game.audio.setRadioToStationName("OFF");
    clearInterval(radioTimerId);
};
Респуха бро)))
 
  • Like
Реакции: skyElmax

skyElmax

Начинающий специалист
Автор темы
high coder
102
45
57
Можно попроще сделать и поудобнее вариант :cool:
Данный код каждый раз при посадке в машину, спустя 1 секунду выключает радио (задержка сделана потому что сам эвент playerEnterVehicle срабатывает при открытии двери), но при этом есть возможность включить радио и слушать пока не выйдешь из авто:

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

function radio_sync() {
    mp.game.audio.setRadioToStationName("OFF");
    clearInterval(radioTimerId);
};
Пошла битва тогда... :D
Еще короче и удобнее:
JavaScript:
mp.events.add('playerEnterVehicle', (vehicle, seat) => {
    setTimeout(() => {
        mp.game.audio.setRadioToStationName("OFF");
    }, 1000);
});
Я не уверен что это будет работать, зная Rage может что то произойти и 1 секунда пройдет до того момента когда сядет игрок в автомобиль. Мой способ полностью искореняет включение радио, даже если будут какие либо ошибки рейджа
 
  • Like
Реакции: CHungro

2pac

Профессиональный клоун
high coder
100
67
63
Пошла битва тогда... :D
Еще короче и удобнее:
JavaScript:
mp.events.add('playerEnterVehicle', (vehicle, seat) => {
    setTimeout(() => {
        mp.game.audio.setRadioToStationName("OFF");
    }, 1000);
});
Я не уверен что это будет работать, зная Rage может что то произойти и 1 секунда пройдет до того момента когда сядет игрок в автомобиль. Мой способ полностью искореняет включение радио, даже если будут какие либо ошибки рейджа
Этот способ хорошо работает, месяца 2 назад так сделал, всё четко
 
  • Like
Реакции: skyElmax

CHungro

Активный участник
201
19
37
Пошла битва тогда... :D
Еще короче и удобнее:
JavaScript:
mp.events.add('playerEnterVehicle', (vehicle, seat) => {
    setTimeout(() => {
        mp.game.audio.setRadioToStationName("OFF");
    }, 1000);
});
Я не уверен что это будет работать, зная Rage может что то произойти и 1 секунда пройдет до того момента когда сядет игрок в автомобиль. Мой способ полностью искореняет включение радио, даже если будут какие либо ошибки рейджа
Этот код действует так: садишься в машину, музон включается и сразу выключается... нужно так, чтобы он изначально не включался
 

skyElmax

Начинающий специалист
Автор темы
high coder
102
45
57
Этот код действует так: садишься в машину, музон включается и сразу выключается
Я сократил код харланда и не более, там же я написал про в этом методе могут быть ошибки разного рода. В моем методе если вы сядете в автомобиль то в течении 15ти секунд (настраивается) радио нельзя управлять.
 

UchihaMadara

Активный участник
high coder
57
19
31
Можно попроще сделать и поудобнее вариант :cool:
Данный код каждый раз при посадке в машину, спустя 1 секунду выключает радио (задержка сделана потому что сам эвент playerEnterVehicle срабатывает при открытии двери), но при этом есть возможность включить радио и слушать пока не выйдешь из авто:

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

function radio_sync() {
    mp.game.audio.setRadioToStationName("OFF");
    clearInterval(radioTimerId);
};
Для такого есть setTimeout, когда нужно отложить вызов функции
И setTimeout(setInterval) ничем не лучше, он так же забивает стек, как и событие render
ТС так же предоставил негодный вариант
 

Harland David Sanders

Куратор портала
Команда форума
Куратор портала
471
286
105
Для такого есть setTimeout, когда нужно отложить вызов функции
И setTimeout(setInterval) ничем не лучше, он так же забивает стек, как и событие render
ТС так же предоставил негодный вариант
Ждем твоих мануалов и уроков. (y)
 
  • Like
Реакции: skyElmax

UchihaMadara

Активный участник
high coder
57
19
31
Лучший вариант по данной теме будет таков:

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) // добавляем событие
})
 
  • Like
Реакции: geneff

Etader

Активный участник
115
21
37
на 1.1 хреново работает первая версия кода (не четко)
плюс это клиентская часть так что у вас не играет а у другого будет играть и будет дискомфорт
 

wearnings

Участник портала
52
13
23
25
Ну на клиентской делаем так! Если помог то LIKE

1607879723230.png
 

skyElmax

Начинающий специалист
Автор темы
high coder
102
45
57
на 1.1 хреново работает первая версия кода (не четко)
плюс это клиентская часть так что у вас не играет а у другого будет играть и будет дискомфорт
Так синхронизируйте это, в интернете есть достаточно скриптов которые синхронят радио, просто им никто не пользуется, и те кто хочет слушать пусть слушают, по умолчанию на сервере оно выключено.