//Server
player.data.animation = ["cellphone@", "cellphone_text_read_base"];
//Client
mp.events.addDataHandler("animation", (entity, value) => {
entity.taskPlayAnim(value[0], value[1], 1.0, 1.0, -1, 2, 0, false, false, false);
})
Не всегда джерри корректен. Он не понял вопрос и выдал чушь. Тут нет связи с сессиямиМежду сессиями? Ой как сомневаюсь что это достоверная инфа. Есть кто может потвердить? Ибо по какому параметру rage определяет что это тот же игрок, serial, socialClub?
Благодарю за такой развернутый ответ! Но немного недопонял, эта подписка подписывает всех энтити, у которых есть аналогичная data? Допустим та же data.animationplayer.data Позволяет легко производить синхранизацию. Допустим, сделали переменную animation.
JavaScript://Server player.data.animation = ["cellphone@", "cellphone_text_read_base"]; //Client mp.events.addDataHandler("animation", (entity, value) => { entity.taskPlayAnim(value[0], value[1], 1.0, 1.0, -1, 2, 0, false, false, false); })
В чем смысл, в том что эта переменная отображается у каждого клиента.
Допустим, рядом друг с другом находятся 10 игроков. Одному из них на сервере мы задаем данные выше.
Если бы мы просто отправили ему евент то анимация выполнилась бы только у него на клиенте. У остальных игроков что рядом ничего не произошло бы.
А в этом случае(использование player.data), у каждого игрока что рядом выполнится анимация персонажа которому была присвоена анимация.
PS entity.data можно использовать не только для персонажей, но и для машин, и других entity созданных на стороне сервера
Ну почти. Это "Подписывает" всех игроков что в стриминге на данный момент с этим энтити.Благодарю за такой развернутый ответ! Но немного недопонял, эта подписка подписывает всех энтити, у которых есть аналогичная data? Допустим та же data.animation
Спасибо огромное) Жаль что документация скрывает молчазной много интересных вещей. +rep, вопрос решен!Ну почти. Это "Подписывает" всех игроков что в стриминге на данный момент с этим энтити.
Поэтому недостаточно для синхронизации использовать "mp.events.addDataHandler"
Так как игрок2 который войдет в стрим с игроком1 на который установлена, в данном случае анимация(из моего примера), не увидит анимацию так как не сработает для него событие. Это произойдет из за того что в момент установки значения анимации игрок2 не находился в зоне стримминга с тем игроком1.
Поэтому нужно использовать дополнительный эвент "entityStreamIn" Который сработает только в том случае если игрок или другой entity попадает в зону стриминга. В нашем случае ему(игроку1) нужно будет запустить анимацию когда он попадет в зону стриминга игрока2