Jump to content

SexoutNG - Beta (2.10.93b10) release thread


Recommended Posts

Not even sure if you can consider this a bug, but using sexout system and exit and load another save game will transport you to room with no floor. :D so the only fix is fully exout fallout new vegas and and then run it again. Can something be done about this or is it something we need to live with ??

 

I had a strange thing happen like that before. It was location specific (save). Not general. I guess it was somehow I was clipping or falling etc and dropped into another cell however that cell had a floor. Deleted that save and no problems.

 

However I never was transported to a room without a floor. Transported into the sky and then floated there. (.. beam me up Scotty :D) Never worked unless I exit the game completely then start it over. Might be some thing like that happening to you. The transportation to the sky was because of toggling clipping or free cam. don't remember which but it really messed my game up until I restarted... regardless of the save used !!!!

 

Well there is my 2 cents. Well actually 1.2 cents with inflation and all.

Link to comment

2.8.90Beta2 in OP

Changes:

- All items (Armor, Ammo, Weapon, Misc) in main item formlist. Modders should add items they want removed to this list, via a script. Cleanup is called during Unlock, at the end of an act.

- Cleanup UDF now removes all items in the main sexout item formlist.

- Added some ZAZ items I missed before, somehow.

 

Modders, the list in question is "SexoutItemsList". As usual, do not add things to this list via the GECK, as that overrides the record in Sexout.ESM -- use a script to add items. Any items you add will be removed from the actor when the scene is completed and the actor is being unlocked.

Link to comment

2.8.90Beta2 in OP

Changes:

- All items (Armor, Ammo, Weapon, Misc) in main item formlist. Modders should add items they want removed to this list, via a script. Cleanup is called during Unlock, at the end of an act.

- Cleanup UDF now removes all items in the main sexout item formlist.

- Added some ZAZ items I missed before, somehow.

 

Modders, the list in question is "SexoutItemsList". As usual, do not add things to this list via the GECK, as that overrides the record in Sexout.ESM -- use a script to add items. Any items you add will be removed from the actor when the scene is completed and the actor is being unlocked.

 

(Just the bare ESM this time, as it should be.)

Link to comment

2.8.90Beta3 in OP

Changes:

- fnSexoutActRunFull -- This is a standalone UDF you can call to prep, set, and run an act all at once. It takes a single argument, a (string)map array. See the wiki for more details.

 

 

Ok so this one bears a little explanation, and demonstration is usually the easiest way to explain, so lets start with an example. In the SexoutNGDoPlayerVaginal spell script, I've replaced all of this:

 

set self to GetSelf
call fnSexoutActPrep
call fnSexoutActSetInt "isVaginal" 1
call fnSexoutActSetRef "actorA" self
call fnSexoutActSetRef "actorB" playerRef
call fnSexoutActRun
With this single line:

call fnSexoutActRunFull ar_Map "actorA"::0 "actorB"::playerRef "isVaginal"::1
That alone should explain to y'all just what this UDF does and is for, with one exception. At a suggestion (and a brilliant one, I might add), you pass in an integer (any will do, I use 0 by convention) for an actor reference that you want to be substituted by GetSelf.

 

You should ONLY do this in places where GETSELF actually makes sense. This UDF calls GetSelf for you when it sees an integer, which will fail spectacularly if called from a normal quest script, token script, etc.

 

The main reason behind this is that dialog result scripts cannot safely declare variables, and both UDFs and the NX functions cannot evaluate an expression -- you cannot pass "getself" to them as a parameter, you must pass the actual parameter value.

 

So again in summary:

1. You can use this UDF anywhere you want, in any script, as a "one shot" way of starting an act. You can even build the array it takes as a parameter elsewhere as a normal array_var and pass that in.

 

2. If you are in a place where "getself" would normally work, you can pass in an integer to any of the actor vars, and UDF will call getself for you.

Link to comment

I'm using the new ZAZ ref-surfacing for a script heavy orgy:

 

1) Making a ref-surface ZAZ call with a mismatched animation number for the static prop seems to crash the game.

 

This is easier to do than it might sound, because there are several different versions of the pillory, post, etc, and the correct one for each animation isn't specified anywhere (that I know of).

(scof logs:)

 

 

 

2) ZAZ animation 601 (Super mutant pillory) is misaligned- actorB misrotated 180 degrees. Perhaps this was always the case, I have never tested it before now.

post-158171-0-08125000-1421104927_thumb.jpg

 

 

3) ZAZ animation 230 (Boxed Bitch: Gomorrah) is misaligned, Actors seems to be elevated slightly in Z-axis.

post-158171-0-63096000-1421105063_thumb.jpg

 

Link to comment

Thanks Odessa, I'll look into them.

 

I know there are a bunch of different ones that look the same and honestly I couldn't tell the difference between them at first. It might be that some are spun 180deg from the other or something for some reason. I know some have collision enabled on them, while others don't, so you can walk through them when they're placed..

 

You're making heavier use of it than anyone has so far so unfortunately, you get to run into all the rough edges first. I'll check out those two and get them fixed soon.

Link to comment

Will calling GetSelf in a UDF that itself has been called from a dialogue result return the Subject ref? I've got my own UDF for a mod variation I'm planning on releasing shortly that works and acts in a similar way to fnSexoutActRunFull but I've been passing on my variables via code like this:

array_var vars 
ref rbuf 
let rbuf := GetSelf

let vars := Ar_Map "ActorA"::rbuf, "ActorB"::PlayerREF, "SexType"::"Anal", "Give"::"Get", "Position"::"Spoon", "CBSpellA"::SexoutCertAfterTrigger
call fnSexoutCertifiedRufusSex vars

I'd love to get rid of those variables in the result script if I'm able to, fnSexoutActRunFull itself is going to get rid of about 10 variables in my scripts and heavily simplify my code. 

 

Link to comment

Yes that works fine. Also check the current beta, there's a new UDF you can use there that does the same thing basically, without the need for getself. fnSexoutActRunFull.

 

You call it with an ar_map basically just like you're doing, but if you want it to use getself, just pass in an integer for that actor; e.g. "ActorA"::0.

 

The UDF will replace that with getself when called. It does the prep/set/run for you.

 

Edit: The current beta being this one. ;)

Link to comment

Yes that works fine. Also check the current beta, there's a new UDF you can use there that does the same thing basically, without the need for getself. fnSexoutActRunFull.

 

My UDF script has its own animation selection code, it pulls a list from a nested series of string arrays stored in the main quest that uses specific keys for each animation type.

 

Right now the arguments passed on by the array are stored in additional variables, it checks to see if theres a specific key in the array via Ar_HasKey and then does the normal Sexout calls, with fnSexoutActRunFull I can just pass on the initial array after removing my custom entries used for specific dialogue topics, it'll get rid of about 40-50 LOC from my UDF since I won't have to do the checks for CBSpell and the other SO arguments.

 

I'm loving this new function from an efficiency standpoint.  

Link to comment

Is it possible that an act that fails to execute or perhaps be cleared out for whatever reason can stop a new act from happening if called from the same calling script? I have a report in the SexoutLust thread where NG prints out

 

fnSAP: WARNING! Caller 4A000ADF (<no name>) already has an act prepped, gonna get sideways!

 

and can't come up with another explanation atm. The act is called by a UDF, in turn called by a spell script cast from dialog, but I'm pretty confident it isn't accidentally calling it twice.

Link to comment

Hmm.

 

That error/warning means that Prep was called, but Run wasn't before Prep was called again, so you're getting a union of all the Sets from both Preps.

 

If your script knows that Run wasn't called, but Prep was, you can call fnSexoutActReset before the next call to Prep.

 

If you DID call run, but it somehow failed and left the act prepped.. that's going to take some digging to figure out.

Link to comment

The calling script only has one prep in it.

 

 

scn LUSTSexCall

ref ActorA
ref ActorB
int isRape

ref rLucky
ref rHelper
int iRand
int iPassOK

Begin Function {ActorA ActorB isRape}

if ActorA.NX_GETEVFL "Lust:Act:Tracked"
    let rLucky := ActorA
    let rHelper := ActorB
elseif ActorA.NX_GETEVFL "Lust:Act:Scanned"
    let rLucky := ActorB
    let rHelper := ActorA
endif
ActorA.NX_CLrEVFL "Lust:Act" 2
let iRand := GetRandomPercent + 1
if (rLucky.GetIsSex Male) && (NX_IsInList LustSameSexOK rLucky)
    let iPassOK := 1
elseif rLucky.GetIsSex Female
    let iPassOK := 1
endif
set LustQst.rLinedUp to 0
call fnSexoutActPrep
if isRape == 1
    call fnSexoutActSetRef "raper" rLucky
endif
if iRand <= LustQst.iOralF
    call fnSexoutActSetRef "ActorA" rLucky
    call fnSexoutActSetRef "ActorB" rHelper
    call fnSexoutActSetInt "IsOral" 1
    call fnSexoutActRun
    return
elseif iPassOK
    call fnSexoutActSetRef "ActorA" rHelper
    call fnSexoutActSetRef "ActorB" rLucky
else
    call fnSexoutActSetRef "ActorA" rLucky
    call fnSexoutActSetRef "ActorB" rHelper
endif

if (iRand > (100 - LustQst.iAnF)) || ((rLucky.GetisSex Male) && (rHelper.GetIsSex Male))
    call fnSexoutActSetInt "IsAnal" 1
else
    call fnSexoutActSetInt "IsVaginal" 1
endif
call fnSexoutActRun

End

 

Link to comment

Oh I'm sure it only prepped once, but did perhaps your script crash between calling prep and run, and then later on run again and call prep?

 

I've looked at the run script and can't see any way that a prepped act can be left around if run is called, even if the act doesn't succeed, unless run itself crashed before clearing the act.

Link to comment

Yeah there's not a lot of logging going on in Run either because it's so simple, there's really little that can go wrong. I'll add a debug line in at the start, and one at the end for cleanup, so you can see for sure if it's run that's crashing or not. Give me a few minutes and I'll update the beta.

Link to comment

Ok, beta5 is up in the OP. This adds two sexout debug messages to run. One at the start (3rd line in the block):

let rCaller := GetCallingScript
set iCaller to rCaller
DebugPrint "fnSAR: Starting for %x8" iCaller
One at the end, last line in the block UNLESS run is called on an unprepped act, which results in the normal message.

DebugPrint "fnSAR: Completed for %x8" iCaller
Link to comment

Doc, if you're in your code messing around with acts using the sexout UDFs, you could also switch to the one-shot UDF which will shorten your script up quite a bit.

 

For example:

call fnSexoutActRunFull ar_map "actorA"::someRef "actorB"::playerRef
I documented this a few pages back. It's only in the beta right now but I plan on taking it live today to get that UDF into production. I haven't forgotten about the token stuff either, just busy with BodyMorph before and now NX.
Link to comment

I'm aware of it, seems handy - but for SexoutLust it's better if it set things separately as in the script above, with ActorA or B depending on who is actually the horny one, sex type options like "anal" depending on genders, sexual orientation and who'd be the dominant one etc. Not much advantage in switching over in this case, I believe.

 

I'll add some more debug to my own, and hopefully get the reporter to do another log.

Link to comment

So... I got a new log back about that issue - the LustSexCall UDF worked fine this time, but the MastCall UDF now gets this 'already prepped' readout. I kinda forgot to tell him to turn on NG's debugmode too however.

 

The masturbation call is so simple I can't imagine any script crash (would be a good candidate to be replaced by a FullRun line):

 

let rSelf := GetSelf
DebugPrint "LustMastCall called on %n, %i" rSelf rSelf
call fnSexoutActPrep
call fnSexoutActSetRef "ActorA" rSelf
call fnSexoutActRun
 

Mystery abounds.

Link to comment

I've been keeping an eye on that thread, though haven't downloaded any of the files. Without the SO debug enabled.. well.. you know.. heh. ;)

 

Where is your script being called from? Importantly, is it in an ever problematic quest or dialog result script? I ask because there is a rare but possible edge case with the prep/set/run UDFs in those cases that I've tried to keep everyone aware of, that isn't present in any of the other interfaces (including fullrun).

Link to comment
Guest
This topic is now closed to further replies.
  • 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