Jump to content

Racemenu keep resetting the hair whenever I load a preset


Recommended Posts

Posted

Title, so it goes like this:

 

- Change my hair

- Saved the preset

- The hair goes back to default/vanilla hair whenever I load the preset

 

I use Tulius Hair btw, any solutions?

  • 1 month later...
  • 3 months later...
  • 1 month later...
  • 2 months later...
Posted (edited)

First thing I'd do is find the json file where RM saved the preset. Make sure the hair in there is correct.

 

SKSE\Plugins\CharGen\Presets\*.jslot

 

Spoiler

"headParts" : [
  {
     "formId" : 185073176,
     "formIdentifier" : "KS Hairdo's.esm|07FE18",
     "type" : 3
  }
],
"mods" : [
  {
     "index" : 11,
     "name" : "KS Hairdo's.esm"
  }

 

Edited by traison
  • 2 years later...
Posted

If anyone is still having this issue, check if you have the Proteus mod. If you have a saved character, I believe you can only save changes to your player if you use the racemenu enhanced option via Proteus menu.

  • 2 months later...
Posted (edited)

Quite late reply, but the issue is most likely caused by the hair not being gender flagged in esp. Hair for females should have female flag and for males should have male flag. Interestingly, game actually works without these flags, but Racemenu does not. It needs these flags otherwise it will not correctly load the hair when loading the preset. Out of all hair mods I use, I found this issue only with Tullius SMP Hair 3 806 which I started using recently. As there is way too many hairs in it, I made xEdit script that you can run over all records of the hair mod. If it detects that some hair have neither female/male flag, it will add female flag. If you want to do it for male hairs, you will have to edit the script by changing this part to DATA\Maleimage.png.24fc18aee9d2716f7933bf8a4fdff908.png
HairRMFix.zip

Spoiler
Unit HairRMFix;

Var
    bFileLoaded : Bool;
Function Initialize : integer;
Begin
    AddMessage('Init called');
End;

Function Process(aeElement: IInterface) : Integer;
Var
    sPatchFilePath : String;
    sPatchName : String;
    eExtra : IInterface;
    ePlayable : IInterface;
    eFemale : IInterface;
    eMale : IInterface;
Begin
    If (ElementType(aeElement) = etMainRecord) and (Signature(aeElement) = 'HDPT') Then
    Begin
        eExtra := ElementByPath(aeElement, 'DATA\Is Extra Part');
        ePlayable := ElementByPath(aeElement, 'DATA\Playable');
        eFemale := ElementByPath(aeElement, 'DATA\Female');
        eMale := ElementByPath(aeElement, 'DATA\Male');
        
        if ((GetEditValue(eExtra) = '') and (GetEditValue(ePlayable) = '1') and (GetEditValue(eFemale) = '') and (GetEditValue(eMale) = '')) Then
        Begin
            AddMessage(Format('Invalid hair %s found. Setting to female',[editorID(aeElement)]));
            SetElementNativeValues(aeElement,'DATA\Female',1);
        End;
    End;
End;

function Finalize : integer;
begin
    AddMessage('Done');
end;

End.

 

 

Edited by ihatemykite
Removed some bs
  • 2 months later...
Posted
On 1/3/2025 at 9:27 PM, ihatemykite said:

Quite late reply, but the issue is most likely caused by the hair not being gender flagged in esp. Hair for females should have female flag and for males should have male flag. Interestingly, game actually works without these flags, but Racemenu does not. It needs these flags otherwise it will not correctly load the hair when loading the preset. Out of all hair mods I use, I found this issue only with Tullius SMP Hair 3 806 which I started using recently. As there is way too many hairs in it, I made xEdit script that you can run over all records of the hair mod. If it detects that some hair have neither female/male flag, it will add female flag. If you want to do it for male hairs, you will have to edit the script by changing this part to DATA\Maleimage.png.24fc18aee9d2716f7933bf8a4fdff908.png
HairRMFix.zip

  Reveal hidden contents
Unit HairRMFix;

Var
    bFileLoaded : Bool;
Function Initialize : integer;
Begin
    AddMessage('Init called');
End;

Function Process(aeElement: IInterface) : Integer;
Var
    sPatchFilePath : String;
    sPatchName : String;
    eExtra : IInterface;
    ePlayable : IInterface;
    eFemale : IInterface;
    eMale : IInterface;
Begin
    If (ElementType(aeElement) = etMainRecord) and (Signature(aeElement) = 'HDPT') Then
    Begin
        eExtra := ElementByPath(aeElement, 'DATA\Is Extra Part');
        ePlayable := ElementByPath(aeElement, 'DATA\Playable');
        eFemale := ElementByPath(aeElement, 'DATA\Female');
        eMale := ElementByPath(aeElement, 'DATA\Male');
        
        if ((GetEditValue(eExtra) = '') and (GetEditValue(ePlayable) = '1') and (GetEditValue(eFemale) = '') and (GetEditValue(eMale) = '')) Then
        Begin
            AddMessage(Format('Invalid hair %s found. Setting to female',[editorID(aeElement)]));
            SetElementNativeValues(aeElement,'DATA\Female',1);
        End;
    End;
End;

function Finalize : integer;
begin
    AddMessage('Done');
end;

End.

 

 

How do I run this script to achieve the intended effect? I am a dummy mod user. 

  • 4 months later...

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
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...