Jump to content

Recommended Posts

Posted

New release, v0.901 and if I had to title it, it would be "The Scripter's Release".

 

No new triggers, no new language features.

 

What I did do is I added CreationKit/Papyrus script bindings for all of: Quest, Armor, GlobalVariable, Game.

This means you have *_doaction/*_dogetter/*_doconsumer/*_dofunction variants for quest_*, armor_*, globalvariable_*, and game_* to do with as you please.

 

Quest and Armor seem pretty common to want to work with. GlobalVariable actually let's you work with a surprising number of mods; any mod that lets you read, and especially write, to their GLOB records to read and possible affect their system could be worked with this way.

 

Game contains nothing but global scoped functions, requiring no instance to work with. This one has a lot of fun functions.

 

 

 

 

 

Also, container activation should work more broadly now, i.e. for modded containers and such. If you see problems, let me know.

Posted

Btw, I'm not sure if it's clear what's going on with these *_doaction/*_dogetter/*_doconsumer/*_dofunction functions.

 

Each represents a class of functions:

- Actions - functions that return nothing and have no arguments

- Getters - functions that do return something, but have no arguments

- Consumers - functions that return nothing, but do have arguments

- Functions - functions that do return something, and also do have arguments

 

Because of how the engine works, I could have combined these all into single scripts, like: form_script GetFormID $theForm, instead of form_dogetter GetFormID $theForm. 

 

But by breaking them out, I wanted to make it clear what the shape of the function is, whether you should expect a return value and whether you should expect to provide arguments.

 

Inheritance is respected: if you call e.g. quest_dogetter for a Getter that exists for Form, it will fall through to form_dogetter to return the result.

 

So as I keep adding the various *_doaction/** implementations, what I'm trying to do is give you access to as much of the standard Bethesda objects in your SLTScript as is reasonable.

 

Also, you can use the NewSession trigger to run SLTScripts that will perform just like an autorun script, but with all of the SLTScript goodies. For example, if you don't like fall damage, hook the following script up to your OnNewSession trigger:

 

 

msg_console "SessionStartup - Start"

set $fallSetting "fjumpfallheightmult"
msg_console $"Setting {$fallSetting} to 0"
game_doconsumer SetGameSettingFloat $fallSetting 0.0
set $fallMult resultfrom game_dofunction GetGameSettingFloat $fallSetting
msg_console $"{$fallSetting} ({$fallMult}); should be 0.0"

msg_console "SessionStartup - Finish"

 

Posted

Hi, I am continuing to use the script I made with your help that feeds the PC if the male partner orgasms during a blowjob scene. I noticed that the script didn't trigger in a specific scene and I found that it was because the scene was tagged "deepthroat" as opposed to "blowjob" and that made me wonder if it was possible to define what type of tags are considered "blowjob", "vaginalsex", or "analsex". The reason is because depending on the animation pack, some mod authors may use different tags. For example:

 

  1. Blowjob: could include "Blowjob", "blowjob" (not sure if capitalization matters), "deepthroat". I am not sure if this supports trigger on the female equivalents of "Cunnilingus", "cunnilingus", and "lickingvagina".
  2. Vaginal sex: could include "vaginalsex" and "Vaginal"
  3. Anal sex: could include "Anal", "analnsex", "analsex"

I've grabbed these tags from all of the animation packs I have gathered over time for use in the Sex Grants Experience mod. 

Posted

Let's say the player has a prostitute at their service. I want them to receive a different amount of gold depending on how many people are in the scene. The player isn't participating.
How could I make a script that starts when the scene starts?
Sorry, this is a translation. I don't speak English.

 

Posted
7 hours ago, just let me download said:

Hi, I am continuing to use the script I made with your help that feeds the PC if the male partner orgasms during a blowjob scene. I noticed that the script didn't trigger in a specific scene and I found that it was because the scene was tagged "deepthroat" as opposed to "blowjob" and that made me wonder if it was possible to define what type of tags are considered "blowjob", "vaginalsex", or "analsex". The reason is because depending on the animation pack, some mod authors may use different tags. For example:

 

  1. Blowjob: could include "Blowjob", "blowjob" (not sure if capitalization matters), "deepthroat". I am not sure if this supports trigger on the female equivalents of "Cunnilingus", "cunnilingus", and "lickingvagina".
  2. Vaginal sex: could include "vaginalsex" and "Vaginal"
  3. Anal sex: could include "Anal", "analnsex", "analsex"

I've grabbed these tags from all of the animation packs I have gathered over time for use in the Sex Grants Experience mod. 

 

Well, that's what happens when you don't know about an ecosystem (OStim) and make assumptions. :)

 

When I set up the Oral/Anal/Vaginal tag support, I looked at the existing OStim framework and I think I recalled seeing something that checked for each of these "actions" inside wrappers for things equivalent to IsOral(). I remember thinking at the time "but what if other tags/actions also mean that (i.e. multiple Oral tags/actions)". And here we are.

 

As it happens, something similar can happen with SexLab, or at least you may want to filter on tags other than Oral and what not. Or in your case, there are multiple different actions you may want to filter on.

 

ostim_hasaction is what you're looking for. Basically, in your trigger, you would outright remove the "tag" or "action" (I don't recall if I've renamed it yet) filter, so the script will be run regardless of type. But then at the top of your script, you can do the following:

 

set $hasAction resultfrom ostim_hasaction "blowjob"
if $hasAction [Oral]
set $hasAction resultfrom ostim_hasaction "deepthroat"
if $hasAction [Oral]
; etc...

 

That said, a setting to specify tags that mean Oral, vaginal, anal, that you could configure in .json, would be nice; I'll give that some thought. Could be useful for SexLab as well.

Posted
41 minutes ago, altf said:

Let's say the player has a prostitute at their service. I want them to receive a different amount of gold depending on how many people are in the scene. The player isn't participating.
How could I make a script that starts when the scene starts?
Sorry, this is a translation. I don't speak English.

 

 

Keep this in mind: SexLab sends the "Start" event for the start of EVERY scene. Because there isn't a trigger filter for "Is Prostitute of Player", it means you'll need to run this script for every participant in every scene, filtering as much as you can based on traits you know about your prostitute. Then the first thing you'll do in your script is to check for whether $system.self *is* your prostitute. And if you want multiple prostitutes, you'll have to check to see if it is any of them.

 

Trigger:
SexLab: Start
Chance: 100
Race: Humanoid (I am assuming none of your prostitutes will be Undead nor Creatures)
Relationship to Player: Not Player
Gender: Female (if not all of your prostitutes have the same Gender, leave this as Any; if all of your prostitutes are male, select Male)

 

This will cause your script to run once per Humanoid, Female, non-Player Actor in a SexLab scene, once when the scene starts.

 

Inside the script, it will check the script target's name against the name(s) of your prostitute(s) and exit the script if a match is not found.

 

set $selfName resultfrom actor_name $system.self
if $selfName == "ProstituteName 1" [IsOneOfMine]
if $selfName == "ProstituteName 2" [IsOneOfMine]

; no match found, or the player is participating
[NoMoneyHere]
return

[IsOneOfMine]
; verify the player isn't participating
if $system.player == $system.partner1 [NoMoneyHere]
if $system.player == $system.partner2 [NoMoneyHere]
if $system.player == $system.partner3 [NoMoneyHere]
if $system.player == $system.partner4 [NoMoneyHere]

; I just realized I don't have an sl_actorcount
; so go by partner count until I implement this
set $clientcount 0
if $system.partner4 != none
    set $clientcount 4
elseif $system.partner3 != none
    set $clientcount 3
elseif $system.partner2 != none
    set $clientcount 2
elseif $system.partner1 != none
    set $clientcount 1
else
    ; no money for masturbation
endif



; change this to the appropriate value
set $goldPerClient 50



set $goldEarned $clientcount * $goldPerClient

; uncomment this line if you want to wait until the sex scene ends
; util_waitforend $system.self

msg_notify $"{$selfName} earned you {$goldEarned} for services performed."
item_add $system.player $system.forms.gold $goldEarned 0

 

 

Posted
1 hour ago, hextun said:

 

Well, that's what happens when you don't know about an ecosystem (OStim) and make assumptions. :)

 

When I set up the Oral/Anal/Vaginal tag support, I looked at the existing OStim framework and I think I recalled seeing something that checked for each of these "actions" inside wrappers for things equivalent to IsOral(). I remember thinking at the time "but what if other tags/actions also mean that (i.e. multiple Oral tags/actions)". And here we are.

 

As it happens, something similar can happen with SexLab, or at least you may want to filter on tags other than Oral and what not. Or in your case, there are multiple different actions you may want to filter on.

 

ostim_hasaction is what you're looking for. Basically, in your trigger, you would outright remove the "tag" or "action" (I don't recall if I've renamed it yet) filter, so the script will be run regardless of type. But then at the top of your script, you can do the following:

 

set $hasAction resultfrom ostim_hasaction "blowjob"
if $hasAction [Oral]
set $hasAction resultfrom ostim_hasaction "deepthroat"
if $hasAction [Oral]
; etc...

 

That said, a setting to specify tags that mean Oral, vaginal, anal, that you could configure in .json, would be nice; I'll give that some thought. Could be useful for SexLab as well.

 

Much thanks! I suspected such a workaround would be needed but did not know if there was a better way. Thanks again.

Posted
28 minutes ago, just let me download said:

 

Much thanks! I suspected such a workaround would be needed but did not know if there was a better way. Thanks again.

 

I'm actually adding (for next release, 0.920) an ostim-configuration.json file that will let you define "actions_vaginal", "actions_oral", and "actions_anal". I'm using the tags you provided (including cunnilingus and lickingvagina) as the base implementation. 

 

Quick question, you specified 3 actions for anal and I wanted to verify the second one: "Anal", "analnsex", "analsex". Is that one a typo? "analnsex"? all caps, ANALNSEX? Confused because I'm used to these tags being complete words jammed together and that's the first time it's not, and I wanted to make sure.

Posted (edited)
1 hour ago, hextun said:

 

I'm actually adding (for next release, 0.920) an ostim-configuration.json file that will let you define "actions_vaginal", "actions_oral", and "actions_anal". I'm using the tags you provided (including cunnilingus and lickingvagina) as the base implementation. 

 

Quick question, you specified 3 actions for anal and I wanted to verify the second one: "Anal", "analnsex", "analsex". Is that one a typo? "analnsex"? all caps, ANALNSEX? Confused because I'm used to these tags being complete words jammed together and that's the first time it's not, and I wanted to make sure.

 

Yes it is a weird actual spelling used in at least one animation mod, I can't currently recall. I wanted to grab every single animation tag used in every one of my animation mods just in case I wanted to assign an exp value for it and that was indeed one of them.

 

In the off-chance that you are interested seeing the list of action tags I have gathered so far, here it is below. The Sex Grants Experience mod is case sensitive when it comes to action tags so that is why there are duplicates with different capitalization.

 

config.json

 

Also really glad to see you are going to allow tags to be assigned to the 3 main actions!

Edited by just let me download
Posted
17 minutes ago, just let me download said:

 

Yes it is a weird actual spelling used in at least one animation mod, I can't currently recall. I wanted to grab every single animation tag used in every one of my animation mods just in case I wanted to assign an exp value for it and that was indeed one of them.

 

In the off-chance that you are interested seeing the list of action tags I have gathered so far, here it is below. The Sex Grants Experience mod is case sensitive when it comes to action tags so that is why there are duplicates with different capitalization.

 

config.json 1.14 kB · 0 downloads

 

Also really glad to see you are going to allow tags to be assigned to the 3 main actions!

 

Since these are going through a Papyrus script API call to OStim, capitalization should not matter (see StringUtil comment). Interesting that Sex Grants Experience chooses to do so. 

 

 

Posted (edited)

Sorry I have yet another strange issue to report. I am currently using these 2 scripts:

1. Eat Food

;;;;
;; Action check
set $hasAction resultfrom ostim_hasaction "blowjob"
if $hasAction [Oral]
set $hasAction resultfrom ostim_hasaction "deepthroat"
if $hasAction [Oral]
; all else leave
return

[Oral]
;; Action check
;;;;

set $survivalFood resultfrom rnd_list "SLTriggers-Addon.esp:0x800" "SLTriggers-Addon.esp:0x801"
item_adduse $system.player $survivalFood 1 0

2. Forced Orgasm

ostim_climax $system.player

 

"Eat Food"'s conditions are:

  • Event: Orgasm
  • Player Relationship: Partner Player
  • Script 1: Eat Food
  • Gender: Male
  • All other settings default

"Forced Orgasm"'s conditions are:

  • Event: Orgasm:
  • Player Relationship: Partner Player
  • Script 1: Forced Orgasm
  • Partner Gender: Female (I plan on changing this to All in case of 3+ somes)
  • All other settings default

The Issue: I've just had two cases, one after the other that the triggers are being triggered inconsistently and I am not sure why. I did not change any trigger settings in between the two cases.

 

Actors involved: Female PC, human male NPC

Case 1: With Billy Yoke 69 animation: 11Y692-4.json

Case 2: With Ostim's built in OStim2PKneelingBlowjobHoldingHeadMF animation: OStim2PKneelingBlowjobHoldingHeadMF.json

 

The problem: In Case 1 (Yoke 69), the male NPC orgasmed, but did not trigger the Eat Food and Forced Orgasm scripts, I had to progress to the next stage manually that included a cunnilingus animation and tag in order for my character to orgasm.  In Case 2 (Kneeling BJ), the male NPC orgasmed, and successfully triggered the Eat Food and Forced Orgasm scripts, meaning my character had the food item added and used, restoring hunger, and was forced to orgasm with the male NPC. Case 2 worked exactly how it was supposed to, but in Case 1 nothing triggered. Both animations were correctly tagged with action type "blowjob". Do you know why this happened? 

 

Edit: I also had a case where the "Forced Orgasm" failed to fire on a pretty normal "vaginalsex"-tagged animation. I did change the Partner Gender from Female to All as indicated above but I don't think that would cause the script to not fire.

Edited by just let me download
Posted
5 hours ago, hextun said:

 

Keep this in mind: SexLab sends the "Start" event for the start of EVERY scene. Because there isn't a trigger filter for "Is Prostitute of Player", it means you'll need to run this script for every participant in every scene, filtering as much as you can based on traits you know about your prostitute. Then the first thing you'll do in your script is to check for whether $system.self *is* your prostitute. And if you want multiple prostitutes, you'll have to check to see if it is any of them.

 

Trigger:
SexLab: Start
Chance: 100
Race: Humanoid (I am assuming none of your prostitutes will be Undead nor Creatures)
Relationship to Player: Not Player
Gender: Female (if not all of your prostitutes have the same Gender, leave this as Any; if all of your prostitutes are male, select Male)

 

This will cause your script to run once per Humanoid, Female, non-Player Actor in a SexLab scene, once when the scene starts.

 

Inside the script, it will check the script target's name against the name(s) of your prostitute(s) and exit the script if a match is not found.

 

set $selfName resultfrom actor_name $system.self
if $selfName == "ProstituteName 1" [IsOneOfMine]
if $selfName == "ProstituteName 2" [IsOneOfMine]

; no match found, or the player is participating
[NoMoneyHere]
return

[IsOneOfMine]
; verify the player isn't participating
if $system.player == $system.partner1 [NoMoneyHere]
if $system.player == $system.partner2 [NoMoneyHere]
if $system.player == $system.partner3 [NoMoneyHere]
if $system.player == $system.partner4 [NoMoneyHere]

; I just realized I don't have an sl_actorcount
; so go by partner count until I implement this
set $clientcount 0
if $system.partner4 != none
    set $clientcount 4
elseif $system.partner3 != none
    set $clientcount 3
elseif $system.partner2 != none
    set $clientcount 2
elseif $system.partner1 != none
    set $clientcount 1
else
    ; no money for masturbation
endif



; change this to the appropriate value
set $goldPerClient 50



set $goldEarned $clientcount * $goldPerClient

; uncomment this line if you want to wait until the sex scene ends
; util_waitforend $system.self

msg_notify $"{$selfName} earned you {$goldEarned} for services performed."
item_add $system.player $system.forms.gold $goldEarned 0

 

 

Thank you very much. It works perfectly.
I only removed the player verification part because a client might request that they participate.
The implementation of "sl_actorcount" could be very interesting.

Posted

Finnaly got to tinkering with this, and iam quite dim. So i kinda need a working option to mimic. Can someone give me an example of how to translate old triggers scripts to this?

Old one:

Spoiler

{
    "cmd" : 
    [
        ["set", "$1", "BHUNPIKziitd.esp:3643"],
        ["item_equip", "$player", "$1", "0", "1"],
        ["actor_qnnu", "$player"],
        ["util_wait", "600"],
        ["item_unequipex", "$player", "$1", "0"],
        ["item_remove", "$player", "$1", "1", "1"]
    ]
}


Equips an item on player and removes it on timer. How would that look in redux?

Posted
17 minutes ago, nilead said:

Finnaly got to tinkering with this, and iam quite dim. So i kinda need a working option to mimic. Can someone give me an example of how to translate old triggers scripts to this?

Old one:

  Hide contents

{
    "cmd" : 
    [
        ["set", "$1", "BHUNPIKziitd.esp:3643"],
        ["item_equip", "$player", "$1", "0", "1"],
        ["actor_qnnu", "$player"],
        ["util_wait", "600"],
        ["item_unequipex", "$player", "$1", "0"],
        ["item_remove", "$player", "$1", "1", "1"]
    ]
}


Equips an item on player and removes it on timer. How would that look in redux?

 

set $bhunItem "BHUNPIKziitd.esp:3643"
item_equip $system.player $bhunItem 0 1
actor_qnnu $system.player
util_wait 600
item_unequipex $system.player $bhunItem 0
item_remove $system.player $bhunItem 1 1

 

Posted
3 hours ago, just let me download said:

Sorry I have yet another strange issue to report. I am currently using these 2 scripts:

1. Eat Food

;;;;
;; Action check
set $hasAction resultfrom ostim_hasaction "blowjob"
if $hasAction [Oral]
set $hasAction resultfrom ostim_hasaction "deepthroat"
if $hasAction [Oral]
; all else leave
return

[Oral]
;; Action check
;;;;

set $survivalFood resultfrom rnd_list "SLTriggers-Addon.esp:0x800" "SLTriggers-Addon.esp:0x801"
item_adduse $system.player $survivalFood 1 0

2. Forced Orgasm

ostim_climax $system.player

 

"Eat Food"'s conditions are:

  • Event: Orgasm
  • Player Relationship: Partner Player
  • Script 1: Eat Food
  • Gender: Male
  • All other settings default

"Forced Orgasm"'s conditions are:

  • Event: Orgasm:
  • Player Relationship: Partner Player
  • Script 1: Forced Orgasm
  • Partner Gender: Female (I plan on changing this to All in case of 3+ somes)
  • All other settings default

The Issue: I've just had two cases, one after the other that the triggers are being triggered inconsistently and I am not sure why. I did not change any trigger settings in between the two cases.

 

Actors involved: Female PC, human male NPC

Case 1: With Billy Yoke 69 animation: 11Y692-4.json

Case 2: With Ostim's built in OStim2PKneelingBlowjobHoldingHeadMF animation: OStim2PKneelingBlowjobHoldingHeadMF.json

 

The problem: In Case 1 (Yoke 69), the male NPC orgasmed, but did not trigger the Eat Food and Forced Orgasm scripts, I had to progress to the next stage manually that included a cunnilingus animation and tag in order for my character to orgasm.  In Case 2 (Kneeling BJ), the male NPC orgasmed, and successfully triggered the Eat Food and Forced Orgasm scripts, meaning my character had the food item added and used, restoring hunger, and was forced to orgasm with the male NPC. Case 2 worked exactly how it was supposed to, but in Case 1 nothing triggered. Both animations were correctly tagged with action type "blowjob". Do you know why this happened? 

 

Edit: I also had a case where the "Forced Orgasm" failed to fire on a pretty normal "vaginalsex"-tagged animation. I did change the Partner Gender from Female to All as indicated above but I don't think that would cause the script to not fire.

 

 

There are some debug flags that can be enabled in the MCM on the main page. Would you mind enabling "Debug", "Debug Cmd", "Extension", and "Extension OStim" and providing the log output (or reviewing it)? It can get verbose, so if you keep a copy around, and just upload a relevant portion, that would be fine to start with.

 

I'm trying to get a sense of where the failure is happening.

 

Did the extension just not get an event? If either Extension or Extension OStim logging is enabled, you should get lines of output for each raw event received. If you aren't receiving an event you are expecting, that means the extension itself is somehow not connected to OStim properly. You could try an SLTR reset (and, you know... that's probably going to be a recommendation for many ills as a first stop), but this, to me, seems like a pretty core failure.

 

If the extension got the event, then the "HandleCheckEvents" function iterates all triggers and with logging enabled should output facts about the event it is responding to, as well as each trigger it sees. If you see something here suggesting a failure, or you don't see the triggers you expect to see, or you see triggers, but you see them being rejected for reasons you don't expect, that's all going to show up with OStim logging enabled.

 

If the script is being requested (logged by Extension), next up is whether it's being run correctly (Debug Cmd), which with the right logging (um... still Debug Cmd) should output whether a script is starting up, and why it is exiting, among many other things.

 

Note that logging output is all sent to <My Documents>\My Games\Skyrim Special Edition\SKSE\sl-triggers.log 
        (or whichever folder you have your SKSE logs directed to)

 

Thanks

 

Posted
22 minutes ago, hextun said:

 

set $bhunItem "BHUNPIKziitd.esp:3643"
item_equip $system.player $bhunItem 0 1
actor_qnnu $system.player
util_wait 600
item_unequipex $system.player $bhunItem 0
item_remove $system.player $bhunItem 1 1

 

Sweet, thanks and much appreciate you taking time to response. It will take some time to redo and retest old scripts.

Appetite comes while dining, so i wonder, would you be interested in AI integrations? Say, sending a direct instruction to something like CHIM/SkyrimNET alongisde event, For example, actor, based on chance, decides to gag the partner (allready doable with your framework), But alongside the equip command, instead of notification being sent, sending a direct narration request to SkyrimNET along the lines of "Actor A decides to gag actor B"? That would allow that framework to dynamicly voice and react to that event. Actor A might even decide to ungag actor B, dynamicly. 

Posted (edited)
1 hour ago, hextun said:

 

 

There are some debug flags that can be enabled in the MCM on the main page. Would you mind enabling "Debug", "Debug Cmd", "Extension", and "Extension OStim" and providing the log output (or reviewing it)? It can get verbose, so if you keep a copy around, and just upload a relevant portion, that would be fine to start with.

 

I'm trying to get a sense of where the failure is happening.

 

Did the extension just not get an event? If either Extension or Extension OStim logging is enabled, you should get lines of output for each raw event received. If you aren't receiving an event you are expecting, that means the extension itself is somehow not connected to OStim properly. You could try an SLTR reset (and, you know... that's probably going to be a recommendation for many ills as a first stop), but this, to me, seems like a pretty core failure.

 

If the extension got the event, then the "HandleCheckEvents" function iterates all triggers and with logging enabled should output facts about the event it is responding to, as well as each trigger it sees. If you see something here suggesting a failure, or you don't see the triggers you expect to see, or you see triggers, but you see them being rejected for reasons you don't expect, that's all going to show up with OStim logging enabled.

 

If the script is being requested (logged by Extension), next up is whether it's being run correctly (Debug Cmd), which with the right logging (um... still Debug Cmd) should output whether a script is starting up, and why it is exiting, among many other things.

 

Note that logging output is all sent to <My Documents>\My Games\Skyrim Special Edition\SKSE\sl-triggers.log 
        (or whichever folder you have your SKSE logs directed to)

 

Thanks

 

 

I attempted an SLTR reset but found that all submenus in the SLTriggers Redux MCM disappeared except the SLTriggers submenu. I had to do a clean reinstall of SLTriggers (remove mod, clean with Resaver, start without it, save, re-enable) in order to make the MCM work properly again. Side note: The SLTR Ostim submenu now appears after SLTR Core, where it was opposite before.

 

I proceeded to enable the debug settings you listed, and ran the Yoke 69 animation again, with the same result (no hunger restoration, no forced PC orgasm on male orgasm). Here is the sl triggers log:  sl-triggers.log

I don't have enough knowledge on how to interpret the log, but I can only see that the Toggle Detection script is activating successfully.

 

Here are all the triggers I am using:

trigger001.json

trigger002.json

trigger003.json

trigger004.json

 

Here are the scripts fired by each trigger:

Trigger01/Trigger02: Toggle Detection 

console $system.player "tgm"
console $system.player "tdetect"
console $system.player "tcai"

Trigger03: Eat Food

;;;;
;; Action check
set $hasAction resultfrom ostim_hasaction "blowjob"
if $hasAction [Oral]
set $hasAction resultfrom ostim_hasaction "deepthroat"
if $hasAction [Oral]
; all else leave
return

[Oral]
;; Action check
;;;;

set $survivalFood resultfrom rnd_list "SLTriggers-Addon.esp:0x800" "SLTriggers-Addon.esp:0x801" "SLTriggers-Addon.esp:0x802" "SLTriggers-Addon.esp:0x800" "SLTriggers-Addon.esp:0x801" "SLTriggers-Addon.esp:0x800"
item_adduse $system.player $survivalFood 1 0

if $system.self != $system.player
	ostim_stallclimax $system.self
	return
endif

Trigger04: Forced Orgasm:

ostim_climax $system.player

 

Edit: Here is another sl-triggers.log where I used the kneeling BJ animation that does allow the Eat Food and Forced Orgasm scripts to fire:

sl-triggers.log

Edited by just let me download
Posted
4 hours ago, nilead said:

Sweet, thanks and much appreciate you taking time to response. It will take some time to redo and retest old scripts.

Appetite comes while dining, so i wonder, would you be interested in AI integrations? Say, sending a direct instruction to something like CHIM/SkyrimNET alongisde event, For example, actor, based on chance, decides to gag the partner (allready doable with your framework), But alongside the equip command, instead of notification being sent, sending a direct narration request to SkyrimNET along the lines of "Actor A decides to gag actor B"? That would allow that framework to dynamicly voice and react to that event. Actor A might even decide to ungag actor B, dynamicly. 

 

Glad to help. :)

 

If integration involves working with an existing Papyrus API or mod events, it should be no harder than any other integration i.e. relatively straightforward, just a scaling issue based on how many functions need to be bound.

Posted
17 minutes ago, hextun said:

If integration involves working with an existing Papyrus API or mod events, it should be no harder than any other integration i.e. relatively straightforward, just a scaling issue based on how many functions need to be bound.

 Min certainly states that woud the case. As for weather or not it is allready, im not qualified to say due to my muggle skills.

Posted
4 hours ago, just let me download said:

 

I attempted an SLTR reset but found that all submenus in the SLTriggers Redux MCM disappeared except the SLTriggers submenu. I had to do a clean reinstall of SLTriggers (remove mod, clean with Resaver, start without it, save, re-enable) in order to make the MCM work properly again. Side note: The SLTR Ostim submenu now appears after SLTR Core, where it was opposite before.

 

I proceeded to enable the debug settings you listed, and ran the Yoke 69 animation again, with the same result (no hunger restoration, no forced PC orgasm on male orgasm). Here is the sl triggers log:  sl-triggers.log

I don't have enough knowledge on how to interpret the log, but I can only see that the Toggle Detection script is activating successfully.

 

Here are all the triggers I am using:

trigger001.json 297 B · 0 downloads

trigger002.json 157 B · 0 downloads

trigger003.json 409 B · 0 downloads

trigger004.json 179 B · 0 downloads

 

Here are the scripts fired by each trigger:

Trigger01/Trigger02: Toggle Detection 

console $system.player "tgm"
console $system.player "tdetect"
console $system.player "tcai"

Trigger03: Eat Food

;;;;
;; Action check
set $hasAction resultfrom ostim_hasaction "blowjob"
if $hasAction [Oral]
set $hasAction resultfrom ostim_hasaction "deepthroat"
if $hasAction [Oral]
; all else leave
return

[Oral]
;; Action check
;;;;

set $survivalFood resultfrom rnd_list "SLTriggers-Addon.esp:0x800" "SLTriggers-Addon.esp:0x801" "SLTriggers-Addon.esp:0x802" "SLTriggers-Addon.esp:0x800" "SLTriggers-Addon.esp:0x801" "SLTriggers-Addon.esp:0x800"
item_adduse $system.player $survivalFood 1 0

if $system.self != $system.player
	ostim_stallclimax $system.self
	return
endif

Trigger04: Forced Orgasm:

ostim_climax $system.player

 

Edit: Here is another sl-triggers.log where I used the kneeling BJ animation that does allow the Eat Food and Forced Orgasm scripts to fire:

sl-triggers.log 52.94 kB · 0 downloads

 

And in each log file's case, who were the participants?

Posted (edited)
36 minutes ago, hextun said:

 

And in each log file's case, who were the participants?

 

In testing, I used a random male Imperial soldier at the Imperial military camp nearest to Ivarstead. So it's my female PC and one random male Imperial soldier. In my original report (before the logs I posted) I used Narfi in Ivarstead for testing. If you need any information or additional testing, please let me know.

 

Edit:

 

It was a random male Imperial soldier for both log file's case. I do not remember if it was the exact same Imperial soldier both times, but I think it was. There were only 2 soldiers near the cooking fire and I chose from one of them.

Edited by just let me download
Posted (edited)
11 hours ago, just let me download said:

 

In testing, I used a random male Imperial soldier at the Imperial military camp nearest to Ivarstead. So it's my female PC and one random male Imperial soldier. In my original report (before the logs I posted) I used Narfi in Ivarstead for testing. If you need any information or additional testing, please let me know.

 

Edit:

 

It was a random male Imperial soldier for both log file's case. I do not remember if it was the exact same Imperial soldier both times, but I think it was. There were only 2 soldiers near the cooking fire and I chose from one of them.

 

I see the problem now. I am using the wrong event argument for the threadID. It works sometimes because threadID is, by default, whichever thread the Player is on. Fix will be in the next release.

 

To elaborate: the correct events are hooked up and receiving, but you see this line?

OStim.OnOrgasm: eventName(ostim_actor_orgasm) args(11Y692-4) flt(0.000000) sender([Actor < (000529CF)>])

 

That "args" value is the string value you get with a standard mod event and in this case is supposed to be the sceneID, not the threadID, which is found in the float value of 0.0 (it must be cast to int since OStim threadID values are int values), which corresponds to threadID 0 with the player.

Edited by hextun
Posted (edited)
29 minutes ago, hextun said:

 

I see the problem now. I am using the wrong event argument for the threadID. It works sometimes because threadID is, by default, whichever thread the Player is on. Fix will be in the next release.

 

To elaborate: the correct events are hooked up and receiving, but you see this line?

OStim.OnOrgasm: eventName(ostim_actor_orgasm) args(11Y692-4) flt(0.000000) sender([Actor < (000529CF)>])

 

That "args" value is the string value you get with a standard mod event and in this case is supposed to be the sceneID, not the threadID, which is found in the float value of 0.0 (it must be cast to int since OStim threadID values are int values), which corresponds to threadID 0 with the player.

 

Excellent work finding this out! I'm looking forward to the next release. It's incredibly interesting about the new possibilities that SLTR brings and I am looking forward to learning more about what things I can do with it. Keep up the excellent work in developing and maintaining this mod.

Edited by just let me download
Posted

v0.920 has been released; it was last seen headed down I-10 between Bunker Hill and Gessner on a light pink moped. If you have seen this version, calmly divert it to your installation and update at your leisure.

 

Chef, today I have prepared for you the following:

 

I'll start the meal with a selection of bugfixes that will be a pleasantly savory start. For the OStim users, I should have fixed the problems related to the threadID; your triggers should run more reliably based on your filters. And for both the OStim and the SexLab crowd, I've corrected what I feel to have been a problem with the partner criteria. The short of it is that partner criteria are now "Do any of my partners qualify as: ". And if that was what you are assuming, then I am so happy for you right now. But now it should match reality. Additionally, for you console command using types (you know who you are), if you've been rawdogging the console without help from ConsoleUtil Extended or one of the ConsoleUtil variants, I don't know what to tell you, other than that the console should now work for you. And finally, comparison logic was failing between Forms and ints. We have... altered the comparison logic. Pray we do not alter it any further. (Please)

 

Now, on to the main course. I have prepared for you a selection of new triggers. For the OStim crowd, you now have "Scene Changed", an available event from the OStim API. For the SexLab/SexLab P+ crowd, you now have "Stage Start" and "Stage End". Note that with the SexLab event, as one stage ends, and the next starts, you'll get back to back triggers running if you have both opted in. And it's quite likely that the "End" of the previous stage will still be running when the "Start" of the next stage starts. Just keep that in mind.

 

And for dessert, a small selection of sweet treats; for the OStim crowd, find 'ostim-configuration.json' which contains a set of action lists for each of "Vaginal", "Oral", and "Anal", for use with the Action filter. For the SexLab crew, the "Sex: " filter for your triggers has been expanded to support all baseline values supported by the respective frameworks. This adds "Creature, Male", and "Creature, Female" to SexLab and adds "Futa", "Creature, Male", "Creature, Female" to SexLab P+ triggers.

 

Finally, as an additional treat, I have added a new intrinsic function, "listjoin" to join lists together.

 

As an example of the new "listjoin" function, here is a script which, if you have Nether's Follower Framework installed, will initiate a sex scene between the player and their followers:

 

Form[] $actorList

set $actorList[0] = $system.player

set $nffFollowers resultfrom nff_getfollowers

listjoin $actorList $nffFollowers

set $aname resultfrom actor_dogetter $actorList[0] GetDisplayName
set $aname2 resultfrom actor_dogetter $actorList[1] GetDisplayName
set $aname3 resultfrom actor_dogetter $actorList[2] GetDisplayName

deb_msg $"name '{$aname}'  name2 '{$aname2}'   name3 '{$aname3}"

sl_startsex $actorList $actorList[0] "Vaginal" false

 

Posted

Also, PSA: Don't forget to turn off all of your SLTR debug settings in the MCM when you're done.

 

In fact, when I first start with a modlist, one of the things I do is go through all of the MCMs and disable debug output for any mods I see that have it enabled.

 

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