Jump to content

SexLab Framework Development


Recommended Posts

 

Thank you for great framework its enabling modders to make nice mods! However sexlab framework desperately needs way you to interract with NPCs. Right now you can't even have love with your follower, wife or your housecarl. I can understand that its no sense to enable sex with every npc but you should be at least be able to have sex with your wife and possibly with some other immoral character like prostitutes or assault strike down npcs.

 

So what I suggest is to:

- Enable sex with your partner, add dialogue option for this

- When human NPC is strike down and suffering allow assault

 

It would be also nice if you could integrate arousal to sexlab since arousal is something that simply is part of sex. Thank you.

This is done by mods that depent on sexlab.Sexlab is the framework that contains all the info needed for sex mods to work.On it's own sexlab doesn't do anything.For sexlab mods/plugins you should look here

http://www.loverslab.com/forum/51-downloads-sexlab-framework/

There's a whole bunch of them!

 

 

Thats the exact problem people end up writing same mechanic that should be part of framework that enables the sex. They end up conflicting each other too. These seems really minor changes to add that could help all sexlab modders and users.

 

Link to comment

 

 

Thank you for great framework its enabling modders to make nice mods! However sexlab framework desperately needs way you to interract with NPCs. Right now you can't even have love with your follower, wife or your housecarl. I can understand that its no sense to enable sex with every npc but you should be at least be able to have sex with your wife and possibly with some other immoral character like prostitutes or assault strike down npcs.

 

So what I suggest is to:

- Enable sex with your partner, add dialogue option for this

- When human NPC is strike down and suffering allow assault

 

It would be also nice if you could integrate arousal to sexlab since arousal is something that simply is part of sex. Thank you.

This is done by mods that depent on sexlab.Sexlab is the framework that contains all the info needed for sex mods to work.On it's own sexlab doesn't do anything.For sexlab mods/plugins you should look here

http://www.loverslab.com/forum/51-downloads-sexlab-framework/

There's a whole bunch of them!

 

 

Thats the exact problem people end up writing same mechanic that should be part of framework that enables the sex. They end up conflicting each other too. These seems really minor changes to add that could help all sexlab modders and users.

 

 

 

Different people want different things from their followers, other npcs, even animals. There are different mods that provide alternative ways of interacting with each of those, some like one and others like different ones. If two mods conflict (and to be honest, so far the active modders have been very proactive about fixing conflicts) it's probably because they cater to different audiences, and don't truly conflict at all. 

Link to comment

Hi, I have a question. First to explain; I'm working on an Intersex mod (with an emphasis on a FTM Transman appearance since Futa of various kinds already abounds), I'm 95% done with the mesh, and working on texturing, looking to make it compatible with SoS as an addon basically.

 

So my question: SexLab mods like Cumshot and SoS have transgendered options, but is there anyway to get SexLab itself to recognize, for animation purposes, that a "male" character should be using female animations?

Link to comment

Hi, I have a question. First to explain; I'm working on an Intersex mod (with an emphasis on a FTM Transman appearance since Futa of various kinds already abounds), I'm 95% done with the mesh, and working on texturing, looking to make it compatible with SoS as an addon basically.

 

So my question: SexLab mods like Cumshot and SoS have transgendered options, but is there anyway to get SexLab itself to recognize, for animation purposes, that a "male" character should be using female animations?

 

There is a function in SexLab for exactly this, TreatAsMale(actor a) and TreatAsFemale(actor a)

 

Assuming a female actor: 

SexLab.TreatAsMale(FemaleActor)

Will make SexLab treat FemaleActor as a male for everything except voices and expressions.

 

Also if you need to get the "SexLab" gender of an actor, use SexLab's GetGender(actor a)

; // returns 1 (female)
int gender = FemaleActor.GetLeveledActorBase().GetSex()

; // returns 0 (male)
int gender = SexLab.GetGender(FemaleActor)

Lastly, ClearForcedGender(actor a) will return the actors faked gender back to their Skyrim default.

Link to comment

I've read in the wiki that "StartSex()" returns the index number for the thread chosen to process this animation, so a number between 0 and 14. I guess "StartThread()" does something similar.

I'm searching for a way to find out the thread's index number of an animation my mod hasn't started; I've searched the source code of SexLab a little and it seems "sslThreadController Controller.tid" does exactly that. Is that correct?

Link to comment

I've read in the wiki that "StartSex()" returns the index number for the thread chosen to process this animation, so a number between 0 and 14. I guess "StartThread()" does something similar.

I'm searching for a way to find out the thread's index number of an animation my mod hasn't started; I've searched the source code of SexLab a little and it seems "sslThreadController Controller.tid" does exactly that. Is that correct?

 

Yes.

Link to comment

I've updated thread with current 1.40 plans, most of it is currently still in the experimentation phase

 

---- v1.40 Planning & Experimentation ---------
 
The listed features are the target for NEW features to the next release and does not include any bug fixes that will also come with the update.
 
Key: (finished) / (in progress) / (canceled) / (planned)

  • Taking a god damned break
  • Animation start/end sequences in place of ragdolling and instantly standing up
  • Custom non-registered animation, voice & expressions. 
  • Unified SexLab dialog system
    • Allow modders to easily force an NPC to start dialog with player, inside and outside of animation
    • Maybe some sort of "registration" system that allows a mod to register certain categories of dialogs for NPCs like prostitution, romance, and such. May be a good way to improve compatibility between similar mods.
  • Actors walk/run into position instead of warp/glide into position
  • Probably some other cool shit I haven't figured out yet
Link to comment

What would be the smoothest way to delete the victim out of the actorList?

My first attempt was to cast actorList to form (form[] aggressorList = actorList as form[]) and then use sslUtility.ClearNone() however actor[] cannot be cast to form[]. Hmpf... :-(
So, now I'm using:

 

 

	actor[] actorList = Controller.positions
	int lengthOfActorList = Controller.ActorCount
	actor victim = Controller.GetVictim()
	int indexOfVictim = Controller.GetPosition(victim)
	
	actor[] aggressorList
	
	
	
	if lengthOfActorList == 1
		aggressorList = None
	elseIf lengthOfActorList == 2
		aggressorList = new actor[1]
	elseIf lengthOfActorList == 3
		aggressorList = new actor[2]
	elseIf lengthOfActorList == 4
		aggressorList = new actor[3]
	elseIf lengthOfActorList == 5
		aggressorList = new actor[4]
	endIf
	
	int i = 0
	int j = 0
	
	while i < lengthOfActorList
		
		if actorList[i] != victim
			aggressorList[j] = actorList[i]
			j += 1
		endIf
		
		i += 1
	endWhile

 

 

Link to comment

What would be the smoothest way to delete the victim out of the actorList?

 

My first attempt was to cast actorList to form (form[] aggressorList = actorList as form[]) and then use sslUtility.ClearNone() however actor[] cannot be cast to form[]. Hmpf... :-(

So, now I'm using:

 

 

	actor[] actorList = Controller.positions
	int lengthOfActorList = Controller.ActorCount
	actor victim = Controller.GetVictim()
	int indexOfVictim = Controller.GetPosition(victim)
	
	actor[] aggressorList
	
	
	
	if lengthOfActorList == 1
		aggressorList = None
	elseIf lengthOfActorList == 2
		aggressorList = new actor[1]
	elseIf lengthOfActorList == 3
		aggressorList = new actor[2]
	elseIf lengthOfActorList == 4
		aggressorList = new actor[3]
	elseIf lengthOfActorList == 5
		aggressorList = new actor[4]
	endIf
	
	int i = 0
	int j = 0
	
	while i < lengthOfActorList
		
		if actorList[i] != victim
			aggressorList[j] = actorList[i]
			j += 1
		endIf
		
		i += 1
	endWhile

 

actor[] aggressorList
int i = Controller.ActorCount
while i
	i -= 1
	actor ActorRef = Controller.Positions[i]
	if !Controller.IsVictim(ActorRef)
		aggressorList = sslUtility.PushActor(ActorRef, aggressorList)
	endIf
endWhile
EDIT: This would reverse the actor position order(minus the victim), if that matters just reverse the while loop, if it doesn't matter however; the above is technically more efficient.
Link to comment

 

  • Animation start/end sequences in place of ragdolling and instantly standing up

 

Would it be possible to implement a functionality to tell an actor to stay lying on the ground?

Like "ContinueToLieDown(float time)"; negative values are indefinitely (to wait for the next input of the mod), and positive values dictate how long the actor stays in the laying down animation before they start the standing up animation.

Link to comment

 

 

  • Animation start/end sequences in place of ragdolling and instantly standing up

 

Would it be possible to implement a functionality to tell an actor to stay lying on the ground?

Like "ContinueToLieDown(float time)"; negative values are indefinitely (to wait for the next input of the mod), and positive values dictate how long the actor stays in the laying down animation before they start the standing up animation.

 

 

This really points out the need for the transition animations that Ashal is wanting to get made.  When an actor gets a train run on them they shouldn't be standing up between each act.  A voluntary train should have an animation with the actor waving off the last and waving in the next while an involuntary train should show an animation of trying to cover and cower.

 

Then transition animations from on-back to on-face, on-face to doggy (two, one with head up, one with head down), on-face to kneeling.  The problem of course is more than just getting animations though.  SexLab will have to know the starting and ending positions of each actor in each sex act and for a train run there's the need to keep track of the position of the actor in the train run between partners or groups of partners.

 

Its a daunting chore but if Ashal manages it I don't think you'll find any framework for any game anywhere else that can compare itself favorably,

Link to comment

This really points out the need for the transition animations that Ashal is wanting to get made.  When an actor gets a train run on them they shouldn't be standing up between each act.  A voluntary train should have an animation with the actor waving off the last and waving in the next while an involuntary train should show an animation of trying to cover and cower.

Great minds think alike.

I was intending to use it for a gangbang mod; the victim is lying on the ground heavily panting while the aggressors take turns. :angel:

Link to comment

The mod event AnimationChange seems to be bugged (RegisterForModEvent("AnimationChange", "<custom name>").

My mod Miscellaneous Fixes changes the played animation at the very beginning with the command "Controller.SetAnimations(animations)", but that animation chance never triggers the 'AnimationChange' event. However if I change the animation via the player controls (default [O]) it triggers the event.

 

The animation 'Reverse Cowgirl' (and maybe some others too) seems to have only 3 stages (plus maybe orgasm stage), unlike many others who have 5. However the length of the array passed by "Controller.Timers" for the animation 'Reverse Cowgirl' is 5, not 3 as it should be. It wouldn't surprise me if all animations with less than 5 stages have this bug.

Link to comment

The mod event AnimationChange seems to be bugged (RegisterForModEvent("AnimationChange", "<custom name>").

My mod Miscellaneous Fixes changes the played animation at the very beginning with the command "Controller.SetAnimations(animations)", but that animation chance never triggers the 'AnimationChange' event. However if I change the animation via the player controls (default [O]) it triggers the event.

 

The animation 'Reverse Cowgirl' (and maybe some others too) seems to have only 3 stages (plus maybe orgasm stage), unlike many others who have 5. However the length of the array passed by "Controller.Timers" for the animation 'Reverse Cowgirl' is 5, not 3 as it should be. It wouldn't surprise me if all animations with less than 5 stages have this bug.

 

AnimationChange is only meant to be a hook for player changed animations, mod changed animations purposely skip this, because they should already know the animation has changed since they're the ones who changed it. You don't need an event callback to know calling SetAnimations() changed the animation.

 

Timers have nothing to do with the above, and they are set up to handle there being more timers than stages as well as the reverse of more stages than timers.

 

Given a 3 stage animation and 5 timers, it would use timers like this:

  • Timer 1: Stage 1
  • Timer 2: Stage 2
  • Timer 3:
  • Timer 4:
  • Timer 5: Stage 3 (Orgasm)

A 6 stage animation with 5 timers would go like this

  • Timer 1: Stage 1
  • Timer 2: Stage 2
  • Timer 3: Stage 3
  • Timer 4: Stage 4, Stage 5
  • Timer 5: Stage 6 (Orgasm)

The last timer in the array is always reserved for orgasm stage, and the 2nd to last is used for anything out of it's range.

Link to comment

AnimationChange is only meant to be a hook for player changed animations, mod changed animations purposely skip this, because they should already know the animation has changed since they're the ones who changed it. You don't need an event callback to know calling SetAnimations() changed the animation.

So there's no way to find out if another mod changes the animation?

 

Timers have nothing to do with the above, and they are set up to handle there being more timers than stages as well as the reverse of more stages than timers.

 

 

Given a 3 stage animation and 5 timers, it would use timers like this:

  • Timer 1: Stage 1
  • Timer 2: Stage 2
  • Timer 3:
  • Timer 4:
  • Timer 5: Stage 3 (Orgasm)
A 6 stage animation with 5 timers would go like this
  • Timer 1: Stage 1
  • Timer 2: Stage 2
  • Timer 3: Stage 3
  • Timer 4: Stage 4, Stage 5
  • Timer 5: Stage 6 (Orgasm)
The last timer in the array is always reserved for orgasm stage, and the 2nd to last is used for anything out of it's range.

 

Ah, in the first case I could use sslUtility.ClearNone() and then .length to find out how many stages an animation has, in the second case I'm screwed.

Is there a function that returns the amount of stages an animation has?

Link to comment

So there's no way to find out if another mod changes the animation?

You could store the current animation and then compare the stored animation with the current animation periodically to see if it's changed, either in an update loop or by comparing it during a StageEnd event.

 

I can see absolutely no valid reason for needing to know the instant another mod changes animations on any scene not started by ones own mod.

 

Ah, in the first case I could use sslUtility.ClearNone() and then .length to find out how many stages an animation has, in the second case I'm screwed.

 

Timers and ClearNone() + .length shouldn't have anything to do with any of this, and even if they did CountNone() would serve you better as it'd provides a means to the exact same result without having to make Papyrus slowly reconstruct the array without the non elements.

(Forms.Length - CountNone(Forms)) == ClearNone(Forms).Length

Is there a function that returns the amount of stages an animation has?

 

StageCount property on animations has this.

int Stages = Controller.Animation.StageCount
Link to comment

You could store the current animation and then compare the stored animation with the current animation periodically to see if it's changed, either in an update loop or by comparing it during a StageEnd event.

I guess that's a possible workaround; have to test it tomorrow.

 

StageCount property on animations has this.

int Stages = Controller.Animation.StageCount

 

Perfect, that's the function I was looking for; now that part of my mod works flawlessly now.
Link to comment

Ashal,

 

I apologize if this has already been answered.

 

Something I'm considering doing for Spouses Enhanced is a checkbox for "prefer BBP animations". To the user using your Animation Toggle page on the MCM, it's not presented which animations have BBP enabled, but it is exposed to modders via the tagging system (and of course, anyone that reads your Wiki).

 

Is this something you would feel like should be part of SexLab proper, or is this something you would continue to prefer be implemented at the mod level?

 

Thanks!

Link to comment

Ashal,

 

I apologize if this has already been answered.

 

Something I'm considering doing for Spouses Enhanced is a checkbox for "prefer BBP animations". To the user using your Animation Toggle page on the MCM, it's not presented which animations have BBP enabled, but it is exposed to modders via the tagging system (and of course, anyone that reads your Wiki).

 

Is this something you would feel like should be part of SexLab proper, or is this something you would continue to prefer be implemented at the mod level?

 

Thanks!

Why not just install HDT and get bouncing bits in all the animations instead of limiting yourself to those animations where BBP was explicitly added. More specifically, with HDT available why would such a setting be needed?

Link to comment

 

Ashal,

 

I apologize if this has already been answered.

 

Something I'm considering doing for Spouses Enhanced is a checkbox for "prefer BBP animations". To the user using your Animation Toggle page on the MCM, it's not presented which animations have BBP enabled, but it is exposed to modders via the tagging system (and of course, anyone that reads your Wiki).

 

Is this something you would feel like should be part of SexLab proper, or is this something you would continue to prefer be implemented at the mod level?

 

Thanks!

Why not just install HDT and get bouncing bits in all the animations instead of limiting yourself to those animations where BBP was explicitly added. More specifically, with HDT available why would such a setting be needed?

 

Because not everyone uses HDT? I don't know, it just seemed like it made sense in terms of things to offer.

Link to comment

HDT is easy enough to add and use which makes the extra work to add BBP to an animation unnecessary. With HDT I don't expect to see any more BBP animations created.

 

Yes, so you can use all your favorite animations and still have breast/butt physics without being limited to whether or not the animation is bbp/tbbp, and some even have pregnant belly physics being worked on O.o

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