Jump to content

HDT Ahegao Tongues and Expressions for SexLab


Recommended Posts

8 hours ago, hawkins3903 said:

 

Can you provide it as an option nonetheless? There would be people starting anew and installing for the first time.

 

Or you could put up a guide how to ESLify your mod; what lines to change in what source files and recompile. So far I've only touched on _AhegaoAlias.psc just as you mentioned and only swapped the form IDs with ESL version form IDs near the end of the file like so;

 

(There may be more that I should change, but I couldn't make distinction since these looked like the only perceivable form IDs in it.)

 

if chosenTongue == 1
        tonguestr =tonguestr+"ESL Form ID for Tongue 1";
        howmuch=150
    elseif chosenTongue == 2
        tonguestr =tonguestr+"ESL Form ID for Tongue 2";
        howmuch=150
    elseif chosenTongue == 3
        tonguestr =tonguestr+"ESL Form ID for Tongue 3";
        howmuch=100
    elseif chosenTongue == 4
        tonguestr =tonguestr+"ESL Form ID for Tongue 4";
        howmuch=150
    elseif chosenTongue == 5
        tonguestr =tonguestr+"ESL Form ID for Tongue 5";
        howmuch=150
    elseif chosenTongue == 6
        tonguestr =tonguestr+"ESL Form ID for Tongue 6";
        howmuch=130
    elseif chosenTongue == 7
        tonguestr =tonguestr+"ESL Form ID for Tongue 7";
        howmuch=100
    elseif chosenTongue == 8
        tonguestr =tonguestr+"ESL Form ID for Tongue 8";
        howmuch=100
    elseif chosenTongue == 9        
        tonguestr =tonguestr+"ESL Form ID for Tongue 9";
        howmuch=100            
    endif

 

Then put it in Papyrus Compiler App but it gave me errors saying it needs other source files from FNIS and some mods? 

 

  Reveal hidden contents

_AhegaoAlias.psc

D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Scripts\Source\sslActorAlias.psc(353,31): variable NiOverride is undefined
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Scripts\Source\sslActorAlias.psc(353,42): none is not a known user-defined type
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Scripts\Source\sslActorAlias.psc(354,19): variable NiOverride is undefined
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Scripts\Source\sslActorAlias.psc(354,30): none is not a known user-defined type
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Scripts\Source\sslActorAlias.psc(359,5): variable NiOverride is undefined
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Scripts\Source\sslActorAlias.psc(359,16): none is not a known user-defined type
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Scripts\Source\sslActorAlias.psc(360,5): variable NiOverride is undefined
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Scripts\Source\sslActorAlias.psc(360,16): none is not a known user-defined type
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Scripts\Source\sslActorAlias.psc(793,31): variable NiOverride is undefined
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Scripts\Source\sslActorAlias.psc(793,42): none is not a known user-defined type
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Scripts\Source\sslActorAlias.psc(794,5): variable NiOverride is undefined
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Scripts\Source\sslActorAlias.psc(794,16): none is not a known user-defined type
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Scripts\Source\sslSystemConfig.psc(301,8): variable FNIS is undefined
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Scripts\Source\sslSystemConfig.psc(301,13): none is not a known user-defined type
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Scripts\Source\sslSystemConfig.psc(301,28): cannot compare a none to a int (cast missing or types unrelated)
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Scripts\Source\sslSystemConfig.psc(301,28): cannot relatively compare variables to None
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Scripts\Source\sslSystemConfig.psc(698,9): variable FNIS is undefined
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Scripts\Source\sslSystemConfig.psc(698,14): none is not a known user-defined type
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Scripts\Source\sslSystemConfig.psc(698,38): cannot compare a none to a int (cast missing or types unrelated)
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Scripts\Source\sslSystemConfig.psc(698,38): cannot relatively compare variables to None
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Scripts\Source\sslSystemConfig.psc(701,9): variable FNIS is undefined
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Scripts\Source\sslSystemConfig.psc(701,14): none is not a known user-defined type
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Scripts\Source\sslSystemConfig.psc(704,9): variable FNIS is undefined
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Scripts\Source\sslSystemConfig.psc(704,14): none is not a known user-defined type
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Scripts\Source\sslSystemConfig.psc(704,44): cannot compare a none to a int (cast missing or types unrelated)
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Scripts\Source\sslSystemConfig.psc(704,44): cannot relatively compare variables to None
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Scripts\Source\sslSystemConfig.psc(776,61): variable NiOverride is undefined
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Scripts\Source\sslSystemConfig.psc(776,72): none is not a known user-defined type
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Scripts\Source\sslSystemConfig.psc(776,91): cannot compare a none to a int (cast missing or types unrelated)
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Scripts\Source\sslSystemConfig.psc(776,91): cannot relatively compare variables to None
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Source\Scripts\_AhegaoAlias.psc(317,2): variable ConsoleUtil is undefined
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Source\Scripts\_AhegaoAlias.psc(317,14): none is not a known user-defined type
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Source\Scripts\_AhegaoAlias.psc(319,2): variable ConsoleUtil is undefined
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Source\Scripts\_AhegaoAlias.psc(319,14): none is not a known user-defined type
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Source\Scripts\_AhegaoAlias.psc(322,3): variable ConsoleUtil is undefined
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Source\Scripts\_AhegaoAlias.psc(322,15): none is not a known user-defined type
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Source\Scripts\_AhegaoAlias.psc(324,3): variable ConsoleUtil is undefined
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Source\Scripts\_AhegaoAlias.psc(324,15): none is not a known user-defined type
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Source\Scripts\_AhegaoAlias.psc(340,3): variable ConsoleUtil is undefined
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Source\Scripts\_AhegaoAlias.psc(340,15): none is not a known user-defined type
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Source\Scripts\_AhegaoTongue.psc(50,15): cannot call the member function TransitUp alone or on a type, must call it on a variable
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Source\Scripts\_AhegaoAlias.psc(447,1): variable ConsoleUtil is undefined
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Source\Scripts\_AhegaoAlias.psc(447,13): none is not a known user-defined type
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Source\Scripts\_AhegaoAlias.psc(448,1): variable ConsoleUtil is undefined
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Source\Scripts\_AhegaoAlias.psc(448,13): none is not a known user-defined type
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Source\Scripts\_AhegaoAlias.psc(451,2): variable ConsoleUtil is undefined
D:\Steam Library\steamapps\common\Skyrim Special Edition\Data\Source\Scripts\_AhegaoAlias.psc(451,14): none is not a known user-defined type
 

 

I'm opening the app via MO2 so it should pick up all the necessary files, right? Or have I mistaken?

 

What you're doing is correct -the only reason why it's not working is because you don't have the source files for SexLab (which includes FNIS apparently, it's been a while) and ConsoleUtil, from what I can tell. Make sure your source files for all your required mods are in the /source/scripts/ folder, instead of the scripts/source folder which is how Sexlab comes packaged for some reason.

The place you're touching in the code is right place indeed. The only other change you need is in the "remove tongue" function (and a few instances that ensure it in sslbaseexpression and sslbasevoice): since the actual removing of the armor doesn't reliably unload the 3d mesh on the player (thanks engine!) so I have to equip an empty tongue instead -you'll need to update the form ID for that empty tongue one too.

Lastly, if you're going to go through the trouble of installing all these source files, then you may as well compile directly in CK instead of the Papyrus Compiler App.

Best of luck!

 

EDIT: Huh, your log says your source files are in your scripts/source folder and not in source/scripts folder! Huh, it's the opposite in my system. Ah well, whichever works for you, as long as you have them all.

Edited by Throwaway4Nexus
Link to comment
On 8/24/2021 at 10:55 AM, hawkins3903 said:

Waiting for that .esl version because I'm having a stroke trying to recompile the source on my own lol

 

Why not change the header with Tes5Edit? In that way you not need compile anything.

 

The esp is very small and probably not need recompute the FormsID's to make the ESL.

The mod must work ESL'ified, that mean, with ESP extension but internal header as ESL using the FE zone.

Link to comment
4 hours ago, Throwaway4Nexus said:

 

What you're doing is correct -the only reason why it's not working is because you don't have the source files for SexLab (which includes FNIS apparently, it's been a while) and ConsoleUtil, from what I can tell. Make sure your source files for all your required mods are in the /source/scripts/ folder, instead of the scripts/source folder which is how Sexlab comes packaged for some reason.

The place you're touching in the code is right place indeed. The only other change you need is in the "remove tongue" function (and a few instances that ensure it in sslbaseexpression and sslbasevoice): since the actual removing of the armor doesn't reliably unload the 3d mesh on the player (thanks engine!) so I have to equip an empty tongue instead -you'll need to update the form ID for that empty tongue one too.

Lastly, if you're going to go through the trouble of installing all these source files, then you may as well compile directly in CK instead of the Papyrus Compiler App.

Best of luck!

 

EDIT: Huh, your log says your source files are in your scripts/source folder and not in source/scripts folder! Huh, it's the opposite in my system. Ah well, whichever works for you, as long as you have them all.

 

Thanks. I'll get back to you once I'm done with this.

 

 

4 hours ago, alex77r4 said:

 

Why not change the header with Tes5Edit? In that way you not need compile anything.

 

The esp is very small and probably not need recompute the FormsID's to make the ESL.

The mod must work ESL'ified, that mean, with ESP extension but internal header as ESL using the FE zone.

 

You're right, for most ESPs that don't have scripts associated with form IDs such as armor mods.

 

This mod however has a script linked to the tongue IDs it adds in game. Since ESLifying a plugin via xEdit alters the form IDs to different numbers, the original IDs specified in the script file need to be changed as well to make the tongues appear. If you do not do this, they won't.

Edited by hawkins3903
Link to comment
47 minutes ago, hawkins3903 said:

You're right, for most ESPs that don't have scripts associated with form IDs such as armor mods.

 

That not have any relation to armor or scripts. The only limit of ESL is have less than 2048 references. 

If all the ID's inside the ESP are below xx00FFFF the process of compact it make nothing because the ID's are not changed and the mod must continue working without any problem with ESL header and ESP extension.

 

Another different thing is the function Dec2Hex because i'm not sure about if can work correctly with ESL.

The developer must test it.

 

-----------

But seems that all the problem are caused because the ID's of the forms are hardly written in code. That is not the correct way. That give a lot of problems when make merge or ESL because the ID's can change and the scripts stop working.

 

The correct way is create a form list in CK and fill it with all the necessary forms. In code, we access directly the items inside the form list. The internal ID of each element is dynamically managed by the game. In case of merge the ID are changed in the items and inside the form list and, when the script access the form list, get the correct item with but with a new ID.

This is another change that must make the developer.

 

Edited by alex77r4
Link to comment
47 minutes ago, alex77r4 said:

 

That not have any relation to armor or scripts. The only limit of ESL is have less than 2048 references. 

If all the ID's inside the ESP are below xx00FFFF the process of compact it make nothing because the ID's are not changed and the mod must continue working without any problem with ESL header and ESP extension.

 

Another different thing is the function Dec2Hex because i'm not sure about if can work correctly with ESL.

The developer must test it.

 

-----------

But seems that all the problem are caused because the ID's of the forms are hardly written in code. That is not the correct way. That give a lot of problems when make merge or ESL because the ID's can change and the scripts stop working.

 

The correct way is create a form list in CK and fill it with all the necessary forms. In code, we access directly the items inside the form list. The internal ID of each element is dynamically managed by the game. In case of merge the ID are changed in the items and inside the form list and, when the script access the form list, get the correct item with but with a new ID.

This is another change that must make the developer.

 

 

I don't think your formlist idea will work because I need the form ID in string form for ConsoleUtilSE to use it inside a console command. But give it a shot if you feel sure. Otherwise, what Hawkins3903 is trying is the only way I can think of.

Link to comment
4 hours ago, Throwaway4Nexus said:

 

What you're doing is correct -the only reason why it's not working is because you don't have the source files for SexLab (which includes FNIS apparently, it's been a while) and ConsoleUtil, from what I can tell. Make sure your source files for all your required mods are in the /source/scripts/ folder, instead of the scripts/source folder which is how Sexlab comes packaged for some reason.

The place you're touching in the code is right place indeed. The only other change you need is in the "remove tongue" function (and a few instances that ensure it in sslbaseexpression and sslbasevoice): since the actual removing of the armor doesn't reliably unload the 3d mesh on the player (thanks engine!) so I have to equip an empty tongue instead -you'll need to update the form ID for that empty tongue one too.

Lastly, if you're going to go through the trouble of installing all these source files, then you may as well compile directly in CK instead of the Papyrus Compiler App.

Best of luck!

 

EDIT: Huh, your log says your source files are in your scripts/source folder and not in source/scripts folder! Huh, it's the opposite in my system. Ah well, whichever works for you, as long as you have them all.

 

I installed RaceMenu source files sfor NiOverride errors, so I got them fixed. And I realized FNIS errors were caused by my stupid ass not enabling FNIS Behavior in MO2 *facepalm* because I use Nemesis too. I use FNIS with it to get certain creature animations working properly, then deactivate it. Force of habit.

 

Forgive my asking, but what line should I change exactly in terms of remove tongue? I can't find form IDs near those functions in _AhegaoAlias and both sslbaseexpression and sslbasevoice.

 

EDIT: Nevermind. I found 00A9BF (empty tongue armor) in the files.

Edited by hawkins3903
Link to comment
17 minutes ago, Throwaway4Nexus said:

 

I don't think your formlist idea will work because I need the form ID in string form for ConsoleUtilSE to use it inside a console command. But give it a shot if you feel sure. Otherwise, what Hawkins3903 is trying is the only way I can think of.

 

That is not a problem.

You can use GetFormID to get the real ID but read the Notes because the function provide a decimal.

You must convert it to EXA to pass it to ConsoleUtil. 

 

Hawkins3903 is making things that they must not make as final user.

Change your mod to use Form List and any user will be able to do a merge or ESL without changing a line of code.

Link to comment
32 minutes ago, alex77r4 said:

 

That is not a problem.

You can use GetFormID to get the real ID but read the Notes because the function provide a decimal.

You must convert it to EXA to pass it to ConsoleUtil. 

 

Hawkins3903 is making things that they must not make as final user.

Change your mod to use Form List and any user will be able to do a merge or ESL without changing a line of code.

 

As an average mod user, I have no idea in the slightest what you mean but you sound like you know what you're saying.

 

And the recompiled scripts still don't show tongues. I believe this is related to form IDs changing the first half of digits depending on load order.

 

EDIT: I have no idea what I'm saying either. Don't hit me please lol

Edited by hawkins3903
Link to comment

 

31 minutes ago, alex77r4 said:

 

That is not a problem.

You can use GetFormID to get the real ID but read the Notes because the function provide a decimal.

You must convert it to EXA to pass it to ConsoleUtil. 

 

Hawkins3903 is making things that they must not make as final user.

Change your mod to use Form List and any user will be able to do a merge or ESL without changing a line of code.

 

Nah, I already tried GetFormID and it kept giving me the wrong values. I do convert from base 10 to 16 elsewhere (to get the mod's load order for the ConsoleUtil line), but look at the discussion in the wiki you linked: GetFormID is just not reliable at small numbers which is what the form IDs become once compacted. 

 

Hawkins3903 and everyone else is welcome to do whatever they want with my code. That includes you too, if you wish to make it better.

 

2 minutes ago, hawkins3903 said:

 

As an average mod user, I have no idea in the slightest what you mean but you sound like you know what you're saying.

 

And the recompiled scripts still don't show tongues. I believe this is related to form IDs changing the first half of digits depending on load order.

 

If you mean the first two digits, don't worry about those: they come from "AhegaoModIndex" which is a variable I setup in Papyrus Utils when the scene begins. Your form IDs should look like "00XXXX" in the code. 

 

It's possible there's something else that ConsoleUtil doesn't like about working with compacted form IDs, who knows.

 

For everyone: I don't have any more time to invest in making this an ESL because I'm already happy with it as an ESP, and it works well that way. I can't promise that I'll make it an ESL in the future, but I welcome anyone who wishes to make any improvements any time. Post your files if you make them and I'll update the post to include them and give you credit.

Link to comment
8 minutes ago, Throwaway4Nexus said:

 

Nah, I already tried GetFormID and it kept giving me the wrong values. I do convert from base 10 to 16 elsewhere (to get the mod's load order for the ConsoleUtil line), but look at the discussion in the wiki you linked, GetFormID is just not reliable at small numbers which is what the form IDs become once compacted. 

 

Hawkins3903 and everyone else is welcome to do whatever they want with my code. That includes you too, if you wish to make it better.

 

 

So I got all the necessary changes to the codes as you mentioned and tongues still don't show in my game. I reopened the plugin in xEdit and found out the form IDs' first half digits have changed from 000 to 135 (due to load order). Is this what's causing the issue? I don't think so because that would mean I have to edit scripts every time the load order changes...

I'm just really eager to turn this into ESL. I have no slots left in ESPs and I already progressed my game with the half-assed ESLified plugin...

 

EDIT: Just saw your new comment. No I didn't mean the alphabets, I meant the numbers.

Edited by hawkins3903
Link to comment
3 hours ago, hawkins3903 said:

 

So I got all the necessary changes to the codes as you mentioned and tongues still don't show in my game. I reopened the plugin in xEdit and found out the form IDs' first half digits have changed from 000 to 135 (due to load order). Is this what's causing the issue? I don't think so because that would mean I have to edit scripts every time the load order changes...

I'm just really eager to turn this into ESL. I have no slots left in ESPs and I already progressed my game with the half-assed ESLified plugin...

 

EDIT: Just saw your new comment. No I didn't mean the alphabets, I meant the numbers.

 

Hey! Good news is you can make this an ESL if you change your "000" to "135" but bad news is that the "135" will need to change every time you change the load order of this mod. Also, in _AhegaoQuest.psc, change line 53 to say "StorageUtil.setStringValue(none, "AhegaoModIndex","FE")" because the start of all ESL formIDs is always "FE". 

 

I spent about two hours on this just now, trying different things, that's how I know.

 

Unfortunately, this also means that unless I'm able to get GetFormID to work reliably, there's no chance of this mod ever being turned into an ESL (without recompiling each time the load order changes, that is). For you, hawkins, that's not a problem since you already have the capacity to recompile the scripts, and you already know it's "135" for your load order, and you can lock the mod in MO2 so it never changes its load order. But for everyone else this will have to stay an ESP for now. Sorry guys!

 

I will try again if someone finds the HDT versions of Wraith Tongues, in which case I'll make MCM checkboxes so you can decide to give those extra-long tongues to the player, all males or all females, or any combination thereof. That would be a good reason to spend time trying the formlist+getformID for esl, plus trying to fix the open-mouth for BJ issue.

 

Link to comment
4 hours ago, Throwaway4Nexus said:

 

Hey! Good news is you can make this an ESL if you change your "000" to "135" but bad news is that the "135" will need to change every time you change the load order of this mod. Also, in _AhegaoQuest.psc, change line 53 to say "StorageUtil.setStringValue(none, "AhegaoModIndex","FE")" because the start of all ESL formIDs is always "FE". 

 

I spent about two hours on this just now, trying different things, that's how I know.

 

Unfortunately, this also means that unless I'm able to get GetFormID to work reliably, there's no chance of this mod ever being turned into an ESL (without recompiling each time the load order changes, that is). For you, hawkins, that's not a problem since you already have the capacity to recompile the scripts, and you already know it's "135" for your load order, and you can lock the mod in MO2 so it never changes its load order. But for everyone else this will have to stay an ESP for now. Sorry guys!

 

I will try again if someone finds the HDT versions of Wraith Tongues, in which case I'll make MCM checkboxes so you can decide to give those extra-long tongues to the player, all males or all females, or any combination thereof. That would be a good reason to spend time trying the formlist+getformID for esl, plus trying to fix the open-mouth for BJ issue.

 

 

Welp, looks like I'll just have to make a clean save for ESP then. Having to edit form IDs when load order changes is just too much for my simplicity, but I've learnt many things by doing all of this, so I'm not complaining about it. Thanks for looking into it in detail.

Link to comment
19 hours ago, Throwaway4Nexus said:

Nah, I already tried GetFormID and it kept giving me the wrong values.

 

I not know why GetFormID not work in your side but i have it working without any problem. Have in mind that i'm working in Legendary.

 

I modify your ESP to put a FormList and put the tongues inside it:

Quote

image.png.7ad8f35e23584605051180e1ac5b1b62.png

 

I add the property but can't be accessed because the function is global (latter we discusses that) and put a GetFormFromFile to get it.

The code get the tongue from the FormList and write in the log the ID from GetFormID and your tongue string.

As you can see always are exactly equal except that you are padding it at 14 bits.

Quote

image.png.84bfd9955a3c0574000239561ad70c3d.png

 

Papyrus0.log

Quote

[08/27/2021 - 01:11:31PM] asa_Tongues chosenTongue:7 tongue:0000001F003DEC TongueList:[Armor < (1F003DEC)>] ObjectID:1F003DEC
[08/27/2021 - 01:11:43PM] asa_Tongues chosenTongue:8 tongue:0000001F003DED TongueList:[Armor < (1F003DED)>] ObjectID:1F003DED
[08/27/2021 - 01:11:48PM] asa_Tongues chosenTongue:5 tongue:0000001F003DEA TongueList:[Armor < (1F003DEA)>] ObjectID:1F003DEA
[08/27/2021 - 01:11:56PM] asa_Tongues chosenTongue:7 tongue:0000001F003DEC TongueList:[Armor < (1F003DEC)>] ObjectID:1F003DEC
[08/27/2021 - 01:12:05PM] asa_Tongues chosenTongue:9 tongue:0000001F003DEE TongueList:[Armor < (1F003DEE)>] ObjectID:1F003DEE
[08/27/2021 - 01:12:06PM] asa_Tongues chosenTongue:9 tongue:0000001F003DEE TongueList:[Armor < (1F003DEE)>] ObjectID:1F003DEE
[08/27/2021 - 01:12:16PM] asa_Tongues chosenTongue:5 tongue:0000001F003DEA TongueList:[Armor < (1F003DEA)>] ObjectID:1F003DEA
[08/27/2021 - 01:12:17PM] asa_Tongues chosenTongue:3 tongue:0000001F003DE8 TongueList:[Armor < (1F003DE8)>] ObjectID:1F003DE8
[08/27/2021 - 01:12:29PM] asa_Tongues chosenTongue:8 tongue:0000001F003DED TongueList:[Armor < (1F003DED)>] ObjectID:1F003DED
[08/27/2021 - 01:12:34PM] asa_Tongues chosenTongue:7 tongue:0000001F003DEC TongueList:[Armor < (1F003DEC)>] ObjectID:1F003DEC
[08/27/2021 - 01:12:38PM] asa_Tongues chosenTongue:9 tongue:0000001F003DEE TongueList:[Armor < (1F003DEE)>] ObjectID:1F003DEE
[08/27/2021 - 01:12:44PM] asa_Tongues chosenTongue:7 tongue:0000001F003DEC TongueList:[Armor < (1F003DEC)>] ObjectID:1F003DEC
[08/27/2021 - 01:12:45PM] asa_Tongues chosenTongue:6 tongue:0000001F003DEB TongueList:[Armor < (1F003DEB)>] ObjectID:1F003DEB
[08/27/2021 - 01:12:54PM] asa_Tongues chosenTongue:2 tongue:0000001F003DE7 TongueList:[Armor < (1F003DE7)>] ObjectID:1F003DE7
[08/27/2021 - 01:12:55PM] asa_Tongues chosenTongue:6 tongue:0000001F003DEB TongueList:[Armor < (1F003DEB)>] ObjectID:1F003DEB
[08/27/2021 - 01:12:59PM] asa_Tongues chosenTongue:8 tongue:0000001F003DED TongueList:[Armor < (1F003DED)>] ObjectID:1F003DED
[08/27/2021 - 01:13:00PM] asa_Tongues chosenTongue:7 tongue:0000001F003DEC TongueList:[Armor < (1F003DEC)>] ObjectID:1F003DEC
[08/27/2021 - 01:13:07PM] asa_Tongues chosenTongue:2 tongue:0000001F003DE7 TongueList:[Armor < (1F003DE7)>] ObjectID:1F003DE7
 

 

code

Quote

    FormList TongueList_tmp  = Game.GetFormFromFile(0x0000b9eb, "AhegaoTongues.esp") as FormList    
    Debug.trace("asa_Tongues chosenTongue:"+chosenTongue + " tongue:"+tongue + " TongueList:"+TongueList_tmp.getat(chosenTongue) + " ObjectID:"+ _AhegaoQuest.Dec2Hex(TongueList_tmp.getat(chosenTongue).GetFormID() ) )
    If StringUtil.Substring(tongue,6,8) != _AhegaoQuest.Dec2Hex(TongueList_tmp.getat(chosenTongue).GetFormID() ) != 
        Debug.trace("asa_Tongues ERROR: tongue:"+StringUtil.Substring(tongue,6,8) + " ObjectID:"+ _AhegaoQuest.Dec2Hex(TongueList_tmp.getat(chosenTongue).GetFormID() ) )
        Debug.trace("asa_Tongues ERROR: tongue:"+StringUtil.Substring(tongue,6,8) + " ObjectID:"+ _AhegaoQuest.Dec2Hex(TongueList_tmp.getat(chosenTongue).GetFormID() ) )
        Debug.trace("asa_Tongues ERROR: tongue:"+StringUtil.Substring(tongue,6,8) + " ObjectID:"+ _AhegaoQuest.Dec2Hex(TongueList_tmp.getat(chosenTongue).GetFormID() ) )
    endif

 

Seems that you convert the ModIndex to exa and get 000000xx and latter add the rest of the code armor as "003DE6" to incorrectly get 

000000xx003DE6 and maybe that is the motive because you think GetFormID not work.

I add an additional verification in code making the padding to 8 bits and the ERROR lines never show because the codes always are exactly equal.

Link to comment

 

But the most strange point is WHY you need the ID and WHY are you equipping the tongues with ConsoleUtil. I read in the main page:

 

Quote

overcome a nasty engine bug (player character was equipping the tongue but not displaying without NiNodeUpdate which reset the face for a second, all that is fixed, as well as issue with characters equipping their whole inventory when given tongues after SexLab had already stripped them).

 

Let me ask you:

Do you know another mod that need ConsoleUtil to equip items?

Do you know that sexlab can equip strapons in woman after nude them?

Do you know that ZAZ and DD equip items over nude characters without any problem?

Do you know how works mods like DCUR, Virgin, SlaveRun, LauraShop, and any other mod that add items over nude body?

Anyone of them need ConsoleUtil to equip items?

 

Of course, NOT.... then.... Why you need ConsoleUtil to equip the tongues?

"Because if i equip the tongues with EquipItem the tongues not show or the npc's redress"

And that make you think in "a nasty engine bug" and you not think in a problem in your mod?

 

I'm using the legendary version of the mod, i commented the ConsoleUtil lines and put the EquipItem and not have any problem.

The tongues are equipped in Player and NPC's without any problem, without redress, as any DD item make.

I take a look to the NIF files and seems that i discover WHY.

 

Left from AhegaoTonguesHDT1.25 SPECIAL and right from Ahegao Tongues LE 1.25 LEGENDARY

Quote

image.png.2bd769059ea03e51238da4cb2af829d3.png

 

As you can see you not have the BSDismemberSkinInstance with the partitions section that define the body slot used by the NIF that must match the body slot used in the Armor AddOn defined in Creation Kit.

 

 

Seems that the mesh that you are using in the Special Edition are bad defined and cause all the problems, probably, because not have node partition and seems that game assume partition 32=BODY and fire the automatic equip of the best armor.

 

The most easy solution is use Cathedral Assets to convert the NIF's from Legendary format to Special Edition format.

Please, test it in your game and tell us the results.

Link to comment
50 minutes ago, alex77r4 said:

 

But the most strange point is WHY you need the ID and WHY are you equipping the tongues with ConsoleUtil. I read in the main page:

 

 

Let me ask you:

Do you know another mod that need ConsoleUtil to equip items?

Do you know that sexlab can equip strapons in woman after nude them?

Do you know that ZAZ and DD equip items over nude characters without any problem?

Do you know how works mods like DCUR, Virgin, SlaveRun, LauraShop, and any other mod that add items over nude body?

Anyone of them need ConsoleUtil to equip items?

 

Of course, NOT.... then.... Why you need ConsoleUtil to equip the tongues?

"Because if i equip the tongues with EquipItem the tongues not show or the npc's redress"

And that make you think in "a nasty engine bug" and you not think in a problem in your mod?

 

I'm using the legendary version of the mod, i commented the ConsoleUtil lines and put the EquipItem and not have any problem.

The tongues are equipped in Player and NPC's without any problem, without redress, as any DD item make.

I take a look to the NIF files and seems that i discover WHY.

 

Left from AhegaoTonguesHDT1.25 SPECIAL and right from Ahegao Tongues LE 1.25 LEGENDARY

 

As you can see you not have the BSDismemberSkinInstance with the partitions section that define the body slot used by the NIF that must match the body slot used in the Armor AddOn defined in Creation Kit.

 

 

Seems that the mesh that you are using in the Special Edition are bad defined and cause all the problems, probably, because not have node partition and seems that game assume partition 32=BODY and fire the automatic equip of the best armor.

 

The most easy solution is use Cathedral Assets to convert the NIF's from Legendary format to Special Edition format.

Please, test it in your game and tell us the results.

 

This is very promising! I don't mind the scolding if it makes for a better product :)

 

I'll check it out soon. I would have never been able to tell on my own if something was wrong with the 3d models by the way, -I only script things, I don't do 3d models! 3d models are a black box to me (beyond the tiny transforms I did to make them align better, textures, glossiness, etc.), So when the 3d models equipped fine on NPCs and players but didn't load the 3d just on the player, or when they re-dressed the actors on additem but not on equipitem, then yes, instead of thinking that there was something wrong with the models, I assumed instead that there was something wrong with the engine, and since scripting is all I do, I scripted my way to a solution which worked for all purposes except making the plugin an ESL.

 

Now, if there is an easier fix at the nif level, and I'm hopeful there is, then that's good news for everyone and I'll be more than happy to implement. I'll try it out tonight, and thank you for finding something I would have never found -who knew the halo tongues were missing properties. I thank you.

Link to comment
2 hours ago, Throwaway4Nexus said:

I don't mind the scolding if it makes for a better product

 

Excuse me if my words sound a bit rude, but I write them, solely and exclusively, to force you to use the simplest and purest basic logic.

If a lot of mods are doing the same thing as me (equipping items on the naked body) and that works without any problem on Legendary and Special ... why doesn't it work on my mod?
For a strange engine error that no one has discovered in 10 years?
Excuse me again, but it can't be. It is practically impossible for you to discover an engine error that no one has suffered in 10 years.

If you have a problem with your mod, it must be for some reason. If you are using the same lines of code that are used in other mods, it cannot be due to the code. It has to be because of something that is outside the code, that is, ESP or NIF.

 

I recommend that the next time you have a problem, open a ticket in Technical Support requesting help before giving your own explanation (engine failure) and before looking for your own solution (ConsoleUtil)

 

And yes, I write all the things that I write, I do all the necessary tests and I explain all the things in the best possible way just with the intention that you can learn a bit and make a better mod, helping you and your users at the same time.

So, excuse me again if my words, sometime, are a bit rude.

Link to comment
9 hours ago, peterkenway said:

Hello developer, the following question is not intended to annoy, I was about to convert to ESL, but a question arose, do you plan to add something or do any fixes in the future? because if so, i'll use esp for now.

 

Yeah, if someone finds the HDT version of Wraith Tongues (the long freaky ones Argonians use) then I plan to add options to the MCM to allow equipping them on players, males or females. I'm sure people would enjoy playing a succubus or something.

 

8 hours ago, alex77r4 said:

 

Excuse me if my words sound a bit rude, but I write them, solely and exclusively, to force you to use the simplest and purest basic logic.

If a lot of mods are doing the same thing as me (equipping items on the naked body) and that works without any problem on Legendary and Special ... why doesn't it work on my mod?
For a strange engine error that no one has discovered in 10 years?
Excuse me again, but it can't be. It is practically impossible for you to discover an engine error that no one has suffered in 10 years.

If you have a problem with your mod, it must be for some reason. If you are using the same lines of code that are used in other mods, it cannot be due to the code. It has to be because of something that is outside the code, that is, ESP or NIF.

 

I recommend that the next time you have a problem, open a ticket in Technical Support requesting help before giving your own explanation (engine failure) and before looking for your own solution (ConsoleUtil)

 

And yes, I write all the things that I write, I do all the necessary tests and I explain all the things in the best possible way just with the intention that you can learn a bit and make a better mod, helping you and your users at the same time.

So, excuse me again if my words, sometime, are a bit rude.

 

Yeah, it didn't work though:

 

This screenshot shows how using the regular equipitem you suggested instead of my ConsoleUtil hack still results in the player not loading the 3d mesh (notice More Informative Console confirms the tongue is already equipped): https://i.imgur.com/E7HT3xB.png 

 

I thought that was an engine bug, but you don't think so. You think it's because the NIF file was missing the slot property, but I added that property and it didn't matter: https://i.imgur.com/5wOHROf.png

 

If it's actually an engine bug, then it's an old one, because I found a lot about it googling around (and I googled a lot). (Btw even if fixing the NIF *had* actually worked, we wouldn't still be able to make it an ESL because you're still using getformfromfile to get the formlist. I got around this by no longer making the functions global -so I just used regular script properties, but yeah).

Anyway, attached is the NIF file. I have hope that you, or someone else who understands nifskope better than I do will be able to point out what else is wrong with it, and then I'll try again. In case it matters how I messed with the nif file: I didn't use Cathedral like you said because that would have lost the HDT (LE version is not HDT). Instead I used Nifskope, converted the block to "bethesda / dismember instance" then I used the "spell/batch/make all skin partitions" to add the missing property, then I manually wrote "SBP_55_MOD_FACE_JEWELRY" in it (same as picking it from the dropdown).

 

To your main point: yeah, I do always prefer to do things the normal way (equipitem, unequipitem) and I did look up how SexLab Utilities adds items to naked bodies before I published this mod (it uses equipitem, no surprise) but when that didn't work (and it still doesn't), I still had to get the job done, and I got it done. Version 1.2.5 works just fine, just not in ESL but that's not a huge issue to me. So yeah, don't worry about teaching me anything, it's not about me, and who cares anyway. Just help me get the mod working, if you can, that's all that matters. Thanks for everything you've tried.

 

Peace.

linga1.nif

Edited by Throwaway4Nexus
messed the version number
Link to comment

I saw SexLab UtilityPlus mismatch in latest version Tongue.
There is a conflict with the sslBaseExpression.pex file.
I constantly encountered CTD error at the start of animation in the game. When I disable the SexLab UtilityPlus mod it works fine. Earlier versions of AhegaoTongues did not have such a problem. I didn't want to write without being completely sure. I was going to ask you to deal with this error.
I wrote this message with google traslate. Sorry for the bad translation. I hope I was able to explain what the problem is.

Link to comment
10 hours ago, Throwaway4Nexus said:

...

 

 

These are the mesh in the Legendary version.

meshes.zip

Cathedral Assets doesn't make any changes when process it and I assume they work in Special.

Put it in your game and do some tests.

 

 

If you're still having trouble, run this code to check the mesh:

Spoiler

Scriptname Linga_equip_player_eff_script extends activemagiceffect  

FormList Property TongueList  Auto  
armor linga
Actor My_actor
Event OnEffectStart(Actor akTarget, Actor akCaster)
    
    My_actor = game.getplayer()
    My_actor.unequipall()
    Utility.wait(0.5)
    
    int xx_conta = 0
    While xx_conta < 30
        linga = TongueList.getat( Utility.RandomInt(1,9) ) as armor
        My_actor.EquipItem(linga)
        MiscUtil.PrintConsole("asa_tongues test:"+xx_conta+" linga:"+linga +" on My_actor:"+My_actor)
        Debug.Trace("asa_tongues test:"+xx_conta+" linga:"+linga +" on My_actor:"+My_actor)
        Utility.wait(3)
        My_actor.UnEquipItem(linga)
        Utility.wait(0.5)
        xx_conta += 1
    endwhile
EndEvent


Is a simple script to equip and remove random tongues over nude player 30 times. I put it in a spell and always works.

If the test works but your mod doesn't work, check your code.

Link to comment
3 hours ago, bredaturk said:

I saw SexLab UtilityPlus mismatch in latest version Tongue.
There is a conflict with the sslBaseExpression.pex file.
I constantly encountered CTD error at the start of animation in the game. When I disable the SexLab UtilityPlus mod it works fine. Earlier versions of AhegaoTongues did not have such a problem. I didn't want to write without being completely sure. I was going to ask you to deal with this error.
I wrote this message with google traslate. Sorry for the bad translation. I hope I was able to explain what the problem is.

 

The main issue is that both my mod as well as other mods (SL Utility Plus, from what you're saying) are overwriting SL base files.

 

In a perfect world we wouldn't need to do that -we would just use hooks to either add or override SL functions without having to replace the shared core files. But at least in my case, there simply wasn't enough hooks at the right places for what I needed to do. The bad news is that someone will have to write a patch for SL Utility Plus, as well as any other SL mod that also overwrites these SL base files.

 

2 hours ago, alex77r4 said:

 

 

These are the mesh in the Legendary version.

meshes.zip 1.36 MB · 0 downloads

 

 

I know. They don't have HDT in them. Read my last post. 

 

2 hours ago, alex77r4 said:

Cathedral Assets doesn't make any changes when process it and I assume they work in Special.

Put it in your game and do some tests.

 

No HDT in those meshes.

 

No hay HDT. HDT = zero.

 

If I Cathedral up an LE mesh with no HDT in it, the resulting SE mesh will continue to have no HDT in it.

 

2 hours ago, alex77r4 said:

If you're still having trouble, run this code to check the mesh:

  Reveal hidden contents

Scriptname Linga_equip_player_eff_script extends activemagiceffect  

FormList Property TongueList  Auto  
armor linga
Actor My_actor
Event OnEffectStart(Actor akTarget, Actor akCaster)
    
    My_actor = game.getplayer()
    My_actor.unequipall()
    Utility.wait(0.5)
    
    int xx_conta = 0
    While xx_conta < 30
        linga = TongueList.getat( Utility.RandomInt(1,9) ) as armor
        My_actor.EquipItem(linga)
        MiscUtil.PrintConsole("asa_tongues test:"+xx_conta+" linga:"+linga +" on My_actor:"+My_actor)
        Debug.Trace("asa_tongues test:"+xx_conta+" linga:"+linga +" on My_actor:"+My_actor)
        Utility.wait(3)
        My_actor.UnEquipItem(linga)
        Utility.wait(0.5)
        xx_conta += 1
    endwhile
EndEvent


Is a simple script to equip and remove random tongues over nude player 30 times. I put it in a spell and always works.

If the test works but your mod doesn't work, check your code.

 

Lol, nononono. You don't get to scold me and try to "teach me lessons", and then walk away with "check your code" when your "lessons" don't work :)

 

I "checked my code", and guess what? My 1.25 code works with SE, with LE, with HDT and without HDT. You scolded me for it and had me do things you way, but your way doesn't work with HDT unless you or someone else fixes the sample HDT nif I posted

 

I repeat: there's still hope. If someone can fix the HDT file I posted so that it doesn't trigger the *engine bug* that makes it not load on the player when equipped, then I'll be happy to do things your way, which is the normal way, which is what anyone should always choose first... until it doesn't work and then we have to get the job done in less normal ways.

 

 

Link to comment

I'm giving up on SL Utility Plus for now. Because your mod is too perfect. until a patch is released like you said.
Thanks for your quick response and interest.
I wish you continued success in your work.
  By the way HD package works perfectly in LE version. For Nif conversion, you can recommend SSE NIF Optimizer instead of Cathetral.

 

Link to comment

This works for the most part, but i do have one slight issue with it.

It seems that the facial expressions and lip sync are working well, but too well.

When the tongue comes out it looks great, but the second a voice clip gets thrown in the mouth prioritizes the voice clip.

What happens then is the tongue stays out for whatever time was set, but it's not synced up to the mouth anymore.

On top of that, using this mod has made the moaning clips come out twice as often compared to vanilla sexlab.

Link to comment

Really like this mod.  For some reason, this mod also seems to make the expressions mods work better in animations, sometimes funny, sometimes little weird, sometimes hot.

 

One suggestion, I think it would be funny to have the tongue linked to arousal outside the animations.  SO, like with SOS, guys walking around showing there excitement, girls could be walking around with their tongues hanging out.  Best to have a MCM menu setting to turn this on and off.  I can just see it now. LOL

Link to comment

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...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more information, see our Privacy Policy & Terms of Use