Jump to content

Recommended Posts

Posted

*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

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

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

Posted (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 by Fraying9981
Posted
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?🤔

Posted
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. :)

Posted
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)

Posted
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😢

Posted
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

 

image.jpeg.7f0a8303f2323a361ef745960acd8d87.jpeg

Asking this because with my current script, it is NOT showing up.

 

 

 

Posted
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

 

image.jpeg.7f0a8303f2323a361ef745960acd8d87.jpeg

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?

Posted
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

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

Posted
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. ;)

 

Posted
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

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

 

 

Posted (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

 

 

Skyrim Special Edition 2025_7_17 0_00_03.png

image.png

Edited by guliguliradish
Posted
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! :)

Posted

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.

Posted
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?SkyrimSpecialEdition2025_7_170_00_03.png.e8e56e3561d021ee686488d6e1a8836e.pngimage.png.9c101d4e3a9b701b14e9c0241549b32c.png

Posted (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?SkyrimSpecialEdition2025_7_170_00_03.png.e8e56e3561d021ee686488d6e1a8836e.pngimage.png.9c101d4e3a9b701b14e9c0241549b32c.png

 

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 by hextun
More details
Posted

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!

Posted

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?

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