Jump to content

SexoutNG - Stable Release '97


Recommended Posts

  • 1 month later...

you must still have SexoutNG Core and SexoutNG Data installed NMM wont let me install both D: how did you do it

 

ummm

 

LOL?!

 

got the male nudes to work but LOL

 

also my character is stuck here cause the dog wont come for her D: any idea what went wrong? its game bracker

 

If you have issues with installing all SexoutNG files with NMM, try renaming the donwloaded files, for example:

 

SexoutNG Core   --> SNGCore

SexoutNG Data   --> SNGData

SexoutNG Bofies --> SNGBodies

 

When renaming just make sure that (if I remember correctly) the first 5 (five) characters are distinctive.

 

 

If this doesn't help, you should really consider to switch to FOMM for FONV/Sexout.

Link to comment
  • 3 weeks later...
  • 2 weeks later...

are there animations for the DLC creatures?

 

Animations are based on the skeleton, so some creatures are able to share animations.

 

Tunnelers use spore carrier animations, aliens use feral ghoul animations.

 

Yao Guai do not have any animations yet, sadly.

 

Dead Money ghosts and holograms... I don't think will work. Maybe they could use some other animations, I haven't looked into it.

Link to comment

Added license information to OP:
 

 

Sexout is free. Free as in BSD license free, except even freer. This work is public domain. Do whatever the hell you want to do with it. You can even upload it to some other site and claim to be the creator, but that's bad karma, and when it comes back 'round you'll regret the decision.

 

 

This is not new; it has been in the included 'Readme - SexoutNG.txt' for a long time, probably added by prideslayer, although I am not certain.

Link to comment

Looks like "fnSexoutActorInUse" doesn't work right any more. Right after Sexout switched to using NX, the following worked fine to determine if an actor was having sex: "eval !(call fnSexoutActorInUse PlayerREF)"

 

Now when I use it, it says the following in the console:

 

"attempting to call a function on a null refference or base object 

file  sexoutworkinggirl.esp  offset 0x0001 command unknown
error in script 15027bfd"

 

Kind of a problem because the approach system is Working Girl is based off of checking if actors are in use. Has this been replaced with another method I wasn't paying attention to?

Link to comment

Sure can!

 

 

scn 00SexoutWorkingGirlEffectScriptV2
;
; Working Girl Script
; This is a weird frankenscript I've concocted, combining Bromm83's and Prideslayer's scripts.
; If it doesn't work, tell me what stupid I pulled and how to fix it. - Loogie
; globals
ref self
int abort
int reason
int started
int chasing
ref walkAI
ref goal
int ActorChance
int ChanceTest
int bRun
float elapsed
short redirect
short chance
short num
short ChaScore
short BarScore
short wage
float fHeartbeat
int loops
int bVeronica
int bCass
int bSunny
ref Companion1
ref Companion2
ref Companion3
ref Companion4
ref Companion5
ref Companion6
ref Companion7
; *****************
; ScriptEffectStart
; *****************
Begin ScriptEffectStart
  set Companion1 to TryoutGirlGetterQuest.Companion1
  set Companion2 to TryoutGirlGetterQuest.Companion2
  set Companion3 to TryoutGirlGetterQuest.Companion3
  set Companion4 to TryoutGirlGetterQuest.Companion4
  set Companion5 to TryoutGirlGetterQuest.Companion5
  set Companion6 to TryoutGirlGetterQuest.Companion6
  set Companion7 to TryoutGirlGetterQuest.Companion7
    set chance to 100
    set num to 1
    set self to GetSelf
    if eval !(call fnSexoutActorInUse PlayerREF)
        set goal to player
        set walkAI to SexoutWorkingGirlWalktoPlayer
        set num to num + 1
        set chance to 100 / num
    endif
    if IsFormValid Companion1 && eval !(call fnSexoutActorInUse Companion1) && Companion1.GetInSameCell Player
        if GetRandomPercent < chance
    Companion1Marker.moveto Companion1
            set goal to Companion1
            set walkAI to SexoutWorkingGirlWalktoCompanion1
            set num to num + 1
            set chance to 100 / num
        endif
    endif
    if IsFormValid Companion2 && eval !(call fnSexoutActorInUse Companion2) && Companion2.GetInSameCell Player
        if GetRandomPercent < chance
    Companion2Marker.moveto Companion2
            set goal to Companion2
            set walkAI to SexoutWorkingGirlWalktoCompanion2
            set num to num + 1
            set chance to 100 / num
        endif
    endif
    if IsFormValid Companion3 && eval !(call fnSexoutActorInUse Companion3) && Companion3.GetInSameCell Player
        if GetRandomPercent < chance
    Companion3Marker.moveto Companion3
            set goal to Companion3
            set walkAI to SexoutWorkingGirlWalktoCompanion3
            set num to num + 1
            set chance to 100 / num
        endif
    endif
    if IsFormValid Companion4 && eval !(call fnSexoutActorInUse Companion4) && Companion4.GetInSameCell Player
        if GetRandomPercent < chance
    Companion4Marker.moveto Companion4
            set goal to Companion4
            set walkAI to SexoutWorkingGirlWalktoCompanion4
            set num to num + 1
            set chance to 100 / num
        endif
    endif
    if IsFormValid Companion5 && eval !(call fnSexoutActorInUse Companion5) && Companion5.GetInSameCell Player
        if GetRandomPercent < chance
    Companion5Marker.moveto Companion5
            set goal to Companion5
            set walkAI to SexoutWorkingGirlWalktoCompanion5
            set num to num + 1
            set chance to 100 / num
        endif
    endif
    if IsFormValid Companion6 && eval !(call fnSexoutActorInUse Companion6) && Companion6.GetInSameCell Player
        if GetRandomPercent < chance
    Companion6Marker.moveto Companion6
            set goal to Companion6
            set walkAI to SexoutWorkingGirlWalktoCompanion6
            set num to num + 1
            set chance to 100 / num
        endif
    endif
    if IsFormValid Companion7 && eval !(call fnSexoutActorInUse Companion7) && Companion7.GetInSameCell Player
        if GetRandomPercent < chance
    Companion7Marker.moveto Companion7
            set goal to Companion7
            set walkAI to SexoutWorkingGirlWalktoCompanion7
            set num to num + 1
            set chance to 100 / num
        endif
    endif
    if 0 == goal
        dispel SexoutWorkingGirlEffect
        return
    endif
    if goal == GetSelf ; should stop working girls from masturbating
        dispel SexoutWorkingGirlEffect
        return
    endif
    set ActorChance to SexoutWorkingGirl.approach
    set ChanceTest to GetRandomPercent
    if ChanceTest > ActorChance
        ; Failed chance, set cooldown
        PrintToConsole "WorkingGirl: %i : Roll failed %.0f > %.0f chasing %n" self ChanceTest ActorChance goal
        CIOS SexoutWorkingGirlFailedEffect
        set reason to 1
        EvaluatePackage
        dispel SexoutWorkingGirlEffect
    else
        PrintToConsole "WorkingGirl: %i : Roll succeeded %.0f <= %.0f chasing %n for %.0fs" self ChanceTest ActorChance goal SexoutWorkingGirl.elapsedMax
        AddScriptPackage walkAI
        set elapsed to 0
        set started to 0
        set chasing to 1
        set bRun to 1
    endif
End ; ScriptEffectStart
; *****************
; ScriptEffectUpdate
; *****************
Begin ScriptEffectUpdate
    ;;debug;    if fHeartbeat > 0
    ;;debug;        set fHeartbeat to fHeartbeat - ScriptEffectElapsedSeconds
    ;;debug;    else
    ;;debug;        set fHeartbeat to 1
    ;;debug;        PrintToConsole "WorkingGirl: %i : Heartbeat chasing %n for %.0fs [%.0f %.0f %.0f %.0f %.0f] %.0f" self goal elapsed bRun chasing started abort redirect loops
    ;;debug;    endif
    ;;debug;    PrintToConsole "WorkingGirl: 0 %i" self
    if (0 == bRun) || started
        return
    endif
    ;;debug;    PrintToConsole "WorkingGirl: 1 %i" self
    if (0 == abort)
        ; check and update the chase timer
        set elapsed to elapsed + ScriptEffectElapsedSeconds
        if (elapsed >= SexoutWorkingGirl.elapsedMax)
            CIOS SexoutWorkingGirlFailedEffect
            set abort to 1
        endif
    endif
    ;;debug;    PrintToConsole "WorkingGirl: 2 %i" self
    ; check for abort
    if abort
        PrintToConsole "WorkingGirl: %i : Aborting %.0f (%.0fs)" self abort elapsed
        set chasing to 0
        if GetIsCurrentPackage walkAI
            RemoveScriptPackage walkAI
        endif
        set bRun to 0
        dispel SexoutWorkingGirlEffect
        EvaluatePackage
    endif
    ;;debug;    PrintToConsole "WorkingGirl: 3 %i" self
    ; If self starts having sex with someone else, ignore this target
     if eval !(call fnSexoutActorInUse Self)
        set abort to 2
        return
    endif
    ;;debug;    PrintToConsole "WorkingGirl: 4 %i" self
   
    if chasing
        if GetDistance goal < 400 && getDistance goal > 160
            ; getting close, start checking for abort
            if eval !(call fnSexoutActorInUse Goal) ; let's try to redirect
                set chasing to 0
                if GetIsCurrentPackage walkAI
                    RemoveScriptPackage walkAI
                endif
            endif
            return
        endif
        if GetDistance goal > 160
            ; still chasing, nothing to do.
            ;;debug;    PrintToConsole "WorkingGirl: 41 %i" self
            set loops to loops + 1
            return
        else
            PrintToConsole "WorkingGirl: %i : finished chasing %n in %.0fs" self goal elapsed
            ; the chase is over
            set chasing to 0
            if GetIsCurrentPackage walkAI
                RemoveScriptPackage walkAI
            endif
            return    ; makes sure the package change is taken into account
        endif
    endif
   
    ;;debug;    PrintToConsole "WorkingGirl: 5 %i" self
    if eval !(call fnSexoutActorInUse Goal)
        if 0 == redirect    ;    try redirecting once
            if eval !(call fnSexoutActorInUse PlayerRef)
                set goal to player
                set walkAI to SexoutWorkingGirlWalktoPlayer
                set num to num + 1
                set chance to 100 / num
                set redirect to 1
            endif
            if eval !(call fnSexoutActorInUse Companion1)
              if GetRandomPercent < chance
                set goal to Companion1
                set walkAI to SexoutWorkingGirlWalktoCompanion1
                set num to num + 1
                set chance to 100 / num
                set redirect to 1
                endif
              endif
            if eval !(call fnSexoutActorInUse Companion2)
              if GetRandomPercent < chance
                set goal to Companion2
                set walkAI to SexoutWorkingGirlWalktoCompanion2
                set num to num + 1
                set chance to 100 / num
                set redirect to 1
                endif
              endif
            if eval !(call fnSexoutActorInUse Companion3)
              if GetRandomPercent < chance
                set goal to Companion3
                set walkAI to SexoutWorkingGirlWalktoCompanion3
                set num to num + 1
                set chance to 100 / num
                set redirect to 1
                endif
              endif
            if eval !(call fnSexoutActorInUse Companion4)
              if GetRandomPercent < chance
                set goal to Companion4
                set walkAI to SexoutWorkingGirlWalktoCompanion4
                set num to num + 1
                set chance to 100 / num
                set redirect to 1
                endif
              endif
            if eval !(call fnSexoutActorInUse Companion5)
              if GetRandomPercent < chance
                set goal to Companion5
                set walkAI to SexoutWorkingGirlWalktoCompanion5
                set num to num + 1
                set chance to 100 / num
                set redirect to 1
                endif
              endif
            if eval !(call fnSexoutActorInUse Companion6)
              if GetRandomPercent < chance
                set goal to Companion6
                set walkAI to SexoutWorkingGirlWalktoCompanion6
                set num to num + 1
                set chance to 100 / num
                set redirect to 1
                endif
              endif
            if eval !(call fnSexoutActorInUse Companion7)
              if GetRandomPercent < chance
                set goal to Companion7
                set walkAI to SexoutWorkingGirlWalktoCompanion7
                set num to num + 1
                set chance to 100 / num
                set redirect to 1
              endif
            endif
        endif
           
        if redirect
            PrintToConsole "WorkingGirl: %i : Redirected (%n)" self goal
            if (GetDistance goal > 160)
                   AddScriptPackage walkAI
                set elapsed to 0
                set chasing to 1
                return
            endif
        else    ;    nobody's available or selected
            set abort to 4
                return
          endif
    endif
    ;;debug;    PrintToConsole "WorkingGirl: %i : Caught %n %.0f" self goal redirect
    ; if here, then sex should be able to start
     set started to 1
    ;;debug;    PrintToConsole "WorkingGirl: 6 %i" self
    if (GetIsSex Male) && (goal.GetIsSex Male)
        If GetRandomPercent < 50
            set Sexout.SexType to Oral
            set SexoutNG.ActorA to Self
            set SexoutNG.ActorB to Goal
        else
            set Sexout.SexType to Anal
            set SexoutNG.ActorA to Self
            set SexoutNG.ActorB to Goal
        endif
    else
        If GetRandomPercent < 40
            set Sexout.SexType to Vaginal
            set SexoutNG.ActorA to Self
            set SexoutNG.ActorB to Goal
        elseif GetRandomPercent < 75
            set Sexout.SexType to Oral
            set SexoutNG.ActorA to Self
            set SexoutNG.ActorB to Goal
        else
            set Sexout.SexType to Anal
            set SexoutNG.ActorA to Self
            set SexoutNG.ActorB to Goal
        endif
    endif
    CIOS SexoutBegin
    CIOS SexoutWorkingGirlOldEffect
    if sexoutworkinggirl.Gom == 1
    set ChaScore to (goal.getAV Charisma * SexoutWorkingGirl.ProstitutionLevel)
    set BarScore to (goal.getAV Barter / 10)
        set wage to ChaScore + BarScore
        SexoutWorkingGirlWageBoxREF.additem Caps001 wage
        if SexoutWorkingGirl.ProstitutionLevel == 1
          IncrementScriptedChallenge SexoutWGChallenge
        elseif SexoutWorkingGirl.ProstitutionLevel == 2
          IncrementScriptedChallenge SexoutWGChallenge2
        elseif SexoutWorkingGirl.ProstitutionLevel == 3
          IncrementScriptedChallenge SexoutWGChallenge3
        elseif SexoutWorkingGirl.ProstitutionLevel == 4
          IncrementScriptedChallenge SexoutWGChallenge4
        else SexoutWorkingGirl.ProstitutionLevel == 5
          IncrementScriptedChallenge SexoutWGChallenge5
        endif
    elseif sexoutworkinggirl.Wrang == 1
    set ChaScore to (goal.getAV Charisma * SexoutWorkingGirl.ProstitutionLevel)
    set BarScore to (goal.getAV Barter / 20)
        set wage to ChaScore + BarScore
        SexoutWorkingGirlWageBoxREF.additem Caps001 wage
        if SexoutWorkingGirl.ProstitutionLevel == 1
          IncrementScriptedChallenge SexoutWGChallenge
        elseif SexoutWorkingGirl.ProstitutionLevel == 2
          IncrementScriptedChallenge SexoutWGChallenge2
        elseif SexoutWorkingGirl.ProstitutionLevel == 3
          IncrementScriptedChallenge SexoutWGChallenge3
        elseif SexoutWorkingGirl.ProstitutionLevel == 4
          IncrementScriptedChallenge SexoutWGChallenge4
        else SexoutWorkingGirl.ProstitutionLevel == 5
          IncrementScriptedChallenge SexoutWGChallenge5
        endif
    elseif sexoutworkinggirl.Vikki == 1
    set ChaScore to (goal.getAV Charisma * SexoutWorkingGirl.ProstitutionLevel)
    set BarScore to (goal.getAV Barter / 30)
        set wage to ChaScore + BarScore
        SexoutWorkingGirlWageBoxREF.additem Caps001 wage
        if SexoutWorkingGirl.ProstitutionLevel == 1
          IncrementScriptedChallenge SexoutWGChallenge
        elseif SexoutWorkingGirl.ProstitutionLevel == 2
          IncrementScriptedChallenge SexoutWGChallenge2
        elseif SexoutWorkingGirl.ProstitutionLevel == 3
          IncrementScriptedChallenge SexoutWGChallenge3
        elseif SexoutWorkingGirl.ProstitutionLevel == 4
          IncrementScriptedChallenge SexoutWGChallenge4
        else SexoutWorkingGirl.ProstitutionLevel == 5
          IncrementScriptedChallenge SexoutWGChallenge5
        endif
    endif
    dispel SexoutWorkingGirlEffect
end
; *******************
; ScriptEffectFinish
; *******************
Begin ScriptEffectFinish
    PrintToConsole "WorkingGirl: %i : Done {%n for %.0fs [%.0f %.0f %.0f %.0f %.0f] %.0f}" self goal elapsed bRun chasing started abort redirect loops
End ; ScriptEffectFinish
Link to comment

The thing is, that warning only pops up when you call a reference function on a form that isn't a ref, or don't call it on anything in a script that has no implied ref (ie a quest script for instance). Occasionally, I've also seen it pop up on occasion with parentheses mismatches in compiler override scripts that do weird array/UDF calls but that's not the case here. I had a look at NG's IsActorInUse function and the ones it calls in turn, but nothing there affects anything like that.

 

Because it's a script effect function, I'm ruling out the calls to reference functions that use the implied ref, because the spell presumably runs on a ref or not at all, so I have two guesses about what's happening:

 

- one of your "goal" refs somehow isn't valid in either the GetInSameCell, GetIsSex or GetAV calls. The only reasons it wouldn't be a reference are that it's either not a valid form at all, or not a reference. Because you string together an IsFormValid check, NG's function which includes an IsReference check, and a reference function (GetInSameCell), 'goal' being either an invalid ref or invalid form should make that line return as false, but the trouble is probably with stringing the three together in one if-condition with logical ANDs in the start block. Even if it's an invalid ref or form, that GetInSameCell function will be called on it, so try separating it to a new if-line. In fact, it's probably best to nest all three:

    - isFormValid

      - isActorInuse  ; prevents NG scripts spitting out errors if it's an invalid form

        - GetInSameCell ; prevents this ref function being called on an invalid ref

 

- a more esoteric possibility is that by due to the presence of 'eval' in that line, the standard game behavior of assuming 'player' means 'playerref' is somehow overridden, but I'm not really buying that myself.

Link to comment

The thing is this worked for at least a few versions after the cut over to NX in Sexout - I've only had this bug reported after the latest stable release of Sexout. I'm currently using the beta; I'll try and see what the latest version of Sexout that works with this is.

Link to comment

I don't think this is a sexout issue, NVSE is fingering your script.

 

Older versions of NVSE did not have the run time error reporting, possibly it was always failing but silently.

 

Like DoctaSax says, I think the issue is that the engine does not short circuit if lines; all conditions get evaluated even if the the first is false. Splitting into multiple lines will work around this.

-

 

Alternatively, sexout actually has UDF to return all the valid companions in the current cell as an array, via the scanner.

 

You could replace the big block that sets the goal ref with something like:

array_var Entry

ref goal
...

if eval !(call fnSexoutActorInUse PlayerREF) && GetRandomPercent < 50
  let goal := PlayerREF
else
  foreach Entry <- call fnSexoutGetCompanions
    if GetRandomPercent < 50
      if eval !(call fnSexoutActorInUse *Entry)
        let goal := *Entry
        break
      endif
    endif
  loop
endif

if goal == PlayerREF
  set walkAI to SexoutWorkingGirlWalktoPlayer
elseif goal == Companion1
  set walkAI to SexoutWorkingGirlWalktoCompanion1
  Companion1Marker.moveto Companion1
elseif goal == Companion2
  set walkAI to SexoutWorkingGirlWalktoCompanion2
  Companion2Marker.moveto Companion2
...
endif

I miss writing FNV scripts ;).

Link to comment

Added license information to OP:

 

 

Sexout is free. Free as in BSD license free, except even freer. This work is public domain. Do whatever the hell you want to do with it. You can even upload it to some other site and claim to be the creator, but that's bad karma, and when it comes back 'round you'll regret the decision.

 

 

This is not new; it has been in the included 'Readme - SexoutNG.txt' for a long time, probably added by prideslayer, although I am not certain.

 

Yes, I am 99.999 % sure it was added by Pride when he took over what was previous used and started Sexout.

Link to comment

ok so no matter what i do no animations start. the weird thing is they work fin on another character with the same mods, leading me to believe that there is a difference in the 2 MCM. i have been fiddling with the settings for a while with no results. the debug says every actor i try to use sexkey on is invalid.

 

EDIT starting a new character does not have this issue. im going to start over and hope it does not happen again.

Link to comment

There is a potential issue in the stable where if a sex scene does not end properly (eg: an actor disappears), it never cleans up so the player remains locked.

 

I added a fix for this in the new '98 beta 1. Give it a try and see if it fixes it.

Link to comment

There is a potential issue in the stable where if a sex scene does not end properly (eg: an actor disappears), it never cleans up so the player remains locked.

 

I added a fix for this in the new '98 beta 1. Give it a try and see if it fixes it.

 

 

hi dear Odesa i can not download Sexout 97 stable with torrent file.

please if possible for you help me. i am new user. thank you so much for your kindness 

Link to comment

@Soheil: The torrent is relatively well seeded, 12 at moment. Do other torrents work okay for you?

 

If the torrent won't work, I would suggest just downloading the regular way; core, data and bodies.

Link to comment

There are two male body suits; one for Amra animations and one for all the others.

 

The sexout bodies fomod includes a Breeze version of each; AJ made the regular one and Kendo2 made the Amra aligned one.

 

If you want to use Roberts, you need to do some manual setup.

 

There is a Roberts Amra aligned body by Amra in Sexout beta download section, but there is no regular aligned version. So, you need to find a Roberts erect mesh and put it under the correct file name and folder for use as the sexout body suit. I believe its detailed in the FAQ in OP.

 

You can find a roberts erect mesh here: http://www.nexusmods.com/newvegas/mods/54731/?

 

You can also just duplicate the Amra mesh, but it will have worse alignment.

 

Once upon a time sexout actually included a roberts option in the installer, but it was removed due to dubious permissions.

Link to comment

Well thanks! I actually prefer Breeze's and just wanted to make sure I used the Breeze body for all animations, even AMRA's.

 

UPDATED: The Sexout Bodies 1.1.1 "fomod" doesn't appear to include a Breeze AMRA body, it has a Roberts texture AMRA body "outfitmerectamra.nif", there only other bodies include are the T6M BnB bodies.

Link to comment

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

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more information, see our Privacy Policy & Terms of Use