• Из-за обновления 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) последний раз были обновлены:

Вопрос Микро-вопрос касательно 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,393
237
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
770
281
128
ИИ говорит что player.data используется для хранения данных которые будут сохранятся между сессиями игрока, а player.customVariable только для текущей сессии. На сколько это правда хз, но он предоставил пруфы
 

Alternant

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

X-Clusiv

Модератор
Команда форума
Moderator
BackEnd developer
4 Окт 2020
712
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
712
324
161
30
Между сессиями? Ой как сомневаюсь что это достоверная инфа. Есть кто может потвердить? Ибо по какому параметру rage определяет что это тот же игрок, serial, socialClub?
Не всегда джерри корректен. Он не понял вопрос и выдал чушь. Тут нет связи с сессиями
 
Реакции: DaVilka

Alternant

Участник портала
11 Дек 2023
138
23
51
20
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

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

Alternant

Участник портала
11 Дек 2023
138
23
51
20
Ну почти. Это "Подписывает" всех игроков что в стриминге на данный момент с этим энтити.
Поэтому недостаточно для синхронизации использовать "mp.events.addDataHandler"
Так как игрок2 который войдет в стрим с игроком1 на который установлена, в данном случае анимация(из моего примера), не увидит анимацию так как не сработает для него событие. Это произойдет из за того что в момент установки значения анимации игрок2 не находился в зоне стримминга с тем игроком1.
Поэтому нужно использовать дополнительный эвент "entityStreamIn" Который сработает только в том случае если игрок или другой entity попадает в зону стриминга. В нашем случае ему(игроку1) нужно будет запустить анимацию когда он попадет в зону стриминга игрока2
Спасибо огромное) Жаль что документация скрывает молчазной много интересных вещей. +rep, вопрос решен!
 
Статус
В этой теме нельзя размещать новые ответы.