Jump to content

Recommended Posts

Posted

Hi Folks,

 

couldnt find anything useful on LL yet. But is there a tutorial to script sex scenes?

I mean, i can do a simple sex script like this one:

 

actor[] sexActors = new actor[2]
sexActors[0] = Game.GetPlayer()
sexActors[1] = akspeaker
sslBaseAnimation[] anims
anims = new sslBaseAnimation[1]
anims = SexLab.GetAnimationsByTag(2, "Vaginal", "Rape", tagSuppress="Femdom")
SexLab.StartSex(sexActors, anims)
 

 

but dont understand how to set player to victim for example. Or Hook into Animationstages and how to use specific Object References (Beds) 

I know there is a function "CenterOn" for using ObjectRef's, but compiling doesnt work. 

A small tutorial for some functions, or example scripts with more functions then above would be very helpful.

 

If anyone can help me, i would be very grateful.

 

Greetings AD

Posted

Everything is pretty much documented in the SexLabFramework.psc script file, including an explanation of using hooks.

 

6 hours ago, adle said:

I know there is a function "CenterOn" for using ObjectRef's, but compiling doesnt work. 

 

This is usually the result of localization issues on your computer language settings; functions with decimal points in their default arguments break when your computer's region settings are different. You can either edit the function the errors complaining about to use 0,0 instead of 0.0, or you can change your computer's number formatting in your region setting to use periods instead of commas and it'll compile fine after that.

Posted
4 hours ago, Ashal said:

Everything is pretty much documented in the SexLabFramework.psc script file, including an explanation of using hooks.

 

 

This is usually the result of localization issues on your computer language settings; functions with decimal points in their default arguments break when your computer's region settings are different. You can either edit the function the errors complaining about to use 0,0 instead of 0.0, or you can change your computer's number formatting in your region setting to use periods instead of commas and it'll compile fine after that.

i already found the PSC file, but it doesnt show where to put for example the "CenterOn" function. Do you have an example sexlab script for me? With all functions.

 

the language is a good hint. i will give it a try. Thanks

Posted (edited)
17 hours ago, adle said:

Hi Folks,

 

couldnt find anything useful on LL yet. But is there a tutorial to script sex scenes?

I mean, i can do a simple sex script like this one:

 

actor[] sexActors = new actor[2]
sexActors[0] = Game.GetPlayer()
sexActors[1] = akspeaker
sslBaseAnimation[] anims
anims = new sslBaseAnimation[1]
anims = SexLab.GetAnimationsByTag(2, "Vaginal", "Rape", tagSuppress="Femdom")
SexLab.StartSex(sexActors, anims)
 

 

but dont understand how to set player to victim for example. Or Hook into Animationstages and how to use specific Object References (Beds) 

I know there is a function "CenterOn" for using ObjectRef's, but compiling doesnt work. 

A small tutorial for some functions, or example scripts with more functions then above would be very helpful.

 

If anyone can help me, i would be very grateful.

 

Greetings AD

Modified to show how to set player to victim and how to use CenterOn:

 

ObjectReference Property SexSpot Auto       ;<--- You'll need to fill this property

 

actor[] sexActors = new actor[2]
sexActors[0] = Game.GetPlayer()
sexActors[1] = akspeaker
sslBaseAnimation[] anims
anims = new sslBaseAnimation[1]
anims = SexLab.GetAnimationsByTag(2, "Vaginal", "Rape", tagSuppress="Femdom")
SexLab.StartSex(sexActors, anims, Victim = Game.GetPlayer(), CenterOn = SexSpot)

 

If SexSpot is a bed, the actors will have sex on the bed. If it is an Xmarker on the floor, they'll have sex on the floor. Also, I know how to set a hook for the end of the sex animation, but haven't figured out animation stages yet.

Edited by Gristle
Posted (edited)

For using hooks here is an example,

Function StartPlayerSolo()

    actor[] sexActors = new actor[1]
    Sexactors[0] = PlayerRef
     
    sslBaseAnimation[] anims
    Anims = SexLab.GetAnimationsByTag(1, "Solo, M", TagSuppress = "4D, 4uDIK", RequireAll=true)
    RegisterForModEvent("HookAnimationStart_Player", "OnPlayerStart")
    RegisterforModEvent("HookAnimationEnd_Player", "OnPlayerStop")
    Sexlab.StartSex(Sexactors, Anims, Allowbed = True, Hook = "Player")
    
Endfunction

 

Event OnPlayerStart(int threadID, bool hasPlayer)
    UnregisterForModEvent("HookAnimationStart_Player")
    Debug.Notification("Player is about to start animation")
    ;Your Code Here
Endevent

 

Event OnPlayerStop(int threadID, bool hasPlayer)
    UnregisterForModEvent("HookAnimationEnd_Player")
    Debug.Notification("Player just finished the animation")
   ;Your Code Here

Endevent

Hope it helps....

Edited by KatDrop
Wartime i guess.....Just changed the HookAnimationEnd_Father to HookAnimationEnd_Player
Posted (edited)
On 6/14/2024 at 11:29 PM, KatDrop said:

For using hooks here is an example,

Function StartPlayerSolo()

    actor[] sexActors = new actor[1]
    Sexactors[0] = PlayerRef
     
    sslBaseAnimation[] anims
    Anims = SexLab.GetAnimationsByTag(1, "Solo, M", TagSuppress = "4D, 4uDIK", RequireAll=true)
    RegisterForModEvent("HookAnimationStart_Player", "OnPlayerStart")
    RegisterforModEvent("HookAnimationEnd_Player", "OnPlayerStop")
    Sexlab.StartSex(Sexactors, Anims, Allowbed = True, Hook = "Player")
    
Endfunction

 

Event OnPlayerStart(int threadID, bool hasPlayer)
    UnregisterForModEvent("HookAnimationStart_Player")
    Debug.Notification("Player is about to start animation")
    ;Your Code Here
Endevent

 

Event OnPlayerStop(int threadID, bool hasPlayer)
    UnregisterForModEvent("HookAnimationEnd_Father")
    Debug.Notification("Player just finished the animation")
   ;Your Code Here

Endevent

Hope it helps....

i tried now, and compiling also worked flawless.

 

Spoiler

 

Function pchsCustomerOral(actor akactor)

    actor[] sexActors = new actor[2]
    sexActors[0] = PlayerRef
    sexActors[1] = akactor

    sslBaseAnimation[] anims
    anims = new sslBaseAnimation[1]

    anims = SexLab.GetAnimationsByTag(2, "Oral",  TagSuppress = "Femdom")


        RegisterForModEvent("AnimationEnd_AfterOralSexEvent", "OnAfterOralSexEvent")

        SexLab.StartSex(sexActors, anims, hook="AfterOralSexEvent")

EndFunction

Event OnAfterOralSexEvent(string eventName, string argString, float argNum, form sender)
    PlayerRef = SexLab.HookActors(argString)[0]
    Int pchsChance = Utility.RandomInt(1,4)
    If pchsChance==1
    Debug.sendanimationevent(PlayerRef, "Babo_DefeatPanting")
    ElseIf pchsChance==2
    Debug.sendanimationevent(PlayerRef, "Babo_DefeatTraumaLie")
    ElseIf pchsChance==3
    Debug.sendanimationevent(PlayerRef, "BaboWomanPanting01") 
    ElseIf pchsChance==4
    Debug.sendanimationevent(PlayerRef, "BaboFaintFLoop")    
    EndIf
EndEvent
 

 

in the dialogue script (TIF), i call the funtion afterwards like this: (compiling works, but SL scene wont start ingame)

(Getowningquest() as pchsCustomSLScript).pchsCustomerOral(akspeaker)

 

what do i do wrong?

Edited by adle
Posted (edited)
1 hour ago, adle said:

what do i do wrong?

 

Check Papyrus log. Consider adding Debug.Notification calls into pchsCustomerOral.

 

Also, be careful when calling RegisterForModEvent in every call to pchsCustomerOral. Its possible the game does not stack event handlers, but if it does you'll end up with OnAfterOralSexEvent getting called multiple times. SKSE restores modevent handlers so you only need to register them once. Typically this is done in a quest OnInit event.

Edited by traison
Posted
59 minutes ago, adle said:

i tried now, and compiling also worked flawless.

 

  Hide contents

 

Function pchsCustomerOral(actor akactor)

    actor[] sexActors = new actor[2]
    sexActors[0] = PlayerRef
    sexActors[1] = akactor

    sslBaseAnimation[] anims
    anims = new sslBaseAnimation[1]

    anims = SexLab.GetAnimationsByTag(2, "Oral",  TagSuppress = "Femdom")


        RegisterForModEvent("AnimationEnd_AfterOralSexEvent", "OnAfterOralSexEvent")

        SexLab.StartSex(sexActors, anims, hook="AfterOralSexEvent")

EndFunction

Event OnAfterOralSexEvent(string eventName, string argString, float argNum, form sender)
    PlayerRef = SexLab.HookActors(argString)[0]
    Int pchsChance = Utility.RandomInt(1,4)
    If pchsChance==1
    Debug.sendanimationevent(PlayerRef, "Babo_DefeatPanting")
    ElseIf pchsChance==2
    Debug.sendanimationevent(PlayerRef, "Babo_DefeatTraumaLie")
    ElseIf pchsChance==3
    Debug.sendanimationevent(PlayerRef, "BaboWomanPanting01") 
    ElseIf pchsChance==4
    Debug.sendanimationevent(PlayerRef, "BaboFaintFLoop")    
    EndIf
EndEvent
 

 

in the dialogue script (TIF), i call the funtion afterwards like this: (compiling works, but SL scene wont start ingame)

(Getowningquest() as pchsCustomSLScript).pchsCustomerOral(akspeaker)

 

what do i do wrong?

well there is some mistakes, first add the properties of the actors in your script and not sure but you do have to register for animation start try this

 

Actor Property ThisActor Auto ;Customer1 in your case
Actor Property PlayerRef Auto


Function pchsCustomerOral()

actor[] sexActors = new actor[2]
sexActors[0] = PlayerRef
sexActors[1] = ThisActor

    sslBaseAnimation[] anims
    anims = SexLab.GetAnimationsByTag(2, "Oral", TagSuppress = "Femdom")

    RegisterForModEvent("HookAnimationStart_Player", "OnOralSex")
    RegisterForModEvent("HookAnimationStart_Player", "AfterOralSex")
    Debug.Notification("Registered for events")
    Utility.Wait(2.0)
    SexLab.StartSex(sexActors, anims, hook="Player")

EndFunction

Event OnOralSex(int threadID, bool hasPlayer)
    UnregisterForModEvent("HookAnimationStart_OnOralSexEvent")
    Debug.Notification("Starting animation")
EndEvent

Event AfterOralSex(int threadID, bool hasPlayer)
    UnregisterForModEvent("AfterOralSex")
    Debug.Notification("About to end Animation")
    Utility.Wait(2.0)
    Anim()
EndEvent


Function Anim()
Int Random = Utility.RandomInt(0,4)

    If Random == 1
        Debug.Notification("1")
        Debug.SendAnimationEvent(PlayerRef,"Babo_DefeatPanting")
    Elseif Random == 2
        Debug.Notification("2")
        Debug.SendAnimationEvent(PlayerRef,"Babo_DefeatTraumaLie")
    Elseif Random == 3
        Debug.Notification("3")
        Debug.SendAnimationEvent(PlayerRef,"BaboWomanPanting01")
    Elseif Random == 4
        Debug.Notification("4")
        Debug.SendAnimationEvent(PlayerRef,"BaboFaintFLoop")
    Endif

EndFunction

 

 

You have to call this function pchsCustomerOral() to trigger the scene.... lemme know if it works

Posted
14 minutes ago, KatDrop said:

well there is some mistakes, first add the properties of the actors in your script and not sure but you do have to register for animation start try this

 

Actor Property ThisActor Auto ;Customer1 in your case
Actor Property PlayerRef Auto


Function pchsCustomerOral()

actor[] sexActors = new actor[2]
sexActors[0] = PlayerRef
sexActors[1] = ThisActor

    sslBaseAnimation[] anims
    anims = SexLab.GetAnimationsByTag(2, "Oral", TagSuppress = "Femdom")

    RegisterForModEvent("HookAnimationStart_Player", "OnOralSex")
    RegisterForModEvent("HookAnimationStart_Player", "AfterOralSex")
    Debug.Notification("Registered for events")
    Utility.Wait(2.0)
    SexLab.StartSex(sexActors, anims, hook="Player")

EndFunction

Event OnOralSex(int threadID, bool hasPlayer)
    UnregisterForModEvent("HookAnimationStart_OnOralSexEvent")
    Debug.Notification("Starting animation")
EndEvent

Event AfterOralSex(int threadID, bool hasPlayer)
    UnregisterForModEvent("AfterOralSex")
    Debug.Notification("About to end Animation")
    Utility.Wait(2.0)
    Anim()
EndEvent


Function Anim()
Int Random = Utility.RandomInt(0,4)

    If Random == 1
        Debug.Notification("1")
        Debug.SendAnimationEvent(PlayerRef,"Babo_DefeatPanting")
    Elseif Random == 2
        Debug.Notification("2")
        Debug.SendAnimationEvent(PlayerRef,"Babo_DefeatTraumaLie")
    Elseif Random == 3
        Debug.Notification("3")
        Debug.SendAnimationEvent(PlayerRef,"BaboWomanPanting01")
    Elseif Random == 4
        Debug.Notification("4")
        Debug.SendAnimationEvent(PlayerRef,"BaboFaintFLoop")
    Endif

EndFunction

 

 

You have to call this function pchsCustomerOral() to trigger the scene.... lemme know if it works

I did. 

PlayerRef propeties are set.

For the Second actor, i do have different possible actors for it, depending on which alias they have right now. 

So i thought it would be easiest to set them as akspeaker, or something. Would this be possible?

Posted
3 minutes ago, adle said:

I did. 

PlayerRef propeties are set.

For the Second actor, i do have different possible actors for it, depending on which alias they have right now. 

So i thought it would be easiest to set them as akspeaker, or something. Would this be possible?

Well you can either use global or getstage command also there is magic effect. Since you are mainly working with quest getstage will be much more useful

 

 

GlobalVariable Propert CustomerCount_Global Auto

 

;Example for getstage

 

Quest Property YourQuest Auto

Actor Property Customer1 Auto

Actor Property Customer2 Auto

Actor Property Customer3 Auto

Actor Property Customer4 Auto

 

If YourQuest.GetStage() == 10
        Sexactors[0] = Customer1
Elseif YourQuest.GetStage() == 20
        Sexactors[0] = Customer2
Elseif YourQuest.GetStage() == 30
        Sexactors[0] = Customer3
Elseif YourQuest.GetStage() == 40
        Sexactors[0] = Customer4
Endif

 

;Example of Global

 

If CustomerCount_Global.GetValue() == 1.0
        Sexactors[0] = Customer1

Elseif CustomerCount_Global.GetValue() == 2.0
        Sexactors[0] = Customer2

Elseif CustomerCount_Global.GetValue() == 3.0
        Sexactors[0] = Customer3

Elseif CustomerCount_Global.GetValue() == 4.0
        Sexactors[0] = Customer4

Endif

Posted
5 hours ago, KatDrop said:

Well you can either use global or getstage command also there is magic effect. Since you are mainly working with quest getstage will be much more useful

 

 

GlobalVariable Propert CustomerCount_Global Auto

 

;Example for getstage

 

Quest Property YourQuest Auto

Actor Property Customer1 Auto

Actor Property Customer2 Auto

Actor Property Customer3 Auto

Actor Property Customer4 Auto

 

If YourQuest.GetStage() == 10
        Sexactors[0] = Customer1
Elseif YourQuest.GetStage() == 20
        Sexactors[0] = Customer2
Elseif YourQuest.GetStage() == 30
        Sexactors[0] = Customer3
Elseif YourQuest.GetStage() == 40
        Sexactors[0] = Customer4
Endif

 

;Example of Global

 

If CustomerCount_Global.GetValue() == 1.0
        Sexactors[0] = Customer1

Elseif CustomerCount_Global.GetValue() == 2.0
        Sexactors[0] = Customer2

Elseif CustomerCount_Global.GetValue() == 3.0
        Sexactors[0] = Customer3

Elseif CustomerCount_Global.GetValue() == 4.0
        Sexactors[0] = Customer4

Endif

I already have a function for that in my script. I think it has something to do with the actor property.

Still try to figure out how to get it to run, but will keep you updated.

 

another question regarding akSpeaker and akActor. I asked BakaFactory for help, since i want to use his idle motions for my sex scripts.

 

in the Files attached you can see that in the SL Script, he uses akActor. In the TIF File then, he calls for akSpeaker. Can you explain me how both work?

TIF__BaboTestPlugin01.psc BaboTestQuestScript.psc

Posted
11 hours ago, adle said:

I already have a function for that in my script. I think it has something to do with the actor property.

Still try to figure out how to get it to run, but will keep you updated.

 

another question regarding akSpeaker and akActor. I asked BakaFactory for help, since i want to use his idle motions for my sex scripts.

 

in the Files attached you can see that in the SL Script, he uses akActor. In the TIF File then, he calls for akSpeaker. Can you explain me how both work?

TIF__BaboTestPlugin01.psc 491 B · 1 download BaboTestQuestScript.psc 835 B · 1 download

 

Ok, So i would say that since akactor is not defined as anyone in BaboTestQuestScript it's basically empty to fill that up

he uses 

Function Fragment_1(ObjectReference akSpeakerRef)
Actor akSpeaker = akSpeakerRef as Actor

and then he calls the function 

BTQS.RapeFemalePlayer(akspeaker) ;akSpeaker is the npc ?

Where BTQS is the Quest and RapeFemalePlayer(akSpeaker) is the function and so on

 

 

;Try if you want

Create a dialogue to start the scene don't add getisid so that everyone has the dialogue

then try talking to them check if the scene gets triggers with everyone.

 

Modify your script

 

Function abcd(Actor akSpeaker)

    actor[] sexActors = new actor[2]
    sexActors[0] = PlayerREF
    sexActors[1] = akSpeaker as Actor

    ;xyz

EndFunction

 

 

And to trigger just call the function

YourQuestName.abcd(Actor akSpeaker)

Posted
6 hours ago, KatDrop said:

 

Ok, So i would say that since akactor is not defined as anyone in BaboTestQuestScript it's basically empty to fill that up

he uses 

Function Fragment_1(ObjectReference akSpeakerRef)
Actor akSpeaker = akSpeakerRef as Actor

and then he calls the function 

BTQS.RapeFemalePlayer(akspeaker) ;akSpeaker is the npc ?

Where BTQS is the Quest and RapeFemalePlayer(akSpeaker) is the function and so on

 

 

;Try if you want

Create a dialogue to start the scene don't add getisid so that everyone has the dialogue

then try talking to them check if the scene gets triggers with everyone.

 

Modify your script

 

Function abcd(Actor akSpeaker)

    actor[] sexActors = new actor[2]
    sexActors[0] = PlayerREF
    sexActors[1] = akSpeaker as Actor

    ;xyz

EndFunction

 

 

And to trigger just call the function

YourQuestName.abcd(Actor akSpeaker)

Got the SL Scene to work now. But animations wont play. The whole event wont trigger sadly.

This is my script

 

Spoiler

Function pchsCustomerOral1(actor akActor)

    actor[] sexActors = new actor[2]
    sexActors[0] = PlayerRef
    sexActors[1] = akActor
    sslBaseAnimation[] anims
    anims = new sslBaseAnimation[1]
    anims = SexLab.GetAnimationsByTag(2, "Oral", "Blowjob",  TagSuppress = "Femdom")

       RegisterForModEvent("AnimationEnd_AfterOralSexEvent", "OnAfterOralSexEvent")
    
        SexLab.StartSex(sexActors, anims)

EndFunction

Event AnimationEnd_AfterOralSexEvent(string eventName, string argString, float argNum, form sender)
    PlayerRef = SexLab.HookActors(argString)[0]
    Int pchsChance = Utility.RandomInt(1,4)
    If pchsChance==1
    Debug.sendanimationevent(PlayerRef, "Babo_DefeatPanting")
    ElseIf pchsChance==2
    Debug.sendanimationevent(PlayerRef, "Babo_DefeatTraumaLie")
    ElseIf pchsChance==3
    Debug.sendanimationevent(PlayerRef, "BaboWomanPanting01") 
    ElseIf pchsChance==4
    Debug.sendanimationevent(PlayerRef, "BaboFaintFLoop")    
    EndIf
    Debug.Notification("Animation should play")
    pchsProstitutionQuest001.setstage(35)
EndEvent

Added the debug not, to check if the event works. But sadly it doesnt. Also the next stage would not proceed. so i guess the whole event doesnt work

i call it like that in the TIF.

 

Spoiler

pchsCustomerOral1(akspeaker)

 

Posted (edited)
2 hours ago, adle said:

Got the SL Scene to work now. But animations wont play. The whole event wont trigger sadly.

This is my script

 

  Reveal hidden contents

Function pchsCustomerOral1(actor akActor)

    actor[] sexActors = new actor[2]
    sexActors[0] = PlayerRef
    sexActors[1] = akActor
    sslBaseAnimation[] anims
    anims = new sslBaseAnimation[1]
    anims = SexLab.GetAnimationsByTag(2, "Oral", "Blowjob",  TagSuppress = "Femdom")

       RegisterForModEvent("AnimationEnd_AfterOralSexEvent", "OnAfterOralSexEvent")
    
        SexLab.StartSex(sexActors, anims)

EndFunction

Event AnimationEnd_AfterOralSexEvent(string eventName, string argString, float argNum, form sender)
    PlayerRef = SexLab.HookActors(argString)[0]
    Int pchsChance = Utility.RandomInt(1,4)
    If pchsChance==1
    Debug.sendanimationevent(PlayerRef, "Babo_DefeatPanting")
    ElseIf pchsChance==2
    Debug.sendanimationevent(PlayerRef, "Babo_DefeatTraumaLie")
    ElseIf pchsChance==3
    Debug.sendanimationevent(PlayerRef, "BaboWomanPanting01") 
    ElseIf pchsChance==4
    Debug.sendanimationevent(PlayerRef, "BaboFaintFLoop")    
    EndIf
    Debug.Notification("Animation should play")
    pchsProstitutionQuest001.setstage(35)
EndEvent

Added the debug not, to check if the event works. But sadly it doesnt. Also the next stage would not proceed. so i guess the whole event doesnt work

i call it like that in the TIF.

 

  Reveal hidden contents

pchsCustomerOral1(akspeaker)

 

1. When you register for a modevent first thing you have to do is unregister it

Event AnimationEnd_AfterOralSexEvent(string eventName, string argString, float argNum, form sender)

UnRegisterForModEvent("AnimationEnd_AfterOralSexEvent")

;Your code

EndEvent

2. you don't have to hook playerRef to SexLab.HookActors(argString)[0] (don't know what you are trying to do here)

3. you have to register for animationstart (not sure but registering for start works in my case)

 

Edited Script
 

Spoiler

Actor Property PlayerRef Auto
SexLabFramework property SexLab auto


Function pchsCustomerOral1(Actor akSpeaker)

    actor[] sexActors = new actor[2]
    sexActors[0] = PlayerRef
    sexActors[1] = akSpeaker
    sslBaseAnimation[] anims
    anims = new sslBaseAnimation[1]
    anims = SexLab.GetAnimationsByTag(2, "Oral", "Blowjob",  TagSuppress = "Femdom")
        RegisterForModEvent("HookAnimationStart_OralSex", "OralStart")
        RegisterForModEvent("HookAnimationEnd_OralSex", "OralEnd")

        SexLab.StartSex(sexActors, anims, Hook = "OralSex")

EndFunction

Event OralStart(int tid, bool HasPlayer)

    UnregisterForModEvent("HookAnimationStart_OralSex")

    Debug.Notification("Animation is about to start")

EndEvent

Event OralEnd(int tid, bool HasPlayer)

    UnregisterForModEvent("HookAnimationEnd_OralSex")

    Debug.Notification("Animation is about to finish")

    Int pchsChance = Utility.RandomInt(1,4)

    If pchsChance==1
        Debug.sendanimationevent(PlayerRef, "Babo_DefeatPanting")
        Debug.Notification("Playing Babo_DefeatPanting")
    ElseIf pchsChance==2
        Debug.sendanimationevent(PlayerRef, "Babo_DefeatTraumaLie")
        Debug.Notification("Playing Babo_DefeatTraumaLie")
    ElseIf pchsChance==3
        Debug.sendanimationevent(PlayerRef, "BaboWomanPanting01")
        Debug.Notification("Playing BaboWomanPanting01")
    ElseIf pchsChance==4
        Debug.sendanimationevent(PlayerRef, "BaboFaintFLoop")
        Debug.Notification("Playing BaboFaintFLoop")
    EndIf

    pchsProstitutionQuest001.setstage(35)

EndEvent

Edited by KatDrop
Posted
1 hour ago, KatDrop said:

1. When you register for a modevent first thing you have to do is unregister it

Event AnimationEnd_AfterOralSexEvent(string eventName, string argString, float argNum, form sender)

UnRegisterForModEvent("AnimationEnd_AfterOralSexEvent")

;Your code

EndEvent

2. you don't have to hook playerRef to SexLab.HookActors(argString)[0] (don't know what you are trying to do here)

3. you have to register for animationstart (not sure but registering for start works in my case)

 

Edited Script
 

  Hide contents

Actor Property PlayerRef Auto
SexLabFramework property SexLab auto


Function pchsCustomerOral1(Actor akSpeaker)

    actor[] sexActors = new actor[2]
    sexActors[0] = PlayerRef
    sexActors[1] = akSpeaker
    sslBaseAnimation[] anims
    anims = new sslBaseAnimation[1]
    anims = SexLab.GetAnimationsByTag(2, "Oral", "Blowjob",  TagSuppress = "Femdom")
        RegisterForModEvent("HookAnimationStart_OralSex", "OralStart")
        RegisterForModEvent("HookAnimationEnd_OralSex", "OralEnd")

        SexLab.StartSex(sexActors, anims, Hook = "OralSex")

EndFunction

Event OralStart(int tid, bool HasPlayer)

    UnregisterForModEvent("HookAnimationStart_OralSex")

    Debug.Notification("Animation is about to start")

EndEvent

Event OralEnd(int tid, bool HasPlayer)

    UnregisterForModEvent("HookAnimationEnd_OralSex")

    Debug.Notification("Animation is about to finish")

    Int pchsChance = Utility.RandomInt(1,4)

    If pchsChance==1
        Debug.sendanimationevent(PlayerRef, "Babo_DefeatPanting")
        Debug.Notification("Playing Babo_DefeatPanting")
    ElseIf pchsChance==2
        Debug.sendanimationevent(PlayerRef, "Babo_DefeatTraumaLie")
        Debug.Notification("Playing Babo_DefeatTraumaLie")
    ElseIf pchsChance==3
        Debug.sendanimationevent(PlayerRef, "BaboWomanPanting01")
        Debug.Notification("Playing BaboWomanPanting01")
    ElseIf pchsChance==4
        Debug.sendanimationevent(PlayerRef, "BaboFaintFLoop")
        Debug.Notification("Playing BaboFaintFLoop")
    EndIf

    pchsProstitutionQuest001.setstage(35)

EndEvent

alright. Thank you very much. I didnt know that i have to register both. 

So i tried your script. SL scene works, idle animations sadly not. Thus no debug notifi. for playing these and no setstage 35

 

dont understand why tbh. the whole event wont play

Posted
59 minutes ago, adle said:

alright. Thank you very much. I didnt know that i have to register both. 

So i tried your script. SL scene works, idle animations sadly not. Thus no debug notifi. for playing these and no setstage 35

 

dont understand why tbh. the whole event wont play

Did you get the notification "Debug.Notification("Animation is about to finish")" and "Debug.Notification("Animation is about to start")" ?

and is the script linked as quest script or dialogue ?

also setstage has nothing to do with the idle play animation since there is no if statements so it should trigger the stage

try using console and type sqv yourquestname what does it show?

for the sendanimation event you can try it with a fire and forget spell just to check if it works

 

Event OnEffectStart(actor akTarget, actor akCaster)

 

        Utility.Wait(3.0)
        Debug.SendAnimationEvent(akTarget, "idlelockpick") ;if it works then try changing it with babo ids

 

EndEvent

Posted
2 minutes ago, wynston said:

Did you get the notification "Debug.Notification("Animation is about to finish")" and "Debug.Notification("Animation is about to start")" ?

and is the script linked as quest script or dialogue ?

also setstage has nothing to do with the idle play animation since there is no if statements so it should trigger the stage

try using console and type sqv yourquestname what does it show?

for the sendanimation event you can try it with a fire and forget spell just to check if it works

 

Event OnEffectStart(actor akTarget, actor akCaster)

 

        Utility.Wait(3.0)
        Debug.SendAnimationEvent(akTarget, "idlelockpick") ;if it works then try changing it with babo ids

 

EndEvent

I dont get the debug.Notifications sadly. And the script is inside of an dialogue (TIF File)

 

if i use Debug.SendAnimationEvent, alone, the animation plays. So this must be right.

Must have something to do with the event

 

will try your script

Posted

@wynston this actually fixed it for me! It was Utility.wait 😄 i guess without, the script would move forward way to fast. 

Added Utility.wait(1.0), and now everything works like a charm. Thank you all for your support! now i can proceed with my questline

Posted

@adle happy to help.....Actually i am working on something similar you can say addon for wartime lol....

Posted
7 minutes ago, wynston said:

@adle happy to help.....Actually i am working on something similar you can say addon for wartime lol....

Wait really? tell me 😄 maybe we could work together?

Posted (edited)
28 minutes ago, KatDrop said:

Well mainly some side quest might remove some of them what do you think?
 

  Hide contents

Midnight -> wake up and find father next to you has some solo sl scenes and custom animations....

Belethor delivery -> Intro -> (Meet Belethor outside whiterun watchtower at midnight )
Get Hired by Belethor -> Random delivery -> shady customers -> (Jail/SL/Drugs)
Drugs -> Alchemist -> Temporary Cure -> Wrong Treatment (Blurry Vision -> ? )
Invited to a party -> (Shopping -> New Clothes) Meet new people (father introduces you to his....)
Get hired as a maid -> (maid outfit) branches into different scenarios
Invite Customer -> (Same as buying brutus quest intro where father will guide you at first) -> (random chance) Homevisit (Gifts if demands fulfilled)
(PC invites Customer requires father's approval)
Father Invites Customer -> Homevisit at night -> Their Demands xyz (if fulfilled gold collect from father or else -favour)
Gifts -> (toys/clothes/etc  which will apply mgef "xyz")
Uncle Ben -> Hardcore Slavery -> (Ref Slaverun)
idk lol this is what i am currently working on my todo list is cluttered....

 

Ya I don't mind working together here my discord -> shannon2053

sounds great. here are my ideas atm:

 

Spoiler

Marriage Quest:
Custom Marriage. No vanilla interference

1. after Pregnancy Quest - Father Force Greet
2. Teleport to Riften - Temple of Mara. Automate change to wedding dress. (setable via MCM?)
3. Guests: 
- Mother in cage (if she is back)
- Uncle Benjamin
- Father Friends
- Skulvar
- Brumbar
- Jazeem
- ?
4. Priest Marriage Dialogue - Slave Wife Contract
5. Gangbang Scene with all Guests
6. Teleport back to home
7. new Slave Wife Tasks?
8. no ending until Quest finish


Goblin Slave Quest:

Uncle Benjamin Quest:

Option 1:

1. After find Mother, flee to Uncle Benjamin and ask for help.
2. Uncle Benjamin visit Father. After comeback - Rape.
3. Brings back PC to Father.
4. Punishment - Sex with Uncle regularly. Uncle visits every 14 days for one whole day.
5. Gangbang with Father?
6. Uncle Son also join later?
7. Uncle will join Partys
8. Dialogue if Mother is back
9. No ending until Quest finish

Option 2:

1. After PC gave Rough, Uncle benjamin Visits while father is outside at the bar
2. short dialogue between PC and Uncle.

Dialogue 1:
- PC plays nice and doesnt say anything (more favour, depravity and submission)
Dialogue 2:
- Tell Uncle whole story and get interrupted by father coming into the house. Uncle reveals that he is on father side and already know. Player - punishment

3. both option leads to Uncle regular sex quest
4. after 3 times uncle visit, Uncle Son (PC cousin) joins. Leading to 3 or 4 way (with father)
5. never ending. Regular sex quest. All other quests are blocked during that time. (No supply run, no fashion, no party)
6. Uncle will join Partys.
7. Dialogue if Mother is back
8. No ending until Quest finish


Prostitution Quest:

1. After PC gave Vaginal sex and Room change - Force Greet Father. Will announce a day before. (so that all tasks for next day can be set)
2. requires PC for Sex Training (adjustable 7 - 14 Days). Starting with blowjob, to Vaginal, Anal, Rough, Gangbang. - if final stage done, PC can choose via Dialogue which training
3. Father collects money everytime. All other Task will be blocked during the Training which last one day (no Firewood, no supply run, no fashion, no party, no cleaning)
4. no ending until quest finish
5. refuse option, leads into player locked in the room and be raped by customers the whole day.
- max 8 men staning in line in the lobby and waiting for their turn. Gangbang scene, everybody will be in the room with comments for those who wait.
- skip scene option after at least 1 intercourse. If not Skip, max customers 8 for the whole day

Jarl Quest:
no timestamp. triggered by PC

1. new job for PC. First time after Prositution Quest stage Gangbang Done. Father Force Greet
2. Father sends to Jarl Quarters at night for Sex. Random sex, no restrictions. Jarl will use player. After that, Payment and coc back to home
3. Repeatable after timeout of one day.


Toilette cleaning:

1. new daily task for PC cleaning the outdoor toilette

Milking cows quest:

1. new daily task. Milk cows quest to sell milk at belathor


Fathers Friends:

1. new repeatable job after first time party guests sex. 
2. first time, father sends player to Guests home, where PC have to stay overnight. Gets teleported after Father dialogue at 10pm (result in no sleep gain)
3. PC used and send back to house at 6am.
4. repeatable with various Father Friend and houses.
5. Story with Guests Daughter, Wife, Son. Different stories and dialogues


Party Quest:

1. after PC gave Vaginal, Father demands Blowjob during Party to show Guests, PCs skills
2. one time event, non repeatable.
3. After that, father explains to PC, that she needs to service Guests as well if they ask to.
4. After PC prostitution gangbang scene, Father forcegreet during Party start. Leads to gangbang. After that, normal party tasks


Guard Quest:

1. if player only want to cook after first sex scene with Guard already complete, result in gangrape. repeatable.

Guard Random Approaches:

1. after slavewife? Guards Whiterun, random approaches for service. if not, jailtime.


Stormcloak Punishment:

1. PC will be sent to Stormcloak camp. Will be raped 1 whole day. 
2. coc to camp, after finish, will coc back. Laying on ground, exhausted before PC Home on the streets


Orc Camp Quest:

1. Father needs to pay debt with Orc Stronghold. PC will be send to it for a week. (after Prostitution gangbang stage)
2. All tasks are locked, Mother survival will be locked.
3. not repeatable


Giant Camp Punishment:

1. Father sends PC as a sacrifice for Giants.
2. Player will be tattooed and have to walk to Camp (with quest mark)
3. PC have to offer herself to them. will be used 4 times, before can go back. Player cant leave camp. 
4. Go back to Home. 
5. If quest not done, mother death.
6. If Mother already dead, sold into simple slavery


More random Comments for:

- NPC Reaction after Slave Wife
- NPC Reaction after Prositution
- NPC Reaction after Horse Barn Sex
- NPC Reaction Outfit worn


Message Boxes:

- for Player mental state and thoughts, after different stages
- breakdown animations?


Father Dialogue:

- Dialogue after all Sex Stages
- After Marriage
- asking for baby after birth


Inflate Potion:

1. Random Force Greet for Sexlab Survival Inflate Potion
2. First Dialogue Variant and for repetive


Water:

1. New daily task for get water. Put it in barrel?


Food swap:

1. change food options from normal food, to food scraps, to cum.

currently working on the Player prostitution in her room. After that, either the wedding or the uncle quest.

 

btw. sent you friend invite via discord

Edited by adle
  • 4 weeks later...
Posted

There's some helpful stuff in this thread and I was hoping you guys could help me out with some scripting. I'm trying to do two things...

First: I'm trying to advance to a new stage at the end of a sexlab animation with my player. The code I use is...

 

sslThreadModel AnimationObject = SexLab.NewThread()
AnimationObject.AddActor(Game.GetPlayer(), isVictim = false)
AnimationObject.AddActor(akSpeaker, isVictim = false)
sslBaseAnimation[] anims
anims = new sslBaseAnimation[1]
anims[0] = SexLab.GetAnimationByName("Animation Name")
AnimationObject.DisableLeadIn(true)
AnimationObject.SetAnimations(anims)
AnimationObject.SetBedding(0)
AnimationObject.SetHook("TestingFoo")
RegisterForModEvent("AnimationStart_" + "TestingFoo", "TestingFoo")
AnimationObject.StartThread()

 

I place it inside the dialogue fragment which in this case is what I'm trying to do and it works fine. What code do I need to change to set a new stage after the animation ends?

 

Second: I'm trying to figure out the code for multiple sex scenes happening at once. For example me and three other girls are having sex with guys / wolves but each with our own animations going that all start at once, so four different sex animations with specific tags. And let's say I'd want to place this inside the dialogue fragment as well.

 

Any help would be appreciated:)

Posted (edited)
On 7/16/2024 at 11:01 PM, CyberQueen said:

There's some helpful stuff in this thread and I was hoping you guys could help me out with some scripting. I'm trying to do two things...

First: I'm trying to advance to a new stage at the end of a sexlab animation with my player. The code I use is...

 

sslThreadModel AnimationObject = SexLab.NewThread()
AnimationObject.AddActor(Game.GetPlayer(), isVictim = false)
AnimationObject.AddActor(akSpeaker, isVictim = false)
sslBaseAnimation[] anims
anims = new sslBaseAnimation[1]
anims[0] = SexLab.GetAnimationByName("Animation Name")
AnimationObject.DisableLeadIn(true)
AnimationObject.SetAnimations(anims)
AnimationObject.SetBedding(0)
AnimationObject.SetHook("TestingFoo")
RegisterForModEvent("AnimationStart_" + "TestingFoo", "TestingFoo")
AnimationObject.StartThread()

 

I place it inside the dialogue fragment which in this case is what I'm trying to do and it works fine. What code do I need to change to set a new stage after the animation ends?

 

Second: I'm trying to figure out the code for multiple sex scenes happening at once. For example me and three other girls are having sex with guys / wolves but each with our own animations going that all start at once, so four different sex animations with specific tags. And let's say I'd want to place this inside the dialogue fragment as well.

 

Any help would be appreciated:)

 


You could consider setting it after starting the scene as the player won't be able to do anything until the scene ends anyways.  If it really needs to be after the scene you can listen for a hook, say `myhook' (or TestingFoo in your code), e.g.:


;...  (defines listeningQuest and actors a1,a2, a3)

;>> Essential thing to add:

ListeningQuest.RegisterForModEvent( "HookAnimationEnd_MyHook", "OnAnimationEnd" )

;<<  then start the scene(s) as you do or eg:
If bAggressiveAnim
  SexLab.QuickStart( a1, a2, a3, victim = a1, hook = "MyHook", AnimationTags="Aggressive")
else
  Actor[] Positions = SexLab.MakeActorArray(a1, a2, a3)
  SexLab.StartSex(Positions, SexLab.GetAnimationsByTags(Positions.Length, "Vaginal,Anal,Oral", "Aggressive", false), none, none, false, "MyHook" )
endif

 

;>>  and then to listen for the event in some quest>>

Scriptname ListeningQuestType extends Quest

Quest property QuestToAdvance auto

Event OnAnimationEnd(int tid, bool HasPlayer)
{ Set Stage to 123 when the hooked animation finishes. }
    UnRegisterForModEvent( "HookAnimationEnd_MyHook" )
    QuestToAdvance.SetStage( 123 )
EndEvent        

 

You don't need a separate quest; you can put this in the quest-to-advance itself, just has to be running for the entire period (from registerformodevent till animation end...)


To start multiple scenes at once just call startSex multiple times with different actors.  (Each tread takes care of one scene so you will need separate threads for each different scene.)
You'd need hooks on each if you want to wait for all of them to finish.

 

 

 

Edited by MTB

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