Marceline The Mean Queen Posted April 2, 2025 Posted April 2, 2025 I would like to create a plug in that shows a message in the top corner when a Sexout animation starts and when it ends. I understand that I need to create a custom message in Geck for a script to reference but I don't know where to write this script? Would I write "showmessage *messagerefID*" on each individual animation script or is there a better way to do it? example: "You are having sex with X" on animation start then "X has finished having sex with you" on animation end. With what appears to be a revival on development of Sexout, I would like to help with this small part! This used to be a feature in older versions of Sexout but has long since been removed or disabled. Any advice on where to start will be greatly appreciated!
Neutron_rus Posted April 2, 2025 Posted April 2, 2025 (edited) Create quest with script, at least 1 formlist, 2 actor effects and 2 base effects with script that will be attached to actor effects (depending on how accurate you need tracking) add something like this to quest script (adjust to your ids, don't change sexout global formlist ids), in this example was only used 1 list so it will be hard to detect what type of act was used outside of just start/end, requires sexout.esm as master if (GetGameRestarted || GetGameLoaded) ;start if IsRefInList SexoutNGFLGlobalCBStartFLV AASexoutNotifyFL < 0 ListAddForm SexoutNGFLGlobalCBStartFLV AASexoutNotifyFL ; vaginal actor list endif if IsRefInList SexoutNGFLGlobalCBStartFLO AASexoutNotifyFL < 0 ListAddForm SexoutNGFLGlobalCBStartFLO AASexoutNotifyFL ; oral actor list endif if IsRefInList SexoutNGFLGlobalCBStartFLA AASexoutNotifyFL < 0 ListAddForm SexoutNGFLGlobalCBStartFLA AASexoutNotifyFL ; anal actor list endif if IsRefInList SexoutNGFLGlobalCBStartS AASNGEventStartAE < 0 ListAddForm SexoutNGFLGlobalCBStartS AASNGEventStartAE ;start sex, actor effect endif ;end if IsRefInList SexoutNGFLGlobalCBEndFLV AASexoutNotifyFL < 0 ListAddForm SexoutNGFLGlobalCBEndFLV AASexoutNotifyFL ; vaginal actor list endif if IsRefInList SexoutNGFLGlobalCBEndFLO AASexoutNotifyFL < 0 ListAddForm SexoutNGFLGlobalCBEndFLO AASexoutNotifyFL ; oral actor list endif if IsRefInList SexoutNGFLGlobalCBEndFLA AASexoutNotifyFL < 0 ListAddForm SexoutNGFLGlobalCBEndFLA AASexoutNotifyFL ; anal actor list endif if IsRefInList SexoutNGFLGlobalCBEndS AASNGEventENDAE < 0 ListAddForm SexoutNGFLGlobalCBEndS AASNGEventENDAE ;end sex, actor effect endif endif sample effect script that should be attached to base effect, repeat similar script for end one and adjust text scn AASNGEventStartAEScript ref rPartner string_var sv_message Begin ScriptEffectStart ref rActor = ThisAlt if rActor == Player sv_message = "You start sex with " ; player intro message else sv_message = $rActor + " starts sex with " ;actor name + intro message endif ForEach rPartner <- AASexoutNotifyFL ;removing same actor 3 times to ensure that it will not repeat, as same list is used for multiple acts ListRemoveForm AASexoutNotifyFL rPartner ListRemoveForm AASexoutNotifyFL rPartner ListRemoveForm AASexoutNotifyFL rPartner sv_message += $rPartner ;+ partner name if ListGetCount AASexoutNotifyFL > 0 sv_message += " and " ; adds 'and' if more actors endif loop MessageEx $sv_message ;use MessageBoxEx if need pop up with ok button Sv_Destruct sv_message dispel AASNGEventStartAE ;change effect when will be doing end one, not critical if it will be wrong, script only runs once anyway end sample for effect setup, base effect + actor effect Spoiler very rough code, should work for the most parts, but can also break and not find anything Edited April 2, 2025 by Neutron_rus
Allnarta Posted April 2, 2025 Posted April 2, 2025 (edited) Why not just use SexStarted event handler? It already capable of returning everything about act (type, all actorID's, if it's forced, everything) as it fires after all values are set. Same for SexEnd event. Edited April 2, 2025 by Allnarta
Neutron_rus Posted April 2, 2025 Posted April 2, 2025 (edited) 1 hour ago, Allnarta said: Why not just use SexStarted event handler? It already capable of returning everything about act (type, all actorID's, if it's forced, everything) as it fires after all values are set. Same for SexEnd event. You mean something like this? SetEventHandler "Sexout-End", SomeSexoutEndCheckScript SetEventHandler "Sexout-Started", SomeSexoutStartCheckScript Edited April 2, 2025 by Neutron_rus 1
Marceline The Mean Queen Posted April 2, 2025 Author Posted April 2, 2025 (edited) Yes! This is it! II just need to know where to input actor ID's (Humans,creatures, etc) , how to differentiate if its con/non-con, and type of animation (Oral,Anal, Vaginal) I can use the script for referencing the message I used in the subtitles hotkey mod and I need to just create the messages for the script to actually reference. Thank you Allnarta & Neutron_Rus! Edited April 3, 2025 by Marceline The Mean Queen
Allnarta Posted April 3, 2025 Posted April 3, 2025 10 hours ago, Neutron_rus said: You mean something like this? SetEventHandler "Sexout-End", SomeSexoutEndCheckScript SetEventHandler "Sexout-Started", SomeSexoutStartCheckScript Yes, and then setting needed code in event handers themselves; it sounds a lot easier, mlighter and 100% stable as for me, even if it uses more advanced approach (which is as it should be for better results). 7 hours ago, Marceline The Mean Queen said: Yes! This is it! II just need to know where to input actor ID's (Humans,creatures, etc) , how to differentiate if its con/non-con, and type of animation (Oral,Anal, Vaginal) Sexout-Started event handler already can return all of these values because it fires after they're already set to arrays via ActRunFull. 1
Neutron_rus Posted April 3, 2025 Posted April 3, 2025 19 minutes ago, Allnarta said: Yes, and then setting needed code in event handers themselves; it sounds a lot easier, mlighter and 100% stable as for me, even if it uses more advanced approach (which is as it should be for better results). That's mostly why I gave the bulky version, as from the looks of it, it only passes actors, not whole params block, they can be parsed from nx vars as this is what actrunfull do, but I just don't know the exact nx vars for easy parsing DispatchEvent "Sexout-Started", (ar_Map "actorA"::actorA, "actorB"::actorB, "actorC"::actorC) DispatchEvent "Sexout-End", (ar_Map "actorA"::actorA, "actorB"::actorB, "actorC"::actorC) SetEventHandler "Sexout-Started", fnSexoutLegacyHookEvent SetEventHandler "Sexout-End", fnSexoutLegacyHookEvent Hm, found this in sexout itself, fnSexoutLegacyHookEvent is actually the thing that allows bulky version to work, have nx vars to track type of act and stuff, so probably can be useful for writing custom script for custom handler
Allnarta Posted April 3, 2025 Posted April 3, 2025 Event handlers pass everything about an act from ActRunFull, as it's already stored in an act. I use it a lot in A-Lust, so I digged to it a bit. 2
Machiavelique Posted April 3, 2025 Posted April 3, 2025 (edited) 10 hours ago, Marceline The Mean Queen said: how to differentiate if its con/non-con, and type of animation (Oral,Anal, Vaginal) If you only want to display these messages if the player is involved in the act, it's easier, just put this in your UDF event: Let rRaper := PlayerREF.NX_GetEVFo "Sexout:Started::raper" Let isAnal := PlayerREF.NX_GetEVFl "Sexout:Started::isAnal" Let isVaginal := PlayerREF.NX_GetEVFl "Sexout:Started::isVaginal" Let isOral := PlayerREF.NX_GetEVFl "Sexout:Started::isOral" then... if rRaper || isAnal || isVaginal || isOral ; Do what you want with conditions you want endif if you want to display these messages whether or not the player is involved Spoiler array_var ar_Args ; Args from "Sexout-Start" Event. Contains all actors + Event name + Event sender string_var sv_char ; Char "A", "B" or "C" string_var sv_actor ; string "ActorA" "ActorB" "ActorC" ref rActorSpelled ; Actor where SexoutSpellEffect is active (Always PlayerREF if player is involved) ref rActor ; Loop variable corresponding to ActorA, ActorB or ActorC ref rRaper ; The raper (0 if none) int isAnal ; '1' if Anal int isVaginal ; '1' if Vaginal int isOral ; '1' if Oral Begin function {ar_Args} foreach sv_char <- "ABC" Let sv_actor := "Actor" + sv_char if eval !(TestExpr rActor = ar_Args[sv_actor]) continue endif Let rActorSpelled := rActor.NX_GetEVFo "Sexout:Started::spellTarget" if rActorSpelled break endif loop Sv_Destruct sv_char Sv_Destruct sv_actor if eval !(rActorSpelled) Print "Error, there no no actor spelled. This message should never happens" return endif ; Then... Let rRaper := rActorSpelled.NX_GetEVFo "Sexout:Started::raper" Let isAnal := rActorSpelled.NX_GetEVFl "Sexout:Started::isAnal" Let isVaginal := rActorSpelled.NX_GetEVFl "Sexout:Started::isVaginal" Let isOral := rActorSpelled.NX_GetEVFl "Sexout:Started::isOral" ; then... if rRaper || isAnal || isVaginal || isOral ; Do what you want with conditions you want endif End In future, it will be simpler to add these elements to Ar_Args Event for easier access. Edited April 3, 2025 by Machiavelique
Marceline The Mean Queen Posted April 6, 2025 Author Posted April 6, 2025 (edited) I found the Sexoutmessages.esp in an archived post of when Halstrom originally split the messaging system from SCR back in 2013. I looked into the script and it uses "MessageEX" so I hand wrote a few messages to replace "MessageEx" with "ShowMessage" to extend how long they appear for. Sadly the Mod doesn't appear to work with the current build of Sexout/SCR as no messages appear during beginning or end of animation. additionally the "EndOral, EndAnal, and EndVaginal" scripts are blank. Halstrom did leave instructions on how to enable them but when I save the copy paste script It tells me "00SexoutRapee" not found in parameter ObjectID. My scripting skills are not up to snuff but I'd appreciate if any of you could take a crack at rewriting the script with the "SexStarted EventHandler" so that it would account for eveything in the act. My contributions to this community up to this point has been just texture stuff so any script I write would be anywhere between rudimentary to nonfunctional! I can handle the tedious part of writing up all the messages and plugging them in for each and every NPC and all variations Male/Female, Con/Non-con, Anal, Oral, Vaginal, etc.... I just need a functioning script to plug them into! I don't mean to derail the current work you all are doing with Sexout Itself and I appreciate you all for bringing it back and I will of cource credit you all for helping me bring this old system back up and running for Sexout! SexoutMessages-20140310.1.zip Edited April 6, 2025 by Marceline The Mean Queen
Machiavelique Posted April 7, 2025 Posted April 7, 2025 (edited) I think it would be better if you started from another mod, Sexout Message uses the SCR and I don't think you need it (some people find it hard to install and it might put them off using your mod). I'll recommand you to start from SexInTheDark Below I've put a modified version of SexInTheDark (which doesn't do what it used to), it's much lighter than SexoutMessage (only 3 scripts) and should allow you to get to grips with geck and scripts. I haven't tested it yet but it compiles and should work. I also removed all requirements SexoutSexInTheDark.esp Edited April 7, 2025 by Machiavelique 1
Marceline The Mean Queen Posted June 12, 2025 Author Posted June 12, 2025 (edited) Here is a functioning script for my little notification mod. Its based on Allnartas A-LustSexHandlerStarted script! It works for Humans Male-Female and Female-Female and Male-Male encounters for both Con and Noncon! I would like some help with writing conditions for creatures though as creature actors show my custom messages tailored for humans in addition to the creature message! For example for super mutants I'm thinking something along the lines of "GetIsCreatureType 4 = 1" and some script to set conditions for Oral ,Anal, and vaginal specific to super mutants as they have animations for it! This way I can write out a unique message for a Human fellatio and Super mutant fellatio separately ect..... I would also like to do this for all creatures! Your help will be warmly appreciated! scn SexInTheDarkSexHandlerStarted array_var Args array_var iAllItems array_var Entry ref raper ref iTempItem int iSize int iKey ref ActorA ref ActorB ref ActorC ref rActor string_var rModelPathNew ref rSex Begin Function {Args} TestExpr actorA := Args["actorA"] TestExpr actorB := Args["actorB"] TestExpr actorC := Args["actorC"] If PlayerREF != ActorA && PlayerREF != ActorB && PlayerREF != ActorC ;;;Player is not involved, aborting event Return Endif let raper := ActorA.NX_GetEVFo "Sexout:Started::Raper" If PlayerREF == ActorA || PlayerREF == ActorB || PlayerREF == ActorC ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Message before rape;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; If actorA.NX_GetEVFo "Sexout:Started::Raper" || actorB.NX_GetEVFo "Sexout:Started::Raper" || actorC.NX_GetEVFo "Sexout:Started::Raper" ;;;=================rape messages============== If actorA.NX_GetEVFl "Sexout:Started::IsOral" If PlayerREF == ActorA MessageExAlt 15 "Interface\Icons\Message Icons\glow_message_vaultboy_surprised.dds|$mussuccess|You try your hardest to keep them off your dick but fail. You suffer from their horribly toothy BJ!" Elseif PlayerREF == ActorB MessageExAlt 15 "Interface\Icons\Message Icons\glow_message_vaultboy_surprised.dds|$mussuccess|You gag as you feel him shove his cock down your throat! Tears run down your face as he rapes your mouth!" Endif Elseif actorA.NX_GetEVFl "Sexout:Started::IsAnal" If PlayerREF == ActorA MessageExAlt 15 "Interface\Icons\Message Icons\glow_message_vaultboy_surprised.dds|$mussuccess|You scream out in pain as you feel your boy bootyhole getting brutally sodomized by his huge cock! You clench your teeth as he rapes your guts!" Elseif PlayerREF == ActorB MessageExAlt 15 "Interface\Icons\Message Icons\glow_message_vaultboy_surprised.dds|$mussuccess|You scream out in pain as you feel your little asshole getting brutally stretched out by his huge cock! You clench your teeth as he rapes your guts!" Endif Elseif actorB.NX_GetEVFl "Sexout:Started::IsVaginal" MessageExAlt 15 "Interface\Icons\Message Icons\glow_message_vaultboy_surprised.dds|$mussuccess|You quietly moan as you feel your tight pussy getting violently raped by his fat cock! You cover your mouth to hide your lusty moans!" Elseif PlayerREF == ActorA MessageExAlt 15 "Interface\Icons\Message Icons\glow_message_vaultboy_surprised.dds|$mussuccess|You groan in pain as she bounces on your cock nearly breaking it! Shes rubing your dick raw!" Endif ;============================================================================================================== ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;messages for normal sex;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Else set AtLustQ01.rapeMult to 1 If ActorB == 0 && ActorC == 0 ElseifGetPCIsSex Male MessageExAlt 15 "Interface\Icons\Message Icons\glow_karma_neutral.dds|$mussuccess|You furiously jerk your dick like it owes you money!" ElseifGetPCIsSex Female MessageExAlt 15 "Interface\Icons\Message Icons\glow_karma_neutral.dds|$mussuccess|You play with your sensitive clit and feel intense pleasure as you finger yourself! <3" Elseif actorA.NX_GetEVFl "Sexout:Started::IsOral" If PlayerREF == ActorA MessageExAlt 15 "Interface\Icons\Message Icons\glow_karma_neutral.dds|$mussuccess|You look up as you feel her lovingly slob on your knob!" Elseif PlayerREF == ActorB MessageExAlt 15 "Interface\Icons\Message Icons\glow_karma_neutral.dds|$mussuccess|You lovingly lock eyes with him as you lustily suck his tasty cock and play with his balls! <3" Endif Elseif actorA.NX_GetEVFl "Sexout:Started::IsAnal" If PlayerREF == ActorA MessageExAlt 15 "Interface\Icons\Message Icons\glow_karma_neutral.dds|$mussuccess|You moan lewdly as you feel your cock enter her tight asshole! You give her a spank for good measure!" Elseif PlayerREF == ActorB MessageExAlt 15 "Interface\Icons\Message Icons\glow_karma_neutral.dds|$mussuccess|You moan lustily as you feel his cock gently stretching your pouty asshole! You finger your pussy so it doesn't feel left out! <3" Endif Elseif actorB.NX_GetEVFl "Sexout:Started::IsVaginal" MessageExAlt 15 "Interface\Icons\Message Icons\glow_karma_neutral.dds|$mussuccess|You moan in ecstasy as you feel his cock spreading your lips and entering your tight pussy! You rock your hips back and forth in sync with him! <3" Elseif PlayerREF == ActorA MessageExAlt 15 "Interface\Icons\Message Icons\glow_karma_neutral.dds|$mussuccess|You moan in ecstasy as you feel your cock enter her warm cozy pussy!" Endif Endif If ActorA.GetIsCreature == 1 || ActorB.GetIsCreature == 1 || ActorC.GetIsCreature == 1 MessageExAlt 15 "Interface\Icons\Message Icons\glow_karma_neutral.dds|$mussuccess|You scream out in pleasure as you feel this creature's cock enter you and breed you! You pant like a bitch in heat with each thrust! <3" Endif Endif Endif Endif End Edited June 12, 2025 by Marceline The Mean Queen
Allnarta Posted June 12, 2025 Posted June 12, 2025 If you wish to make diverse messages for creature types, then there is condition that with help, GetCreatureType/GetIsCreatureType: https://geckwiki.com/index.php?title=GetIsCreatureType Can just set-up block for different types with different messages.
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