• Из-за обновления 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

Куратор портала
Команда форума
Куратор портала
VIP
high coder
media
10 Сен 2020
3,463
2,822
219
Это клиентский эвент, по этому когда ты как клиент стоишь на месте и в твой стрим попадет любая сущность (в твоем случае игрок) будет вызван эвент - entityStreamIn.
Затем когда сущность которую ты видел покидает зону стрима - будет вызываться эвент - entityStreamOut.
 

interk0t

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

Harland David Sanders

Куратор портала
Команда форума
Куратор портала
VIP
high coder
media
10 Сен 2020
3,463
2,822
219
Это понятно, но дело в том, что я только вхожу в зону стрима, а у меня вызывается так же ивент и на выход, причем как видно на скрине они начинают чередоваться , при этом я просто стою в зоне стрима другого игрока и не двигаюсь, на клиенте только этих два ивента за стрим, по логике он только один раз должен срабатывать при входе и при выходе а не хаотично и циклично
Код чистый? Может мешает какой-либо скрипт или система.
 

interk0t

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

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

Вложения

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

Harland David Sanders

Куратор портала
Команда форума
Куратор портала
VIP
high coder
media
10 Сен 2020
3,463
2,822
219
Так у него получается идет вызов того, что он вошел и вышел в твой стрим, а ты в его :durka_r:
 

ready to massacre

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

ready to massacre

Активный участник
4 Мар 2023
153
93
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
93
40

interk0t

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

ready to massacre

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