Interface XML Documentation

Post » Tue Apr 27, 2010 5:48 am

I'm interested in creating custom menus/dialogs, but I can't seem to find any documentation for the XML files. Does it exist anywhere (public)? Many things are somewhat self-descriptive, but I don't get how exactly the templates work (where/how are they instantiated?) and also I wonder what exactly a hotrect is (a button?).
User avatar
Lexy Corpsey
 
Posts: 3448
Joined: Tue Jun 27, 2006 12:39 am

Post » Tue Apr 27, 2010 4:00 am

I'm interested in creating custom menus/dialogs, but I can't seem to find any documentation for the XML files. Does it exist anywhere (public)? Many things are somewhat self-descriptive, but I don't get how exactly the templates work (where/how are they instantiated?) and also I wonder what exactly a hotrect is (a button?).


I

SO

WISH

OMG.

It seems that the .exe doesn't let you build your own custom XML menus and call them. There's no way to feed your data into one or launch it.

People have edited the EXISTING XML interfaces (a big one that does this is called Darn if I recall right). But making a brand new one and calling it seems to be out of our reach? - - well unless FOSE can somehow do it but I could not tell you.
User avatar
Breautiful
 
Posts: 3539
Joined: Tue Jan 16, 2007 6:51 am

Post » Tue Apr 27, 2010 8:49 am

The reason I thought it was possible was because of the DarN UI config menu. It adds a new button to the main menu and a corresponding configuration dialog. Wouldn't this mean that you just can't add another button to the pause menu, with another custom dialog?
User avatar
Deon Knight
 
Posts: 3363
Joined: Thu Sep 13, 2007 1:44 am

Post » Tue Apr 27, 2010 12:57 am

The reason I thought it was possible was because of the DarN UI config menu. It adds a new button to the main menu and a corresponding configuration dialog. Wouldn't this mean that you just can't add another button to the pause menu, with another custom dialog?


I'm not sure. Editing the very front of the game might be different from creating new XML menus inside the game itself and calling them from scripts, etc.

If it is possible to create brand-new, IN-GAME interactive XML interfaces, I would really like to know how, even if it required FOSE.
User avatar
Colton Idonthavealastna
 
Posts: 3337
Joined: Sun Sep 30, 2007 2:13 am

Post » Tue Apr 27, 2010 2:51 am

DarN is the only human outside of Bethesda or Obsidian that has decoded the secrets of the Menu XML - it is not the trivial kind of XML, but quite intricate.

There are no tutorials yet written - perhaps we need to bribe DarN. :)
User avatar
Hazel Sian ogden
 
Posts: 3425
Joined: Tue Jul 04, 2006 7:10 am

Post » Mon Apr 26, 2010 7:10 pm

DarN is the only human outside of Bethesda or Obsidian that has decoded the secrets of the Menu XML - it is not the trivial kind of XML, but quite intricate.

There are no tutorials yet written - perhaps we need to bribe DarN. :)


I suggest cookies.

A description of editing XML Files by another modder who does so: "Its like knowing you want to write a program and you get you paper and pen and then give it to somebody else and short from the other side of the room what you want to do. I know xml, I hate it, horrible middle man language, administration gone mad."

I once tried to edit some XML Files. Ended horribly wrong.
User avatar
Patrick Gordon
 
Posts: 3366
Joined: Thu May 31, 2007 5:38 am

Post » Tue Apr 27, 2010 12:22 am

I looked at it again, and I can see what you mean. The way the Darn config menu is realized seems to be by adding it to the main/pause menu, and then toggling visibility between the two with the DUI F3 button.
So if you wanted to create a custom ingame dialog, you would have to extend an existing one (for example the repair menu), use FOSEs ui functions to hide the original menu/show yours (which probably would also require cahnges to the repairmenu.xml) and then call ShowRepairMenu. While technically possible, this is pretty invasive.

Did I get it right, that the main problem is to give a new menu input focus, as this is only possible when another menu is opened?
User avatar
Tasha Clifford
 
Posts: 3295
Joined: Fri Jul 21, 2006 7:08 am

Post » Mon Apr 26, 2010 11:10 pm

I suggest cookies.


Indeed - cookies may be our only hope... :)
User avatar
Alan Whiston
 
Posts: 3358
Joined: Sun May 06, 2007 4:07 pm

Post » Mon Apr 26, 2010 9:16 pm

I looked at it again, and I can see what you mean. The way the Darn config menu is realized seems to be by adding it to the main/pause menu, and then toggling visibility between the two with the DUI F3 button.
So if you wanted to create a custom ingame dialog, you would have to extend an existing one (for example the repair menu), use FOSEs ui functions to hide the original menu/show yours (which probably would also require cahnges to the repairmenu.xml) and then call ShowRepairMenu. While technically possible, this is pretty invasive.

Did I get it right, that the main problem is to give a new menu input focus, as this is only possible when another menu is opened?


heh! Talk about a hack.

Yeah its a big ole workaround, if that could work.

..... ew, though. Totally not clean.
User avatar
Nice one
 
Posts: 3473
Joined: Thu Jun 21, 2007 5:30 am

Post » Tue Apr 27, 2010 8:45 am

I looked at it again, and I can see what you mean. The way the Darn config menu is realized seems to be by adding it to the main/pause menu, and then toggling visibility between the two with the DUI F3 button.
So if you wanted to create a custom ingame dialog, you would have to extend an existing one (for example the repair menu), use FOSEs ui functions to hide the original menu/show yours (which probably would also require cahnges to the repairmenu.xml) and then call ShowRepairMenu. While technically possible, this is pretty invasive.

Did I get it right, that the main problem is to give a new menu input focus, as this is only possible when another menu is opened?


Yes you can only add to existing menus, not create brand new ones.

I had played around with trying to add a new menu by adding it to the HUD, Then only have it visible when certain conditions were set. The issues were that the game would continue to play in the background (not nessesarily a bad thing as it was a medical mod and this would discourage using it in combat) and I couldnt figure out how to let a player push a button on the HUD.

So the result was a Fail and a Headache so big I needed a whole 6 pack.
User avatar
tegan fiamengo
 
Posts: 3455
Joined: Mon Jan 29, 2007 9:53 am

Post » Tue Apr 27, 2010 6:00 am

Do you think it would be possible to create some sort of "generic" menu mode by using (abusing :D) the console? Because when the console is active the game will stop and you can actually click custom menu items. It also has it's own MenuMode id.

The only problem would be to disable all other console features. Some ideas...
...to disable console keyboard input
- temporarily disable the enter key
- on any key press, tap backspace

...to disable reference selection
- place an invisible (alpha 0) image over the full size of the screen that captures all clicks ( &no_click_past; ?)

Are there any obivious things i missed why this wouldnt be a good idea?
User avatar
Emmie Cate
 
Posts: 3372
Joined: Sun Mar 11, 2007 12:01 am

Post » Tue Apr 27, 2010 3:05 am

Well my first thought is there are many players who would not want to lose their console command abilities. Aside from that it would depend on how the console is called, if it is even possible to add information to it.
User avatar
Jennifer May
 
Posts: 3376
Joined: Thu Aug 16, 2007 3:51 pm

Post » Tue Apr 27, 2010 5:45 am

Well my first thought is there are many players who would not want to lose their console command abilities. Aside from that it would depend on how the console is called, if it is even possible to add information to it.

I think you misunderstood me. What I meant was the following:
- You have a custom menu like the one you once created. The player now does something that would make this menu show up.
- I assume you have some kind of attribute in your new menu's XML to toggle visibility. So you use setUIFloat to set it visible.
- Then you use a script to open up the console (TapKey 41). This means the game is now paused, the mouse cursor is visible and you can interact with your menu (short: it behaves just like normal menu mode, at least that's what my assumptions are based on :))
You also have to disable all console features somehow so it does look and behave as it was just a normal menu and the player can't also enter text or select objects by clicking in the background.
- Once the player leaves the menu, everything is restored to how it was before.

This wouldn't have anything to do with what happens when you manually open the console. It's just exploiting the fact that opening the console gives you menu mode without any actual default menu, so you could use your own.
User avatar
tannis
 
Posts: 3446
Joined: Sat Dec 09, 2006 11:21 pm

Post » Mon Apr 26, 2010 6:41 pm

Yeah I think the full gist of what you were saying hit me a little while later.

When I was playing aroud with it I was just adding to the HUD in the same way that DarN adds the Date, Time and %s up in the corner. So some other menu entirely would have to be used as the HUD is diabled in console mode. And that brings us back to the same issue of not being able to add menus only add to them. I was also looking at trying to use the menumode from the Infirmary or the Workbench to add XML menus there, then somehow disabling the message box menus. If that were possible then it might also be possible that XML menus could be piggybacked on other message menus or even dialog menus.

There I go again, sounding like I know what I'm talking about. Maybe if we keep this thread going DarN will pop in and give us some solid answers.
User avatar
yermom
 
Posts: 3323
Joined: Mon Oct 15, 2007 12:56 pm

Post » Tue Apr 27, 2010 9:00 am

Wow, everybody's talking about me behind my back!

I'm interested in creating custom menus/dialogs, but I can't seem to find any documentation for the XML files. Does it exist anywhere (public)? Many things are somewhat self-descriptive, but I don't get how exactly the templates work (where/how are they instantiated?) and also I wonder what exactly a hotrect is (a button?).

I havehttp://darnified.net/forums/index.php/board,10.0.html, mostly for Oblivion on how to configure my settings. I wrote http://darnified.net/forums/index.php/topic,180.0.html on adding custom stuff and UI-Script interaction. Nothing on controls, etc yet, but you can check out the scripts in a11 to see what I'm doing there to collect input.

A hotrect is actually an image with a blank filename and target=true. No idea why they made it in the first place.

The reason I thought it was possible was because of the DarN UI config menu. It adds a new button to the main menu and a corresponding configuration dialog. Wouldn't this mean that you just can't add another button to the pause menu, with another custom dialog?

Yup. The button has a toggle state that the settings rect checks. When it's toggled on, the rect is visible, and the menu background hidden. This is doable right from XML code. FOSE is required for more advanced stuff though.

I'm not sure. Editing the very front of the game might be different from creating new XML menus inside the game itself and calling them from scripts, etc.

If it is possible to create brand-new, IN-GAME interactive XML interfaces, I would really like to know how, even if it required FOSE.

http://www.tesnexus.com/downloads/images/10763-1-1208710572.jpg. http://www.youtube.com/watch?v=ntojHU4YD_8. All XML - no script backing there yet. Resides in the HUD, but appears to be in page 5 of the Stats Menu. HACKZ! http://ui.darnified.net/wip/F3/DUIF3a12_04.jpg. You have tabbed pages with optional sub-tabs to the left. It's interactive, brand-new, in-game and resides in the Start Menu.

DarN is the only human outside of Bethesda or Obsidian that has decoded the secrets of the Menu XML - it is not the trivial kind of XML, but quite intricate.

There are no tutorials yet written - perhaps we need to bribe DarN. :)

See above. :)

heh! Talk about a hack.

Yeah its a big ole workaround, if that could work.

..... ew, though. Totally not clean.

The whole UI-business is a hack. It's so rigid and so not meant to be modded, that the only way in is by trickery. :)

Yes you can only add to existing menus, not create brand new ones.

I had played around with trying to add a new menu by adding it to the HUD, Then only have it visible when certain conditions were set. The issues were that the game would continue to play in the background (not nessesarily a bad thing as it was a medical mod and this would discourage using it in combat) and I couldnt figure out how to let a player push a button on the HUD.

So the result was a Fail and a Headache so big I needed a whole 6 pack.

I could've told you that. ;)

Do you think it would be possible to create some sort of "generic" menu mode by using (abusing :D) the console? Because when the console is active the game will stop and you can actually click custom menu items. It also has it's own MenuMode id.

The only problem would be to disable all other console features. Some ideas...
...to disable console keyboard input
- temporarily disable the enter key
- on any key press, tap backspace

...to disable reference selection
- place an invisible (alpha 0) image over the full size of the screen that captures all clicks ( &no_click_past; ?)

Are there any obivious things i missed why this wouldnt be a good idea?

I looked at the console as a possibility before settling on the Start Menu. If you set a flag to indicate what kind of menu you want, you can present totally different menus depending on that. Say you want a much better message menu interface, just set the appropriate ui var in the Message Menu with FOSE, and make your custom code visible according to that. Var off - regular menu.

Stackingtype is only for menus. To block input, use an invisible image or just a rect with target set, and a depth greater than what you're blocking.

Well my first thought is there are many players who would not want to lose their console command abilities. Aside from that it would depend on how the console is called, if it is even possible to add information to it.

See the above reply. You could call the menu using a FOSE hotkey, set the appropriate var, and the user would be presented with your menu. By hitting the console key alone, he would be presented with the console. Adding stuff to the console is possible IIRC.
User avatar
Vicki Blondie
 
Posts: 3408
Joined: Fri Jun 16, 2006 5:33 am

Post » Mon Apr 26, 2010 8:04 pm

Using the console does have the slight downside that it's the console :P. You'll have a huge chunk of debug messages onscreen from various mods (and some default game actions print to console).
User avatar
Isaiah Burdeau
 
Posts: 3431
Joined: Mon Nov 26, 2007 9:58 am

Post » Mon Apr 26, 2010 6:59 pm

No, not if you hide the output according to said var. ;)
User avatar
Avril Churchill
 
Posts: 3455
Joined: Wed Aug 09, 2006 10:00 am

Post » Tue Apr 27, 2010 3:05 am

http://www.tesnexus.com/downloads/images/10763-1-1208710572.jpg. http://www.youtube.com/watch?v=ntojHU4YD_8. All XML - no script backing there yet. Resides in the HUD, but appears to be in page 5 of the Stats Menu. HACKZ! http://ui.darnified.net/wip/F3/DUIF3a12_04.jpg. You have tabbed pages with optional sub-tabs to the left. It's interactive, brand-new, in-game and resides in the Start Menu.


What I want is to create a follower information menu sort of thing, where you would select a follower and get to see the skills, stats, weapons in inventory, various settings, and so on. I know all about how to grab the information I want to display but I was chased off of the whole XML thing pretty early on. Is it possible to make a custom XML window that would come up in-game and have that sort of information? Maybe even allow the player to use buttons on the menu and it would cause variables to change value or similar?
User avatar
Trent Theriot
 
Posts: 3395
Joined: Sat Oct 13, 2007 3:37 am

Post » Tue Apr 27, 2010 9:27 am

What I want is to create a follower information menu sort of thing, where you would select a follower and get to see the skills, stats, weapons in inventory, various settings, and so on. I know all about how to grab the information I want to display but I was chased off of the whole XML thing pretty early on. Is it possible to make a custom XML window that would come up in-game and have that sort of information? Maybe even allow the player to use buttons on the menu and it would cause variables to change value or similar?

Sure. What do you think the http://ui.darnified.net/wip/F3/DUIF3a12_04.jpg is? ;)

I'm adding basic info like this for the standard followers. I had plans to contact you actually, to allow for you to add your own followers to this stuff. A settings/info menu is easy too.
User avatar
Yvonne Gruening
 
Posts: 3503
Joined: Mon Apr 23, 2007 7:31 pm

Post » Mon Apr 26, 2010 6:49 pm

Sure. What do you think the http://ui.darnified.net/wip/F3/DUIF3a12_04.jpg is? ;)

I'm adding basic info like this for the standard followers. I had plans to contact you actually, to allow for you to add your own followers to this stuff.


Damn...

I'm guessing that something within the Darnified UI mod that had Phalanx followers in it would need to somehow have a master/ relationship with Phalanx? The reason I ask is that three of my followers do not exist in fallout3.esm, they are in my .esp. Also I might want to access quest variables that are defined within my .esp.

A settings/info menu is easy too.


If I wanted something like this specifically for Phalanx - question - is it the sorta easy where I should grab your tutorial and try to make it? Or is it easy like, you're like, "send me what you want in it and I'll send you something back in 5 minutes!" I admit that I don't have a good sense of background/perspective on this.
User avatar
Catherine N
 
Posts: 3407
Joined: Sat Jan 27, 2007 9:58 pm

Post » Mon Apr 26, 2010 10:15 pm

No, not if you hide the output according to said var. ;)

And by that you mean that the console also is nothing else but an element/branch in the UI tree, so you could set it invsible with setUIFloat? (If that's that case, what the name/path of the element?)
Or do you mean like a var in memory you would have to access with a new FOSE command?
User avatar
kelly thomson
 
Posts: 3380
Joined: Thu Jun 22, 2006 12:18 pm

Post » Tue Apr 27, 2010 12:30 am

Adding stuff to the console is possible IIRC.

Scratch that - I think I remember that wrong. I used it to test the HUD controls, which was a dead end.

Damn...

I'm guessing that something within the Darnified UI mod that had Phalanx followers in it would need to somehow have a master/ relationship with Phalanx? The reason I ask is that three of my followers do not exist in fallout3.esm, they are in my .esp. Also I might want to access quest variables that are defined within my .esp.

Not really. The UI is a separate entity. If I make the framework for you to use, you can detect DUI with FOSE, and set the vars for your followers in the HUD. No master/dependency needed. For more advanced stuff beyond those displays shown in that image, you need to make a new menu.

If I wanted something like this specifically for Phalanx - question - is it the sorta easy where I should grab your tutorial and try to make it? Or is it easy like, you're like, "send me what you want in it and I'll send you something back in 5 minutes!" I admit that I don't have a good sense of background/perspective on this.

That's what I did with the new grenade icon in FWE - this is not that easy. The HUD info should be easy enough when finished, but as mentioned above, more advanced menus require more thought.

And by that you mean that the console also is nothing else but an element/branch in the UI tree, so you could set it invsible with setUIFloat? (If that's that case, what the name/path of the element?)
Or do you mean like a var in memory you would have to access with a new FOSE command?

See my first quote in this post. I had a quick look, and can't find any trace of a console menu. I think I used it for HUD testing, embedding elements in the HUD, and showing them while the console was open.
User avatar
Jaki Birch
 
Posts: 3379
Joined: Fri Jan 26, 2007 3:16 am

Post » Tue Apr 27, 2010 7:15 am

Not really. The UI is a separate entity. If I make the framework for you to use, you can detect DUI with FOSE, and set the vars for your followers in the HUD. No master/dependency needed. For more advanced stuff beyond those displays shown in that image, you need to make a new menu.


That's what I did with the new grenade icon in FWE - this is not that easy. The HUD info should be easy enough when finished, but as mentioned above, more advanced menus require more thought.


Phalanx does not use FOSE. If I understand you right - - if you want me to add variables to my scripts that match up with what DUI needs and keep them updated, I could easily do that regardless of detecting DUI. I do plenty of variable updating as it is, what's a few more, right? In fact I might already have the variables you wanted to see.

Yeah I wanted more stuff than what was in the image. Sounds like a project. I should look at that tutorial and work with it before considering pestering people for design help I think. Well, unless they were like HEY I WANNA DO IT in which case I be like, cool ok, here's a graphic of the conceptual design, have at it! heheh.
User avatar
Chloe Yarnall
 
Posts: 3461
Joined: Sun Oct 08, 2006 3:26 am

Post » Mon Apr 26, 2010 11:16 pm

I wouldn't mind, but this'll take some time - time I don't have. I have some tweaking to do with the controls currently, as the XML takes a long time to parse...

If you want to interact with the UI, FOSE is the only way. If you wont use it, the only way to get this info on screen is if someone made an addon to DUI. http://www.fallout3nexus.com/downloads/file.php?id=11329, making use of the FWE primary needs panel for people without FWE.

The HUD follower info uses 4 vars atm; name, health, combat style and current activity. I'm looking into others as well - crippled limbs, etc. The system is still very much a WIP, but the gist of it is that you simply find an available follower slot, update these vars, and the UI shows them in a panel like that.

I have a settings system in progress that should allow you to make your own menu based on that. Same as the one I use http://ui.darnified.net/wip/F3/DUIF3a12_04.jpg.
User avatar
Nicole Mark
 
Posts: 3384
Joined: Wed Apr 25, 2007 7:33 pm

Post » Mon Apr 26, 2010 10:55 pm

I wouldn't mind, but this'll take some time - time I don't have. I have some tweaking to do with the controls currently, as the XML takes a long time to parse...

If you want to interact with the UI, FOSE is the only way. If you wont use it, the only way to get this info on screen is if someone made an addon to DUI. http://www.fallout3nexus.com/downloads/file.php?id=11329, making use of the FWE primary needs panel for people without FWE.

The HUD follower info uses 4 vars atm; name, health, combat style and current activity. I'm looking into others as well - crippled limbs, etc. The system is still very much a WIP, but the gist of it is that you simply find an available follower slot, update these vars, and the UI shows them in a panel like that.

I have a settings system in progress that should allow you to make your own menu based on that. Same as the one I use http://ui.darnified.net/wip/F3/DUIF3a12_04.jpg.


Alright on the FOSE point. For the time being Phalanx will not use FOSE but in the future if I want to do this, I'll keep in mind that it's necessary. It's not out of the question but it's not happening right now, anyway.

Be aware that the selectable combat style (ranged vs melee) is glitched on vanilla followers. Script-set combat styles do not appear to hold between saves (which is how it is set in their tactics dialogue). In the vanilla game, when in "ranged" mode, they are usually just in "DEFAULT" combat style which allows probably anything. If a player really wanted a follower to stay on melee, they would have to go into that tactics dialogue and set it every time they restarted the game, at least.

So if you're reading that variable, don't bother. You'll want to use the FOSE function for getting the combat style directly. And yeah you will see that unless the player has very recently been in that menu, that combatstyle is probably "default" unless a mod is meaningfully managing the combat style (Phalanx does this for example).
User avatar
Stace
 
Posts: 3455
Joined: Sun Jun 18, 2006 2:52 pm

Next

Return to Fallout 3