Jump to content

SexLab SE - Sex Animation Framework v1.66b - 01/18/2024


Recommended Posts

12 hours ago, OsmelMC said:

The current patches for the current versions for SE and AE are fine and seems to be working 100% so i recommend you to get the last version of SexLab Framework and forget about the BETA 9. 

I was worried about that.  That's too bad.  The functionality and stability of 9 is pretty great now.

Link to comment

So I am trying to build a unrelated pex file that depends on the source files from this mod. I am getting an error of MfgConsoleFunc is undefined see below. What should I do to fix this. I have skse 2.0.20 installed. Am I missing some source files? 

LargerPicture.PNG

Mods.PNG

Mods2.PNG

Error.PNG

Edited by FriedTm
Removed False thing
Link to comment
9 hours ago, FriedTm said:

I am getting an error of MfgConsoleFunc is undefined see below. What should I do to fix this.

Install the MFG and make sure that it's Source files be on the same address of the SexLab source files.

 

The MFG is on Nexus and is a framework for the Expressions, isn't required but if is installed will be used by the SexLab. You need at least the source scripts to be able of compile the SexLab or something related with the SexLab 

Link to comment

I'm trying to apply a function to actors on AnimationStart and AnimationEnd. I can't seem to figure out how to apply the function. I've figured out how to hook the animation, just can't figure out actually using the function.

 

Spoiler

ScriptName SynthFaceFixer Extends Quest

SexLabFramework Property SexLab Auto

import EBDGlobalFuncs
import SexLabFramework

Function Initialize()    
    RegisterForModEvent("AnimationStart","SynthFF_SexIsStarting")
    RegisterForModEvent("AnimationEnd","SynthFF_SexIsEnding")
EndFunction

Event OnGameReload()
    UnRegisterForModEvent("AnimationStart")
    UnRegisterForModEvent("AnimationEnd")
    RegisterForModEvent("AnimationStart","SynthFF_SexIsStarting")
    RegisterForModEvent("AnimationEnd","SynthFF_SexIsEnding")
EndEvent

ActorBase Function getProperActorBase(Actor akActor) Global;return proper actor base for leveled and non-leveled actors    
    if (akActor.GetLeveledActorBase() != (akActor.GetBaseObject() as ActorBase)) ;should be true for all leveled actors
        return akActor.GetLeveledActorBase().GetTemplate()                
    else
        return akActor.GetActorBase()                        
    EndIf
EndFunction

;if actor is levelled and its template is the same as the non-levelled actorBase, then the body skin has to re-applied or it won't show (Skyrim bug)
bool Function isTemplateActorBase(Actor akActor) Global
    if (akActor.GetLeveledActorBase() != (akActor.GetBaseObject() as ActorBase)) ;should be true for all leveled actors
        ActorBase baseTemplate = akActor.GetLeveledActorBase().GetTemplate()    
        If (baseTemplate == akActor.getActorBase())
            return true
        EndIf
    EndIf
    Return false
EndFunction

String Function getEDID(Form fForm) Global ;returns a form's EDID
    if (fForm)
        String sForm = fForm as String
        ;Form as String example: "[ScriptName <EditorID (FormID)>]"
        int iStart = StringUtil.Find(sForm, "<") + 1
        int iLength = StringUtil.Find(sForm, " (") - iStart
        return StringUtil.Substring(sForm, iStart, iLength)
    EndIf
    return "None"    
EndFunction

;returns the plugin name the form belongs to
String Function getModName(Form fForm) Global
    int formID = fForm.GetFormID() ; Get the formid to extract modindex
    if isLightMod(formID) ; and check whether the for formid comes from a light mod (i.e. FE plugin space)
        return Game.GetLightModName(getLightModIndex(fForm))
    else
        return Game.GetModName(Math.RightShift(formID, 24)) ; Shift right 24 bits to leave only modindex
    endIf
EndFunction

; checks if formid comes from a light mod by looking the index which is FE=254 for light plugins
bool Function isLightMod(int formID) Global
    if Math.RightShift(formID, 24) == 254
        Return True
    endif
    return False
EndFunction

;returns a float (used as a wait time) based on the distance between two objects. I.E. NPCs further from the player are processed later
float Function getWaitTimeByDistance(float Dist) Global
    float waitTime = 0.5 + (Dist/1000.0)
    if (waitTime > 5.0)
        waitTime = waitTime*0.65
    endIf
    if (waitTime > 5.0)
        return 5.0
    endIf
    return waitTime
EndFunction

float Function roundFloat(float flt) Global ;properly rounds a float
    int ceil = Math.Ceiling(flt)
    int floor = Math.Floor(flt)
    if ((ceil - flt) < (flt - floor))
        return ceil as float
    else
        return floor as float
    EndIf
EndFunction

Function DebugOutput(String output, bool bNotification = false) Global
    output = "EBD: " + output
    Debug.Trace(output)
    if (isPapyrusUtilInstalled())
        MiscUtil.PrintConsole(output)
    endif
    if (bNotification)
        Debug.Notification(output)
    EndIf
EndFunction

; function to return a decimal for given hex string
; taken from here: https://forums.nexusmods.com/index.php?/topic/1210601-papyrus-get-name-of-esp-a-base-form-belongs-to/#entry10079661
; could probably be done much better in a manner like this: https://forums.nexusmods.com/index.php?/topic/1210601-papyrus-get-name-of-esp-a-base-form-belongs-to/#entry40904755
; or: https://forums.nexusmods.com/index.php?/topic/8441118-convert-decimal-formid-to-hexadecimal/page-2#entry78086848
int Function HexToTen(String InputHTT) global
    Int Length2 = StringUtil.GetLength(InputHTT)
    Int LengthDone2 = 0
    Int SoFar2 = 0
    
    While ( LengthDone2 < Length2 )
        String CurrentDigit = StringUtil.GetNthChar(InputHTT, LengthDone2)
        Int CurrentTen
        
        If (CurrentDigit == "1")
            CurrentTen = 1
        ElseIf (CurrentDigit == "2")
            CurrentTen = 2
        ElseIf (CurrentDigit == "3")
            CurrentTen = 3
        ElseIf (CurrentDigit == "4")
            CurrentTen = 4
        ElseIf (CurrentDigit == "5")
            CurrentTen = 5
        ElseIf (CurrentDigit == "6")
            CurrentTen = 6
        ElseIf (CurrentDigit == "7")
            CurrentTen = 7
        ElseIf (CurrentDigit == "8")
            CurrentTen = 8
        ElseIf (CurrentDigit == "9")
            CurrentTen = 9
        ElseIf (CurrentDigit == "A")
            CurrentTen = 10
        ElseIf (CurrentDigit == "B")
            CurrentTen = 10
        ElseIf (CurrentDigit == "C")
            CurrentTen = 12
        ElseIf (CurrentDigit == "D")
            CurrentTen = 13
        ElseIf (CurrentDigit == "E")
            CurrentTen = 14
        ElseIf (CurrentDigit == "F")
            CurrentTen = 15
        Else
            CurrentTen= 0
        EndIf

        CurrentTen = CurrentTen*Math.pow(16, Length2-(LengthDone2+1)) as int
        SoFar2 += CurrentTen
        LengthDone2 += 1
    EndWhile
    
    return SoFar2
EndFunction

; returns the int index for a given form assuming that it is coming from light plugin
int function getLightModIndex(form fForm) global
    string formIDRaw = fForm as string
    int bracketIndex = StringUtil.Find(formIDRaw, "(", 0) ; a light form looks like this: FE087800
    string indexHex =  StringUtil.Substring(formIDRaw, bracketIndex + 3, 3) ; the index is between FE and the last three digits; in the above case it would be 087
    int modIndex = HexToTen(indexHex) ; convert the extracted hex index to int
    Return modIndex
endfunction

; returns the formid string needed for facegen textures
; the load index is overwritten with zeroes
; 5 zeroes for light plugins and 2 for regular ones
string function getFormIDString(form fForm) Global
    int formID = fForm.GetFormID()
    string formIDRaw = fForm as string
    int bracketIndex = StringUtil.Find(formIDRaw, "(", 0)
    if isLightMod(formID)
        return "00000" + StringUtil.Substring(formIDRaw, bracketIndex + 6, 3)
    else
        return "00" + StringUtil.Substring(formIDRaw, bracketIndex + 3, 6)
    endIf
endfunction

 

The function below.

 

;applies proper tintmask from npc record    
Function FixFaceTexture(Actor akActor, ActorBase akActorBase)                                        
    int index = akActorBase.GetIndexOfHeadPartByType(1) ; 1 is Face type, 3 is Hair
    HeadPart facePart = akActorBase.GetNthHeadPart(index)        
    string modName = getModName(akActorBase)
    string formIDString = getFormIDString(akActorBase)
    TextureSet akActorTexSet = akActorBase.GetFaceTextureSet()
    if (akActorTexSet)
        akActorTexSet.SetNthTexturePath(6, "Actors\\Character\\FaceGenData\\FaceTint\\" + modName + "\\" + formIDString + ".dds")
        NetImmerse.SetNodeTextureSet(akActor, facePart.GetPartName(), akActorTexSet, false) ; GetPartName() only exists in SKSE >= 2.0.17; for older versions we need to use the somewhat buggy GetName()                
        ;DebugOutput("Found face texture for: " + akActorBase.getName() + ", " + formIDRaw + ": " + akActorBase.GetFaceTextureSet().GetNthTexturePath(0) + ", " +akActorBase.GetFaceTextureSet().GetNthTexturePath(6))
    EndIf    

EndFunction

 

The Events in question below.

 

Event SynthFF_SexIsStarting(string eventName, string argString, float argNum, form sender)
    Actor[] actorList = SexLab.HookActors(argString)
    sslThreadController controller = SexLab.HookController(argString)
    sslBaseAnimation anim = SexLab.HookAnimation(argString)
    FixFaceTexture()
EndEvent

Event SynthFF_SexIsEnding(string eventName, string argString, float argNum, form sender)
    Actor[] actorList = SexLab.HookActors(argString)
    sslThreadController controller = SexLab.HookController(argString)
    sslBaseAnimation anim = SexLab.HookAnimation(argString)
    FixFaceTexture()
EndEvent

 

 

Link to comment
48 minutes ago, Sniperpls said:

Function Initialize()    
    RegisterForModEvent("AnimationStart","SynthFF_SexIsStarting")
    RegisterForModEvent("AnimationEnd","SynthFF_SexIsEnding")
EndFunction

Event OnGameReload()
    UnRegisterForModEvent("AnimationStart")
    UnRegisterForModEvent("AnimationEnd")
    RegisterForModEvent("AnimationStart","SynthFF_SexIsStarting")
    RegisterForModEvent("AnimationEnd","SynthFF_SexIsEnding")
EndEvent

OnGameReload() is not a native event, and it's not clear if Initialize() is ever called.

 

Usually this is done through a script attached to a player alias which can receive the OnPlayerLoadGame() event. That page describes the method for covering both loading a save and starting a new game.

Link to comment
On 8/27/2022 at 10:42 PM, Faustling said:

I am playing Skyrim 1.5.97 with SL 163.7 and trying to diagnose some problems:
I currently have SKSE64 2.019 installed.  Should I upgrade to 2.0.20?

 

I have read that there were some minor issues with 2.00.19, which is why 2.00.20 was released very shortly after 2.00.19.

 

However, at least one of my mods causes a CTD on launch when I try to run 2.00.20- apparently, one or more of my 400+ mods just wasn't ever updated beyond SKSE64 2.00.17 which is what I am running with SSE 1.5.97. You should at least try 2.00.20 and see if it solves your problems- if you are using MO2 or Vortex, it's easy enough to revert if it doesn't work.

Edited by Vyxenne
Because she wanted a lot less of "mmore"
Link to comment

ok. first time modder. first time kind of player. So i wanted to get the sex lab mod running. and I seem to have a lot of problems getting the darn thing going. I have a handfull of presets, the alternate start, some animation pacts from anubsm the asian race preset, bodyslide, cbbe, 3ba all of the usual stuff to get it going. and a lot of the other optional mods to get it running. and even with them on none of the menu stuff for sexlabframework seems to run. I'm playing skyrim special edition.  I've been at this problem for 4 days.

Screenshot 2022-08-30 081955.png

Screenshot 2022-08-30 081904.png

Screenshot 2022-08-30 082041.png

Screenshot 2022-08-30 082025.png

Link to comment
6 minutes ago, TurtleWorld3D said:

ok. first time modder. first time kind of player. So i wanted to get the sex lab mod running. and I seem to have a lot of problems getting the darn thing going. I have a handfull of presets, the alternate start, some animation pacts from anubsm the asian race preset, bodyslide, cbbe, 3ba all of the usual stuff to get it going. and a lot of the other optional mods to get it running. and even with them on none of the menu stuff for sexlabframework seems to run. I'm playing skyrim special edition.  I've been at this problem for 4 days.

Screenshot 2022-08-30 081955.png

Screenshot 2022-08-30 081904.png

Screenshot 2022-08-30 082041.png

Screenshot 2022-08-30 082025.png

This also happens when i try to attempt to install sexlab....

20220830082412_1.jpg

Link to comment
9 hours ago, TurtleWorld3D said:

ok. first time modder. first time kind of player. So i wanted to get the sex lab mod running. and I seem to have a lot of problems getting the darn thing going. I have a handfull of presets, the alternate start, some animation pacts from anubsm the asian race preset, bodyslide, cbbe, 3ba all of the usual stuff to get it going. and a lot of the other optional mods to get it running. and even with them on none of the menu stuff for sexlabframework seems to run. I'm playing skyrim special edition.  I've been at this problem for 4 days.

Screenshot 2022-08-30 081955.png

Screenshot 2022-08-30 081904.png

Screenshot 2022-08-30 082041.png

Screenshot 2022-08-30 082025.png

 

you've got multiple sexlabs installed. remove beta9 and the development version.

your hdt smp does not work with AE. you'll need to install Faster HDT SMP.

Link to comment

update.

 

Just realized I've been installing the wrong files the whole time. I have the special edition of the game. But.... its the 1.6.x version of the game... which means it's kind of the anniversary version of the special edition.... That's why things look goofy or odd. I'm going to try and speed run this instillation and fuck with it some more later to see if it finally runs. giphy.gif&f=1&nofb=1

Link to comment
5 hours ago, TurtleWorld3D said:

update.

 

Just realized I've been installing the wrong files the whole time. I have the special edition of the game. But.... its the 1.6.x version of the game... which means it's kind of the anniversary version of the special edition.... That's why things look goofy or odd. I'm going to try and speed run this instillation and fuck with it some more later to see if it finally runs. giphy.gif&f=1&nofb=1

And. Everything works like a charm now because of that. Now i just gotta be careful with stuff to grab from other mods and what versions they are compatible with.

Link to comment

What would be the reason for Sexlab to not do anything when I go to MCM and click on the 'CLICK HERE' label below the INSTALL label? Another thing that doesn't seem right is that my prerequisite checks on the MCM menu are blank, as in, not showing checks Xs or ?s.

Im playing Skyrim AE v1.6.318 and trying to install Sexlab v164c. In fact I've tried clean reinstall of everything about 5 times today, I've read the whole FAQ and guide sections.

I found that with the Beta 8 version of Sexlab it does let me install the mod in MCM as I click it the INSTALL label changes to WORKING ON IT or something like that, but as you might know its useless because later I'll get the error that the SexLabUtil is outdated. So it seems the problem is with the MCM install phase of this particular Sexlab version.

Would appreciate any help, I'm confident I'm 100% following instructions.

 

EDIT: Reading my latest papyrus logs, I see multiple errors (related to Sexlab lines) that say "error: Unbound native function "xxxxx"" with functions such as FormListRemove, FloatListCount, ClampFloat, etc. Still no idea how to fix the issue but someone might know about this stuff.

Edited by silent_ninja
Link to comment
11 hours ago, silent_ninja said:

Im playing Skyrim AE v1.6.318 and trying to install Sexlab v164c.

Update to Skyrim SE 1.6.353 or downgrade to 1.5.97. No one is supporting intermediate versions of the game.

 

The log errors suggest that the PapyrusUtil SKSE plugin (included in SL) is not loading. This may be version incompatibility, antivirus or an issue with the install location. The latest versions of PapyrusUtil require an up-to-date Address Library.

Link to comment
11 hours ago, silent_ninja said:

Im playing Skyrim AE v1.6.318 and trying to install Sexlab v164c

On 1/12/2018 at 10:23 PM, Ashal said:

For Skyrim Special Edition (1.6.353, aka AE) use SexLabFrameworkAE_v164c.7z

 

There. You're in one of the weird limbo version between 1.5.97 and 1.6.353 that nobody supports. Either fully upgrade to 1.6.353 or downgrade to 1.5.97 and use the corresponding versions of SKSE, Address Library and any mod with a dll.

Link to comment
33 minutes ago, Petzoqui said:

Yeah, I don't care for Beastiality. any guide you can link here?

Guides for Sexlab? I wrote one to install SL and some optional/recommended things, it's available in my signature (although it's made for MO2, if you use another mod manager you can at least take a look at the recommended mods and how to use some tools). There are other useful threads in there too, you should check them to see what's available in terms of SL mods for SE. The TL;DR is the install instructions and requirements you can find in the original description of SL in this very thread.

Link to comment

For some reason the Breastfeeding animations aren't showing up in game for me. I can see the relevant .hkx files just fine, but I can't see them (as well as multiple other) files in the "toggle animations" list.

 

Edit: Nevermind, the issue came from the mod (Yajjalism) SLexpressions. With it disabled, the animations show up as they're meant to.

Edited by Aldid
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
×
×
  • 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