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

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

Участник портала
Автор темы
33
8
13
Всем привет, возникла проблема с привязкой объекта к игроку. Делаю так:
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);

Не могу разобраться что имеено есть что, в документации просто тип переменных, но что они должны обозначать ни слова внятного.
И еще вопрос, я создаю объект на клиенте, по логике вещей он не будет виден остальным игрокам, это так? да и все что я создаю и делаю с игроком на клиенте(анимки, предметы и тд) видно другим игрокам?
 

X-Clusiv

Начинающий специалист
148
46
50
26
Всем привет, возникла проблема с привязкой объекта к игроку. Делаю так:
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. Когда это событие сработает привязывайте ваш предмет к игроку.
Пример:
 

Вложения

Последнее редактирование:

X-Clusiv

Начинающий специалист
148
46
50
26
И еще вопрос, я создаю объект на клиенте, по логике вещей он не будет виден остальным игрокам, это так? да и все что я создаю и делаю с игроком на клиенте(анимки, предметы и тд) видно другим игрокам?
Да, не будет видно. Представьте, что сервер один, а подключенных к нему клиентов очень много, и если бы все действия на всех клиентах синхронизировались, то на сервере могло бы играть максимум 10 человек, и то при самых хороших условиях.(Так как количество данных, пересылаемых от клиентов к серверу а затем ко всем другим клиентам, было бы колоссальным) При нынешней пропускной способности канала, такая роскошь невозможна.
Следовательно, если вам нужно синхронизировать какие-то действия между игроками вам нужно указывать их в индивидуальном порядке.
Один из вариантов синхронизации использовать player.data.ВашаПеременная(сторона сервера) данные в entity.data синхронизируются между всеми клиентами.
Чтобы получить данные определенной сущности(машины игрока объекта и т.д.) на клиенте достаточно прописать:
let varible = entity.getVariable('вашаПеременная');
Естественно эту переменную нужно объявить на сервере у этой сущности(игрока, объекта, машины) одним из способов:
entity.setVariable('вашаПеременная','еёЗначение'); либо entity.data.вашаПеременная = 'еёЗначение';
 

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

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

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

Участник портала
Автор темы
33
8
13
в 1.1 нужно дождаться когда объект войдет в так называемый стрим а только потом его привязать. Для этого воспользуйтесь событием entityStreamIn. Когда это событие сработает привязывайте ваш предмет к игроку.
Пример:
Сечас попробую, спасибо!
 
  • OK
Реакции: X-Clusiv