Jump to content

Sex animations.


Recommended Posts

Guest Donkey

Is that even possible ?? Did Josh released his scripts psc files,with latest version ?? I have not keep tap with nexus much lately.

Link to comment

Is that even possible ?? Did Josh released his scripts psc files' date='with latest version ?? I have not keep tap with nexus much lately.

[/quote']

 

The .psc files are in the BSA. Although I'm working from a couple of versions back. I don't know if they're still available.

Link to comment

I was having trouble generating hkxs but I got that out of the way and made these two work. All his script really requires is a menu to choose which position to take' date=' but like I said the head issue is really frustrating. I'll add my commented version of his script in this post for anyone who's looking at the papyrus script under the aasexeffect in the CK.

[/quote']

 

How does he (or how did you) handle the collision problem? I know you mentioned it in an earlier post, and then said you'd solved it. Any chance you can explain how?

Link to comment

sounds like we could use that MCM type setup after all :D

 

We could use an MCM equivalent. The basic menu shouldn't be too hard for someone who knows flash. The trick part is getting the information back to the quest where we store the globals.

 

If anyone fancies taking a shot at it, SkyUI and its SKSE extension are probably the starting points.

 

 

 

 

 

Link to comment

So, I've been taking a look at the source behavior files in fore's mod, and it actually looks much simpler than I initially thought it would be to add new idles. From the looks of it, all you guys need to do is find a way to parse the XML files in a specific way, at specific spots.

 

That's it.

 

That's all.

 

That seems almost laughably simple. Hell, if I knew how to parse XML files in C#, I could probably do that.

Please, tell me it's not that simple. I really want a reason not to reach through the internet and slap someone.

Link to comment

So' date=' I've been taking a look at the source behavior files in fore's mod, and it actually looks much simpler than I initially thought it would be to add new idles. From the looks of it, all you guys need to do is find a way to parse the XML files in a specific way, at specific spots.

 

That's it.

 

That's all.

 

That seems almost laughably simple. Hell, if I knew how to parse XML files in C#, I could probably do that.

Please, tell me it's not that simple. I really want a reason not to reach through the internet and slap someone.

[/quote']

 

Nope, it's that simple. It really is. Haven't I been saying "it's not rocket science" all over the place? I knocked out a Perl generator in about three hours, mainly because it seemed faster to just do it than to try and explain how I wanted to do it.

 

There is one complication though. In some of the lists where you need to add data, the actual animation seems to be referenced by its position in the list, rather than by some unique keyword or identifier. So we can't add to the start of a list, since that alters the indices for the in-game animations and breaks existing idles.

 

Adding them to the end is easier, but we need to get the right list in some cases - specifically the one for "character", and again that seems to be by offset.

 

Keep those points in mind, and writing an generator that decompiles mt_behavior.hkx, scans for new animations, regenerates the xml and then converts it back to hkx should be fairly simple.

 

And if we can get that working, I'd like to look at doing what fore ... suggested let's say, and see if we can get the user defined stuff into its own hkx file to minimise the scope for things to go wrong in the main file. And maybe look at creating some behavior graphs of our own, with variant animations for different situations.

 

But yeah, if you want to take a crack at it, feel free. I have a pile of other things I need to look at, so that would be really helpful. C# has excellent support for XML, incidentally. Lookup XmlTextReader on MSDN as a good starting point.

 

 

 

Link to comment
There is one complication though. In some of the lists where you need to add data' date=' the actual animation seems to be referenced by its position in the list, rather than by some unique keyword or identifier. So we can't add to the start of a list, since that alters the indices for the in-game animations and breaks existing idles.

[/quote']

 

I honestly just assumed that from the start. That's normally how arrays work anyway; when you reference a particular element in an array, you're referencing it by it's index number, not the name of the element itself.

 

Adding them to the end is easier' date=' but we need to get the right list in some cases - specifically the one for "character", and again that seems to be by offset.

[/quote']

 

I'm a bit confused here, which behavior file is the "character" list in? what does that list contain that makes it important?

 

Link to comment

I honestly just assumed that from the start. That's normally how arrays work anyway; when you reference a particular element in an array' date=' you're referencing it by it's index number, not the name of the element itself.

[/quote']

 

mmm ... I could have expressed that more clearly. What we have are several apparently unrelated arrays that nevertheless contain related records. Moreoever, some of the lists start from a different offset, so you can't use an absolute index into the list.

 

Normally, in cases where there isn't a 1:1 correspondence between arrays, I'd expect some sort of identifier common to both records. You couldn't index by it, but you would be able to search on it. That's not the case here however.

 

If you saw it coming then fair enough. I only mention it because it caught me by surprise.

 

I'm a bit confused here' date=' which behavior file is the "character" list in? what does that list contain that makes it important?

[/quote']

 

Specifically, there's a line like this.

 


 

... that opens a block of code which (working from fore's original FNIS xml) needs a new entry for each animation added. The thing is the it's far from the only instance of that class name. Nor is it the first of its kind. The signature seems to correspond to the the class name and the "name" attribute doesn't seem to match anything useful.

 

So the question is how to identify the correct block. Now in this case (having just looked more closely) the block appears to be the last of its kind. If we can continue to assume that for the other insertion points then the problem goes away.

 

 

Link to comment

actually with xml, you dont need to specify anything in the menu itself since it is going to be run completely in-game (besides the normal stuff for the menu itself)... its coding proper syntax to send information to and retrieve information from the menu, since you have to send all the information that is going to be used by the menu to the menu system.

Link to comment

actually with xml' date=' you dont need to specify anything in the menu itself since it is going to be run completely in-game (besides the normal stuff for the menu itself)... its coding proper syntax to send information to and retrieve information from the menu, since you have to send all the information that is going to be used by the menu to the menu system.

[/quote']

 

Maybe it's just getting late, but you lost me at "menu" :)

 

Are we talking about the menus presented by the animation manager in the CK?

Link to comment

how the MCM itself works... and sorta how that will relate to other syntax.

at least we wont have to create a separate esp/esm file for running the MCM menu stuff.

 

Ah right. I was talking about havok animation data, translated into XML by hkxcmd.

 

As regards MCM, I agree entirely.

Link to comment

mod configuration menu (MCM)!

its a mod used for fallout new vegas to help mods keep track of and make changes to a given mod while in the game... in this case accessed via the exit menu (which is what i would like to do with our version too).

Link to comment

I'm assuming that's something you guys want for your slave guild mod?

That doesn't sound like something we would need in order to make an edited behavior file work in game. That's all I'm working toward really.

 

 

I'm thinking it would be a good idea to make this program so that it's able to do more than just add animations only for the character race. What I want to do is develop a system where users can create their own custom race from scratch - I mean all new skeletons too (like a six legged Whatever-The-Fuck) - and then use this program to create custom behavior files specifically for that race using any animations and skeleton.hkx files that the user has already made. And they'll be able to do things like define which frames of an attack animation will deal damage to the enemy, and various other things that nobody wants to do by hand.

 

I hope that made sense, because I need to head off to class now.

Link to comment

yes its something we are going to be using along with the SG mod, it will also allow other mods to allow for mod setting's from other mods as well.

 

sounds like a good idea, you might be able to do something similar using something like the MCM and save the race parameters in a created file... that way you can setup a save/load integration on your menu within the MCM environment. your mod (when the game is starting up and loading from the game save) could check to see if there are any new_race.sav (or whatever you want to call the output file, or have the name configured by the player/user) and load what it finds so there are no errors or ctd's when entering the in-game environment.

 

"so what we doin tonight brain", "the same thing we do every night pinky, try to take over the WORLD!"

Link to comment

no no no, this is going to be a stand-alone program made in C#. There shouldn't be any need for trying to run this through an in-game menu.

I don't even think that would work.

 

This is simply going to be a modding tool. You use it to add your own animations to existing behavior files, or you make brand new behavior files which are called by the master_0.hkx.

 

Or, you can make an all new series of behavior files for something like a brand new race. Then, you go into the CK where you can set up the conditions in the animations window that will determine when your animations will play, and viola, you now have a new race that you made yourself from scratch... hopefully.

 

For you guys, this would mean you get to make brand new creatures to rape things with, like tentacle monsters.

For me, it means I get to make a new playable pony race that can use exactly as many animations as I want without having to copy/paste all Bethesda's behavior files from the character folder. I can also give it the ability to fly without needing to change the race to a look-alike with the behavior files of a dragon.

 

Again, I hope that made sense.

 

But first I need to figure out how XML files work, then I need to find out which parts of the behavior files are modular, and how to make my program write those sections separately and properly.

 

Eventually I'll also need to grow a second brain so I can start processing all this in parallel as well, but that can wait.

Link to comment

Yeah, the MCM discussion sort of splashed over from another thread. It's worth having generally, and not just as an adjunct to the sex mods (look at Imp's More Complex Needs sometime) but it's not really relevant to this thread.

 

I've been working on summarising the layout of some the high-level XML. Life's been a bit mad the last couple of weeks, so I'm nowhere near as far forward as I should be, but I should have something useful shortly. I'm hoping we can all share our findings (as hasn't generally happened so far) and maybe gain a wider understanding of the technology. "With many eyes, all bugs are shallow" and all that.

Link to comment

xml is sorta easy' date=' well easy relative to PHP... and because its much like html it makes it easier to use because it works along the same style of markup language.

[/quote']

 

I'm not having as much trouble understanding XML as I am trying to figure out how to write a new XML with C#. I could probably make all the changes I need by hand, but then that would take forever. It's not as making a program that can make a text, or .ini file either. XML has a particular structure, and each part is made using several different classes in C#.

 

It's not as easy as typing the following into C#

Console.WriteLine("")

 

of course, that would just display it to the console, but my point still stands.

 

 

Yeah, the MCM discussion sort of splashed over from another thread. It's worth having generally, and not just as an adjunct to the sex mods (look at Imp's More Complex Needs sometime) but it's not really relevant to this thread.

 

I believe I know what you're talking about from a mod I tried out for Fallout: New Vegas. It implemented several other mods as well. I'm not interested in anything like that just yet. I'm just trying to get a workflow together for something much bigger.

Link to comment

I'm not having as much trouble understanding XML as I am trying to figure out how to write a new XML with C#. I could probably make all the changes I need by hand' date=' but then that would take forever. It's not as making a program that can make a text, or .ini file either. XML has a particular structure, and each part is made using several different classes in C#.

[/quote']

 

I've been doing some analysis on the xml format. Posted here in the hopes they help wider understanding. Also if anyone has any bright ideas on the last point, I'd appreciate it.

 

XML Breakdown

 

Some observations about mt_behavior.xml and insertion points for new animations. These are all based on the 1.4 Skyrim release since (in the absence of my CK) that's the one I have to analyse.

 

I'm basing this one the FNIS insertion points for 1.4. Fore has stopped providing xml breakdowns in subsequent versions, presumably to make it harder for people to follow what he's doing. Not to worry:

 

In The Beginning...

 

There's a sigle root to the document. That has a single khsection tag named "__data__". All the rest of the document (apart from a comment and the xml header) are inside this data tag. All following comments assume that context.

 

hkparam eventNames

 

The first point is right at the top, class "hkparam", name "eventNames". There's lots of hkparam blocks, but only one with this name so this should be easy to identify.

 

Inside the block, we have a lot of hkcstring tags, each identifying an animation event as might appear in the animation manager in the CK. If you create a new loose idle, and click the drop down to select an animation to go with it, the names you see are the ones defined here. Largely, anyway.

 

The kkparam tag takes an attribute called numelements which needs to specify how many entries the block encloses. In 1.4 there were 770, which rose to 1170 with Fore's 400 empty slots being added. This number needs to be maintained.

 

Otherwise new idle names need to be added at the end of the block. a lot of elements in the xml seem to depend on positions in other lists so adding them at the start would likely break existing animations, or cause them to run the wrong loops.

 

hkbBehaviorGraphData / eventInfos

 

The next place we need an insertion is in a hkobject named hkbBehaviorGraphData. That's a unique name, so again finding it should be easy. Within that we have a hkparam object called "eventInfos", another unique name.

 

The event infos is another list of 770 objects, 1170 after fore added his extra 400 slots. I'm assuming the new entries are added on the end of the list, as above. Most of the slots, including all the added ones, are a "flags" attribute to zero. If we ever work out what the flags mean, or decide to set any of them, we'll probably need to use the same offset as in the event names list, since nothing else ties the entries together.

 

hkbStateMachineTransitionInfoArray #1227

 

The next one is tricky. There's a hkbStateMachineTransitionInfoArray object with name #1227. it's number 164 of 504 in Fore's original template. There doesn't seem to be anything particularly to mark this out as the element that needs modifying.

 

Ideas are welcome.

 

I'll break down some more of this later on.

 

Link to comment

tidbit that might interest you, since within skyrim xml is coded using C#... you can dl a free version (i think) of microsofts C#, it can be used to directly create xml instead of trying to do it the otherway.

 

not sure how well that would work tho since you have to have the coding/syntax mach what skyrim can read/use.

 

probably not much help... but it could be something to look into as far as coding goes, you can learn how to code with C# hopefully at least.

 

few links that might help (hopefully) a little more:

- asp.net style can be used within the xml environment

http://www.techrepublic.com/article/get-started-coding-c-in-aspnet/1045193

 

- some more code style by function/input-output

http://msdn.microsoft.com/en-us/library/ff926074.aspx

 

- google search parameters for "coding C#"

https://www.google.com/#hl=en&sugexp=frgbld&gs_nf=1&tok=W2o38WMGYZYQWK7KnOffFA&cp=9&gs_id=14&xhr=t&q=coding+C%23&pf=p&safe=off&output=search&sclient=psy-ab&oq=coding+C%23&aq=0&aqi=g2g-m2&aql=&gs_l=&pbx=1&bav=on.2,or.r_gc.r_pw.r_cp.r_qf.,cf.osb&fp=7d01c59833bd7dbf&biw=1440&bih=813

 

Link to comment

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

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