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

Вопрос Микро-вопрос касательно data

Статус
В этой теме нельзя размещать новые ответы.

Alternant

Участник портала
11 Дек 2023
138
23
51
20
Всем доброго дня!
Вопрос такой, смысл от player.data.customVariable, если можно заносить данные напрямую в player? player.customVariable. Есть ли какая-то разница?
 

Jerry (ChatGPT)

AI-powered language model
VIP
helper
17 Окт 2023
2,427
239
100
Привет! player.data.customVariable и player.customVariable обычно используются по-разному. player.data.customVariable обычно используется для хранения дополнительных данных, которые не являются частью стандартных данных игрока, а player.customVariable - для хранения основных данных игрока. Разница здесь в организации данных - player.data.customVariable позволяет удобно хранить дополнительные параметры без перегруженности основных данных игрока.
 

Alternant

Участник портала
11 Дек 2023
138
23
51
20
Ну, Джерри дал не до конца смысловой ответ. Какая разница перегружать player или player.data, если в конечном итоге одно и тоже? Разве что если на player накидывать прототипы ф-ций и чтобы в них не путатся при авто-дополнении в IDE
 

DaVilka

Старожил
BackEnd developer
16 Сен 2020
771
284
128
ИИ говорит что player.data используется для хранения данных которые будут сохранятся между сессиями игрока, а player.customVariable только для текущей сессии. На сколько это правда хз, но он предоставил пруфы
 

Alternant

Участник портала
11 Дек 2023
138
23
51
20
Между сессиями? Ой как сомневаюсь что это достоверная инфа. Есть кто может потвердить? Ибо по какому параметру rage определяет что это тот же игрок, serial, socialClub?
 

X-Clusiv

Модератор
Команда форума
Moderator
BackEnd developer
4 Окт 2020
713
324
161
30
player.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 созданных на стороне сервера
 
Реакции: Vermilion

X-Clusiv

Модератор
Команда форума
Moderator
BackEnd developer
4 Окт 2020
713
324
161
30
Не всегда джерри корректен. Он не понял вопрос и выдал чушь. Тут нет связи с сессиями
 
Реакции: DaVilka

Alternant

Участник портала
11 Дек 2023
138
23
51
20
Благодарю за такой развернутый ответ! Но немного недопонял, эта подписка подписывает всех энтити, у которых есть аналогичная data? Допустим та же data.animation
 

X-Clusiv

Модератор
Команда форума
Moderator
BackEnd developer
4 Окт 2020
713
324
161
30
Ну почти. Это "Подписывает" всех игроков что в стриминге на данный момент с этим энтити.
Поэтому недостаточно для синхронизации использовать "mp.events.addDataHandler"
Так как игрок2 который войдет в стрим с игроком1 на который установлена, в данном случае анимация(из моего примера), не увидит анимацию так как не сработает для него событие. Это произойдет из за того что в момент установки значения анимации игрок2 не находился в зоне стримминга с тем игроком1.
Поэтому нужно использовать дополнительный эвент "entityStreamIn" Который сработает только в том случае если игрок или другой entity попадает в зону стриминга. В нашем случае ему(игроку1) нужно будет запустить анимацию когда он попадет в зону стриминга игрока2
 
Реакции: Alternant и MADARAdev

Alternant

Участник портала
11 Дек 2023
138
23
51
20
Спасибо огромное) Жаль что документация скрывает молчазной много интересных вещей. +rep, вопрос решен!
 
Статус
В этой теме нельзя размещать новые ответы.

Similar threads