Jump to content

Custom display message Sexout animation start/end advice.


Recommended Posts

Posted

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!

 

 

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

image.png.0f197aa6194349a91bc0d64ace1547ab.pngimage.png.af4709e89e02e0b4b1808567f967d25c.png


very rough code, should work for the most parts, but can also break and not find anything

Edited by Neutron_rus
Posted (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 by Allnarta
Posted (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 by Neutron_rus
Posted (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 by Marceline The Mean Queen
Posted
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.

Posted
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

Posted

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

Posted (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 by Machiavelique
Posted (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 by Marceline The Mean Queen
Posted (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 by Machiavelique
  • 2 months later...
Posted (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 by Marceline The Mean Queen

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