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

Вопрос Привязка объекта к игроку

Евгений Бусько

Начинающий специалист
Автор темы
16 Янв 2021
35
9
48
Всем привет, возникла проблема с привязкой объекта к игроку. Делаю так:
JavaScript:
const sack = mp.objects.new(mp.game.joaat('prop_feed_sack_01'), mp.players.local.position);
sack.attachTo(mp.players.local.handle, 0, 0, 0, 0, 0, 0, 0, true, true, false, false, 0, true)

Объект появляется на позиции игрока, но не привязывается к нему. Думаю что проблема с параметрами
entity.attachTo(entity2, boneIndex, xPosOffset, yPosOffset, zPosOffset, xRot, yRot, zRot, p9, useSoftPinning, collision, isPed, vertexIndex, fixedRot);
Не могу разобраться что имеено есть что, в документации просто тип переменных, но что они должны обозначать ни слова внятного.
И еще вопрос, я создаю объект на клиенте, по логике вещей он не будет виден остальным игрокам, это так? да и все что я создаю и делаю с игроком на клиенте(анимки, предметы и тд) видно другим игрокам?
 
  • Like
Реакции: NotDifficult

X-Clusiv

Модератор
Команда форума
high coder
4 Окт 2020
581
273
161
29
Всем привет, возникла проблема с привязкой объекта к игроку. Делаю так:
JavaScript:
const sack = mp.objects.new(mp.game.joaat('prop_feed_sack_01'), mp.players.local.position);
sack.attachTo(mp.players.local.handle, 0, 0, 0, 0, 0, 0, 0, true, true, false, false, 0, true)

Объект появляется на позиции игрока, но не привязывается к нему. Думаю что проблема с параметрами
entity.attachTo(entity2, boneIndex, xPosOffset, yPosOffset, zPosOffset, xRot, yRot, zRot, p9, useSoftPinning, collision, isPed, vertexIndex, fixedRot);
Не могу разобраться что именно есть что, в документации просто тип переменных, но что они должны обозначать ни слова внятного.
И еще вопрос, я создаю объект на клиенте, по логике вещей он не будет виден остальным игрокам, это так? да и все что я создаю и делаю с игроком на клиенте(анимки, предметы и тд) видно другим игрокам?
в 1.1 нужно дождаться когда объект войдет в так называемый стрим а только потом его привязать. Для этого воспользуйтесь событием entityStreamIn. Когда это событие сработает привязывайте ваш предмет к игроку.
Пример:
 

Вложения

  • Screenshot_56.png
    Screenshot_56.png
    18.7 KB · Просмотры: 295
Последнее редактирование:

X-Clusiv

Модератор
Команда форума
high coder
4 Окт 2020
581
273
161
29
И еще вопрос, я создаю объект на клиенте, по логике вещей он не будет виден остальным игрокам, это так? да и все что я создаю и делаю с игроком на клиенте(анимки, предметы и тд) видно другим игрокам?
Да, не будет видно. Представьте, что сервер один, а подключенных к нему клиентов очень много, и если бы все действия на всех клиентах синхронизировались, то на сервере могло бы играть максимум 10 человек, и то при самых хороших условиях.(Так как количество данных, пересылаемых от клиентов к серверу а затем ко всем другим клиентам, было бы колоссальным) При нынешней пропускной способности канала, такая роскошь невозможна.
Следовательно, если вам нужно синхронизировать какие-то действия между игроками вам нужно указывать их в индивидуальном порядке.
Один из вариантов синхронизации использовать player.data.ВашаПеременная(сторона сервера) данные в entity.data синхронизируются между всеми клиентами.
Чтобы получить данные определенной сущности(машины игрока объекта и т.д.) на клиенте достаточно прописать:
let varible = entity.getVariable('вашаПеременная');
Естественно эту переменную нужно объявить на сервере у этой сущности(игрока, объекта, машины) одним из способов:
entity.setVariable('вашаПеременная','еёЗначение'); либо entity.data.вашаПеременная = 'еёЗначение';
 

Евгений Бусько

Начинающий специалист
Автор темы
16 Янв 2021
35
9
48
Да, не будет видно. Представьте, что сервер один, а подключенных к нему клиентов очень много, и если бы все действия на всех клиентах синхронизировались, то на сервере могло бы играть максимум 10 человек, и то при самых хороших условиях.(Так как количество данных, пересылаемых от клиентов к серверу а затем ко всем другим клиентам, было бы колоссальным) При нынешней пропускной способности канала, такая роскошь невозможна.
Следовательно, если вам нужно синхронизировать какие-то действия между игроками вам нужно указывать их в индивидуальном порядке.
Один из вариантов синхронизации использовать player.data.ВашаПеременная(сторона сервера) данные в entity.data синхронизируются между всеми клиентами.
Чтобы получить данные определенной сущности(машины игрока объекта и т.д.) на клиенте достаточно прописать:
let varible = entity.getVariable('вашаПеременная');
Естественно эту переменную нужно объявить на сервере у этой сущности(игрока, объекта, машины) одним из способов:
entity.setVariable('вашаПеременная','еёЗначение'); либо entity.data.вашаПеременная = 'еёЗначение';
Спасибо за объяснение). В целом я это понимаю, т.к. имеется 2+ года разработки на реакте, но все же решишил удостовериться что это так.
 

Евгений Бусько

Начинающий специалист
Автор темы
16 Янв 2021
35
9
48
в 1.1 нужно дождаться когда объект войдет в так называемый стрим а только потом его привязать. Для этого воспользуйтесь событием entityStreamIn. Когда это событие сработает привязывайте ваш предмет к игроку.
Пример:
Сечас попробую, спасибо!
 
  • OK
Реакции: X-Clusiv

Brabus7

Активный участник
14 Окт 2021
29
6
40
в 1.1 нужно дождаться когда объект войдет в так называемый стрим а только потом его привязать. Для этого воспользуйтесь событием entityStreamIn. Когда это событие сработает привязывайте ваш предмет к игроку.
Пример:
Хороший пример, рабочий (нет)