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

Вопрос 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  ');
        }
});

 

Harland David Sanders

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

interk0t

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

Harland David Sanders

Куратор портала
Команда форума
Куратор портала
VIP
high coder
media
10 Сен 2020
3,463
2,822
219
Код чистый? Может мешает какой-либо скрипт или система.
 

interk0t

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

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

Вложения

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

Harland David Sanders

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

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
что он конкретно делает?
 

ready to massacre

Активный участник
4 Мар 2023
153
93
40

interk0t

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

ready to massacre

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