hextun Posted July 15, 2025 Author Posted July 15, 2025 *sigh* I missed a couple of lines of logging output in the plugin. Nothing horrendous but it's tied to the Hit event sink. During a long play session, every detected hit will result in a logged line of text. That log will be truncated, reset to empty, at the start of the next session, but why bother? I have updated sl_triggers126.zip on the download page to have the new .dll. But there is also an sl_triggers126_hf_1.zip available with the updated plugin, if you have already downloaded the main 126. sl_triggers126_hf_1.zip
hextun Posted July 15, 2025 Author Posted July 15, 2025 33 minutes ago, Fraying9981 said: SexLabAroused Redux V28b SSE Modified by BakaFactory(2020 11 17)) with: SexLab Aroused v28b Patch (2021_09_29) Can you provide links? I was able to find for SexLabAroused v28b, but I'm not sure where the Baka modified download is or the patch you mentioned.
Fraying9981 Posted July 15, 2025 Posted July 15, 2025 links I'm not sure anymore. but it should be the SLA usual framework, no reason it's different. Does SLT support SLA or ONLY OSLA?
hextun Posted July 15, 2025 Author Posted July 15, 2025 9 minutes ago, Fraying9981 said: links I'm not sure anymore. but it should be the SLA usual framework, no reason it's different. Does SLT support SLA or ONLY OSLA? You guessed it; the functions prefixed "osla_" are specifically using OSLA_ModInterface, which does not exist with SLA. I can create an adapter and set of functions using "sla_" that will use the interface that is common between them. I'll check for where there is overlap and try to get the "sla_" functions to auto-detect OSLA and use that if present since those functions use the global native calls introduced via their plugin for performance.
Fraying9981 Posted July 15, 2025 Posted July 15, 2025 (edited) 9 minutes ago, hextun said: You guessed it; the functions prefixed "osla_" are specifically using OSLA_ModInterface, which does not exist with SLA. I can create an adapter and set of functions using "sla_" that will use the interface that is common between them. I'll check for where there is overlap and try to get the "sla_" functions to auto-detect OSLA and use that if present since those functions use the global native calls introduced via their plugin for performance. I see, so you are using OSLA, then I understand your questions better. Yes it would be great if SLT supports SLA too. Looking at the old Fotogen documentation, I can see you have a "slaUpdateExposure" function. Could this be a lead? Though I'm looking for a function that gets the arousal level, not update the exposure (which is a different metric). Quote Example: ["util_sendevent", "slaUpdateExposure", "form", "$self", "float", "33"] calls SexlabAroused.esm I found this one too: do you think this might work straight out of the box with your updated SLT? Quote to get arousal ["actor_getfactionrank", "$self", "SexLabAroused.esm:03FC36"], Edited July 15, 2025 by Fraying9981
MannySauce Posted July 15, 2025 Posted July 15, 2025 8 hours ago, hextun said: Any further incidents using latest versions? Hasn't happened on v126. (no jinx) But I am sometimes being pushed to the side when I load my save, think it's the invisible actor spawning in? This did happen in the other versions since my initial report, I was just never at my desk when loading in to witness it. (Oops.) So uh, don't save near ledges?🤔
hextun Posted July 15, 2025 Author Posted July 15, 2025 31 minutes ago, Fraying9981 said: I see, so you are using OSLA, then I understand your questions better. Yes it would be great if SLT supports SLA too. Looking at the old Fotogen documentation, I can see you have a "slaUpdateExposure" function. Could this be a lead? Though I'm looking for a function that gets the arousal level, not update the exposure (which is a different metric). I found this one too: do you think this might work straight out of the box with your updated SLT? util_sendmodevent / util_sendevent are both perfectly valid though as you say, only useful for pushing updates, not for retrieving information. The "slaUpdateExposure" string is actually referencing an event. The function is sending a custom mod event to whomever (SLA/OSLA) is listening for it, to update the exposure. Likewise, assuming the faction ranks are adequate for querying arousal, then yes, that should absolutely work, though I would recommend using the editorID (e.g. "sla_Arousal") instead of the FormID. I'm looking at the SLA interface for the next release, like I said. 1
hextun Posted July 15, 2025 Author Posted July 15, 2025 16 minutes ago, MannySauce said: Hasn't happened on v126. (no jinx) But I am sometimes being pushed to the side when I load my save, think it's the invisible actor spawning in? This did happen in the other versions since my initial report, I was just never at my desk when loading in to witness it. (Oops.) So uh, don't save near ledges?🤔 Hrm... supposed to be a ghost and not physically interactable at all. The last change was to, in all execution paths, explicitly set the flags every time (instead of trusting they were set from the base actor). Okay... yoinkity-yoinkity no more invisible boinkity. (queuing for removal until/unless I feel like doinking with it)
MannySauce Posted July 15, 2025 Posted July 15, 2025 Also the language file for Notepad++ is much appreciated. 😩 1
alain31 Posted July 15, 2025 Posted July 15, 2025 On 7/14/2025 at 7:33 PM, hextun said: Option 1: Hard-coded Hi, Thanks for your help, it's working fine now.
guliguliradish Posted July 16, 2025 Posted July 16, 2025 8 hours ago, hextun said: I should change the default to 100, but you need to adjust the event's Chance slider to "100" (or whatever chance you want to set it for). It's a setting for most triggers on the top right of the card. chance=100,but It still hasn't appeared😢
Fraying9981 Posted July 16, 2025 Posted July 16, 2025 8 hours ago, hextun said: util_sendmodevent / util_sendevent are both perfectly valid though as you say, only useful for pushing updates, not for retrieving information. The "slaUpdateExposure" string is actually referencing an event. The function is sending a custom mod event to whomever (SLA/OSLA) is listening for it, to update the exposure. Likewise, assuming the faction ranks are adequate for querying arousal, then yes, that should absolutely work, though I would recommend using the editorID (e.g. "sla_Arousal") instead of the FormID. I'm looking at the SLA interface for the next release, like I said. Thanks, so something like this maybe? actor_getfactionrank $self "SexLabAroused.esm:03FC36" Or actor_getfactionrank $self "sla_Arousal" How do you find the editorID? Another question: when I use av_damage to reduce stamina/health etc. during a scene, will the corresponding bar be automatically shown on update? (as in normal gameplay) set $local.baseEnjoyment 15 set $local.baseStaminaChange 1 sl_adjustenjoyment $system.partner $local.baseEnjoyment av_damage $system.player Stamina $local.baseStaminaChange Asking this because with my current script, it is NOT showing up.
hextun Posted July 16, 2025 Author Posted July 16, 2025 5 hours ago, Fraying9981 said: Thanks, so something like this maybe? actor_getfactionrank $self "SexLabAroused.esm:03FC36" Or actor_getfactionrank $self "sla_Arousal" How do you find the editorID? Another question: when I use av_damage to reduce stamina/health etc. during a scene, will the corresponding bar be automatically shown on update? (as in normal gameplay) set $local.baseEnjoyment 15 set $local.baseStaminaChange 1 sl_adjustenjoyment $system.partner $local.baseEnjoyment av_damage $system.player Stamina $local.baseStaminaChange Asking this because with my current script, it is NOT showing up. There is an editorID column in xedit on the left; just pull up the mod in xedit, find the record and you'll have the editorID. av_damage just applies the stat change; it doesn't by itself interact with the UI, so any behavior you see with regard to the UI fading in or not when the stamina is damaged is not affected by the av_damage call. Or are you saying the damage is not being applied?
Fraying9981 Posted July 16, 2025 Posted July 16, 2025 5 minutes ago, hextun said: Or are you saying the damage is not being applied? thanks. precisely, I don't know Can you perhaps suggest an additional command to display the Stamina? so I can check if it's depleted or not
hextun Posted July 16, 2025 Author Posted July 16, 2025 11 hours ago, guliguliradish said: chance=100,but It still hasn't appeared😢 I've added some output in your script. When run, it should announce it is running (on-screen and in the sl-triggers.log file), what animation it detects, whether it is going to exit or do work, when it is adding/equipping, when it is waiting, and when it is removing the item. Spoiler msg_notify "Kziitd animation script starting" sl_animname set $animname $$ msg_notify $"Animation name ({animname})" if $animname == "Kziitd_Missionary" [dowork] if $animname == "Kziitd_Doggy" [dowork] if $animname == "Kziitd_Cowgirl" [dowork] if $animname == "Kziitd_Laying" [dowork] if $animname == "Kziitd_Laying2" [dowork] if $animname == "Kziitd_Stand" [dowork] if $animname == "Kziitd_Missionary2" [dowork] if $animname == "Kziitd_Laying3" [dowork] msg_notify "Kziitd animation script could not detect a valid animation" ; not any of those animations, leave return [dowork] set $newWornItem $"KXT-GuliExtensions.esp:0x0088C" msg_notify "Kziitd animation script added and equipped item ({newWornItem})" item_adduse $system.self $newWornItem 0 0 msg_notify "Kziitd animation script waiting for end..." util_waitforend item_remove $system.self $newWornItem 1 1 msg_notify "Kziitd animation script removed item ({newWornItem}) and quitting" Note that if you run this script while not in a SexLab scene, it will not detect an animation and should just leave without doing anything. So attaching it to any event other than e.g. SexLab Start, is likely to be disappointing. Try this version and let me know if you are getting any of the output. After that, if that doesn't provide any clues, enable 'Debug_Cmd_RunScript' in the MCM for Granular Debug logging, run the script and provide the sl-triggers.log output.
hextun Posted July 16, 2025 Author Posted July 16, 2025 4 minutes ago, Fraying9981 said: thanks. precisely, I don't know Can you perhaps suggest an additional command to display the Stamina? so I can check if it's depleted or not Well, there's av_get, so you could fetch the value before and after and (for testing anyway) display the value via e.g. msg_notify. You could also pop open the console, 'prid player', and examine your stats directly. Depending on your HUD mods, they may have hotkeys to forcibly un-fade the bar. I suppose you could also open your inventory as well, as I think your current health/stamina/magicka are displayed there, too. Other options: switch it to "Health" and (save before doing this) jack the value way up so that it's lethal damage. You'll find out real quick if it's applying. 1
Fraying9981 Posted July 16, 2025 Posted July 16, 2025 1 hour ago, hextun said: Well, there's av_get, so you could fetch the value before and after and (for testing anyway) display the value via e.g. msg_notify. You could also pop open the console, 'prid player', and examine your stats directly. Depending on your HUD mods, they may have hotkeys to forcibly un-fade the bar. I suppose you could also open your inventory as well, as I think your current health/stamina/magicka are displayed there, too. Other options: switch it to "Health" and (save before doing this) jack the value way up so that it's lethal damage. You'll find out real quick if it's applying. thanks. I installed a UI mod. bars are not moving. so i take it doesn't work
hextun Posted July 16, 2025 Author Posted July 16, 2025 30 minutes ago, Fraying9981 said: thanks. I installed a UI mod. bars are not moving. so i take it doesn't work Hrm. I created this script: msg_notify "Zb01 starting" set $old resultfrom av_get $system.self Stamina set $damage 50 msg_notify $"Stamina ({old}) to be damaged by ({damage})" av_damage $system.self Stamina $damage set $new resultfrom av_get $system.self Stamina msg_notify $"Stamina value: old({old}) new({new})" msg_notify "Zb01 finished" which just prints the old (current) stamina value, deducts 50, then prints old and new values. I hooked it up to a keymap and ran it getting this in the sl-triggers.log, as expected: [2025-07-16 09:36:38.035] [log] [info] [sl_triggers.cpp:348] Zb01 starting [2025-07-16 09:36:38.187] [log] [debug] [sl_triggers.cpp:340] av_get: actor([Actor < (00000014)>]) avname(stamina) value(100.000000) [2025-07-16 09:36:38.458] [log] [info] [sl_triggers.cpp:348] Stamina (100.000000) to be damaged by (50) [2025-07-16 09:36:38.780] [log] [debug] [sl_triggers.cpp:340] av_get: actor([Actor < (00000014)>]) avname(stamina) value(50.000000) [2025-07-16 09:36:39.035] [log] [info] [sl_triggers.cpp:348] Stamina value: old(100.000000) new(50.000000) [2025-07-16 09:36:39.204] [log] [info] [sl_triggers.cpp:348] Zb01 finished Can you try the script above and see what it does for you? The av_get and av_damage functions pretty straightforward. I'm not sure what would cause them to break.
guliguliradish Posted July 16, 2025 Posted July 16, 2025 (edited) 4 hours ago, hextun said: I've added some output in your script. When run, it should announce it is running (on-screen and in the sl-triggers.log file), what animation it detects, whether it is going to exit or do work, when it is adding/equipping, when it is waiting, and when it is removing the item. Reveal hidden contents msg_notify "Kziitd animation script starting" sl_animname set $animname $$ msg_notify $"Animation name ({animname})" if $animname == "Kziitd_Missionary" [dowork] if $animname == "Kziitd_Doggy" [dowork] if $animname == "Kziitd_Cowgirl" [dowork] if $animname == "Kziitd_Laying" [dowork] if $animname == "Kziitd_Laying2" [dowork] if $animname == "Kziitd_Stand" [dowork] if $animname == "Kziitd_Missionary2" [dowork] if $animname == "Kziitd_Laying3" [dowork] msg_notify "Kziitd animation script could not detect a valid animation" ; not any of those animations, leave return [dowork] set $newWornItem $"KXT-GuliExtensions.esp:0x0088C" msg_notify "Kziitd animation script added and equipped item ({newWornItem})" item_adduse $system.self $newWornItem 0 0 msg_notify "Kziitd animation script waiting for end..." util_waitforend item_remove $system.self $newWornItem 1 1 msg_notify "Kziitd animation script removed item ({newWornItem}) and quitting" Note that if you run this script while not in a SexLab scene, it will not detect an animation and should just leave without doing anything. So attaching it to any event other than e.g. SexLab Start, is likely to be disappointing. Try this version and let me know if you are getting any of the output. After that, if that doesn't provide any clues, enable 'Debug_Cmd_RunScript' in the MCM for Granular Debug logging, run the script and provide the sl-triggers.log output. Thank you, I will continue to test. I think I should also contribute to sltr, so I have completed the Chinese translation of MCM files. Here it issl_triggers_CHINESE.txt Edited July 16, 2025 by guliguliradish
hextun Posted July 16, 2025 Author Posted July 16, 2025 34 minutes ago, guliguliradish said: Thank you, I will continue to test. I think I should also contribute to sltr, so I have completed the Chinese translation of MCM files. Here it issl_triggers_CHINESE.txt Thank you so much! Added for next release!
hextun Posted July 16, 2025 Author Posted July 16, 2025 For those of you who are up for Papyrus script development, I have news that may be of interest. I've added functionality that, if the presence of the "caprica" Papyrus compiler is detected at a pre-configured location, then a pre-set location will be scanned for .psc files, another pre-configured location would be used for import files (including the base Bethesda/SKSE header-files), and a build will be performed against all .psc files in the scanned source folder (again, distinct from the typical scripts\sources and source\scripts folders). The generated .pex files are placed into the scripts\ folder and the Papyrus VM is asked to attempt to reload each script. I have tested this, including using a script, that had external dependencies, and I placed the (header-only) dependency into the imports folder, the script built, was reloaded, and in the same session, I was able to run an SLTScript that then loaded and ran a function from the .psc file I was attempting to dynamically build. I don't (yet, would need to check into permission) feel comfortable a) shipping a copy of caprica.exe with my mod (since it is someone else's code, even if MIT licensed) but can definitely add instructions on copying the caprica.exe into place, and b) also feel weird about auto-building script to execute in-game. It's probably perfectly safe since it's all running in the Skyrim VM. So imagine if you will that I added this feature in the next release. Now imagine that I added another feature: allowing you to designate a Papyrus script as a trigger command target (i.e. the equivalent of an SLTScript to run as a result of a trigger). Say that it would look for a pre-designated function name as an entry point (i.e. the equivalent of a main() function), and would call that function with a set of parameters (things like an execution context). You would be able to schedule execution of code that would run MUCH faster than SLTScript. Possibly even with SLTR API interaction functions to get the best of both worlds. As I say, I'm tinkering with it but haven't committed to introducing it; just figured I would mention it and see if anyone has any thoughts or if it generates any interest. I don't feel like dropping SLTScript support itself would be a good thing as yet since I think, for now, it's at least a little more approachable than direct Papyrus, but again, feedback would be great.
guliguliradish Posted July 16, 2025 Posted July 16, 2025 1 hour ago, hextun said: Thank you so much! Added for next release! In addition, I don't quite understand what this part means... Is it some kind of trigger? I hope this trigger is passive. (as soon as you start playing the animation, the script will run automatically.)... So, is it related to it?
hextun Posted July 16, 2025 Author Posted July 16, 2025 (edited) 10 minutes ago, guliguliradish said: In addition, I don't quite understand what this part means... Is it some kind of trigger? I hope this trigger is passive. (as soon as you start playing the animation, the script will run automatically.)... So, is it related to it? Events are what cause the triggers to try to run scripts. That is, for each trigger (e.g. SexLab Scene Start, Keymapping) there is some sort of event that causes it (e.g. start of a SexLab scene, pressing a key). Each of the extensions, Core and SexLab, offers a number of events/triggers. Core is associated with standard Skyrim events. SexLab is associated with SexLab related events. Core events: Keymapping Runs when: the combination of keys mapped is pressed Top of the Hour (I should rename this to In-Game Hourly) Runs when: the top of each in-game hour occurs (i.e. 1 o'clock, 2 o'clock) New Session Runs when: a new game is started or a save is loaded Player Cell Change Runs when: the player changes "cells" (a cell is a relatively small bounded area in the game world; for example, Dragonsreach in Whiterun contains multiple cells) Note: This event runs pretty frequently Player Loading Screen Runs when: the player encounters a loading screen; i.e. when you transition from one location to another but with a loading screen Player Opened Container Runs when: you (the Player) open a container (like a chest, a barrel, or a corpse) Player Location Change Runs when: the player changes "locations" (a location is comprised of multiple cells) Note: This event runs less frequently than Cell Change Player Equipment Change Runs when: the player removes or puts on equipment; technically it's when equipment is "used", so for example, this includes potions, spells, and ammo, too Player Combat State Change Runs when: the player enters or leaves combat Player Hit or Is Hit Runs when: the player hits something or something hits the player SexLab events SexLab Start Runs when: *any* SexLab scene starts (even if it does not include the Player) SexLab End Runs when: *any* SexLab scene ends (even if it does not include the Player) SexLab Orgasm Runs when: *any* SexLab scene has an orgasm (this is the non-separate version where all actors in a scene orgasm at once) SexLab Separate Orgasm Runs when: *any* SLSO scene actor has an orgasm Note that due to how this is implemented, currently only the actor that had the orgasm can be $system.self (i.e. have the script run on them) Edited July 16, 2025 by hextun More details
hextun Posted July 16, 2025 Author Posted July 16, 2025 New download posted. This is an add-on for SLTR that integrates with one of my favorite mods and creates a game. The download is named 'sltr_pet_collar_game.zip' and is available on the LL download page. It includes a README that explains how it works and how to configure it. Out of the box, assuming SLTR is already installed and the SexLab extension enabled, PetCollarGame adds a new script, PetCollarGame.sltscript, a configuration file, pet_collar_game.json, and an SLTR SexLab trigger, enabled by default, called PetCollarGame.json. It is pre-configured to run on SexLab start on the player. What it does is this: each time you have sex with a follower (member of the NPC followers faction, should work with most followers), there is a random chance that they will apply the Keyless (cannot be picked) Pet Collar. If you already have the Pet Collar, there is instead a chance they will have mercy and remove it. It's a fun little game that your followers will surely love! pet_collar_game.json has a few settings: - low/high - the range of the random number roll, 1-50 by default - base - the starting point for the "petCollarTime" global variable (which, by the way, being a global means you can modify it/alter it in other scripts of your own making, just saying) each time the collar is applied - by default this is -3 (so you are guaranteed 3 scenes before having mercy) - mercybase - the starting point when the collar is removed (default is 20; your follower won't want to wait so long to play again) - add - the amount to increment petCollarTime by any time the follower chooses not to act - perspective - for the messages; 1, 2, 3 for first, second, or third person perspective Have fun!
MannySauce Posted July 16, 2025 Posted July 16, 2025 I'm using several "rnd_list" to slap together random sentences for "msg_notify", but certain words like "cumshot", "hot", "load" and "orgasm" are getting force capitalized when set into a variable. Also I absolutely jinxed it in a previous post, the tracking actor is still a combat target in v126. It's only happening in the spot I arrive in after a loading door and fast travelling. Is nobody else experiencing this or is my game AI getting cosmic ray'd?
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