some trick that super speeds up the "getup" animatio

Post » Tue Sep 22, 2015 6:51 am

I need to speed up the "get up" animation * for the player via a script or spell.

I will hide this action from the player with a dark screen, so it is not important that it will look strange.

I tried using the speed spell magic effect "slow time" that normally slows down the actors by setting it to 4 times normal (rather than 0.05 for slow down) but all this did was make the actor shake a lot while getting up.

I also tried sending many MANY various animations to the player to force them up instantly such as "jump land" and "getup end" and that worked but it left the actor in a state that blocked the player controls. And "enable player controls" did not work.

Anyone know if I can set the animation graph to speed this up or some trick that bypass the SLOW getup animation ?

* on command, this is not all the time just under some circumstances.

User avatar
Angus Poole
 
Posts: 3594
Joined: Fri Aug 03, 2007 9:04 pm

Post » Tue Sep 22, 2015 3:13 pm

If the player won't see this happenning, just use the moveto function to bypass the animation entirelly.

User avatar
xxLindsAffec
 
Posts: 3604
Joined: Sun Jan 14, 2007 10:39 pm

Post » Tue Sep 22, 2015 9:22 am

I read this at my morning break time at work, and then I could not wait to get home from work to try this. It was a LONG day...

I really thought this would work.

Alas, it did not stop the animation. The player moved to the new position but still continued play the get up animation.

I tried this as well:

Debug.SendAnimationEvent(Playerref, "GetUpend")
playerref.moveto(PlayerRef)
The above got the player stuck as described in my OP.
And this:
playerref.disable()
utility.wait(0.1)
playerref.enable()
The above did not stop the animation either. The player winks out and then back and keeps playing the animation from were the disable started.
Seems the game is determined to force the player to do the entire get up animation. :wallbash:
User avatar
Budgie
 
Posts: 3518
Joined: Sat Oct 14, 2006 2:26 pm

Post » Tue Sep 22, 2015 5:29 am

There might be a game setting that controls this, if not you'll have to patch 0_master.hkx by adding a custom animation variable that controls the animation playback speed.

First you are going to need to use BSAOpt to unpack the animations BSA. Then you will need hkxcmd.
Extract hkxcmd to the character directory in your unpacked animations BSA. Run the windows command prompt and navigate to the directory which hkxcmd is in. Then type in the command 'hkxcmd convert behaviors'. Now all the behaviors will converted to an unpacked hkx file.

Open the desired converted behavior file in a text editor and near the top of the file there will be a Havok object called 'hkbBehaviorGraphStringData'. Scroll down until you find this line ''. Just increase the number of elements here.
Then scroll to the bottom of this list of variables and add your custom variable. You need to add your variables to the bottom of this list because all variables are referenced in the file by their index in this list so putting your variables anywhere else will alter the indices, breaking everything.
The next object should be called 'hkbVariableValueSet' so scroll down until you find this line ''. Increase the number of elements here and add the initial value for your variable at the bottom of this list (initialize it to 1).
The last object to find will be 'hkbBehaviorGraphData' and again find the line ''. Increase the number of elements here and add the type of your variable at the bottom of this list.
Then find the hkbClipGenerator class referencing the animation "MT_GetUpFromFront.hkx". This object will have the following line: null change the 'null' value to '#6000'. Then above this object add the following:
																				playbackSpeed																									230					-1					BINDING_TYPE_VARIABLE																									-1					

Note that the object number is '#6000' and 'variableIndex' field is the index into the list of animation variables. So if the total number of animation variables is 231, with your new variable the last one, then the index of your new variable is 230.

Then find the hkbClipGenerator class referencing the animation "Mt_GetUpFromBack.hkx". This object will have the following line: null change the 'null' value to '#6000'.
Now both of those animations will have their playback speed controlled by your new animation variable.
Save your file and to repack it use the hkxcmd command 'hkxcmd convert behaviors -f SAVE_CONCISE'. Your altered file should be named 0_master-out-out (rename it to 0_master) and you can the just create a meshes\actors\character\behaviors directory in your Skyrim data directory and put your altered behavior file in the behaviors sub-directory.
User avatar
suniti
 
Posts: 3176
Joined: Mon Sep 25, 2006 4:22 pm


Return to V - Skyrim