• Из-за обновления GTA 5 (был добавлен новый патч) может временно не работать вход в RAGE Multiplayer.

    Ошибка: Ваша версия Grand Theft Auto V не поддерживается RAGE Multiplayer.
    ERROR: Your game version is not supported by RAGE Multiplayer.

    Данная ошибка говорит о том, что GTA V обновилась до новой версии (GTA Online тоже). Вам необходимо обновить саму игру в главном меню вашего приложения (Steam / Epic Games / Rockstar Games).
    Если после этого RAGE:MP все равно не работает - вам нужно дождаться выхода патча для самого мультиплеера (обычно это занимает от нескольких часов до нескольких дней).

    Новости и апдейты Rockstar Games - https://www.rockstargames.com/newswire/
    Статус всех служб для Rockstar Games Launcher и поддерживаемых игр: https://support.rockstargames.com/ru/servicestatus


    Grand Theft Auto 5 (+ GTA Online) последний раз были обновлены:

Вопрос entityStreamIn / entityStreamOut

interk0t

Новый участник
24 Июн 2022
15
0
38
привет ! почему при входе в стрим другого игрока выполняется так же ивент на выход из стрима хотя я не выходил из области, при этом ивенты начинают работать циклично повторяясь, даже если заехать в область стрима и просто стоять на месте ивенты будут по очереди исполняться по 6-8 раз? Клиент

Код:
mp.events.add('entityStreamIn', (entity) => {
    if (entity.type === 'player') {
        mp.console.logInfo('enterstream  ');
        }
});

mp.events.add('entityStreamOut', (entity) => {
    if (entity.type === 'player') {
        mp.console.logInfo('exitstream  ');
        }
});

Screenshot_5.png
 

Harland David Sanders

🍔 ChefBurger
Команда форума
High developer
10 Сен 2020
3,594
2,752
219
Это клиентский эвент, по этому когда ты как клиент стоишь на месте и в твой стрим попадет любая сущность (в твоем случае игрок) будет вызван эвент - entityStreamIn.
Затем когда сущность которую ты видел покидает зону стрима - будет вызываться эвент - entityStreamOut.
 

interk0t

Новый участник
24 Июн 2022
15
0
38
Это клиентский эвент, по этому когда ты как клиент стоишь на месте и в твой стрим попадет любая сущность (в твоем случае игрок) будет вызван эвент - entityStreamIn.
Затем когда сущность которую ты видел покидает зону стрима - будет вызываться эвент - entityStreamOut.
Это понятно, но дело в том, что я только вхожу в зону стрима, а у меня вызывается так же ивент и на выход, причем как видно на скрине они начинают чередоваться , при этом я просто стою в зоне стрима другого игрока и не двигаюсь, на клиенте только этих два ивента за стрим, по логике он только один раз должен срабатывать при входе и при выходе а не хаотично и циклично
 

Harland David Sanders

🍔 ChefBurger
Команда форума
High developer
10 Сен 2020
3,594
2,752
219
Это понятно, но дело в том, что я только вхожу в зону стрима, а у меня вызывается так же ивент и на выход, причем как видно на скрине они начинают чередоваться , при этом я просто стою в зоне стрима другого игрока и не двигаюсь, на клиенте только этих два ивента за стрим, по логике он только один раз должен срабатывать при входе и при выходе а не хаотично и циклично
Код чистый? Может мешает какой-либо скрипт или система.
 

interk0t

Новый участник
24 Июн 2022
15
0
38
Код чистый? Может мешает какой-либо скрипт или система.

все чисто , только два этих ивента отвечающие за вход и выход, вот например, первый мой скрин, я вышел и вошел в стрим игрока, а второй скрин то что успело произойти за это же время у него. При выходе нчиего не дублируется и срабатывает ивент на выход 1 раз, проблема только со входом
 

Вложения

  • 1681743864984.png
    1681743864984.png
    135.9 KB · Просмотры: 120
  • 1681743971495.png
    1681743971495.png
    126.6 KB · Просмотры: 115

Harland David Sanders

🍔 ChefBurger
Команда форума
High developer
10 Сен 2020
3,594
2,752
219
Так у него получается идет вызов того, что он вошел и вышел в твой стрим, а ты в его :durka_r:
 

ready to massacre

Начинающий специалист
4 Мар 2023
153
58
40
я когда тестирую код с двух компов, второй чар соответственно всегда стоит афк, так вот когда я его телепортирую куда-либо, он бывает начинать лагать и входить/выходить из стрима у меня на экране (мб поможет функция forceStreamingUpdate)
 

ready to massacre

Начинающий специалист
4 Мар 2023
153
58
40
попробуй чето вроде такого, мб поможет, ток я точно хз (не тестил) player.forceStreamingUpdate() вызовет ли этот метод ивент entityStreamIn (я это к тому, если ты подвязан на этот ивент, следует предусмотреть, что он может быть вызван многократно)

JavaScript:
const playerWatcher = {}
const watchingMs = 100
let watcherTimeout = 0

const refreshWatcher(clear = false) => {
    if (clear) clearTimeout(watcherTimeout)
    watcherTimeout = setTimeout(watching, watchingMs)
}

const addPlayerToWatch = player => {
    playerWatcher[player.remoteId]
    refreshWatcher(true)
}
const watching = () => {
    const players = Object.values(playerWatcher)
    for (const player of players) {
        if (!player.handle && mp.players.exists(player)) {
            player.forceStreamingUpdate()
        } else {
            delete playerWatcher[player.remoteId]
        }
    }
  
    const size = Object.keys(playerWatcher)
    if (size) refreshWatcher()
}

mp.events.add('entityStreamIn', (entity) => {
    if (entity.type === 'player') {
        addPlayerToWatch(entity)
    }
})
 

interk0t

Новый участник
24 Июн 2022
15
0
38
попробуй чето вроде такого, мб поможет, ток я точно хз (не тестил) player.forceStreamingUpdate() вызовет ли этот метод ивент entityStreamIn (я это к тому, если ты подвязан на этот ивент, следует предусмотреть, что он может быть вызван многократно)

JavaScript:
const playerWatcher = {}
const watchingMs = 100
let watcherTimeout = 0

const refreshWatcher(clear = false) => {
    if (clear) clearTimeout(watcherTimeout)
    watcherTimeout = setTimeout(watching, watchingMs)
}

const addPlayerToWatch = player => {
    playerWatcher[player.remoteId]
    refreshWatcher(true)
}
const watching = () => {
    const players = Object.values(playerWatcher)
    for (const player of players) {
        if (!player.handle && mp.players.exists(player)) {
            player.forceStreamingUpdate()
        } else {
            delete playerWatcher[player.remoteId]
        }
    }
 
    const size = Object.keys(playerWatcher)
    if (size) refreshWatcher()
}

mp.events.add('entityStreamIn', (entity) => {
    if (entity.type === 'player') {
        addPlayerToWatch(entity)
    }
})
что он конкретно делает?
 

ready to massacre

Начинающий специалист
4 Мар 2023
153
58
40

interk0t

Новый участник
24 Июн 2022
15
0
38
заставляет игрока появится на экране силой, если у игрока handle 0 или отсутствует
так с отображением игроков все хорошо, мне нужно выполнять код в момент входа в стрим и выхода из него, но проблема в том что при входе в стрим код внутри начинает выполняться многократно, а иногда вообще находясь в стриме вызывается ивент выхода из стрима
 

ready to massacre

Начинающий специалист
4 Мар 2023
153
58
40
так с отображением игроков все хорошо, мне нужно выполнять код в момент входа в стрим и выхода из него, но проблема в том что при входе в стрим код внутри начинает выполняться многократно, а иногда вообще находясь в стриме вызывается ивент выхода из стрима
ну так скорее всего у игрока handle отсутствует, либо равен 0, поэтому он и входит заново в стрим, этот код по идее должен убрать такое поведение, anyway ты можешь затестить, а не гадать