Jump to content

The Sexoutng Api (How-To For Modders)


Recommended Posts

Guest tomm434

UDF is less 'risky' than token. Token is less 'risky' than using variable04.

 

No I meant if you do delete the token, this will screw up some savegames(I heard BuildRef can do that). And this will take time before contributers update their mods for UDFs since it's new thing. I, for instance, still don't use functions. I know Loogie does. That's why I'll have to upgrade too. So I'll just wait untill the release and consider what way to use then.

Link to comment

 

UDF is less 'risky' than token. Token is less 'risky' than using variable04.

 

No I meant if you do delete the token, this will screw up some savegames(I heard BuildRef can do that). And this will take time before contributers update their mods for UDFs since it's new thing. I, for instance, still don't use functions. I know Loogie does. That's why I'll have to upgrade too. So I'll just wait untill the release and consider what way to use then.

 

You can begin using the UDF right now, it's in the current version and explained in the beta thread at least, and maybe the API thread and release thread. Search forums for fnSexoutActorInuse

 

Savegames will not be screwed up by using the token. I will never delete it because too many scripts reference it. Even if I did, it would not screw up any save games -- but it would screw up mods by crashing scripts referencing it.

 

- I will probably stop handing the token out eventually.

- I will *definitely* stop setting variable04 eventually.

 

This makes the token less risky.

 

That said, just use the UDF.

Link to comment

I don't see the problem with the VAriable04 being depreciated, I'm not sure many people are using that, but I suspect there will always be a few newer modders that would never get to the level of UDF usage especially if they have never scripted before or are just doing simple dialogue mods where tokens are a lot simpler. Or they'll take a look at UDF usage and just get scared off completely from modding for Sexout.

Link to comment

They don't have to write their own UDFs, just use the sexout ones like this. They can stick to normal non-nvse coding for everything. I don't think they'll have any harder time grasping "if eval(0 == call fnSexoutNGActorInuse ref)" vs "if (0 == ref.GetItemCount 00SexoutActor)" If they do.. maybe modding isn't for them. ;)

Link to comment

 

if eval(0 == call fnSexoutNGActorInuse ref)

 

Is this legit?  I ask since I'm so used to declare variable and set to whatever GECK function I'm trying to get a value from and THEN using the comparison w/ the variable's resulting value.

Link to comment

Bogs down stuff hardcore?  Are you using that call in your scanner just not in a conditional?

 

Well on its own it's not that big of a deal.  But toss it in with a bunch of other heavy chunks and it will if it checks every frame.

 

Link to comment

I don't see the problem with the VAriable04 being depreciated, I'm not sure many people are using that, but I suspect there will always be a few newer modders that would never get to the level of UDF usage especially if they have never scripted before or are just doing simple dialogue mods where tokens are a lot simpler. Or they'll take a look at UDF usage and just get scared off completely from modding for Sexout.

 

There's something there, but I don't think checking whether an actor's having sex is something that happens a lot in conditions, which is the only thing tokens are still somewhat useful for.

UDFs becoming the interface is not unlike the change to NX we had before - people got used to it. Of all the nvse4 stuff, UDFs are pretty much the simplest, and they have a lot of versatility at that. We may need somewhat more dedicated documentation on how to use Sexout's than my own general tutorial though.

 

Link to comment

When I update the API I'll add information on how heavy/light the sexout UDFs are. The inuse one is very lightweight, safe to call from anywhere. It should work exactly as presented nyaa, that's how I use it myself. I only put it in a temp var if I need the actual return code for something, since there are 4 possible values, not just true/false.

Link to comment

And what do you want to know ?

Members will not start sex if requested, and as such should be excluded from all type of scanner finding actor or conversation starting sex.

RestrictedActor will have sex if requested but they should be avoided by generic plugins. The idea if for a plugin targeting that actor to place it in the list so sex with that actor can be a reward of following the plugin scenario.

 

Link to comment

Just confused.  Odessa mentioned checking those (or some of those) lists as part of the usual is dead, is disabled, is already engaged in sex, etc. checks.  FWIW, she did italicize them.

 

The italics were because it was a comment rather than actual GECK function, like GetDead/GetDisabled.

 

In addition to the banned + reserved lists in Sexout, SCR has some other more specific ones.

 

Cheyenne and Lily are in the banned list, I guess because they are female and creatures are otherwise assumed male.

Link to comment

Yeah, I think that was a temporary measure till Prideslayer did something in SexoutNG to have a female creatures list, but as there aren't any animations there's no priority in that, it was easier to ban them for now. I think there's also some female coyote's, may be some female critters in FO3 too.

Link to comment
Guest tomm434

Prideslayer, I have an idea. It's about checking if Sexout works. Sometimes it doesn't. For example in this stage

playerREF.NX_SetEVFl "Sexout:Start::CallVer" 1
playerREF.NX_SetEVFo "Sexout:Start::ActorA" aaMS01SM4Ref
playerREF.NX_SetEVFo "Sexout:Start::ActorB" playerREF
playerREF.NX_SetEVFo "Sexout:Start::CBDialogA" aaMS01BGCB1
playerREF.CIOS SexoutBegin

RedRef.NX_SetEVFl "Sexout:Start::CallVer" 1
RedRef.NX_SetEVFo "Sexout:Start::ActorA" aaMS01SM3Ref
RedRef.NX_SetEVFo "Sexout:Start::ActorB" RedRef
RedRef.CIOS SexoutBegin

KimbaRef.NX_SetEVFl "Sexout:Start::CallVer" 1
KimbaRef.NX_SetEVFo "Sexout:Start::ActorA" aaMS01SM2Ref
KimbaRef.NX_SetEVFo "Sexout:Start::ActorB" KimbaRef
KimbaRef.CIOS SexoutBegin

BittercupRef.NX_SetEVFl "Sexout:Start::CallVer" 1
BittercupRef.NX_SetEVFo "Sexout:Start::ActorA" aaMS01SM1Ref
BittercupRef.NX_SetEVFo "Sexout:Start::ActorB" BittercupRef
BittercupRef.CIOS SexoutBegin

3 scenes might works but 4rth may not. If BittercupRef animation won't work, I don't care. But sometimes it happens to player and the whole scene is doomed to stuck.

Now one of the solutions is to check manually through quest\spell\object script. Here is the code.

If StageCheck ==1

if timer >=3

if getstage aams01 ==70 && playerref.getactorvalue variable04 ==0
playerREF.NX_SetEVFl "Sexout:Start::CallVer" 1
playerREF.NX_SetEVFo "Sexout:Start::ActorA" aaMS01SM4Ref
playerREF.NX_SetEVFo "Sexout:Start::ActorB" playerREF
playerREF.NX_SetEVFo "Sexout:Start::CBDialogA" aaMS01BGCB1
playerREF.CIOS SexoutBegin
set StageCheck to 0
set timer to 0

elseif getstage aams01 ==70 && playerref.getactorvalue variable04 !=0
set StageCheck to 0
return

elseif getstage aams01 ==71 && playerref.getactorvalue variable04 ==0
playerREF.NX_SetEVFl "Sexout:Start::CallVer" 1
playerREF.NX_SetEVFo "Sexout:Start::ActorA" aaMS01SM3Ref
playerREF.NX_SetEVFo "Sexout:Start::ActorB" playerREF
playerREF.NX_SetEVFo "Sexout:Start::CBDialogA" aaMS01BGCB2
playerREF.CIOS SexoutBegin
set StageCheck to 0
set timer to 0

elseif getstage aams01 ==71 && playerref.getactorvalue variable04 !=0
set StageCheck to 0
return

elseif getstage aams01 ==72 && playerref.getactorvalue variable04 ==0
playerREF.NX_SetEVFl "Sexout:Start::CallVer" 1
playerREF.NX_SetEVFo "Sexout:Start::ActorA" aaMS01SM2Ref
playerREF.NX_SetEVFo "Sexout:Start::ActorB" playerREF
playerREF.NX_SetEVFo "Sexout:Start::CBDialogA" aaMS01BGCB3
playerREF.CIOS SexoutBegin
set StageCheck to 0
set timer to 0

elseif getstage aams01 ==72 && playerref.getactorvalue variable04 !=0
set StageCheck to 0
return

elseif getstage aams01 ==73 && playerref.getactorvalue variable04 ==0
playerREF.NX_SetEVFl "Sexout:Start::CallVer" 1
playerREF.NX_SetEVFo "Sexout:Start::ActorA" aaMS01SM1Ref
playerREF.NX_SetEVFo "Sexout:Start::ActorB" playerREF
playerREF.NX_SetEVFo "Sexout:Start::CBDialogA" aaMS01BGCB4
playerREF.CIOS SexoutBegin
set StageCheck to 0
set timer to 0

elseif getstage aams01 ==73 && playerref.getactorvalue variable04 !=0
set StageCheck to 0
return

endif
else 
let timer+=GetSecondsPassed
endif
else

it can be optimised but it' will stay ugly and takes additional scripting + creation of some object(spell+baseEffect+Script or Object+Script or Quest+Script). The thing is, I can't set the while stage there because it will affect all actors and variables so I have to choose player animation or the animation which has dialogue after it(for scene to progress).

 

So, what do I propose? You can add additional option to Sexout. For example:

 

playerREF.NX_SetEVFl "Sexout:Start::CallVer" 1
playerREF.NX_SetEVFo "Sexout:Start::ActorA" aaMS01SM1Ref
playerREF.NX_SetEVFo "Sexout:Start::ActorB" playerREF
playerREF.NX_SetEVFo "Sexout:Start::CBDialogA" aaMS01BGCB4

playerREF.NX_SetEVFo "Sexout:Start::IsCheck" 1
playerREF.CIOS SexoutBegin

 

And it will run a simple timer script. It could be quest (although I have no idea how it will work with multiple calls). 3 seconds should be enough. Even if script delay is set to 0.5 sec it will check if player is having sex 6 times which in my opinion is enough.

if timer >=3 && ActorRef.GetActorValue variable 04 ==0 (or function result)
playerREF.NX_SetEVFl "Sexout:Start::CallVer" 1
playerREF.NX_SetEVFo "Sexout:Start::ActorA" ActorA
playerREF.NX_SetEVFo "Sexout:Start::ActorB" ActorB
playerREF.NX_SetEVFo "Sexout:Start::CBDialogA" DIalogueTopic
playerREF.CIOS SexoutBegin
else
let timer +=getSecondpassed

So,what do you think?

 

That's better but still ugly.

 

 

If StageCheck ==1

if timer >=3

If playerref.getactorvalue variable04
set StageCheck to 0
return
else
playerREF.NX_SetEVFl "Sexout:Start::CallVer" 1
playerREF.NX_SetEVFo "Sexout:Start::ActorB" playerREF

if getstage aams01 ==70
playerREF.NX_SetEVFo "Sexout:Start::ActorA" aaMS01SM4Ref
playerREF.NX_SetEVFo "Sexout:Start::CBDialogA" aaMS01BGCB1

elseif getstage aams01 ==71
playerREF.NX_SetEVFo "Sexout:Start::ActorA" aaMS01SM3Ref
playerREF.NX_SetEVFo "Sexout:Start::CBDialogA" aaMS01BGCB2

elseif getstage aams01 ==72
playerREF.NX_SetEVFo "Sexout:Start::ActorA" aaMS01SM2Ref
playerREF.NX_SetEVFo "Sexout:Start::CBDialogA" aaMS01BGCB3

elseif getstage aams01 ==73
playerREF.NX_SetEVFo "Sexout:Start::ActorA" aaMS01SM1Ref
playerREF.NX_SetEVFo "Sexout:Start::CBDialogA" aaMS01BGCB4

playerREF.CIOS SexoutBegin
set StageCheck to 0
set timer to 0

endif
endif
else 
let timer+=GetSecondsPassed
endif
else
return
endif
end

 

 

 

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