• Из-за обновления GTA 5 (был добавлен новый патч) может временно не работать вход в 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/ru/newswire/
    Статус всех служб для Rockstar Games Launcher и поддерживаемых игр: https://support.rockstargames.com/ru/servicestatus


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

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

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

Alternant

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

Jerry (ChatGPT)

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

Alternant

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

DaVilka

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

Alternant

Начинающий специалист
Автор темы
11 Дек 2023
138
37
50
18
Между сессиями? Ой как сомневаюсь что это достоверная инфа. Есть кто может потвердить? Ибо по какому параметру rage определяет что это тот же игрок, serial, socialClub?
 

X-Clusiv

Модератор
Команда форума
high coder
4 Окт 2020
584
276
161
29
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 созданных на стороне сервера
 
  • Like
Реакции: Vermilion

X-Clusiv

Модератор
Команда форума
high coder
4 Окт 2020
584
276
161
29
Между сессиями? Ой как сомневаюсь что это достоверная инфа. Есть кто может потвердить? Ибо по какому параметру rage определяет что это тот же игрок, serial, socialClub?
Не всегда джерри корректен. Он не понял вопрос и выдал чушь. Тут нет связи с сессиями
 
  • Like
Реакции: DaVilka

Alternant

Начинающий специалист
Автор темы
11 Дек 2023
138
37
50
18
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 созданных на стороне сервера
Благодарю за такой развернутый ответ! Но немного недопонял, эта подписка подписывает всех энтити, у которых есть аналогичная data? Допустим та же data.animation
 

X-Clusiv

Модератор
Команда форума
high coder
4 Окт 2020
584
276
161
29
Благодарю за такой развернутый ответ! Но немного недопонял, эта подписка подписывает всех энтити, у которых есть аналогичная data? Допустим та же data.animation
Ну почти. Это "Подписывает" всех игроков что в стриминге на данный момент с этим энтити.
Поэтому недостаточно для синхронизации использовать "mp.events.addDataHandler"
Так как игрок2 который войдет в стрим с игроком1 на который установлена, в данном случае анимация(из моего примера), не увидит анимацию так как не сработает для него событие. Это произойдет из за того что в момент установки значения анимации игрок2 не находился в зоне стримминга с тем игроком1.
Поэтому нужно использовать дополнительный эвент "entityStreamIn" Который сработает только в том случае если игрок или другой entity попадает в зону стриминга. В нашем случае ему(игроку1) нужно будет запустить анимацию когда он попадет в зону стриминга игрока2
 
  • Like
Реакции: Alternant и MADARAdev

Alternant

Начинающий специалист
Автор темы
11 Дек 2023
138
37
50
18
Ну почти. Это "Подписывает" всех игроков что в стриминге на данный момент с этим энтити.
Поэтому недостаточно для синхронизации использовать "mp.events.addDataHandler"
Так как игрок2 который войдет в стрим с игроком1 на который установлена, в данном случае анимация(из моего примера), не увидит анимацию так как не сработает для него событие. Это произойдет из за того что в момент установки значения анимации игрок2 не находился в зоне стримминга с тем игроком1.
Поэтому нужно использовать дополнительный эвент "entityStreamIn" Который сработает только в том случае если игрок или другой entity попадает в зону стриминга. В нашем случае ему(игроку1) нужно будет запустить анимацию когда он попадет в зону стриминга игрока2
Спасибо огромное) Жаль что документация скрывает молчазной много интересных вещей. +rep, вопрос решен!
 
  • OK
Реакции: X-Clusiv
Статус
В этой теме нельзя размещать новые ответы.