fishburger67 Posted October 21, 2020 Posted October 21, 2020 @Ashal I am trying to convert my Flowergirls version of Sex Slaves to work with Sexlab. However, unless I can figure out how to make this run in a reasonable amount of time, I guess I am going to have to abandon the effort. This code depends on Sexlab posting mod events in a timely manner. Here is a snippet of the log file from two of the animations: [10/20/2020 - 10:28:16PM] SEXLAB - Thread[0] Event Hook - OrgasmEnd [10/20/2020 - 10:28:16PM] SEXLAB - Thread[0] Event Hook - AnimationEnding [10/20/2020 - 10:28:17PM] SEXLAB - ActorAlias[Archerone the Sadist] - Resetting! [10/20/2020 - 10:28:17PM] SEXLAB - ActorAlias[Hotty] - Resetting! So far, so good, but: [10/20/2020 - 10:28:47PM] SEXLAB - Thread[0] Event Hook - AnimationEnd Note that it is 30 freeking seconds between the end of the animation (AnimationEnding) until AnimatinEnd is sent. For a threesome animation, it is way worse, something like 1 and a half minutes!!!!!!: [10/20/2020 - 10:30:48PM] SEXLAB - Thread[1] Event Hook - OrgasmEnd [10/20/2020 - 10:30:49PM] SEXLAB - Thread[1] Event Hook - AnimationEnding [10/20/2020 - 10:32:19PM] SEXLAB - Thread[1] Event Hook - AnimationEnd Can someone with some inside info tell me how to hook this right, here is a sample of my code: RegisterForModEvent("AnimationEnd_PlayerSucksDick", "PlayerSucksDick") debug.trace("Starting BlowJob") int id = SexLab.StartSex(sexActors, anims, allowBed=false, hook="PlayerSucksDick") It looks like if I hook AnimationEnding that would be better, but what is is the danger of doing this? Are the participants still in Alias's or some other constraints that will screw with scripts using the same actors right after AnimationEnding? Is there even an AnimationEnding event sent? How long will it take until Sexlab can run in a reasonable amount of time? When I first ported Sex Slaves over to SSE, this problem did not exist. Something has happened in the interim that is making it almost unusable for me unless I am not using it right. Edit: Well, I answered a couple of my own questions, AnimationEnding is indeed posted, however, it is a problem because I am using the same actors in a following animation and I am getting "AnimationEnd" from the first animation right after starting the second and the second just hangs there (I waited a full minute) and then killed the program. I am hoping that someone can fix sexlab so it works well again. I am looking at this code from sslThreadController.psc event OnBeginState() UnregisterForUpdate() HookAnimationEnding() SendThreadEvent("AnimationEnding") RecordSkills() DisableHotkeys() Config.DisableThreadControl(self) SyncEvent(kResetActor, 30.0) endEvent I am noting that "RecordSkills() and three other functions are being called after AnimationEnding is sent. One or more of these is taking a LONG fucking time. Until this gets fixed, I am going to abandon trying to make my users happy.
Fotogen Posted October 21, 2020 Posted October 21, 2020 12 hours ago, fishburger67 said: RegisterForModEvent("AnimationEnd_PlayerSucksDick", "PlayerSucksDick") debug.trace("Starting BlowJob") int id = SexLab.StartSex(sexActors, anims, allowBed=false, hook="PlayerSucksDick") It should be: RegisterForModEvent("HookAnimationEnd_PlayerSucksDick", "PlayerSucksDick") 30 sec delay? Thats same insane script lag. Stop/reset of all running SL threads may help.
fishburger67 Posted October 21, 2020 Author Posted October 21, 2020 18 minutes ago, Fotogen said: It should be: RegisterForModEvent("HookAnimationEnd_PlayerSucksDick", "PlayerSucksDick") 30 sec delay? Thats same insane script lag. Stop/reset of all running SL threads may help. I am getting the event on just "AnimationEnd". I have used this code for years. The big problem is that I am getting the event from 30 seconds to 1.5 minutes after AnimationEnding, i.e. after the animation is completed. That's a problem for me in this case because if the PC is one of the actors, they are left without any constraints. I usually put a Game.SetPlayerAIDriven to carry on with the packages in the Alias I have them under. Because Sexlab takes so long to send this event, the player can just move around at will until I get the event and get them back under control. I don't know about the current version, but previous versions of sexlab use Actor.AddPackageOverride as well as furniture markers to keep the PC under control during the animation and then remove them at the conclusion. I see SexLab comments right after AnimationEnding (not AnimationEnd) that the actors are being freed. I tried hooking AnimationEnding as noted above, but because you get that event before the the actors have their package overrides removed, things get really fucked up and if you try to start a scene or another animation, it fails. Check this out yourself and you will see this major (30 to 180 second) lag in getting either HookAnimationEnd or just AnimationEnd. I just put debug.trace() commands in the hook function. I can't believe that I am the only Sexlab mod author that has a big problem with this. If you are just using Sexlab to play animations, it is no big deal. But, if you are using Sexlab to make complicated scenes or depend on timely events being sent, Sexlab is currently completely unusable. Thanks so much for the reply.
Fotogen Posted October 21, 2020 Posted October 21, 2020 15 minutes ago, fishburger67 said: Check this out yourself and you will see this major (30 to 180 second) lag in getting either HookAnimationEnd or just AnimationEnd. I just put debug.trace() commands in the hook function. I don't get that kind of delay. It more looks like SLs internal state is kinda fucked up. It happens. MCM, Rebuild & Clean, Stop Current Animations button sometimes helps. When can this happens(that I have noticed so far): - fresh game, new install. Its good to wait a bit for things to settle down. - I reload from ingame. Not start Skyrim, load last save, but Im ingame and I load some other save or its "auto relosd because of death" - I spam SL. Grab all NPC around and just throw them into SL. And than again and again and ... no delay, just rapid fire. Sometimes 1 NPC ends up in multiple threads/scenes.
fishburger67 Posted October 21, 2020 Author Posted October 21, 2020 1 hour ago, Fotogen said: I don't get that kind of delay. It more looks like SLs internal state is kinda fucked up. It happens. MCM, Rebuild & Clean, Stop Current Animations button sometimes helps. When can this happens(that I have noticed so far): - fresh game, new install. Its good to wait a bit for things to settle down. - I reload from ingame. Not start Skyrim, load last save, but Im ingame and I load some other save or its "auto relosd because of death" - I spam SL. Grab all NPC around and just throw them into SL. And than again and again and ... no delay, just rapid fire. Sometimes 1 NPC ends up in multiple threads/scenes. Thanks, I'll give this a try. When you say you "spam" SL, are you waiting for the HookAnimationEnd event or some other method?
fishburger67 Posted October 22, 2020 Author Posted October 22, 2020 Well, I found the problem. Some of these scenes have the player under my control with Game.DisablePlayerControls() and Game.SetPlayerAIDriven() If I commented out those lines, everything worked flawlessly.
Fotogen Posted October 22, 2020 Posted October 22, 2020 1. When you start SL scene, framework checks if its OK to add actors and if check is positive, it starts the whole thing. So: check bunch of things and if true, start the scene. But if 2 separate quests (quest #1 wants scene with actor A and B, #2 wants scene with B and C) do this, then depending on script lag, both #1 and #2 will start. Actor B will be "shared" between 2 scenes. 2. AnimationEnd event. Name suggests that its "end", actors are now free, no longer part of SL scene. But thats not true. For everything to work(you read SL thread info, involved actors, positions, Animations) all actors must actualy still be part of SL. Event should read more as: its near the end, soon-ish, please wait a moment ... So if you want to start another SL scene fast, things can break. It works OK, if you add a small delay(wait a sec or 2) and check if actor is still in SexlabAnimatingfaction. 3. DisablePlayerControls and SetPlayerAI. Yes, SL does that too. If both are calling this functions, it gets weird.
Recommended Posts
Archived
This topic is now archived and is closed to further replies.