Getting dwerespository01 to animateopen

Post » Tue Jun 19, 2012 11:58 pm

I'm attempting to use the dwemer puzzle box from Septimus Signus' Outpost and the Hermaeus Mora questline in a http://skyrim.nexusmods.com/downloads/file.php?id=9541.

I can't seem to figure out how to trigger the opening of the box. The reference itself has no scripts and doesn't seem to be linked to or from anything. After a lot of digging through the quest itself (DA04) where the box is opened I can't find any reference to the box itself aside from a scene where Septimus walks over to it. I've gone through the actual code and it doesn't seem to be there either.

I've tried having it's activate parent set to a lever with no results.

If anyone can offer some advice here I'd really appreciate it! I have to be missing something. >.>

Edit: Misspelled the topic. Wish you could edit that.

Edit 2: Thanks for the great replies! This post turned out to be great for learning how animations work. :) If anyone is interested, there is no closing animation for the dwemer box but you can use 'reset01' to return it to it's original state. Kind of jarring but it works. Functions great in my mod.
User avatar
Sarah MacLeod
 
Posts: 3422
Joined: Tue Nov 07, 2006 1:39 am

Post » Wed Jun 20, 2012 2:44 pm

I think the whole sequence may be controlled by the scene DA04SeptimusAscension. I know nothing about how scenes work though.
User avatar
rebecca moody
 
Posts: 3430
Joined: Mon Mar 05, 2007 3:01 pm

Post » Wed Jun 20, 2012 4:27 am

First, make your own Form of the box just to eliminate the chance of messing with the original. Then, to get an object to play an animation, just set it as an Object Ref in your script, then use the http://www.creationkit.com/PlayAnimation_-_ObjectReference command. To know the parameter for the animation you need to play, right click the object in the object window and say 'Preview'. You should then see a list of animations the object can do (on it's own).
User avatar
Smokey
 
Posts: 3378
Joined: Mon May 07, 2007 11:35 pm

Post » Wed Jun 20, 2012 3:26 am

Nice, I didn't know we could check out the animations like that. But I'm not sure that would really help. Check out NorPullBar01 for example. We know that it uses the animation file "down.hkx" but if you check out the script NorPullBar01SCRIPT, you see that it uses "playAnimationandWait("Pull","Reset")".

What I'd like to know is how to find out the parameters for the PlayAnimation and the PlayAnimationAndWait command.
User avatar
Katie Samuel
 
Posts: 3384
Joined: Tue Oct 10, 2006 5:20 am

Post » Wed Jun 20, 2012 6:05 am

Nice, I didn't know we could check out the animations like that. But I'm not sure that would really help. Check out NorPullBar01 for example. We know that it uses the animation file "down.hkx" but if you check out the script NorPullBar01SCRIPT, you see that it uses "playAnimationandWait("Pull","Reset")".

What I'd like to know is how to find out the parameters for the PlayAnimation and the PlayAnimationAndWait command.
http://www.creationkit.com/PlayAnimation_-_ObjectReference and http://www.creationkit.com/PlayAnimationAndWait_-_ObjectReference

The wiki is your best friend. :)
User avatar
elliot mudd
 
Posts: 3426
Joined: Wed May 09, 2007 8:56 am

Post » Wed Jun 20, 2012 2:03 pm

I meant how am I supposed to know the animation's name? Like in the NorPullBar01, if I just look at the animation file, I would think that I'm supposed to use

PlayAnimation("Down")

when in fact, I'm supposed to use

PlayAnimation("Pull")
.
User avatar
City Swagga
 
Posts: 3498
Joined: Sat May 12, 2007 1:04 am

Post » Wed Jun 20, 2012 1:39 am

Your problem is you were told how to get things done with objects that exclusively use Gamebryo animations and the object in question uses Behavior -> meaning the ONLY way to get the Event Names you need to call is to open the Behavior file linked to within the .nif itself and look for the Events you want -> also not all events are equal many objects use Nested events that trigger daisy chain style -> so make sure you have the right Starting Events.
User avatar
Jennifer Rose
 
Posts: 3432
Joined: Wed Jan 17, 2007 2:54 pm

Post » Wed Jun 20, 2012 4:11 am

OK... so you mean I have to:

1. Unpack the object's mesh from Skyrim - Meshes.bsa
2. Use NifSkope to check "Behavior Graph File" in order to find its behavior file (steps 1 & 2 might not be necessary)
3. Unpack the behavior file from Skyrim - Animations.bsa
4. Use the Hologram's Havok Animation Converter to change the .hkx file to .xml (not sure, have not tried it)
5. Read the .xml file until I figure out the event names of the animations (not sure, have not tried it)

Is that right? :facepalm:
User avatar
Jennie Skeletons
 
Posts: 3452
Joined: Wed Jun 21, 2006 8:21 am

Post » Wed Jun 20, 2012 9:03 am


You can but going that far is not necessary do this.

1) Unpack the Animations.bsa -> if your going to be doing a lot of this you will want this BSA unpacked anyway.
2) Create a new esp and go to races and define a new race and set its Behavior Profile to the one you want, in your case "Meshes\dungeons\nordic\levers\pullbar\norpullbar01.hkx".
3) define a new actor using this new race.
4) Save, Name and Reload.
5) go to Gameplay -> Animations and the new race will appear -> just add a new loose anim and you will have access to all of the Events as Named within the Behavior files.

also technically you do not even need to unpack the Mesh.nif you can get the Behavior file path by opening the object in a preview window and hitting "F10" this open the Scene Graph and under the nif attributes the Graph used is shown.
User avatar
Conor Byrne
 
Posts: 3411
Joined: Wed Jul 11, 2007 3:37 pm

Post » Wed Jun 20, 2012 10:47 am

Thanks, I tried it and it worked!

And sorry for derailing this thread.
User avatar
NeverStopThe
 
Posts: 3405
Joined: Tue Mar 27, 2007 11:25 pm

Post » Tue Jun 19, 2012 11:40 pm

Here's the code, since I don't see it in the other answers:
Scriptname jdwem_OpenBox extends ObjectReference Event OnActivate(ObjectReference akActionRef)if (Game.GetPlayer().GetItemCount(TGLT06PuzzleCube) > 0)  Self.PlayAnimationAndWait("trigger01", "Done")endIfendEventMiscObject Property TGLT06PuzzleCube  Auto 
This script is added to the repository, and then it can be activated like normal. This code also checks to make sure you have an item called 'PuzzleCube'... but you can probably remove that for your purposes.
User avatar
Kelsey Anna Farley
 
Posts: 3433
Joined: Fri Jun 30, 2006 10:33 pm

Post » Wed Jun 20, 2012 9:58 am

Keep in mind, from the inside, the repository doesn't have a door...so don't close it with the player inside or it won't look right.

Will playing the animation again close it?
User avatar
Claudz
 
Posts: 3484
Joined: Thu Sep 07, 2006 5:33 am

Post » Wed Jun 20, 2012 10:52 am

No, that animation is one way and won't close if you try to play a second time. There might be a close animation, but I haven't looked for it.
User avatar
Romy Welsch
 
Posts: 3329
Joined: Wed Apr 25, 2007 10:36 pm

Post » Tue Jun 19, 2012 11:23 pm

Could this be simplified for someone who has approximately 0 experience or knowledge of Papyrus? I've been trying to use the Repository for a mod as well.
User avatar
Sara Johanna Scenariste
 
Posts: 3381
Joined: Tue Mar 13, 2007 8:24 pm

Post » Wed Jun 20, 2012 7:17 am

Is there a way to reset the Repository so it is just suddenly closed waiting to be played again ???
User avatar
Alexandra Ryan
 
Posts: 3438
Joined: Mon Jul 31, 2006 9:01 am

Post » Wed Jun 20, 2012 1:03 am

Thanks for this! I was actually looking for the answer to this EXACT situation (the dweRepository). I tried everything except the scene, which I have no knowledge of. Thanks Persol for listing that command with the anim's name!

But to get the box back to normal, maybe doing a reset() on it would work? I haven't done much with animations yet, so maybe there's an anim-specific command for resetting the 3D/etc? I'll be looking into this later today, so if noone answers before then I'll post back if it works. [and no... I don't think the box has a close anim, but editing the NIF or behavior graph one may be able to duplicate the current anim event, then reverse it with a simple toggle switch in NikSkope/etc]
User avatar
RUby DIaz
 
Posts: 3383
Joined: Wed Nov 29, 2006 8:18 am

Post » Wed Jun 20, 2012 8:31 am

I would be very interested in a reverse dweRepository :) I am not a nif person so even though I can poke around with nifscope I have yet to even change the color of one of them they way I want it...
User avatar
Ryan Lutz
 
Posts: 3465
Joined: Sun Sep 09, 2007 12:39 pm

Post » Wed Jun 20, 2012 9:19 am

I'll look at this a little later today. I fooled around with static animations (non-skinned/boneless anim, non-havok... the 'old' style). I know there's a flag you can switch in the niTransformController to reverse the anim; if it works as expected, I'll release it as a resource.
User avatar
renee Duhamel
 
Posts: 3371
Joined: Thu Dec 14, 2006 9:12 am

Post » Wed Jun 20, 2012 4:55 am

Any luck? I have tried reset and some other things but it appears this is a one way...
User avatar
Jessie Butterfield
 
Posts: 3453
Joined: Wed Jun 21, 2006 5:59 pm

Post » Wed Jun 20, 2012 2:17 pm

No dice... I was able to reverse SOME of the meshes' animations (using that flag in NifSkope), but others play the same no matter what. Others still are set to be cycling repetitively while some only play once... and I don't think you can reverse a cyclic anim using the flag I know of (since that changes the flag... it's either cyclic, clamp, or reverse).

I, too, tried reset and reset3D, etc... but nothing worked. I haven't tried resetting the entire cell.. but that creates other issues. I tried to convert the havok file to XML but it didn't work, so I think I have to look at the converter directions closer. If I can see the XML, I should be able to tweak something to reverse the anims THAT way... then convert it back to havok. People do this all the time, so it has to be a commandline switch or something else I'm not doing right.

In the meantime, a feasible workaround is to have TWO Dwemer Repos... one scripted to open, the other InitDisabled. Once the first is opened (by lever, direct activation, or whatever), a/the script would disable the open box and enable the closed one. Player would have to be outside the box when doing this though... if not, you may need THREE copies. The third would be to enable while Player is still inside; though it would be repositioned so that one of the surfaces would cover the doorway, or use a different static altogether.
User avatar
Crystal Birch
 
Posts: 3416
Joined: Sat Mar 03, 2007 3:34 pm

Post » Tue Jun 19, 2012 11:06 pm

I put some things here let me know if this helps ? http://aframehosting.com/nifstuff/
User avatar
matt
 
Posts: 3267
Joined: Wed May 30, 2007 10:17 am

Post » Wed Jun 20, 2012 3:01 am

No dice... I was able to reverse SOME of the meshes' animations (using that flag in NifSkope), but others play the same no matter what. Others still are set to be cycling repetitively while some only play once... and I don't think you can reverse a cyclic anim using the flag I know of (since that changes the flag... it's either cyclic, clamp, or reverse).

I, too, tried reset and reset3D, etc... but nothing worked. I haven't tried resetting the entire cell.. but that creates other issues. I tried to convert the havok file to XML but it didn't work, so I think I have to look at the converter directions closer. If I can see the XML, I should be able to tweak something to reverse the anims THAT way... then convert it back to havok. People do this all the time, so it has to be a commandline switch or something else I'm not doing right.

In the meantime, a feasible workaround is to have TWO Dwemer Repos... one scripted to open, the other InitDisabled. Once the first is opened (by lever, direct activation, or whatever), a/the script would disable the open box and enable the closed one. Player would have to be outside the box when doing this though... if not, you may need THREE copies. The third would be to enable while Player is still inside; though it would be repositioned so that one of the surfaces would cover the doorway, or use a different static altogether.

The problem with that solution is, you could only open it once, then slam it closed...to make a repository that could be opened repeatedly, you would need to script the "Close" part to create a new repository, move it to the open one, then delete the open one and replace it in whatever variable you're using in the open script.

You would want to check if the player has LOS to the repository (and that the player isn't inside the repository) before closing it, since there is no nice Opening animation.
User avatar
Adam Kriner
 
Posts: 3448
Joined: Mon Aug 06, 2007 2:30 am


Return to V - Skyrim