Jump to content
DAYZ-CODE.RU - Создай свой игровой сервер

Отображение предмета в руке персонажа


 Share

Recommended Posts

Какой из параметров Object Builder отвечает за положение предмета в руке от первого лица и от третьего?

Link to comment
Share on other sites

23 часа назад, Ded_Nikola сказал:

Какой из параметров Object Builder отвечает за положение предмета в руке от первого лица и от третьего?

В Object Builder нет отдельного параметра «позиция в 1 лице» и «в 3 лице».

Слот Hands → кость RightHand (CfgSlots::Slot_Hands).
Поза в руках задаётся профилем IK при регистрации предмета:

Please Log in or Register to see this: Code

В P3D точка invview — вид в инвентаре, не хват в руках.
1PP/3PP берутся из анимаций игрока + этот IK, а не из двух полей OB.
Ориентация самой модели в OB влияет только как «база» относительно IK.

Берите workspace+IK у похожего ванильного предмета (мы для мелкого «ягодного» брали player_main_1h_fruit.asi + berries.anm / poisonousberries.anm).

  • Like 1
Link to comment
Share on other sites

@kottok впринципе, всё вышеупомянутое обнаружил по папкам, но остался один нерешённый вопрос. Куда эту конструкцию вставлять и каким образом?

Link to comment
Share on other sites

3 часа назад, Ded_Nikola сказал:

@kottok впринципе, всё вышеупомянутое обнаружил по папкам, но остался один нерешённый вопрос. Куда эту конструкцию вставлять и каким образом?

Не в Object Builder и не в config.cpp.

В ваниле регистрация идёт через DayZPlayerTypeRegisterItems / day_z_player_cfg_base.c.
В моде — через callback:

Please Log in or Register to see this: Code

Куда класть файл: scripts/4_World/ у client-мода (тот, что в -mod=).

Какой override брать:
— одноручный / мелкий лут → RegisterOneHanded
— двуручный → RegisterTwoHanded
— ствол → RegisterFirearms (или как у похожего ванильного)

ws/ik — скопируй у ближайшего ванильного предмета того же типа (пути ты уже нашёл по папкам).
ClassName — точный classname из config.cpp.

Если кинете classname предмета и тип (1h/2h/оружие) — скажу точнее, какой Register* и какой ванильный эталон взять.

  • Thanks 1
Link to comment
Share on other sites

@kottok Это пачка сигарет, так что одноручка, как эталон идеально подходит пачка спичек/пачка патронов 5.45, это уже скорее себя проверить. В целом, за ответ благодарю, теперь буду копаться с этим делом уже целенаправленно.

Link to comment
Share on other sites

  • 2 weeks later...

@kottok Тут вдруг ещё прикол по этой теме нарисовался. Всё в норме, перс держит пачку прямо как надо, но на земле она стоит, хотя должна лежать. При повороте модельки в OB, в игре она ложится, но зато в руке она уже лежит криво как на скрине (хотя, положение самой руки очевидно правильное). Из схожих предметов есть пачки патронов, которые и на земле лежат как надо, и в руках ведут себя нормально. Что в данном случае стоит покрутить?

Please Log in or Register to see this: Spoiler

 

Link to comment
Share on other sites

В 22.08.2026 в 00:36, Ded_Nikola сказал:

@kottok Тут вдруг ещё прикол по этой теме нарисовался. Всё в норме, перс держит пачку прямо как надо, но на земле она стоит, хотя должна лежать. При повороте модельки в OB, в игре она ложится, но зато в руке она уже лежит криво как на скрине (хотя, положение самой руки очевидно правильное). Из схожих предметов есть пачки патронов, которые и на земле лежат как надо, и в руках ведут себя нормально. Что в данном случае стоит покрутить?

Please Log in or Register to see this: Spoiler

 

Да, это два разных состояния: InventoryLocationType.GROUND и HANDS.
В руке — AddItemInHandsProfileIK в ModItemRegisterCallbacks.
На земле — ось модели в p3d + физика, IK тут не участвует.
Если крутишь всю модель в OB под землю — в руке поедет, это нормально.
Берёшь ванильную cigarette_pack.p3d / 545x39_20RoundBox.p3d как эталон осей, IK от них же.
При необходимости в EEItemLocationChanged можно реагировать на newLoc.GetType(), но ориентацию на земле проще решить правильной осью модели, а не одним поворотом на всё.

  • Thanks 1
Link to comment
Share on other sites

@kottok В целом оно так и сделано, за исключением того, что workspace и на 545x39_20RoundBox, и на cigarette_pack как таковой отсутствует. Однако пачка упорно корёжится в руке, если её подгонять по пачке патронов. Пар у скринов в пример 

Please Log in or Register to see this: Spoiler

 

Link to comment
Share on other sites

42 минуты назад, Ded_Nikola сказал:

@kottok В целом оно так и сделано, за исключением того, что workspace и на 545x39_20RoundBox, и на cigarette_pack как таковой отсутствует. Однако пачка упорно корёжится в руке, если её подгонять по пачке патронов. Пар у скринов в пример 

Please Log in or Register to see this: Attachment

Please Log in or Register to see this: Attachment

Да, workspace на `cigarette_pack` и `545x39_20RoundBox` отдельно **не существует** — это нормально. У обоих в ваниле один и тот же:

`player_main/player_main_1h.asi`

Разница только в **IK (.anm)**:
- сигареты → `dz/anims/anm/player/ik/gear/banana.anm`
- патроны 5.45 → `dz/anims/anm/player/ik/ammunition/545x39_20RoundBox.anm`

Поэтому если подогнать **модель** под патроны, а в руке держать IK от патронов — на своей пачке будет корёжить. Это не баг, просто меш и IK должны быть от **одной** пары.

**Как проще:**
1. Ось модели в OB — по ванильной `cigarette_pack.p3d` (чтобы на земле лежала).
2. В `ModItemRegisterCallbacks` — IK от сигарет (`banana.anm`), **не** от 5.45.
3. Патроны смотри только как пример «как лежит на земле», не копируй их IK.

Если `banana.anm` всё равно криво — попробуй таблетки:
`player_main_1h_tablets.asi` + `painkillers2.anm` или `charcoal_tablets.anm`.

Короче: **земля = ось p3d, рука = IK**. Не крути всю модель под землю и не мешай патронный IK с пачкой сигарет.

  • Thanks 1
Link to comment
Share on other sites

@Ded_Nikola

Перепроверил по YADZ/KGB, чтобы не советовать наугад.

В ванильной регистрации рук (`DayZPlayerTypeRegisterItems`) по этим предметам так:

Please Log in or Register to see this: Code

Ключевой момент: у `CigarettePack_ColorBase` в ванили прямо пометка **`Not configured`**. То есть нормального готового IK именно под пачку сигарет, похоже, нет. Поэтому если `banana.anm` или таблетки корёжит — это не обязательно твой косяк.

Что я бы делал дальше без угадывания:
1. Не крутить модель туда-сюда под каждый IK.
2. Проверить строго две ванильные пары:
   - сигареты: `player_main_1h.asi` + `banana.anm`
   - спички: `player_main_1h_matchbox.asi` + `Matchbox.anm`
3. Если обе криво — значит готового ванильного IK под твою форму нет. Тогда либо подгонять саму модель под выбранный ванильный эталон, либо делать свой IK/анимацию. Одной настройкой в `config.cpp` это нормально не лечится.

То есть таблетки можно отбросить. Из проверенных похожих вариантов остаются сигареты и спички, а у сигарет ваниль сама помечена как недонастроенная.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...