[BUG][COSMETIC] 5.10 HF2 - NPC hands broken (updated 2022-06-06) - dev explains.

The place to discuss scripting and game modifications for X4: Foundations.

Moderators: Moderators for English X Forum, Scripting / Modding Moderators

Post Reply
user1679
Posts: 789
Joined: Fri, 20. Jul 18, 23:20

[BUG][COSMETIC] 5.10 HF2 - NPC hands broken (updated 2022-06-06) - dev explains.

Post by user1679 » Fri, 27. May 22, 05:15

Update 2022-06-06: Further in this thread I posted a macro that produces this error


The model hands being broken were reported in this thread and a moderator
indicates the devs. are aware and links to an additional thread for 4.10.

In both cases the hands appear to be slightly twisted / broken. In my image below for 5.10, they also appear to have a second skin that looks
like it's about ready to melt off the twisted fingers beneath.

I don't have any mods installed in this screenshot and I've tried all graphics settings from low to ultra. Nothing seems to fix the hands.


https://i.imgur.com/W99Uiat.jpeg
Last edited by user1679 on Tue, 7. Jun 22, 06:00, edited 5 times in total.

CBJ
EGOSOFT
EGOSOFT
Posts: 51919
Joined: Tue, 29. Apr 03, 00:56
x4

Re: [BUG][COSMETIC] 5.10 HF2 - NPC hands worse than reported in 4.10

Post by CBJ » Fri, 27. May 22, 08:17

Unfortunately none of those threads included a savegame. Do you have one where this is visible?

user1679
Posts: 789
Joined: Fri, 20. Jul 18, 23:20

Re: [BUG][COSMETIC] 5.10 HF2 - NPC hands worse than reported in 4.10

Post by user1679 » Fri, 27. May 22, 11:59

CBJ wrote:
Fri, 27. May 22, 08:17
Unfortunately none of those threads included a savegame. Do you have one where this is visible?
I'll upload one shortly.

user1679
Posts: 789
Joined: Fri, 20. Jul 18, 23:20

Re: [BUG][COSMETIC] 5.10 HF2 - NPC hands worse than reported in 4.10

Post by user1679 » Fri, 27. May 22, 12:17

Hmm, maybe it was that one female NPC.

I just started a new game and visited 8 stations and only found male NPCs who have normal hands. No females in this universe yet.

user1679
Posts: 789
Joined: Fri, 20. Jul 18, 23:20

Re: [BUG][COSMETIC] 5.10 HF2 - NPC hands worse than reported in 4.10

Post by user1679 » Sat, 28. May 22, 02:37

Just following up, I've started several new games using the custom game editor and haven't been able to find an NPC with those hands.
It almost looks like there were two NPCs superimposed on each other, possibly a random glitch.

If I see it again I'll make sure to save the game and upload it.

user1679
Posts: 789
Joined: Fri, 20. Jul 18, 23:20

Re: [BUG][COSMETIC] 5.10 HF2 - NPC hands worse than reported in 4.10 (updated 2022-06-06)

Post by user1679 » Tue, 7. Jun 22, 05:36

Ok, I don't have a save game but I can replicate this problem with a mod I'm working on that uses the NPC macro in the spoiler below.

The mod is my Recruitment Service - Extended mod which adds an NPC to the manager's office. When I use this macro below, she has the strange double hand bug.

My macro is the same as character_scenario_combat_arg_marine_macro which is part of the base game. I copied it and changed the props and the head. The original head
uses char_arg_f_dyn_blend_head but I wanted to use this specific face char_ar_f_head_europan (I don't see why this would change the hands). I also slightly bumped
the facemod paramter to min="0.7" based on other macros.

For reference, this macro worked in 3.x and 4.x versions of the game and I have no other mods installed while I develop my mod.
Spoiler
Show

Code: Select all

        <macro name="char_recruit_svc_arg_f_cau_recruiter_macro" class="npc" comment="argon / terran female">
            <component ref="character_argon_female_01" />
            <properties>
                <identification name="@random" race="argon" female="true" />
                  <facemods>
                    <facemod type="race_cau"          name="arf.mt_race_cau"                min="0.7"  max="1" scale="1" profile="decreasing"/>
                    <facemod type="race_afr"                                                min="0"  max="1" scale="2" profile="inversebell">
                      <targets>
                        <target name="arf.mt_race_afr"/>
                        <target name="hair_short_morphtarget_afr"/>
                        <target name="hair_bun_morphtarget_afr"/>
                      </targets>
                    </facemod>
                    <facemod type="race_asi"                                                min="0"  max="1" scale="2" profile="inversebell">
                      <targets>
                        <target name="arf.mt_race_asi"/>
                        <target name="hair_short_morphtarget_asi"/>
                      </targets>
                    </facemod>
                    <facemod type="def_gaunt"         name="arf.mt_def_gaunt"               min="-1" max="1" scale="3" profile="bell"/>
                    <facemod type="asymmetry"         name="arf.mt_asymmetry"               min="-1" max="1"/>
                    <facemod type="age"                                                     min="0"  max="1" scale="10" profile="decreasing">
                      <targets>
                        <target name="arf.mt_age"/>
                        <target name="hair_short_morphtarget_old"/>
                        <target name="hair_bun_morphtarget_afr"/>
                      </targets>
                    </facemod>
                    <facemod type="bridge_depth"      name="arf.mt_def_bridge_depth"        min="-1" max="1" scale="3" profile="bell"/>
                    <facemod type="bridge_width"      name="arf.mt_def_bridge_width"        min="-1" max="1" scale="3" profile="bell"/>
                    <facemod type="brow_angle"        name="arf.mt_def_brow_angle"          min="-1" max="1" scale="3" profile="bell"/>
                    <facemod type="brow_height"       name="arf.mt_def_brow_height"         min="-1" max="1" scale="3" profile="bell"/>
                    <facemod type="brow_thickness"    name="arf.mt_def_brow_thickness"      min="-1" max="1" scale="3" profile="bell"/>
                    <facemod type="brow_width"                                              min="-1" max="1" scale="3" profile="bell">
                      <targets>
                        <target name="arf.mt_def_brow_width"/>
                        <target name="hair_short_morphtarget_brow_width"/>
                      </targets>
                    </facemod>
                    <facemod type="cheekbone_height"  name="arf.mt_def_cheekbone_height"    min="-1" max="1" scale="3" profile="bell"/>
                    <facemod type="cheekbone_width"   name="arf.mt_def_cheekbone_width"     min="-1" max="1" scale="3" profile="bell"/>
                    <facemod type="chin_depth"        name="arf.mt_def_chin_depth"          min="-1" max="1" scale="3" profile="bell"/>
                    <facemod type="chin_height"       name="arf.mt_def_chin_height"         min="-1" max="1" scale="3" profile="bell"/>
                    <facemod type="chin_square"       name="arf.mt_def_chin_square"         min="-1" max="1" scale="3" profile="bell"/>
                    <facemod type="dome_roundness"                                          min="-1" max="1" scale="3" profile="bell">
                      <targets>
                        <target name="arf.mt_def_dome_roundness"/>
                        <target name="hair_bun_morphtarget_dome_roundness"/>
                      </targets>
                    </facemod>
                    <facemod type="ear_angle"         name="arf.mt_def_ear_angle"           min="-1" max="1" scale="3" profile="bell"/>
                    <facemod type="ear_depth"         name="arf.mt_def_ear_depth"           min="-1" max="1" scale="3" profile="bell"/>
                    <facemod type="ear_height"        name="arf.mt_def_ear_height"          min="-1" max="1" scale="3" profile="bell"/>
                    <facemod type="ear_size"          name="arf.mt_def_ear_size"            min="-1" max="1" scale="3" profile="bell"/>
                    <facemod type="eye_corner_angle"  name="arf.mt_def_eye_corner_angle"    min="0"  max="1"/>
                    <facemod type="eye_hooded"        name="arf.mt_def_eye_hooded"          min="-1" max="1" scale="3" profile="bell"/>
                    <facemod type="eye_unhooded"      name="arf.mt_def_eye_unhooded"        min="-1" max="1" scale="3" profile="bell"/>
                    <facemod type="fat"                                                     min="-1" max="1" scale="3" profile="bell">
                      <targets>
                        <target name="arf.mt_def_fat"/>
                        <target name="hair_short_morphtarget_fat"/>
                      </targets>
                    </facemod>
                    <facemod type="head_width"                                              min="-1" max="1" scale="3" profile="bell">
                      <targets>
                        <target name="arf.mt_def_head_width"/>
                        <target name="hair_short_morphtarget_head_width"/>
                        <target name="hair_bun_morphtarget_head_width"/>
                      </targets>
                    </facemod>
                    <facemod type="jaw_angle_depth"   name="arf.mt_def_jaw_angle_depth"     min="-1" max="1" scale="3" profile="bell"/>
                    <facemod type="jaw_angle_height"  name="arf.mt_def_jaw_angle_height"    min="-1" max="1" scale="3" profile="bell"/>
                    <facemod type="jaw_width"         name="arf.mt_def_jaw_width"           min="-1" max="1" scale="3" profile="bell"/>
                    <facemod type="lips_shape"        name="arf.mt_def_lips_shape"          min="-1" max="1" scale="3" profile="bell"/>
                    <facemod type="lips_thickness"    name="arf.mt_def_lips_thickness"      min="-1" max="1" scale="3" profile="bell"/>
                    <facemod type="mouth_depth"       name="arf.mt_def_mouth_depth"         exact="0"/>
                    <facemod type="mouth_height"      name="arf.mt_def_mouth_height"        min="-1" max="1" scale="3" profile="bell"/>
                    <facemod type="mouth_width"       name="arf.mt_def_mouth_width"         min="-1" max="1" scale="3" profile="bell"/>
                    <facemod type="nose_depth"        name="arf.mt_def_nose_depth"          min="-1" max="1" scale="3" profile="bell"/>
                    <facemod type="nose_height"       name="arf.mt_def_nose_height"         min="-1" max="1" scale="3" profile="bell"/>
                    <facemod type="nose_size"         name="arf.mt_def_nose_size"           min="-1" max="1" scale="3" profile="bell"/>
                    <facemod type="nose_tip_angle"    name="arf.mt_def_nose_tip_angle"      min="-1" max="1" scale="3" profile="bell"/>
                    <facemod type="nose_tip_size"     name="arf.mt_def_nose_tip_size"       min="-1" max="1" scale="3" profile="bell"/>
                    <facemod type="nostril_width"     name="arf.mt_def_nostril_width"       min="-1" max="1" scale="3" profile="bell"/>
                    <facemod type="skull_length"                                            min="-1" max="1" scale="3" profile="bell">
                      <targets>
                        <target name="arf.mt_def_skull_length"/>
                        <target name="hair_short_morphtarget_skull_length"/>
                        <target name="hair_bun_morphtarget_skull_length"/>
                      </targets>
                    </facemod>
                    <facemod type="skull_width"                                             min="-1" max="1" scale="3" profile="bell">
                      <targets>
                        <target name="arf.mt_def_skull_width"/>
                        <target name="hair_short_morphtarget_skull_width"/>
                        <target name="hair_bun_morphtarget_skull_width"/>
                      </targets>
                    </facemod>
                  </facemods>
                  <models>
					<model type="head" ref="assets/characters/argon/heads/char_ar_f_head_europan" />
					<model type="torso" selection="random">
					  <select index="1" weight="50" ref="assets/characters/argon/bodies/char_arg_f_uniform_crew_01" />
					  <select index="2" weight="25" ref="assets/characters/argon/bodies/char_arg_f_jacket_fighterpilot_01" />
					</model>
					<model type="props" selection="random">
					  <select index="1" weight="3" ref="assets/characters/argon/props/char_arg_f_hair_cau_02" /> <!-- brown, left part, doesn't fit well on europan -->	
					  <select index="2" weight="8" ref="assets/characters/argon/props/char_arg_f_hair_cau_03" /> <!-- brown, bun -->
					  <select index="3" weight="6" ref="assets/characters/argon/props/char_arg_f_hair_cau_04" /> <!-- dark brown, bun -->
					  <!--<select index="4" weight="10" ref="assets/characters/argon/props/char_arg_f_hair_short" />-->
					</model>
                  </models>
            </properties>
        </macro>
https://i.imgur.com/iGVCMrC.jpeg

Scaezaa
EGOSOFT
EGOSOFT
Posts: 7
Joined: Mon, 13. Aug 18, 15:47

Re: [BUG][COSMETIC] 5.10 HF2 - NPC hands broken (updated 2022-06-06)

Post by Scaezaa » Tue, 7. Jun 22, 10:28

So, the game decides which skeleton to use based on the character's head. The head you added is not compatible with that body. I'd suggest using the dynamic macro and playing around with the morph targets to find something you like.

user1679
Posts: 789
Joined: Fri, 20. Jul 18, 23:20

Re: [BUG][COSMETIC] 5.10 HF2 - NPC hands broken (updated 2022-06-06)

Post by user1679 » Tue, 7. Jun 22, 10:57

Scaezaa wrote:
Tue, 7. Jun 22, 10:28
So, the game decides which skeleton to use based on the character's head. The head you added is not compatible with that body. I'd suggest using the dynamic macro and playing around with the morph targets to find something you like.
Thanks, that helps. Can I ask a follow-up?

I posted a question about changing character macros while in game here. Would you be able to
comment if this is possible? As I mentioned, I tried reloading the script but it didn't despawn / respawn my NPC.

Thanks!

Scaezaa
EGOSOFT
EGOSOFT
Posts: 7
Joined: Mon, 13. Aug 18, 15:47

Re: [BUG][COSMETIC] 5.10 HF2 - NPC hands broken (updated 2022-06-06) - dev explains.

Post by Scaezaa » Tue, 7. Jun 22, 12:08

Unfortunately, I also have to restart the game to affect spawned characters.
What I do instead is make my changes to the macro and then manually spawn an other instance of the character.
By the time I'm happy with the macro I usually have a dozen of them standing around.
This way, you still have to reload the game, but only after your character is finalized.

user1679
Posts: 789
Joined: Fri, 20. Jul 18, 23:20

Re: [BUG][COSMETIC] 5.10 HF2 - NPC hands broken (updated 2022-06-06) - dev explains.

Post by user1679 » Wed, 8. Jun 22, 02:37

Scaezaa wrote:
Tue, 7. Jun 22, 12:08
Unfortunately, I also have to restart the game to affect spawned characters.
What I do instead is make my changes to the macro and then manually spawn an other instance of the character.
By the time I'm happy with the macro I usually have a dozen of them standing around.
This way, you still have to reload the game, but only after your character is finalized.
Is there a command available to us users to manually spawn NPCs? Specifically, how would I spawn my NPC?

XR Tools Command Line only has a few basic commands to reload MD, UI among others. I tried Google but other than a "cheat menu" mod that
can spawn ships, there's no talk by modders about console commands.


Thanks for your time.

Alan Phipps
Moderator (English)
Moderator (English)
Posts: 30423
Joined: Fri, 16. Apr 04, 19:21
x4

Re: [BUG][COSMETIC] 5.10 HF2 - NPC hands broken (updated 2022-06-06) - dev explains.

Post by Alan Phipps » Wed, 8. Jun 22, 09:03

Since this has become a modding discussion, I'll move it to S&M.
A dog has a master; a cat has domestic staff.

Scaezaa
EGOSOFT
EGOSOFT
Posts: 7
Joined: Mon, 13. Aug 18, 15:47

Re: [BUG][COSMETIC] 5.10 HF2 - NPC hands broken (updated 2022-06-06) - dev explains.

Post by Scaezaa » Thu, 9. Jun 22, 08:07

I checked and unfortunately, that's not possible.

Zordiark Darkeater
Posts: 4
Joined: Mon, 6. Jun 22, 23:02

Re: [BUG][COSMETIC] 5.10 HF2 - NPC hands broken (updated 2022-06-06) - dev explains.

Post by Zordiark Darkeater » Thu, 9. Jun 22, 12:50

Alan Phipps wrote:
Wed, 8. Jun 22, 09:03
S&M.
( ͡° ͜ʖ ͡°)

Sorry but i had to.....

user1679
Posts: 789
Joined: Fri, 20. Jul 18, 23:20

Re: [BUG][COSMETIC] 5.10 HF2 - NPC hands broken (updated 2022-06-06) - dev explains.

Post by user1679 » Sun, 12. Jun 22, 10:03

Scaezaa wrote:
Thu, 9. Jun 22, 08:07
I checked and unfortunately, that's not possible.
Thanks for checking.

I tried something else... I extracted the CAT files from game v4.00 where my mod originally worked. I then copied the relevant assets to my mod's assets folder and renamed

char_ar_f_head_europan.xac to char_ar_f_head_europan_rsvc.xac to avoid overriding the TOA models, and then made the proper change in my mod's
character_macros.xml and started the game. My NPC was spawned but invisible and the log showed:
[=ERROR=] 28.09 [SCharacterInstance::Init] Could not get Ptr to model assets/characters/argon/heads/char_ar_f_head_europan_rsvc!
So I assume there's a different way to add models to the game? I checked the other XML files in 'libraries' but didn't see anything specifically adding assets.
I had my mod packed in an "ext_01.cat" but that didn't seem to matter.

user1679
Posts: 789
Joined: Fri, 20. Jul 18, 23:20

Re: [BUG][COSMETIC] 5.10 HF2 - NPC hands broken (updated 2022-06-06)

Post by user1679 » Tue, 14. Jun 22, 07:41

Scaezaa wrote:
Tue, 7. Jun 22, 10:28
So, the game decides which skeleton to use based on the character's head. The head you added is not compatible with that body. I'd suggest using the dynamic macro and playing around with the morph targets to find something you like.
Could you briefly indicate what the morph target parameters do?
<facemod type="jaw_angle_depth" name="arf.mt_def_jaw_angle_depth" min="-1" max="1" scale="3" profile="bell"/>
In most macros, everything is similar to above except some say profile="inversebell" or "decreasing". So if I wanted to make the dyn head look similar
to the europan head, I assume I have to change skull/jaw/etc. but I don't see any changes when I set, for example, min to 0 or scale to 5.

Or are you referring to changing things like this: hair_bun_morphtarget_afr


Thanks.

Post Reply

Return to “X4: Foundations - Scripts and Modding”