Jump to content

FNIS for Modders / FNIS 4.0 [WIP]


fore

Recommended Posts

 

Have you read the FNIS for modders' doc? That'S a must, even when I try to help you. If you don't understandd what you are doing you will not be able to deal with possible problems later.

 

Basically it is not that hard. You need to make an AnimFileList which contains a line like the following

aa mt_loco_forward 1 1_mt_walkforward.hkx 1_mt_walkforward.hkx 1_mt_walkforward.hkx  1_mt_runforward.hkx 1_mt_runforward.hkx

To activate this walk/run set you have to call

FNIS.set_AACondition(Game.GetPlayer(), "mt_loco_forward", "<your_mod_name>", 1, DebugLevel)

DebugLevel tells about the amount of information added to the Papyrus log. 4 is max (during your test), 1 is little (released mod)

 

Go back to default with

FNIS.set_AACondition(Game.GetPlayer(), "mt_loco_forward", "<your_mod_name>", 0, DebugLevel)

And at the start of your mod you should always check if the right FNIS version is installed and properly generated. Do this with the following. It also includes the check for SKSE, which you most likely will need.

bool isGenerated = FNIS.isGenerated()
string VersionToString = FNIS.VersionToString()
bool isVersionOK = (FNIS.VersionCompare( 5, 1, 0 ) >= 0)
bool isSKSE = (SKSE.GetVersionRelease() > 0)
if ! (isGenerated && isVersionOK && isSKSE)
   string out = "FNIS Sexy Move stopped with ERROR(s):"
   if ! isVersionOK
      out = out + "\n- FNIS version " + VersionToString + " older than required" 
   endif
   if ! isGenerated
      out = out + "\n- Last FNIS generation failed" 
   endif
   if ! isSKSE
      out = out + "\n- SKSE not started" 
   endif
   Debug.Messagebox(out)
   StartUpStatus = -1
   return
endif

 

 

 

 

 

 

 

I have read over the fnis for modders pdf multiple times and I'm stuck on the generate behavior file.

 

I'm getting this error:

 

ERROR(2011): OLD FNIS version? Wrong line in Animation List, line  0 (C:\Program Files (x86)\Steam\SteamApps\common\Skyrim\Data\meshes\actors\character\animations\aaDynamicAttachScriptMod\FNIS_aaDynamicAttachScriptMod_List.txt)

 

I have FNIS 5.2 installed using NMM, as well as the creature pack.  I have made sure the .esp file name is the same as the animation folder name and I have it correct in the animfilelist.txt. Also, the script file is compiling correctly within CK.

 

There's something about the way animations are listed in the animfilelist that I'm just not getting.

 

My animfilelist.txt is attached:

 

PS: Go Ducks.  (Mainly because I'm an Ohio State hater(should have been TCU))

FNIS_aaDynamicAttachScriptMod_List.txt

Link to comment

Oh, the line numbering is off by one.

 

You didn't follow the syntax for this command. "mt_loco_forward" is mandatory (only that is implemented yet), then any number from 1 to 10, and then EXACTLY 5 existing  animations from walkslow to runfast (but can be triple/double mentioned, like Beth does).

 

Yes, Go Ducks. :) I'm German, but I lived there several years and still feel emotionally bonded to that state. And, while following the Ducks, I became aware of that TCU nomination drama. What a pity.

Link to comment

Oh, the line numbering is off by one.

 

You didn't follow the syntax for this command. "mt_loco_forward" is mandatory (only that is implemented yet), then any number from 1 to 10, and then EXACTLY 5 existing  animations from walkslow to runfast (but can be triple/double mentioned, like Beth does).

 

Yes, Go Ducks. :) I'm German, but I lived there several years and still feel emotionally bonded to that state. And, while following the Ducks, I became aware of that TCU nomination drama. What a pity.

 

I had attempted to use "mt_loco_forward" in a previous iteration of the animlist.  But as it was still sitting on the top line, as in line "0", it kept throwing back that error.  After mucking around a bit just now and realizing what you were trying to beat into my thick skull; I put a ' on the top line and moved the animations down to the second line.  Worked like a charm.  Thanks for your help!

Link to comment

Another animation Question!  I'm using ofa animations through a SendAnimationEvent.  This covers walking/running/idle and sneak idle/sneak animations. How do I remove the ofa animation once I'm finished with it?  I looked through the CK wiki and couldn't find a CancelAnimationEvent, or the like.  I tried an IdleForceDefaultState with no luck.

 

Also,  Is it alright to post general scripting questions here, or should I move somewhere more suitable?

 

Ps Ohio State - BOOOOOO!

 

Link to comment

Sorry, that's missing in the doc. It's

Debug.SendAnimationEvent(actor, "OffsetStop")

 

We have to give OSU credit. I had never thought there is an offense that can dominate Oregon's defense that much.

Link to comment

Sorry, that's missing in the doc. It's

Debug.SendAnimationEvent(actor, "OffsetStop")

 

We have to give OSU credit. I had never thought there is an offense that can dominate Oregon's defense that much.

 

Thanks for the command!

 

But you're wrong,  we don't have to give OSU anything. lolz  It's okay to hate them.. It's what makes sports fun...  Hating OSU.  lol 

 

Take Care!

Link to comment

Quick question fore, does the patcher read hkx files from BSA's?

 

Sorry if this has been asked/answered before butI couldn't find anything with a search.

No. Or do you want to wait forever each and every time you run FNIS?  :shy:

Link to comment
  • 5 months later...

Hi Fore, I would like to do a formal petition in regards SOS/SAM schlongs, and FNIS.

 

I've been asked several times for schlong animations.

There are animators willing to do their job with the schlong, but nobody can deal with behaviour file as I know. I hoped somebody eventually would emerge with the knowledge but that's not happening.

 

I know you'd like VectorPlexus' permission to start working on this. The problem is that VectorPlexus is missing.

 

He gave SOS to me, to host it here on LL's and basically do whatever thing I want. You have my permission (if that means something to you)

He also gave SAM to LadyM at Hall of Torque under the same conditions.

 

They were "gifts to the community", using his own words. Here I'm seeing a implicit permission.

 

Also I can't see any problem with FNIS modifying these files. As they are packed in SOS/SAM, anybody could overwrite the edited behaviour file and then the schlong would revert to its basic current movement. Wouldn't work that way?

 

Finally I think I am representing this community if I say the Skyrim penises don't animate enough, compared with Oblivion for example.

And this makes me really sad.

Link to comment
  • 1 month later...

Been having an issue lately where, when going through some sequence animations, if I send a different sequence's animevent or try and go backwards in the sequence by sending the previous stages animevent, the actor gets stuck in the original animation and refuses to play a new one. Sending idleforcedefaultstate state will usually pull them out of the animation, afterwards however they are unable to enter back into any animation, acting similarly to how they were before the idleforcedefaultstate only standing idle instead of looping their stuck sequence event. While they are in this stuck state do sae idlefocedefaultstate in console returns the not processed by graph error.

 

I'm pretty much at my wits end with trying to figure it out, and I haven't been able to track down much consistency to when it happens and how to get out of it. Pretty much every time I think I've solved the problem and am able to stick and un-stick an actor's animations, soon as I implement it in the scripting and reload Skyrim to test it, it doesn't work and I'm no longer able to replicate it reliably that same way.

 

I haven't changed anything about SexLab's FNIS list and the way the animation events are sent, actors reset, and animations cycle through, hasn't really changed in any seemingly significant way and I don't remember ever seeing the problem till semi-recently, around the release of either FNIS 5.4 or 5.5.

Link to comment

There were no changes in SA since 5.3. However, 5.3 changes (April 2) were drastic. I had to change the internal SA structure from a flat definition to a tree. That was necessary to allow make new parameters like AV (animvar) or ac (animcam) working during the whole SA. THerefore I made the following INCOMPATIBLE change;

 

- The first animation of a Sequenced Animation will now be started with 2 different Animation Events:

    - <AnimEvent> (like before): start of the complete SA
    - <AnimEvent>_REENTER: if this animation is called a 2nd, 3rd, .. time from within the SA
  This differentiation is necessary to allow certain features (like "AnimDriven") to work for the complete SA
 

 

 
I think what you described could very well be caused by this.
 
When I made this (unavoidable) change I have specifically informed several modders I know were using SA this way. I really apologize if I have missed you. Because I can't remember howI have informed you.  :blush:
 
Link to comment

You did inform me of the change at the time, I however failed to see how it would be a relevant or problematic for me then so I didn't think much of it.

Is there any detriment to calling the _REENTER event when it isn't necessary, or is it relatively safe to just throw in along with the normal event whenever there's a case it might be needed?

Don't have time to play with it right now, but I'll mess around with reenter later and see how that goes. By the sounds of it though it's pretty likely. Just wish I'd thought to ask sooner instead of wasting a week of development time cursing at my computer while I tried to figure out why  <_<

Link to comment

Yeah, you should always come to me right away. Even when you have no clear indication yet. You always have high priority for me. :)

 

And you should not call the _REENTER unless activating the first animation again. I understand that this might get a little unpleasant for scripting, but I didn't have any choice. I can't predict all detriment when always calling with _REENTER. At least the automatic bAnimationDriven will not work..

Link to comment

So then is the _REENTER animevent only on the first animation in a SA? Meaning if I wanted to go back to the 3rd event in the SA, I'd have to call:  "event_1_REENTER" -> "event_2" -> "event_3"  rather than just jumping straight to a "event_3_REENTER"?

Link to comment

To start an AS you call "event_1". To "jump around"  to any animation you simply call its AE. E.g. "event_3". Only when calling the first animation again (from INSIDE this SA) you have to call it "event_1_REENTER" in order to distinguish from an initial start.

Link to comment

Got it, that shouldn't be to hard to script around in that case. If I understand correctly I basically just need to only send the first stage of an animation once, and any other time the first stage is called without having switched to a new SA yet, call with it with _reenter, then whenever the animation/SA changes to a new list, reset the check for the first stage back to allowing the normal event be called once again.

 

Is just going from "event_3" to a different SA's "other_3" safe then? And if doing that, once on "other_3" if I were to go down the SA to "other_1"  would it also have to be "other_1_reenter" since it's in the same SA, even though "other_1" was never called to begin with?

Link to comment

NO.

 

You cannot (or should not) switch between different SAs except by starting the SA from the top. event_1, or other_1.

 

From there on you can freely move between all animations of THAT particular SA: either event_1_REENTER, event_2, event_3, or  other_1_REENTER, other_2, other_3. 

(Now that I have to describe it, I see that the work "REENTER" is somewhat misleading)

 

Calling any other event (e.g. other_1 when being in the "event" tree) will make you leave this tree for good. And in order to get into the "event" tree again, you have to start it again with "event_1".

 

It's exactly what you have for furnitures. You always have to start them with the "enter" animation.

Link to comment
  • 5 months later...

I was wondering did something change drasticcly after 6.0 update ?? With version 5.0 and lower fnis generates much quicker now it can take long time before fnis is finsied generating ?? i thibk it started after 5.9 or some version like that but before that fnis was generating really quick.

Link to comment
  • 1 year later...

This is a bit far fetched, but it kinda bothers me: I noticed that the camera get's kinda locked with furniture animations using anim objects. I can still look around, but I can't zoom or switch between first and third person. If I take them Animobjects, out of the FNIS-Definition, it works. Is there any thing I do wrong, or a known workaround?

Link to comment
  • 1 month later...

I have a sort of general question.

I have a sequenced animation to be played at idle markers and I'm having trouble moving from one cycled animation to another e.g.

 

s -a myAnim1 anim1.hkx

+ cycleAnim1 anim2.hkx

+ cycleAnim2 anim2.hkx

+ -a endAnim anim3.hkx

 

The documentation says:

"Cyclic animation parts need to be terminated by calling SendAnimationEvent() to any other part, even
previous ones (so you can easily make loops etc)"
How do I do this in the context of idle markers?
 
Thanks
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