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

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

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

Участник портала
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);
Не могу разобраться что имеено есть что, в документации просто тип переменных, но что они должны обозначать ни слова внятного.
И еще вопрос, я создаю объект на клиенте, по логике вещей он не будет виден остальным игрокам, это так? да и все что я создаю и делаю с игроком на клиенте(анимки, предметы и тд) видно другим игрокам?
 
Реакции: NotDifficult

X-Clusiv

Модератор
Команда форума
Moderator
BackEnd developer
4 Окт 2020
708
319
161
30
в 1.1 нужно дождаться когда объект войдет в так называемый стрим а только потом его привязать. Для этого воспользуйтесь событием entityStreamIn. Когда это событие сработает привязывайте ваш предмет к игроку.
Пример:
 

Вложения

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

X-Clusiv

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

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

Участник портала
16 Янв 2021
35
9
48
Спасибо за объяснение). В целом я это понимаю, т.к. имеется 2+ года разработки на реакте, но все же решишил удостовериться что это так.
 

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

Участник портала
16 Янв 2021
35
9
48
Сечас попробую, спасибо!
 

Brabus7

Участник портала
14 Окт 2021
32
6
65
Хороший пример, рабочий (нет)