dkatryl Posted December 3, 2013 Posted December 3, 2013 If you have no stored thread controller for where the play is, the simplest way to do it is SexLab.GetPlayerController().EndAnimation(true) That will locate the player, return the thread they are in, and then call EndAnimation() on it, the true flag on EndAnimation() will force the actors to skip ragdolling and cum effects, incase time is an issue. Appreciate the assist! Should really help clean up the half-assed work around I had been using for some time.
Arizona_Steve Posted December 4, 2013 Posted December 4, 2013 Just an FYI, I'm getting a crazy number of errors in my log (new game, minimum number of mods, Random Sex running at 10 second intervals), not to mention that my latest version of Random Sex is causing a CTD after a few minutes, always when a sex act is being started up. All of the errors seem to be around the SSLAliasScript script, which (after digging around the SexLab code) appears to be a result of insufficient thread-safety on the alias array that handles the actors. It would seem that multiple threads can stomp over one another, a situation that is not helped by having a monolithic array of 75 actor aliases. What I would do is assign a set of five actors to each thread, which would allow actor locking at the thread level (much less contention). I have attached an example log created with the currently uploaded version of Random Sex.
Ashal Posted December 4, 2013 Author Posted December 4, 2013 Just an FYI, I'm getting a crazy number of errors in my log (new game, minimum number of mods, Random Sex running at 10 second intervals), not to mention that my latest version of Random Sex is causing a CTD after a few minutes, always when a sex act is being started up. All of the errors seem to be around the SSLAliasScript script, which (after digging around the SexLab code) appears to be a result of insufficient thread-safety on the alias array that handles the actors. It would seem that multiple threads can stomp over one another, a situation that is not helped by having a monolithic array of 75 actor aliases. What I would do is assign a set of five actors to each thread, which would allow actor locking at the thread level (much less contention). I have attached an example log created with the currently uploaded version of Random Sex. Papyrus.0.txt Try with the latest development build of the game, the actor slotting and thread start up in general has been pretty heavily optimized with 1.30. But regardless of that, I like the idea of just assigning 5 specific actor aliases to each thread rather than shoving the actor into a fill loop every time.
Arizona_Steve Posted December 4, 2013 Posted December 4, 2013 Just an FYI, I'm getting a crazy number of errors in my log (new game, minimum number of mods, Random Sex running at 10 second intervals), not to mention that my latest version of Random Sex is causing a CTD after a few minutes, always when a sex act is being started up. All of the errors seem to be around the SSLAliasScript script, which (after digging around the SexLab code) appears to be a result of insufficient thread-safety on the alias array that handles the actors. It would seem that multiple threads can stomp over one another, a situation that is not helped by having a monolithic array of 75 actor aliases. What I would do is assign a set of five actors to each thread, which would allow actor locking at the thread level (much less contention). I have attached an example log created with the currently uploaded version of Random Sex. Papyrus.0.txt Try with the latest development build of the game, the actor slotting and thread start up in general has been pretty heavily optimized with 1.30. But regardless of that, I like the idea of just assigning 5 specific actor aliases to each thread rather than shoving the actor into a fill loop every time. Thanks for the quick response. I'll pull down the latest code from the git repository and give it a go. Edit: Git repository isn't working... Did it move? Edit2: OK, figured it out...
dkatryl Posted December 4, 2013 Posted December 4, 2013 Ashal, Is there a command/flag/something that forces the camera to behave as if the weapon was put away (i.e. isn't locked behind the character like it is in combat, but can rotated freely like during exploration). For some reason, tonight while working on adding in the creature support to allow the player to do naughty things to NPCs while in either Werewolf or Vampire Lord form, the Werewolf, despite having the camera rotating freely up to the point sex begins, gets immediately stuck once the sex scene begins and acts like it is in the combat position. The Vampire Lord functions perfectly fine, and I use the exact same leadup for the two, (Only difference is I do a check for Werewolf vs Vampire Lord to do a tag select for the valid animations.) I just can't see why the Werewolf is being so picky, so was wondering if there was some flag or something to override the camera control. Thanks!
Ashal Posted December 4, 2013 Author Posted December 4, 2013 Ashal, Is there a command/flag/something that forces the camera to behave as if the weapon was put away (i.e. isn't locked behind the character like it is in combat, but can rotated freely like during exploration). For some reason, tonight while working on adding in the creature support to allow the player to do naughty things to NPCs while in either Werewolf or Vampire Lord form, the Werewolf, despite having the camera rotating freely up to the point sex begins, gets immediately stuck once the sex scene begins and acts like it is in the combat position. The Vampire Lord functions perfectly fine, and I use the exact same leadup for the two, (Only difference is I do a check for Werewolf vs Vampire Lord to do a tag select for the valid animations.) I just can't see why the Werewolf is being so picky, so was wondering if there was some flag or something to override the camera control. Thanks! ActorRef.SheatheWeapon() and ActorRef.StopCombat() are the only ones I'm aware of. Both of which are used in sexlab before starting a scene, but SheatheWeapon() isn't called on creatures, I figured it was unnecessary for them, I very well may have been wrong.
dkatryl Posted December 4, 2013 Posted December 4, 2013 ActorRef.SheatheWeapon() and ActorRef.StopCombat() are the only ones I'm aware of. Both of which are used in sexlab before starting a scene, but SheatheWeapon() isn't called on creatures, I figured it was unnecessary for them, I very well may have been wrong. Yeah, I'm doing those myself before I even make the final call to start the sex. So odd the Vampire Lord works fine but the Werewolf gets stuck. Thanks for the answer, at any rate!
Bad Luck Gacha Posted December 4, 2013 Posted December 4, 2013 Well idk if i did something bad, or is my animation idk, but the characters having sex; they arent near one each other, i need ajust them, and isnt easy at all, or i lose time of all this xD idk if i do something bad ;(
dragontackle Posted December 4, 2013 Posted December 4, 2013 Its not working for me; it says i need SKSE( i have the most recent SKSE and ive tried running it as an admin)
shane4244 Posted December 5, 2013 Posted December 5, 2013 Its not working for me; it says i need SKSE( i have the most recent SKSE and ive tried running it as an admin) Did you install SKSE correctly its a common mistake for people to drop it in the data folder instead of the skyrim directory.
Deadbrother Posted December 5, 2013 Posted December 5, 2013 Hello everybody I have a problem : human animations disappear from the sexlab list, any solution ? (Excuse my bad english)
dragontackle Posted December 5, 2013 Posted December 5, 2013 Its not working for me; it says i need SKSE( i have the most recent SKSE and ive tried running it as an admin) Did you install SKSE correctly its a common mistake for people to drop it in the data folder instead of the skyrim directory. This may sound stupid. But where is the directory? This is where SKSE is currently located C:\Program Files (x86)\Steam\SteamApps\common\Skyrim
shane4244 Posted December 6, 2013 Posted December 6, 2013 Its not working for me; it says i need SKSE( i have the most recent SKSE and ive tried running it as an admin) Did you install SKSE correctly its a common mistake for people to drop it in the data folder instead of the skyrim directory. This may sound stupid. But where is the directory? This is where SKSE is currently located C:\Program Files (x86)\Steam\SteamApps\common\Skyrim Thats the right place for it. I can't think of another reason for Sexlab not seeing skse if it's the latest version. installed correctly and your lauching the game via skse as admin. Hopefully someone else knows another possibility for your issue. You'll have to read the read me in skse but I think you need cloud sync or something like that enabled in steam also that may be another game I'm thinking of.
Jubb Posted December 6, 2013 Posted December 6, 2013 What happened to the alignment adjustments in the latest version? When I adjust the actors to the positions I want and then advance to the next stage it resets the actors back to the default locations so I have to adjust positions for every stage, that takes way too much time. I don't have the "adjust individual stage" keybind pressed while moving actors around either. It wasn't doing this in the older version I used, fix please.
dragontackle Posted December 6, 2013 Posted December 6, 2013 Its not working for me; it says i need SKSE( i have the most recent SKSE and ive tried running it as an admin) Did you install SKSE correctly its a common mistake for people to drop it in the data folder instead of the skyrim directory. This may sound stupid. But where is the directory? This is where SKSE is currently located C:\Program Files (x86)\Steam\SteamApps\common\Skyrim Thats the right place for it. I can't think of another reason for Sexlab not seeing skse if it's the latest version. installed correctly and your lauching the game via skse as admin. Hopefully someone else knows another possibility for your issue. You'll have to read the read me in skse but I think you need cloud sync or something like that enabled in steam also that may be another game I'm thinking of. I got it to work, thanks for suggesting the read-me file!
Arizona_Steve Posted December 7, 2013 Posted December 7, 2013 Just an FYI, I was checking out 1.29B and seeing a lot of issues related to null elements in the SSLBaseAnimation[] arrays. I'm sure you're all over it.
Ashal Posted December 7, 2013 Author Posted December 7, 2013 Just an FYI, I was checking out 1.29B and seeing a lot of issues related to null elements in the SSLBaseAnimation[] arrays. I'm sure you're all over it. I haven't ever gotten a null element in an animation array. Are you testing with a new save on 1.29b, or updated existing install? Any relevant looking errors in papyrus log? The method used for creating the animation arrays when searching has changed pretty significantly, but it's managed to handle everything I've thrown at it so far without ever making any mistakes. I don't see how it could get a none element, unless you don't have a properly updated sslUtility script.
Arizona_Steve Posted December 7, 2013 Posted December 7, 2013 There's a bunch of places where you're using animationArray.length instead of the actual animation count. I'm guessing that any array elements between indexes animationCount and animationarray.length - 1 are null. Here's an example from the sslAnimationSlots script: function _Setup() Slots = new sslBaseAnimation[100] int i = 100 ... endFunction Initializes 100 animation slots. My assumption here is that there are actually fewer than 100 animations, so not all of the slots are filled. There appears to be a variable "Slotted" that maintains the current animation count. Immediately above the _Setup() function is this: function _LogFound(string method, string arguments, sslBaseAnimation[] results) string found = "Found ["+results.Length+"] Animations: " int i = results.Length while i i -= 1 found += results[i].Name+", " endWhile ... endFunction Here the array length is being used where the "Slotted" variable should be used. There are several other examples. I have attached the latest log - New game, Whiterun, default SexLab settings, Random Sex @ 10 seconds, minimal mod stack (Live Another Life and Inconsequential NPCs to make sure enough NPCs are available). I am still getting CTDs - I have isolated it to the thread.addActor() function (unrelated code removed): SSLThreadModel thread = sexlab.newThread() if (thread != none) Actor sexVictim = none int sexActorIndex = 0 if (configQuest.useAggressorVictim) sexVictim = sexActorArray[0] endif while (sexActorIndex < sexActorArray.length) Actor sexActor = sexActorArray[sexActorIndex] sexActorIndex += 1 if (thread.addActor(sexActor, (sexActor == sexVictim)) < 0) return false endif endwhile ... endif
Ashal Posted December 7, 2013 Author Posted December 7, 2013 There's a bunch of places where you're using animationArray.length instead of the actual animation count. I'm guessing that any array elements between indexes animationCount and animationarray.length - 1 are null. Here's an example from the sslAnimationSlots script: function _Setup() Slots = new sslBaseAnimation[100] int i = 100 ... endFunction Initializes 100 animation slots. My assumption here is that there are actually fewer than 100 animations, so not all of the slots are filled. There appears to be a variable "Slotted" that maintains the current animation count. This is caching the 100 animation aliases not animations themselves. SexLab can have up to 100 registered animations, filled into those aliases. Slotted keeps track of how many have been registered so it knows where to save the next new animation. Slots.Length is used nowhere in any loop, Slotted is used in every single case where it is looping through registered animations, and even if it wasn't using Slotted, it wouldn't make a difference because the animation searches would reject the empty animations regardless. Immediately above the _Setup() function is this: function _LogFound(string method, string arguments, sslBaseAnimation[] results) string found = "Found ["+results.Length+"] Animations: " int i = results.Length while i i -= 1 found += results[i].Name+", " endWhile ... endFunction Here the array length is being used where the "Slotted" variable should be used. There are several other examples. Slotted should absolutely not be used here, _LogFound() logs the FOUND animations from a mods animation search, it's purpose to to loop through the selected animations, not the slotted animations. Slotted would be larger than the length of the animation results array length. You appear to be mixing up and confusing the various uses for different arrays. I have attached the latest log - new game, Whiterun, default SexLab settings, Random Sex @ 10 seconds, minimal mod stack. I just tested the mod set to 10 seconds on a heavy mod stack and heavy enb, had no crashes after 8 minutes of running around whiterun. Plenty of errors in my debug log through, it appears to me looking through the log to be wholly an issue of the way you are trying to start scenes and/or a failure on certains parts of SexLab to reject certain problems.
Arizona_Steve Posted December 7, 2013 Posted December 7, 2013 That'll teach me not to post before I have my coffee... Your response does point me in a completely different direction as to what may be going on. The current downloadable version of Random Sex doesn't reference any animations when dealing with NPC-NPC interactions. My development version is doing some animation validation to prevent it from trying to start up NPC combinations where animations are either not present or disabled. Time to figure out if I'm messing things up.
Ashal Posted December 7, 2013 Author Posted December 7, 2013 That'll teach me not to post before I have my coffee... Your response does point me in a completely different direction as to what may be going on. The current downloadable version of Random Sex doesn't reference any animations when dealing with NPC-NPC interactions. My development version is doing some animation validation to prevent it from trying to start up NPC combinations where animations are either not present or disabled. Time to figure out if I'm messing things up. In cases where SexLab tries to select Male/Male animations, it does appear to be failing, as instead of returning empty it's returning 64 blank animations, I know what's causing this though and will have a fix pushed to the development branch shortly.
Arizona_Steve Posted December 7, 2013 Posted December 7, 2013 Another quick question - SexLabFramework.Animation - Does that return creature animations in addition to NPC animations? If not, can you add a function to bring in the creature animation list? I'd like to go away from implementing sslCreatureAnimationSlots as a property as it (and several other things) may be messing things up.
Ashal Posted December 7, 2013 Author Posted December 7, 2013 Another quick question - SexLabFramework.Animation - Does that return creature animations in addition to NPC animations? If not, can you add a function to bring in the creature animation list? I'd like to go away from implementing sslCreatureAnimationSlots as a property as it (and several other things) may be messing things up. No it doesn't count creature animations, they are separate lists. There shouldn't be any need to be using sslCreatureAnimationSlots on a mod level or accessing it's animations really. SexLab handles creature animation searching itself regardless of any animations you manually pass it, and considering there is only 1-3 animations per race there is little purpose in filtering them yourself manually. One of the first thing SexLab does when you start a thread is check if it has a creature present, and if it does it instantly discards any given animations and does it's own creature animation search. AnimationLibrary.AllowedCreature(creature) or CreatureAnimationSlots.HasRace(creature) is the only creature related function that could have any sort of use in mods. And both are literally no different than if you were to do GetGender(creature) == 2 But in any case, just pushed new version to development branch with fix for male/male animation searches, added CreatureAnimation property, and surfaced the AllowedCreature() function into the main API script.
dler12121212 Posted December 7, 2013 Posted December 7, 2013 having prob with characters not alligning often 2-3 meters apart from eachother but not all the time
deadmann73 Posted December 8, 2013 Posted December 8, 2013 What doing sex diary? And that gives paragraph orientation?
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now