Jump to content

What do you want from me?


prideslayer

Recommended Posts

Right. If the mod isn't loaded' date=' I can't reference those other companions in the geck at all to check for them. If I load the mod, change the scripts, then unload the mod (or don't play with it loaded), it will crash the game just like adding a DLC mod crashes it if you don't have that DLC.

[/quote']

 

Well you could do it like Sexus did, make them as separate esp plugins that hook to the original , so you can choose which extra companions you want by activating different esp.

Its more work but it gives you the space to expand the mod to as much companion as you wish.

Link to comment

Right. If the mod isn't loaded' date=' I can't reference those other companions in the geck at all to check for them. If I load the mod, change the scripts, then unload the mod (or don't play with it loaded), it will crash the game just like adding a DLC mod crashes it if you don't have that DLC.

[/quote']

 

Well you could do it like Sexus did, make them as separate esp plugins that hook to the original , so you can choose which extra companions you want by activating different esp.

Its more work but it gives you the space to expand the mod to as much companion as you wish.

 

Yes that would work as well, but I'd need to think about how I want the ESP to 'know' that sex is taking place and that it should check to see who is involved without running some goofball scanner looking at every actor in the entire cell every frame.

 

I think a formlist in the main ESM that I add everyone to as they start sex, and delete them from it when they are done, would work for this. I'll give it a try with one of the companion mods when the code is a bit more stable/ready.

 

Could use it for Loogie's custom NPCs in the tryout's too, and with the ones in SS. Seems like a pretty reasonable way to go about it, thanks for putting me on that track. :)

Link to comment

ARGH!

 

FYI modders, this does not throw an error in the geck, but will crash your script, just stopping it from running @ the error.

 

if x >= 101 && <= 200

 

For HOURS been looking for why my script stopped working, that was it. Missed the second 'x' there.

 

The CIPSCIS script validator will catch it though. I suspect a bug in NVSE.

Link to comment

You're forgetting Raoul and Arcade. Don't know if you're going to enforce lore through the master plugin' date=' but Arcade is gay.

[/quote']

 

Added the companion counters and new counters for the player to a new script in a new script accessed as "SexoutCounters". Having them all in the main script was just starting to make it ugly.

 

I don't THINK I will have all (or any) of the NPC ones updating initially, but they are in place. Here's the full list

 

 

 

scn SexoutCountersSCRIPT

 

; new player counters

int numGVaginal

int numRVaginal

int numGAnal

int numRAnal

int numGOralM

int numGOralF

int numROral

 

; Companion counters

int CassNumGVaginal

int CassNumGAnal

int CassNumGOralM

int CassNumGOralF

int CassNumRVaginal

int CassNumRAnal

int CassNumROral

int CassNumRaper

int CassNumRaped

 

int BooneNumGVaginal

int BooneNumGAnal

int BooneNumGOralM

int BooneNumGOralF

int BooneNumRVaginal

int BooneNumRAnal

int BooneNumROral

int BooneNumRaper

int BooneNumRaped

 

int RexNumGVaginal

int RexNumGAnal

int RexNumGOralM

int RexNumGOralF

int RexNumRVaginal

int RexNumRAnal

int RexNumROral

int RexNumRaper

int RexNumRaped

 

int EDENumGVaginal

int EDENumGAnal

int EDENumGOralM

int EDENumGOralF

int EDENumRVaginal

int EDENumRAnal

int EDENumROral

int EDENumRaper

int EDENumRaped

 

int VeronicaNumGVaginal

int VeronicaNumGAnal

int VeronicaNumGOralM

int VeronicaNumGOralF

int VeronicaNumRVaginal

int VeronicaNumRAnal

int VeronicaNumROral

int VeronicaNumRaper

int VeronicaNumRaped

 

int LilyNumGVaginal

int LilyNumGAnal

int LilyNumGOralM

int LilyNumGOralF

int LilyNumRVaginal

int LilyNumRAnal

int LilyNumROral

int LilyNumRaper

int LilyNumRaped

 

int RaulNumGVaginal

int RaulNumGAnal

int RaulNumGOralM

int RaulNumGOralF

int RaulNumRVaginal

int RaulNumRAnal

int RaulNumROral

int RaulNumRaper

int RaulNumRaped

 

int ArcadeNumGVaginal

int ArcadeNumGAnal

int ArcadeNumGOralM

int ArcadeNumGOralF

int ArcadeNumRVaginal

int ArcadeNumRAnal

int ArcadeNumROral

int ArcadeNumRaper

int ArcadeNumRaped

 

int SunnyNumGVaginal

int SunnyNumGAnal

int SunnyNumGOralM

int SunnyNumGOralF

int SunnyNumRVaginal

int SunnyNumRAnal

int SunnyNumROral

int SunnyNumRaper

int SunnyNumRaped

 

int WillowNumGVaginal

int WillowNumGAnal

int WillowNumGOralM

int WillowNumGOralF

int WillowNumRVaginal

int WillowNumRAnal

int WillowNumROral

int WillowNumRaper

int WillowNumRaped

 

 

 

NumG... means times gave

NumR... means times received

Giving oral to males and females is tracked separately.

 

It's always bugged me that sexout doesn't care if you were the pitcher or the catcher for its counters. Those counters still exist and will behave exactly as before, but I plan to deprecate them by version 2.0.0 First release of this will be V0.0.1

 

 

Link to comment

Well you could do it like Sexus did' date=' make them as separate esp plugins that hook to the original , so you can choose which extra companions you want by activating different esp.

Its more work but it gives you the space to expand the mod to as much companion as you wish.[/quote']

Yeah that seems the normal way to do it, and maybe I'll go that way later when I'm ready get Sunny, Kirina & Willow knocked up :)

Link to comment

Right. If the mod isn't loaded' date=' I can't reference those other companions in the geck at all to check for them. If I load the mod, change the scripts, then unload the mod (or don't play with it loaded), it will crash the game just like adding a DLC mod crashes it if you don't have that DLC.

 

This MIGHT work. You wouldn't be able to tell anything from looking at the code, NVSE can print/display the real 'name' of a reference, though that's all it can do.

 

I'm thinking I'd add all the vanilla companions + Sunny, then add maybe 3-4 more generic sets of vars like:

NPC1numVaginal
NPC2numVaginal
NPC1numAnal
....

 

From there, I could also create a new formlist, call it SexoutCompanionFL for now.

 

During sex, I check to see if any of the involved parties are companions (in the PlayerFaction). If so, I add them to the formlist blindly. This will work since it silently discards duplicate entries.

 

THEN, I get the index of the NPC ref from the formlist. Follow that with a big if/ifelse/ifelse/... block that looks something like:

if 1 == idx
 set NPC1numVaginal to NPC1numVagional + 1
 ...
elseif 2 == idx
 set NPC2numVaginal to NPC2numVagional + 1
 ...
elseif...

 

That would do all of the tracking.

 

Now, how could other mods use that information? They really couldn't in a per-companion type of way, but they COULD do more 'generic' things with it. If NPC1numAnal or NPC2numRaped or whatever went over some value, you could get the refID for that companion from the formlist and then do something with it.

 

Do you think that would all end up being useful, or am I just wasting braincells and maybe time thinking about it? :)[/quote']

No it looks interesting, definately food for thought, will have to give that a go later.

Link to comment

Well, things were going well until yesterday afternoon. Somehow, changes I was making to enable 2p and 3p scenes caused the idle anims to no longer terminate for both players and NPCs.

 

I've tried half a dozen different methods including pickidle, playidle SexoutReset (copied from original sexout), and PlayGroup Idle 1. With and without delays of up to a second before issuing them, before or after removing the sexout tokens from the actors. Nothing seems to be doing the trick.

 

This is getting pretty frustrating! :P

 

After the scene ends, running 'inv' on the actor in the console shows all tokens removed. Running 'pickidle' looks like it's doing the right thing, but the idle doesn't actually change any more. Not for the player, not for the NPC.

Link to comment

If anyone has any insights, here's what it's currently doing (not working) in somewhat plain english.

 

The main script decides it's time to end, and gives each actor a SexoutAnimStop token and a GetDressed token. This token is unscripted. When the anim controller script on the actor sees this token it does the following:

 

1. Remove the animation counter tokens. These tokens are used in the idle animation conditions. 501 tokens in inventory is a requirement for animation 501, etc., same as old sexout.

 

2. Waits for a specified delay, right now set to half a second. This is in order to wait for the GetDressed token script to finish, which is working.

 

3. Removes the StopAnim token.

 

4. Removes the main sexout token (00SexoutActor)

 

5. If the involved actor is the player, issues these two commands:

- con_tfc (toggles the free cam back off)

- EnablePlayerControls

 

Code snippet for the curious. Note that all the debug output statements fire exactly as expected. This means the code is running; there's not some hidden error that's stopping the script. This is in the gamemode block.

 

The 'anim' value is already set to the count of animation tokens in inventory.

 

When this script is running, at the point sex is taking place, the following vars are set:

 

bWaiting = 1

bShutdownM = 0

fdelayed = 0

 

This runs in the GameMode block and is at the tippy top.

 

Begin GameMode
 set elapsed to GetSecondsPassed
 set anim to actor.GetItemCount SexoutAnimCounter
 if 1 == bShutdownM
   set fDelayed to fDelayed + elapsed
   if fDelayed >= Sexout.fDelayTimer
     set bShutdownM to 0
     PrintToConsole "SexoutAPS: Setting idle group"
     actor.playgroup Idle 1
     PrintToConsole "SexoutAPS: Removing self"
     RemoveMe
   endif
 elseif 1 == bWaiting
   if 1 == actor.GetItemCount SexoutAnimStop
     if 0 == fDelayed
       PrintToConsole "SexoutAPS: Removing anim counters."
       actor.RemoveItem SexoutAnimCounter anim 1
     endif

     set fDelayed to fDelayed + elapsed

     if fDelayed >= Sexout.fDelayTImer
       PrintToConsole "SexoutAPS: Removing stop token"
       actor.RemoveItem SexoutAnimStop 1 1
       PrintToConsole "SexoutAPS: Removing main token"
       actor.RemoveItem 00SexoutActor 1 1
       if actor == player
         PrintToConsole "SexoutAPS: player involved, resetting camera."
         con_tfc
         EnablePlayerControls
       endif
       set fDelayed to 0
       set bShutdownM to 1
       set bWaiting to 0
     endif
   endif
 endif

; more here, but its working right so not pasted.

End

Link to comment

Console output from above

SetConsoleOutputFilename >> 'console.txt'
tdt
Debug Text -> On
set "0c000ae2".actora to player
set actorA >> 0.00
set "0c000ae2".anim to 101
set Anim >> 101.00
player.cios 0c000ae3
SexoutBES: running
SexoutBES: deduped actor list
SexoutBES: actor A: Wyoming
SexoutBES: actor B: 
SexoutBES: actor C: 
SexoutBES: normalized actor list
SexoutBES: actor A: Wyoming
SexoutBES: actor B: 
SexoutBES: actor C: 
SexoutBES: spinlocking actorA
SexoutBES: Undressing actorA
SexoutBES: adding anim tokens to Wyoming
SexoutUDT: actor = Wyoming
SexoutUDT: armor = Special Leather Armor
SexoutUDT: weapon = Marksman Carbine
SexoutUDT: Removing armor
SexoutUDT: Removing weapon
SexoutAPS: Wyoming got token.
SexoutAPS: Wyoming is an actor.
SexoutAPS: INIT token for Wyoming
SexoutAPS: player involved, will use camera.
SexoutAPS: Checking position ID
SexoutAPS: Setting distance
SexoutAPS: Positioning actor
SexoutAPS: GameMode INIT complete.
SexoutBES: Timer expired...
SexoutBES: ...telling actors to get dressed.
SexoutBES: Told actorA to get dressed.
SexoutAPS: Removing anim counters.
SexoutBES: dispelling self.
SexoutAPS: Removing stop token
SexoutAPS: Removing main token
SexoutAPS: player involved, resetting camera.
SexoutAPS: Setting idle group
SexoutAPS: Removing self
SexoutUDT: Dressing actor Wyoming
SexoutUDT: equipping Special Leather Armor
SexoutUDT: equipping Marksman Carbine
SexoutUDT: Removing self!
SexoutUDT: Dupe token removing self.

 

The different suffixes are different scripts.

 

BES: BaseEffectScript (the SexoutBegin spell you CIOS)

UDT: The undress (and redress) token.

APS: The script I'm having trouble with, AnimPosition

 

None of the other tokens (00SexoutActor, SexoutAnimStop, SexoutAnimCounter) are scripted.

Link to comment

How is the calling reference compared the original sexout ?? any special way of calling tokens now ???

 

That is a little different than it was in the original. In the original, start and stop sex calls were done through additional spells, called by the token item scripts. I am doing them from the token scripts directly.

 

As you can see in the snippet, for the idle calls etc. I am directly referencing the actor though, which was/is set by GetContainer.

 

It *was* "working" this way yesterday morning. In that version I was using two tokens for the animation picker/controller, the same way I do with the undress token; give them the first token to undress them, and give them a second token to reset/get dressed.

 

I say working because, mostly, the animation was stopping correctly. It was getting cumbersome (and buggy) having all this code checking to make sure that there were 1 or 2 tokens, and making sure they were removed in the right order when the 2nd one was added, so I switched to a new token type for the animation picker stop (called SexoutAnimStop) which is not a scripted item, and the main anim picker script just watches for this token instead.

 

This ensures there is only one anim picker item in the actors inventory, ever, so I don't have to add all kinds of checks for the 2nd token.

 

Does that answer what you were asking, or did I misread your question?

 

There are a bunch of caveats in the wiki for using PlayIdle on the player (must be in 3rd person, must happen in the same frame the effect started, etc.), which is how sexout does it, and why I've been trying to get it to work either with no PlayIdle calls, instead trying to use pickidle or playgroup.

 

I think that, in sexout, is the source of some of the bugs. The PlayIdle call on a player won't work if the player has changed their camera back to 1st person before it's called, or if there is a lot going on to the point that the script doesn't finish running in a single frame.

Link to comment

Realized I had the con_tfc and playgroup in the wrong order according to the geck wiki, so I swapped them, no help.

 

What happens is just the wrong idle is playing -- the sex anim keeps going if you stay still. You can still run around, walk, etc., but as soon as you stop, the sex anim takes over again.

 

So when this happened again, I went into the console and tried all kinds of combinations of pickidle and playgroup idle 1, with and without switching the ufo cam off and on, to no effect.

 

Taking a weapon out and putting it away reset the anim properly.

 

Seriously.. what's going on here. There must be something simple I'm overlooking.

Link to comment

OK, with that issue straightened out, getting much closer now. 2p and 3p actors are moving properly into the correct position and pointing the right way regardless of which one of them is the player. This is important, as I'm trying to move the player as little as possible.

 

Anims are working correctly.

 

TODO:

- Make final position adjustments on a per-anim basis.

 

- Get sounds in.

 

- Add all the other anims. Still only have the masturbation ones in place, but setting 2 or 3 actors results in them 'lining up' properly with one another, facing the right way, and all running the wanking anim.

 

The default facing is: A -> <- B <- C (as described in an earlier post).

A faces B, B faces A, C faces B.

 

Demo should be available pretty soon!

Link to comment

Sorry to disappoint (I know, I'm a huge jerk) but I don't think this is going to make it out this weekend after all. I spent too much time hunting down stupid bugs only to get to a point that I thought I'd be at by Friday night.

 

The core is *mostly* working now for 1p and 2p anims. It should work fine for 3p but I haven't added any yet.

 

There is a bug that is only affecting the player where after the first time sexout is run on them, it won't run again (the idle picker, again -- calling pickidle in console DOES fix it, so it must be a timing issue). I need to fix this before even an alpha upload, obviously.

 

The bigger issue is the total mess that the .kf files are in. I need to go through the existing sexout ESM and note all the pairs and their positions with the filenames, then I'm going to reorganize the files and include a new datapack with the download.

 

I will make sure the new data pack structure does not interfere with those already there, which means files will be duplicated in different directories. This will be a single download structured to be FOMM friendly.

 

One anim after another is a chore to hook up as I don't know which ones belong together, what their names are supposed to mean, etc. I need to fix that before I can continue adding them in.

 

The good news is that overall, everything appears to be working properly or with minor issues like this. The first 2p blowjob anim is in and working fine. When I went to add the first doggy style, I realized just how big of a mess the file organization is.

 

I have a question for Donkey in the anims thread.

 

Other good news: while working on all this, I think I've found a way to split up the existing ESM script in a way that could fix the script size issue pretty easily. If this ESM doesn't get itself straightened out, I may just do that instead.

 

Modifications would have to be made to support 3p, but I think I can do that pretty easily too.

Link to comment

The joys of software development and developing after someone else.

 

Just one thing after another bro. :)

 

I think I fixed the do-it-again issue for the player, got the anim file names from sexout for spoon, standing doggy, kneeling doggy, the first missionary and cowgirl, lotus, centaur, supermutant, deathclaw, and dog.

 

The first few are hooked up and working.

 

However now that the do-it-again is fixed, it created another issue. Positioning is not working right on the 2nd call. Again only affecting the anim if the player is involved, so I must be doing something goofy.

Link to comment

Got repeats fixed for the player.

 

hot NPC on NPC action is having alignment issues though.

 

Alignment is all fixed up. I gave up on my dream of not ever moving the player. Seemed like a good idea during testing, since I was starting sex with people far away, but I realized that in actual use, it will not be triggered at long distance by any respectable modder.

 

The code to do it is simple and easy in the original, but becomes a real pain when supporting three actors. So, instead, actorB is now the anchor around which A and C revolve.

 

For *most* sexouters, this will be fine anyway, since actorB is also the default position for the female in all the animations.

 

Only problem I'm having right now is that in NPC on NPC action, they are still "sliding apart" for some reason. For example, in the spoon animation, it works perfectly when the player is involved. If it's setup between two NPCs, once they start, they will just kind of drift a little ways apart.

 

I think they are colliding and the engine is trying to 'fix it'. Not sure yet how to turn that behavior off.

Link to comment

Finished cataloging all the existing (used) anims. Here's a CSV file for those interested. 6 columns, first row is a header:

- old anim #

- position name/description/creature

- male actor .kf file

- female actor .kf file

- creature .kf file OR description of MF positions

- prop used (dog dick, wrench, etc)

 

For the .kf files, if they're under the players idle anims _male directory, I left that part off, since most are there. If the .kf exists outside that directory, then the full path (from models) is included.

 

If nothing else, looking at this file will help you all understand why I have to organize this and why this is taking so long.

 

There are many unused animations as well, for example, XXXAnims has a bunch of unused files that are good for a laugh if you view them in the GECK (AttackPower_*.kf).

 

Today I'm going to try to hook up all the existing used anims and then put a test file (ESP + Anims) up for download. I will not be releasing as an ESM until I've tested it with the existing sexout-using ESPs and am satisfied that, at the least, it's not crashing them. Truth be told, this may not even be possible without re-saving them. Depends on if the ESPs reference the sexout stuff by name or by FormID. I have a sinking feeling it's the latter.

 

If so, I'm going to have to backtrack to my original plan and start with the existing ESM, deleting everything I don't use, and rewriting all the scripts. Not as bad as it sounds, I save all my scripts to text files and paste them into the GECK anyway since the editor sucks. This will ensure everything I don't delete keeps the same FormID.

 

 

Link to comment

Seems like it's going to be too much work to get the FormID issue handled between the new version and all the mods using it, so I'm going back to plan A after all.

 

This should result in an earlier beta release though, since it gets rid of some work I was going to have to duplicate from the original like props and sounds. I'm also going to leave the existing animation structure alone initially.

 

The things I've already said won't work, or won't work as before, still remain true; No sex doctor, no condoms, no STDs, etc. Counters will be there for these things to avoid scripts breaking, but they will not actually be tracked in the ESM.

 

MIGHT be able to get a beta out today, doing it this way. We'll see.

 

I will be leaving ALL the old sexout items in place for now, however they will be de-scripted. This will help ease the transition; ESPs that rely on them shouldn't crash, but they may well no longer work properly.

 

I expect the # of ESPs out there using sexout that are using "internal" sexout items is pretty low though; most just use the settings before calling BeginSexout, and check for the 00SexoutActor token which will remain.

Link to comment

On third thought, how about plan C.

 

I'm just going to leave everything intact and functional, and create all new stuff in the existing ESM. There will be a new spell; CIOS SexoutNGBegin. The critical vars will be accessed through Sexout, with new non-critical ones (like callbacks) being placed in SexoutNG.

 

Deleting anything is causing formIDs to get reused, and since they're assigned in the order the things were created in the GECK, this can cause all kinds of problems, so nothing is getting deleted.

 

Should have just done that to begin with. :P

 

This should allow a much smoother transition, though the ESP is going to increase in size by 50% or so. Eventually once all the ESPs are migrated to the new version, old stuff can start getting removed.

Link to comment

sounds good man' date=' why change what you already know. :)

[/quote']

 

I really just wanted a 'clean slate' but I think doing that is going to be too much work for the modders and anger for the players during the first few releases when bugs are being worked out, so for now, just leaving all the legacy stuff in there will be fine.

 

I've finished up moving everything over, it gets pretty painless once you've done it a dozen or so times.. :@

 

Now back to the tedious work of reorganizing the .kf files into something that doesn't make me feel like smashing my monitor to bits. I understand why they are this way and how they got this way -- the never ending battle with organically growing software, but it's time to clean things up a bit. :)

 

 

Link to comment

sounds good man' date=' why change what you already know. :)

[/quote']

 

I really just wanted a 'clean slate' but I think doing that is going to be too much work for the modders and anger for the players during the first few releases when bugs are being worked out, so for now, just leaving all the legacy stuff in there will be fine.

 

I've finished up moving everything over, it gets pretty painless once you've done it a dozen or so times.. :@

 

Now back to the tedious work of reorganizing the .kf files into something that doesn't make me feel like smashing my monitor to bits. I understand why they are this way and how they got this way -- the never ending battle with organically growing software, but it's time to clean things up a bit. :)

 

 

 

If I have an encounter with a somewhat tedious task, I do the British thing:

 

Tut about it

Query about other solutions

 

Then drink tea.

Then more tea.

 

I'm not very productive.

Link to comment

Archived

This topic is now archived and is 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