Jump to content

Recommended Posts

Posted
7 hours ago, dagobaking said:

@Flashy (JoeR)

 

So, I now only have the walk package and no wait for the player. But, NPC AI gets broken like it used to. Extremely odd. Now, I can turn Aggro Radius on or off and it has no effect. Broken AI either way.

 

Here is the code that initiates the walk scene:


        AAF_PlayerWalkToAndWaitQuest.Stop()
        AAF_PlayerWalkToAndWaitQuest.Start()

        ReferenceAlias actorAlias = AAF_PlayerWalkToAndWaitQuest.GetAlias(0) as ReferenceAlias
        ReferenceAlias markerAlias = AAF_PlayerWalkToAndWaitQuest.GetAlias(1) as ReferenceAlias

        actorAlias.ForceREFTo(targetActor)
        markerAlias.ForceREFTo(walkMarker)
        
        AAF_PlayerWalkToAndWaitScene.ForceStart()
        
        Game.SetPlayerAIDriven()

If I comment out the ForceStart() line, I can essentially run all of the code except for starting the walk. And the AI remains ok. So, the problem somehow revolves around starting that scene.

 

Tomorrow I'm going to try doing away with scenes for the PC and handling the travel package with a spell.

Also, try the suggestion of dropping the quest priority, if you end up having to keep the player quest that is, to 90. This way it shouldnt conflict with other mods that set priority of player quests to 100.

Posted

Morning all,

 

I am now beginning to create the ESP for my CSA test mod that will use AAF natively. This is going to be an all-day affair, so I shouldn't expect any builds to appear today - at least not before the early evening, though I am more inclined to believe an actionable mod wont be available for you to test until tomorrow.

 

Stay tuned!

Posted

@dagobakingSince you've kind of already given me carte blanche to add code to the mod, Id like to modify the API somewhat - not change it, but add to it so that calling the QuickScene function can be accomplished as a global function with a single line of code for external modders, rather than a large chunk of code. I'll work on this and send you the modified API later today.

 

With this:

 

Function QuickScene(Actor[] actors, Float duration = -1.0, Bool preventFurniture = False,  Actor focusActor = None, Idle[] customIdles = None)

 

In what order do the actors populate the Actor[] var? Is there a preferred order for player and NPCs? Or preferred order for driver/receiver? How is this determined? For the purposes of creating the new API call.

Posted

UPDATE: Though this is more geared towards modders (like me) who wish to natively work with the AAF API, I will provide it here as a resource and @dagobakingcan add it to his tutorial for making mods that use AAF.

 

AAF:AAF_MainQuestScript Main_Events

 

Function LoadAAF()
    Quest AAF_MainQuest = Game.GetFormFromFile(0x00000F99, "AAF.esp") as Quest
    If !AAF_MainQuest
        Debug.Notification("AAF appears to not be installed.")
        Return
    Else
        Main_Events = AAF_MainQuest as AAF:AAF_MainQuestScript
        RegisterForCustomEvent(Main_Events, "OnAnimationStart")
        RegisterForCustomEvent(Main_Events, "OnAnimationChange")
        RegisterForCustomEvent(Main_Events, "OnAnimationStop")
    Endif
EndFunction

 

(The next two are ONLY to be used if using Reference Alias Scripts)

Event OnInit()

     LoadAAF()

EndEvent

 

Event OnPlayerLoadGame()

     LoadAAF()

EndEvent

 

(These two are ONLY to be used if using main Quest Scripts)

Event OnQuestInit()

     RegisterForRemoteEvent(Game.GetPlayer(), "OnPlayerLoadGame")

     LoadAAF()

EndEvent

 

Event Actor.OnPlayerLoadGame()

     LoadAAF()

EndEvent

 

This function will detect the presence of AAF and then register the calling script for the three animation events, so that we, modders, can do things based on start, change and end states of the animations that play. Much like fourplay used to do. And trust me, this is not simply repurposing something from fourplay that has no use - without these events, things like pregnancy mods, or RSE's CSA or Abductions or any of the approaches, can simply never work. This is ABSOLUTELY REQUIRED for modders.

Posted

The new API I am working on for modders functions as this, within the AAF_API source:

 

; //=----> JOER EDIT BEGINS HERE <----=\\

AAF_API Function GetScript() Global
    return (Game.GetFormFromFile(0x00000F99, "AAF.esp") as Quest) as AAF_API
EndFunction

; //=----> JOER EDIT ENDS HERE <----=\\

 

What this will allow modders to do is to simply call a quick scene with one line of code, aside from the requisite building of the vars that need to pass to the function. Example, if two actors are being sent to AAF for animated sex scene, you would call AAF as this (note this is called from some mod or other's script).

 

AAF:AAF_API.GetScript().QuickScene(akArgs)

 

To build akArgs is what I am currently working on, but the vars break down as this:

 

Var [] akArgs = new Var[5]

akArgs[0] is the array of actors to send for animation

akArgs[1] is the duration of the animated scene(s), expressed as a float

akArgs[2] is a boolean (true or false) to allow or disallow furniture

akArgs[3] is the actor to focus on (not sure what this means precisely, if this is the giver or what - needs clarification)

akArgs[4] is the list of idle animations to play - assuming to allow for custom choice of anim to play

 

akArgs[0] is what I am currently looking into - how to create an array of actors and then inject that array of actors into this array, which is not as simple as it sounds.

 

More to follow. I know this seems useless information for most of you, but it is really required for us modders - without these things out there to be found, noone will ever be able to mod for AAF directly.

 

So the API call is a little more complicated than it appeared above, but Ive got it sorted now, mostly.

 

                Actor[] Actors = New Actor [2]
                Actors[0] = PlayerREF
                Actors[1] = Rapist
                AAF:AAF_API.GetScript().QuickScene(Actors, 60.0, false, PlayerREF)

 

You need to build the array of actors to send to the global QuickScene function. The problem I was facing was the akArgs[0] would not accept the array of actors into it and it would not pass this information to the API as the types mismatched. But using the above, where I array the actors to send and then also specify the rest of the functions expected values works.

 

@dagobaking- the idle array, arg[5], if that is not specified in a call, what occurs? Does AAF just randomly assign an anim to play? If I build an array to pass to this var, which is a list of idles to play, is it correct that this means a modder can stipulate a playlist of anims and this is honored by AAF?

 

Also, is there a var somewhere I am not seeing that allows us to stipulate an actor as a victim and have the different facial archetypes to play, as fourplay did when an actor was cast as a rape victim for example? This caused the aggressive anims to play and changed the receivers face to be 'in pain', 'angry', etc.

 

 

Posted
7 hours ago, Phelps1247 said:

Attempting to activate sex through the menu during combat results in the clone running in place and the partner playing the animation normally but is humping air.

 

Attempting to use TFC during a sex scene activated by the menu totally works but fails to give my character back after hitting end, sticking me with what seems to the original character, stuck in a first person view with no way out, no weapons, unable to activate the pipboy and the clone having disappeared.

 

I haven't tried it but I'm guessing this wreaks havoc with family planning since you're using a clone too? That would in theory result in the clone being pregnant, right? But they don't exist anymore so technically results in nothing.

 

At least the debug stuff isn't stuck on screen anymore. :smiley:

This will not affect family planning and other mods. To outside mods, it will still reference the player character and they will not be aware that the body double existed. Except that I may add a way to get a reference to the body double in case an outside mod wants to do something to them during the scene.

 

The other issues I would need more info to understand. What settings are you using? If you are using TFC then you are maybe also disabling flycam?

7 hours ago, tjuebussen said:

Any progres on making a fix so this will work with 1.94? 

Not currently. I'm not certain that it doesn't work with it if some adjustments are made to the versions in settings for required plugins, etc.

2 hours ago, artagon96 said:

i have a litle problem cos animation dont working and i dont know what to do 

Need more info to help you.

2 hours ago, Flashy (JoeR) said:

Also, try the suggestion of dropping the quest priority, if you end up having to keep the player quest that is, to 90. This way it shouldnt conflict with other mods that set priority of player quests to 100.

Will probably do that. Is that what FourPlay used? I thought they were also at 100.

 

The issue I was referring to though did not involve any other mods. AAF was breaking all NPC AI by itself. But, I did fix that last night by making the player character package have zero flags. From memory, there is a package or two like that in FourPlay. So, this might actually be the final fix for RSE compatibility. It does fix the other broken NPC AI bug as well.

 

I will post that version in the next few minutes.

2 hours ago, Flashy (JoeR) said:

Morning all,

 

I am now beginning to create the ESP for my CSA test mod that will use AAF natively. This is going to be an all-day affair, so I shouldn't expect any builds to appear today - at least not before the early evening, though I am more inclined to believe an actionable mod wont be available for you to test until tomorrow.

 

Stay tuned!

Great news! Looking forward to it!

1 hour ago, Flashy (JoeR) said:

@dagobakingSince you've kind of already given me carte blanche to add code to the mod, Id like to modify the API somewhat - not change it, but add to it so that calling the QuickScene function can be accomplished as a global function with a single line of code for external modders, rather than a large chunk of code. I'll work on this and send you the modified API later today.

 

With this:

 

Function QuickScene(Actor[] actors, Float duration = -1.0, Bool preventFurniture = False,  Actor focusActor = None, Idle[] customIdles = None)

 

In what order do the actors populate the Actor[] var? Is there a preferred order for player and NPCs? Or preferred order for driver/receiver? How is this determined? For the purposes of creating the new API call.

Sounds good. The current API is essentially a placeholder. I put the bare minimum in there for it to work with the FourPlay Proxy. I did not intend for QuickScene to remain exactly as it was and I didn't even intend for that to be the main scene creation function. While it may be useful to have a light function to quickly create scenes with minimal inputs, I always planned to make a more complete function (or functions) that are structured differently.

 

Being able to run globally with little set-up is a great improvement. I am all for that.

 

I need to revisit the code that accepts the data from the QuickScene function. It is behind where the functionality is in the wizard. I will prioritize doing that this weekend.

 

The order of the actors in the array CAN matter. But, AAF first populates the animations based on info it can find in the XML. So, if genders or races are designated there, it switches the actors into the right roles. If there is nothing in the XML that tells AAF how to populate the animations, then it falls back to just using the order it was given. First actor in the array gets put into the 0 actor positions, second into 1, etc. This works on a sub-level as well. For example, if there are 1 female and 3 males in an animation, the female in the array will be put into the 1 female spot and then the 3 males will be put in in the order that they appear in the array.

1 hour ago, Flashy (JoeR) said:

UPDATE: Though this is more geared towards modders (like me) who wish to natively work with the AAF API, I will provide it here as a resource and @dagobakingcan add it to his tutorial for making mods that use AAF.

 

AAF:AAF_MainQuestScript Main_Events

 

Function LoadAAF()
    Quest AAF_MainQuest = Game.GetFormFromFile(0x00000F99, "AAF.esp") as Quest
    If !AAF_MainQuest
        Debug.Notification("AAF appears to not be installed.")
        Return
    Else
        Main_Events = AAF_MainQuest as AAF:AAF_MainQuestScript
        RegisterForCustomEvent(Main_Events, "OnAnimationStart")
        RegisterForCustomEvent(Main_Events, "OnAnimationChange")
        RegisterForCustomEvent(Main_Events, "OnAnimationStop")
    Endif
EndFunction

 

(The next two are ONLY to be used if using Reference Alias Scripts)

Event OnInit()

     LoadAAF()

EndEvent

 

Event OnPlayerLoadGame()

     LoadAAF()

EndEvent

 

(These two are ONLY to be used if using main Quest Scripts)

Event OnQuestInit()

     RegisterForRemoteEvent(Game.GetPlayer(), "OnPlayerLoadGame")

     LoadAAF()

EndEvent

 

Event Actor.OnPlayerLoadGame()

     LoadAAF()

EndEvent

 

This function will detect the presence of AAF and then register the calling script for the three animation events, so that we, modders, can do things based on start, change and end states of the animations that play. Much like fourplay used to do. And trust me, this is not simply repurposing something from fourplay that has no use - without these events, things like pregnancy mods, or RSE's CSA or Abductions or any of the approaches, can simply never work. This is ABSOLUTELY REQUIRED for modders.

Thank you. I will start some modding guide docs on my side and keep track of this stuff. I may make some small semantics edits to these. But, will most likely incorporate them nearly as-is.

 

You mention using the main Quest Scripts. My intention is to never have a circumstance where anyone needs to use the main scripts directly. If there is some new functionality that someone is trying to reach the main quest for, I want to instead make a new function for them on the API and have the API reach the main quest as needed. That is an important architecture design to separate the internal code from the API layer where the code for interacting with modders inputs/requests is.

43 minutes ago, Flashy (JoeR) said:

The new API I am working on for modders functions as this, within the AAF_API source:

 

; //=----> JOER EDIT BEGINS HERE <----=\\

AAF_API Function GetScript() Global
    return (Game.GetFormFromFile(0x00000F99, "AAF.esp") as Quest) as AAF_API
EndFunction

; //=----> JOER EDIT ENDS HERE <----=\\

 

What this will allow modders to do is to simply call a quick scene with one line of code, aside from the requisite building of the vars that need to pass to the function. Example, if two actors are being sent to AAF for animated sex scene, you would call AAF as this (note this is called from some mod or other's script).

 

AAF:AAF_API.GetScript().QuickScene(akArgs)

 

To build akArgs is what I am currently working on, but the vars break down as this:

 

Var [] akArgs = new Var[5]

akArgs[0] is the array of actors to send for animation

akArgs[1] is the duration of the animated scene(s), expressed as a float

akArgs[2] is a boolean (true or false) to allow or disallow furniture

akArgs[3] is the actor to focus on (not sure what this means precisely, if this is the giver or what - needs clarification)

akArgs[4] is the list of idle animations to play - assuming to allow for custom choice of anim to play

 

akArgs[0] is what I am currently looking into - how to create an array of actors and then inject that array of actors into this array, which is not as simple as it sounds.

 

More to follow. I know this seems useless information for most of you, but it is really required for us modders - without these things out there to be found, noone will ever be able to mod for AAF directly.

 

So the API call is a little more complicated than it appeared above, but Ive got it sorted now, mostly.

 

                Actor[] Actors = New Actor [2]
                Actors[0] = PlayerREF
                Actors[1] = Rapist
                AAF:AAF_API.GetScript().QuickScene(Actors, 60.0, false, PlayerREF)

 

You need to build the array of actors to send to the global QuickScene function. The problem I was facing was the akArgs[0] would not accept the array of actors into it and it would not pass this information to the API as the types mismatched. But using the above, where I array the actors to send and then also specify the rest of the functions expected values works.

 

@dagobaking- the idle array, arg[5], if that is not specified in a call, what occurs? Does AAF just randomly assign an anim to play? If I build an array to pass to this var, which is a list of idles to play, is it correct that this means a modder can stipulate a playlist of anims and this is honored by AAF?

 

Also, is there a var somewhere I am not seeing that allows us to stipulate an actor as a victim and have the different facial archetypes to play, as fourplay did when an actor was cast as a rape victim for example? This caused the aggressive anims to play and changed the receivers face to be 'in pain', 'angry', etc.

 

 

The improved way to call the script with less code is great. Thank you.

 

akArgs[3] was simply a way to mirror what was in the FourPlay function (designating a victim to presumably apply certain expressions to). Most likely, this input should be removed as AAF will handle this type of thing very differently. I put it in there temporarily to use more as a flag. ie. If it is populated use these expressions, if not use these other ones. However, I have not gotten to adding expression handling yet at all. Even conceptually, I am still thinking that through. So, for the time being, it may make sense to just remove this and ignore expressions altogether until they are added (shouldn't be long now because they are dependent on actions which were recently finished).

 

akArgs[4] was also a way to mirror what was in FourPlay. This was intended to be a list of raw idles just like the FourPlay function. And it is not currently hooked up to work. In fact it throws an error message if you try to. To my knowledge, no FourPlay dependent mods are actually using that functionality. So, it might just be removed as well.

 

AAF will definitely allow a lot of choice in what animations to play. But, it would never be with direct idles. Only direct "positions". MAYBE (and most likely not) direct animations. So, it would be passing in the names of positions to play (strings) rather than built out idle forms. In addition to that, there will be a lot of functions to play a position based on a tag. So, "any position with the aggressive tag" or "any position with the oral tag excluding any position with the aggressive tag" etc.

 

For your second assessment of the actor array, things could line up that way depending on the animations being played. But, they might not. It is not currently a rule that the first should be player ref and second a rapist. The first could be a romantic interest and the second the player ref. The idea is that the nature of the animations to play is more dependent on how the animation provider defines them in the XML. So, for your purposes, you could say that for AAF animation mod packs to work properly with RSE, they need to add the right tags to their animations (maybe "aggressive_male", "aggressive_female", etc.). Then, in the call that you make to start the scene, you send in which tag needs to play along with the actor array. AAF will then put them all in the right place and will only choose from animations where it makes sense with what you want to happen. Make sense?

 

It is possible that the current QuickScene function only sees the first two array entries (again, was just trying to make enough functionality for FourPlay). I will check that later today and expand if necessary.

 

Yes. The current QuickScene wouldn't work to send in one array of all arguments. I might be able to modify it to accept either format. But, I have been thinking that it might be a case for using a Struct. So, you have an AAF_Scene struct that has your various scene settings, actors, etc. You build that and then the function expects one populated Struct as an argument. I know that I will almost certainly use Structs in that way for sending data back out of AAF in order to standardize things.

 

Yes. Arg 5 currently does nothing. It always plays a random position right now. BUT, yes, being able to send in a list of positions to play in order (or randomly) is easily possible. The functionality is already there through the XML. You can make animationGroup xml and it plays animations as stages through the wizard. Constructing the same thing through an array of strings in a function would be easy to do.

 

Regarding expressions, not currently. Expressions are not set up at all yet. I have been building functionality that they will depend on. So, getting closer. I have to think about how I can accommodate the ways expressions were used because the way I am implementing them is quite different in AAF. In AAF, it will actually read what is happening in an animation, speed, etc. and change the expressions based on that (rather than a function just telling the system what expression to use). This has the advantage of both making expressions more dynamic/responsive to animations and also requiring less repetitive configuration of them for every scene. That said, there does need to be a way to "flavor" the expressions based on context. So, if the actor is not supposed to be as happy about it they dont look happy. This will probably be controlled by tags. So, if an animation is tagged as aggressive, it plays one set of expressions, otherwise uses another default set of expressions.

 

 

Posted

First, the animations look great with no Jittering - very promising.  But the bad news, Chosen Clue's Family Planning Enhanced.  I haven't seen a single pregnancy of either Player or NPC since I've been using AAF and the Fourplay Proxy.  At first I thought it was just random numbers since I've been doing a lot of game restarts and just doing quick tests, and with the default fertility settings  it takes a fair amount of gameplay to see a pregnancy.  A few days ago I decided to check on it and set the chance of a fertile day to 99 percent and increased the base fertility chance.  With those settings a pregnancy is not assured, but should be very likely within a few game days of play time.  So far no pregnancy.  I'm wondering if Family Planning is listening for an event that it's not seeing.  It seems to me like VinApplyEffects.pex might contain a solution.  Pretty sure that is where the "cum" shaders that are applied on male orgasm are applied and it's possible this is the event that Family Planning is listening for.  That script is present in the Fourplay Patch 2.6 download but not in Fourplay itself.

 

If anyone has actually seen a pregnancy using AAF feel free to speak up and say so.  I'll feel foolish and keep trying to "get" pregnant.

Posted

I will reference the rest later, for followup but this part I felt a need to address:

 

You mention using the main Quest Scripts. My intention is to never have a circumstance where anyone needs to use the main scripts directly. If there is some new functionality that someone is trying to reach the main quest for, I want to instead make a new function for them on the API and have the API reach the main quest as needed. That is an important architecture design to separate the internal code from the API layer where the code for interacting with modders inputs/requests is.

 

Noone would be using the main scripts. All that does is register the script for the events coming from your mod - they need to be in there, or some derivation therein so that we, mod authors, can tailor our mod scripts to enact things on Start, Change and End. Without those events, we cant know when to make mod-based updates to variables or factions or to enact an outcome. And they need to be how they are, because the actual event is coming from the main script. But if you feel that you need/can modify that, by all means go for it, just I beg you to give us a means to detect Start, Change and End and act upon those in our mods. :smile:

Posted
1 minute ago, Sagebrush61 said:

First, the animations look great with no Jittering - very promising.  But the bad news, Chosen Clue's Family Planning Enhanced.  I haven't seen a single pregnancy of either Player or NPC since I've been using AAF and the Fourplay Proxy.  At first I thought it was just random numbers since I've been doing a lot of game restarts and just doing quick tests, and with the default fertility settings  it takes a fair amount of gameplay to see a pregnancy.  A few days ago I decided to check on it and set the chance of a fertile day to 99 percent and increased the base fertility chance.  With those settings a pregnancy is not assured, but should be very likely within a few game days of play time.  So far no pregnancy.  I'm wondering if Family Planning is listening for an event that it's not seeing.  It seems to me like VinApplyEffects.pex might contain a solution.  Pretty sure that is where the "cum" shaders that are applied on male orgasm are applied and it's possible this is the event that Family Planning is listening for.  That script is present in the Fourplay Patch 2.6 download but not in Fourplay itself.

 

If anyone has actually seen a pregnancy using AAF feel free to speak up and say so.  I'll feel foolish and keep trying to "get" pregnant.

Pregnancy wont work via FPE 2.x.

 

This said, once I have the API nailed down and approved and when Dagobaking finishes his end of it, we will then know better if we can simply make some edits. Personally, with what Ive got going on now, I can tell you that converting the original Family Planning, as written by Vinfamy, to be AAF compatible (100%) would be a snap and I would certainly undertake that - in fact, I plan to. But I wont touch FPE2 for that - its very complex, Chosen is a wizard and I simply cannot for the life of me follow the data flow from script to script.

Posted
9 minutes ago, Sagebrush61 said:

First, the animations look great with no Jittering - very promising.  But the bad news, Chosen Clue's Family Planning Enhanced.  I haven't seen a single pregnancy of either Player or NPC since I've been using AAF and the Fourplay Proxy.  At first I thought it was just random numbers since I've been doing a lot of game restarts and just doing quick tests, and with the default fertility settings  it takes a fair amount of gameplay to see a pregnancy.  A few days ago I decided to check on it and set the chance of a fertile day to 99 percent and increased the base fertility chance.  With those settings a pregnancy is not assured, but should be very likely within a few game days of play time.  So far no pregnancy.  I'm wondering if Family Planning is listening for an event that it's not seeing.  It seems to me like VinApplyEffects.pex might contain a solution.  Pretty sure that is where the "cum" shaders that are applied on male orgasm are applied and it's possible this is the event that Family Planning is listening for.  That script is present in the Fourplay Patch 2.6 download but not in Fourplay itself.

 

If anyone has actually seen a pregnancy using AAF feel free to speak up and say so.  I'll feel foolish and keep trying to "get" pregnant.

From what I've seen, FourPlay only sent out 3 different events. And AAF does send those out too. There is a parameter that gets sent out with those called "index". This was presumably a number associated with specific animations as they were hard-coded into FourPlay. And FPE might be using those numbers to determine which animations would naturally result in a pregnancy. The animations aren't hard-coded like that in AAF. So, I just faked that number, always sending back 5 (which could be a reference to the FourPlay back massage animation which of course never causes a pregnancy). I THINK that is the problem. But, there could be something else going on there.

 

I'll have to think of a fix that isn't too much of a hack... Probably adding a translator to the proxy that turns the existence of certain tags into numbers to send as index.

7 minutes ago, Flashy (JoeR) said:

I will reference the rest later, for followup but this part I felt a need to address:

 

You mention using the main Quest Scripts. My intention is to never have a circumstance where anyone needs to use the main scripts directly. If there is some new functionality that someone is trying to reach the main quest for, I want to instead make a new function for them on the API and have the API reach the main quest as needed. That is an important architecture design to separate the internal code from the API layer where the code for interacting with modders inputs/requests is.

 

Noone would be using the main scripts. All that does is register the script for the events coming from your mod - they need to be in there, or some derivation therein so that we, mod authors, can tailor our mod scripts to enact things on Start, Change and End. Without those events, we cant know when to make mod-based updates to variables or factions or to enact an outcome. And they need to be how they are, because the actual event is coming from the main script. But if you feel that you need/can modify that, by all means go for it, just I beg you to give us a means to detect Start, Change and End and act upon those in our mods. :smile:

Ah. I misunderstood. Yes. Events will definitely be used. But, they will be listened for and received from the API rather than the main quest. You can see in the API code that this is already happening. The main quest sends events over to the API and then the API sends the events out to any mods listening for them.

 

And the events that are there now are only the minimum needed to mirror fourplay. I intend to expand and add more events.

Posted

RSE CSA Mini:

 

The attached file includes ALL required files for this test version of RSE's CSA - albeit VERY stripped down and with no modifiable options. You simply surrender, as you always do in RSE, by lowering your weapon - hold in the button/key used to lower weapon for 2 seconds and then release it. What should happen is a-near immediate cessation of combat with all hostiles, the companion and yourself put into a non-combat state. Then a rapist will be selected and both you and that NPC will be sent to AAF for sex. Once sex concludes, you will be notified that in 60 seconds, hostility will resume and all active Ref Aliases will be cleared.

 

For this test, surrender will ONLY function on HUMAN hostiles. Any other race will simply tell you that surrender cannot find a suitable target rapist.

 

Note, god mode is enabled the moment you surrender and it is removed at the moment the sex animation ends. There are no blocks on controls, so you can move around. There are no packages forcing movement between yourself and the NPC, that will all be driven by AAF. If you decide to fight while animation is prepping and kill your attacker, this test build has no checks and balances in place to deal with that fact.

 

The core mission of this build is to see if the rapist is IMMEDIATELY hostile once the sex animation finishes playing, as it seems to be doing in full RSE (and which it should not do). You WANT to see the hostiles remain pacified for around 60 seconds once the animation ends. Any other outcome means the issue is not corrected in this mini-test and further work will need to be done to address and resolve the AAF/RSE conundrum.

 

And also, secondarily, to ensure the new API I built this morning is working. Since I am a 1.94 game player, I cannot test myself and as such will not be able to replicate any of the issues you may note.

 

Preamble:

  • Do NOT have four play installed at all.
  • Do NOT have RSE installed at all.
  • DO have AAF installed.
  • DO have this test mod installed, obviously.
  • Other than this, Bob is your uncle.

Caution: I make no promises that this will work, in part or in entirety. You install and test this at your own risk. The source code for the AAF_API that I modified is included as is the source code for the test CSA script, for your convenience. When asked to overwrite existing files for AAF, say YES.

 

RSE_AAF_CSATest_ALPHA.zip

Posted
13 hours ago, dagobaking said:

Let me know if you need more info.

Many thanks for the new version! I loved the new equipment feature!  :classic_wub:


Studying the files of the new version, and creating new files to test in the animations this way:

 

Strapon_actionData.xml, in that I created three new actions

 

<meta title="Strapon_actionData.xml" version="1.0" dataSet="action"/>
<defaults />

 <!--Strapon1-->
<action id="activity4">
    <self startEquipmentSet="addEquipmentStrapon" stopEquipmentSet="removeEquipmentStrapon">
    </self>
    <target swf="AAF_BasicRoundMeter.swf" x="1" y="7">
    </target>
</action>

 <!--Strapon2 UP-->
<action id="activity5">
    <self startEquipmentSet="addEquipmentStrapon2" stopEquipmentSet="removeEquipmentStrapon2">
    </self>
    <target swf="AAF_BasicRoundMeter.swf" x="1" y="7">
    </target>
</action>

 <!--Strapon3 Down-->
<action id="activity6">
    <self startEquipmentSet="addEquipmentStrapon3" stopEquipmentSet="removeEquipmentStrapon3">
    </self>
    <target swf="AAF_BasicRoundMeter.swf" x="1" y="7">
    </target>
</action>

 

Strapon_equipmentSetData.xml, in that I created three new equipments (I edited the meshes of the VIO_Strap-On.esp to have different positions)

 

<meta title="Strapon_equipmentSetData.xml" version="1.0" dataSet="equipmentSet"/>

<!-- Default attributes are applied to the addEquipment and removeEquipment nodes below if no conflicting attribute is set there. -->
<defaults source="VIO_Strap-On.esp"/>

<!--Strapon1-->
<equipmentSet id="addEquipmentStrapon"> 
    <condition isFemale="true>
        <addEquipment form="01000F9F"/>
    </condition>
</equipmentSet>

<equipmentSet id="removeEquipmentStrapon">
    <condition isFemale="true>
        <removeEquipment form="01000F9F"/>
    </condition>
</equipmentSet>

<!--Strapon2 UP-->
<equipmentSet id="addEquipmentStrapon2"> 
    <condition isFemale="true>
        <addEquipment form="01000FA0"/>
    </condition>
</equipmentSet>

<equipmentSet id="removeEquipmentStrapon2">
    <condition isFemale="true>
        <removeEquipment form="01000FA0"/>
    </condition>
</equipmentSet>

<!--Strapon3 DOWN-->
<equipmentSet id="addEquipmentStrapon3"> 
    <condition isFemale="true>
        <addEquipment form="0100173B"/>
    </condition>
</equipmentSet>

<equipmentSet id="removeEquipmentStrapon3">
    <condition isFemale="true>
        <removeEquipment form="0100173B"/>
    </condition>
</equipmentSet>

 

  and in Leito_animationData.xml, I edited the animations according to your example just by changing the activity

 

<animation id="LeitoAggressiveBlowjob" time="308">
    <actor>
        <idle form="0100B71E" id="LeitoAggressiveBlowjobF"/>
    </actor>
    <actor>
        <idle form="0100B71F" id="LeitoAggressiveBlowjobM"/>
        <value path="action" value="activity4" target="0" loop="true" from="1" to="0" steps="5" time="8.555"/>
    </actor>
</animation>

<animation id="LeitoAggressiveCarry" time="312">
    <actor>
        <idle form="01006367" id="LeitoAggressiveCarryF"/>
    </actor>
    <actor>
        <idle form="0100173C" id="LeitoAggressiveCarryM"/>
        <value path="morph" value="Erection Up" to="1"/>
        <value path="action" value="activity5" target="0" loop="true" from="1" to="0" steps="5" time="8.555"/>
    </actor>
</animation>

<animation id="LeitoAggressiveCowgirl" time="300">
    <actor>
        <idle form="0100B720" id="LeitoAggressiveCowgirlF"/>
    </actor>
    <actor>
        <idle form="0100B721" id="LeitoAggressiveCowgirlM"/>
        <value path="morph" value="Erection Down" to="0.4"/>
        <value path="action" value="activity6" target="0" loop="true" from="1" to="0" steps="5" time="8.555"/>
    </actor>
</animation>

 

and in the images are the results that I have achieved so far :smile:

 

Fallout4_2018_05_19_08_30_39.png

 

Fallout4_2018_05_19_10_41_04.png

 

 

Fallout4_2018_05_19_10_41_26.png

 

Fallout4_2018_05_19_14_36_10.png

 

Fallout4_2018_05_19_14_39_22.png

 

One thing I noticed is that the strapon during the loop goes off for a moment and reappears.  :confused:

I'm still unsure how to calculate the value of time and steps because I just copied the values from your example. :confused:

Posted

Other than Family Planning Enhanced seems no to work I'm having another problem. What could be causing 2 npc's or NPC and player to start the animations but suddenly one of them either male or female will suddenly stand up and watch you, NPC/NPC but if it's NPC/Player then it's the NPC which stands and looks at the camera?

Posted
16 minutes ago, Metroid00 said:

I'm still unsure how to calculate the value of time and steps because I just copied the values from your example. :confused:

Use hkxpack to "extract" an xml. In this xml you will see the time value. I got them but there is 168 values for all human hkx... You are welcom in this thread.

 

For this one it's 10.266666412353516

Posted

New Build.

 

## [Alpha 56] - 2018-05-19
### Fixed
- NPC AI after animations... AGAIN.
- Pip-Boy appearing when Pip-Pad is being used.

 

 

Posted
39 minutes ago, Metroid00 said:

One thing I noticed is that the strapon during the loop goes off for a moment and reappears.  :confused:

I'm still unsure how to calculate the value of time and steps because I just copied the values from your example. :confused:

Thank you for quickly implementing the new functionality! Great to see that it's all working.

 

Yes. At the end of the animation loop it basically stops (unequips) the action and then starts again before starting another loop. That causes the equipment disappearing thing. Its a known issue that I plan on fixing. Just doing so is a little more involved than it would seem.

 

Steps are just how many changes it will calculate on its way to the "to" goal. Currently, that only applies to the animated icon. So, if you give it 3 steps it will show the 0 position, wait, show a position at 50%, wait, show the position at the end of the animation. You want to modulate the number of steps a bit depending on how quick of an action it is. Too many steps packed together could cause performance issues. Too few steps spread out could look choppy. It depends a lot on the effect you are going for. There are things that can be done with the animated icons that this affects too. Like, if you know your way around Flash, you could make a 3 frame animation that covers the entire avatar and each frame has another sub-animation on it. So, it would work more like states than an x-ray animation.

 

"time" is really frames. I used the fraction because I was trying to match the pace of the animation icon with the pace of the animation. This takes some manual adjusting and testing to get right for each animation. And if the pace of the animation changes mid-animation, you will have to make multiple action statements in that animation and use a slightly different format for the node (includes a "start" parameter to tell it which frame to start each action).

32 minutes ago, Badtanker said:

Other than Family Planning Enhanced seems no to work I'm having another problem. What could be causing 2 npc's or NPC and player to start the animations but suddenly one of them either male or female will suddenly stand up and watch you, NPC/NPC but if it's NPC/Player then it's the NPC which stands and looks at the camera?

Hm. That sounds like some kind of combat alert kicking in.

Posted
5 hours ago, Flashy (JoeR) said:

UPDATE: Though this is more geared towards modders (like me) who wish to natively work with the AAF API, I will provide it here as a resource and @dagobakingcan add it to his tutorial for making mods that use AAF.

 

AAF:AAF_MainQuestScript Main_Events

 

Function LoadAAF()
    Quest AAF_MainQuest = Game.GetFormFromFile(0x00000F99, "AAF.esp") as Quest
    If !AAF_MainQuest
        Debug.Notification("AAF appears to not be installed.")
        Return
    Else
        Main_Events = AAF_MainQuest as AAF:AAF_MainQuestScript
        RegisterForCustomEvent(Main_Events, "OnAnimationStart")
        RegisterForCustomEvent(Main_Events, "OnAnimationChange")
        RegisterForCustomEvent(Main_Events, "OnAnimationStop")
    Endif
EndFunction

 

(The next two are ONLY to be used if using Reference Alias Scripts)

Event OnInit()

     LoadAAF()

EndEvent

 

Event OnPlayerLoadGame()

     LoadAAF()

EndEvent

 

(These two are ONLY to be used if using main Quest Scripts)

Event OnQuestInit()

     RegisterForRemoteEvent(Game.GetPlayer(), "OnPlayerLoadGame")

     LoadAAF()

EndEvent

 

Event Actor.OnPlayerLoadGame()

     LoadAAF()

EndEvent

 

This function will detect the presence of AAF and then register the calling script for the three animation events, so that we, modders, can do things based on start, change and end states of the animations that play. Much like fourplay used to do. And trust me, this is not simply repurposing something from fourplay that has no use - without these events, things like pregnancy mods, or RSE's CSA or Abductions or any of the approaches, can simply never work. This is ABSOLUTELY REQUIRED for modders.

Ok I tried this and it failed due to my noobness no doubt :smile:
Do I need to define Main_Events ? Or is it because I haven't installed AAF yet?

Screenshot (11).jpg

Posted

ok downloaded the new version and installed. animations are working pretty good. Only problem I had was I pressed my exit button and it came up Error something something and animations kept on going. I then reloaded the save and tried again going through the animations with nate and nora. It switch animations very slow then when I hit exit it said that animations were ending but after like 5 minutes I just reloaded save. I had move home, end and couple of others to my f1-f4 keys so I could have a home button and all.  Stipping before leaving vault works but now the 2 FP mods that I have had running previously FP_MagnoCUMgaudio, and FP_Attributes1.2.1 have seem to quit working. Sex em up works. Will check after I get out of the vault if stripping quits working like it did before.

Posted

Keeping track of guides and bug reports has become pretty unwieldy. So, I am working on a wiki and external issue reporting. Just FYI. Will post links soon.

Posted

Updated the mod description to include links to the wiki and issue tracking.

 

It is pretty light right now. But, I will expand on the wiki over time. Link here: https://bitbucket.org/dagobaking/advanced-animation-framework/wiki/Home

 

Please post bug reports and feature ideas/requests here: https://bitbucket.org/dagobaking/advanced-animation-framework/issues?status=new&status=open

 

Thank you!

Posted
3 hours ago, dagobaking said:

Thank you for quickly implementing the new functionality! Great to see that it's all working.

 

Yes. At the end of the animation loop it basically stops (unequips) the action and then starts again before starting another loop. That causes the equipment disappearing thing. Its a known issue that I plan on fixing. Just doing so is a little more involved than it would seem.

Got it. I was thinking that something I had set wrong was causing the disappearance of the strapon. :classic_tongue:

 

This is a small bug that for me does not interfere with the fun, so I can live with it. :smile:

3 hours ago, dagobaking said:

Steps are just how many changes it will calculate on its way to the "to" goal. Currently, that only applies to the animated icon. So, if you give it 3 steps it will show the 0 position, wait, show a position at 50%, wait, show the position at the end of the animation. You want to modulate the number of steps a bit depending on how quick of an action it is. Too many steps packed together could cause performance issues. Too few steps spread out could look choppy. It depends a lot on the effect you are going for. There are things that can be done with the animated icons that this affects too. Like, if you know your way around Flash, you could make a 3 frame animation that covers the entire avatar and each frame has another sub-animation on it. So, it would work more like states than an x-ray animation.

 

"time" is really frames. I used the fraction because I was trying to match the pace of the animation icon with the pace of the animation. This takes some manual adjusting and testing to get right for each animation. And if the pace of the animation changes mid-animation, you will have to make multiple action statements in that animation and use a slightly different format for the node (includes a "start" parameter to tell it which frame to start each action).

So this steps and time part does not interfere with npcs animation, but it's actually the time settings and frames of the flash amination that appears along with the equipment, correct?

 

I never moved with flash animation, but I'll try something to see what I get. :classic_biggrin:

 

Thanks for answering! :smile:

4 hours ago, Polistiro said:

Use hkxpack to "extract" an xml. In this xml you will see the time value. I got them but there is 168 values for all human hkx... You are welcom in this thread.

 

For this one it's 10.266666412353516

Thanks for answering, it clarified some questions I had! :smile:

 

And thank you to all of you who are helping me! :smile:

Posted
10 minutes ago, Metroid00 said:

 

So this steps and time part does not interfere with npcs animation, but it's actually the time settings and frames of the flash amination that appears along with the equipment, correct?

 

I never moved with flash animation, but I'll try something to see what I get. :classic_biggrin:

 

 

Exactly. The steps and time should be synced with the animation. But, it does not affect the game animation itself. Only the swf animation icon. BUT, in the future, AAF will also use this information to determine other things like which expressions to play and which sounds. In other words, one sound gets played if the action is going fast and another if its going slow.

 

Looking forward to seeing your flash animations. FWIW you can also make custom swf avatars for each race.

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