[Relz] OBSE Plugin - MenuQue

Post » Tue May 03, 2011 9:53 am

Oh yes ofcourse, I already added it and was about to release an update. But then I discovered the whole InsertXML possibility and, although it works, I ran into a small snag, hence the delay. If I can't get it working within a day I'll just leave it out and release what's already been added. So you can expect it within a day, if I still haven't released it tomorrow just pester me about it a little. It'll probably be due to either lazyness or short-term memory-loss. :P
Thanks. Could you post the details for it here (like how to call it to get the index among any item in the barter menu, or only within the ones with the same name, and what it returns if you call it without being over any active item)?

Safe to say if I can work out the kinks this function will be the most powerful thing Oblivion has even layed eyes on.... :toughninja:

I would say there's a little work left before you beat OBSE, but nice indeed :P
User avatar
Tina Tupou
 
Posts: 3487
Joined: Fri Mar 09, 2007 4:37 pm

Post » Mon May 02, 2011 8:28 pm

I would say there's a little work left before you beat OBSE, but nice indeed :P
Oi! You don't deflate bigheads so heedlessly. They need a nice, caring touch :P
User avatar
Tanya
 
Posts: 3358
Joined: Fri Feb 16, 2007 6:01 am

Post » Tue May 03, 2011 4:14 am

Wait, this insertXML thing means that we can add values into the statistics menu without each mod conflicting each other with their own different stat menus for example?
User avatar
Jack
 
Posts: 3483
Joined: Sat Oct 20, 2007 8:08 am

Post » Mon May 02, 2011 9:16 pm

Wait, this insertXML thing means that we can add values into the statistics menu without each mod conflicting each other with their own different stat menus for example?

Yes, that was what I was thinking of up in post #24. Great stuff :)
User avatar
Khamaji Taylor
 
Posts: 3437
Joined: Sun Jul 29, 2007 6:15 am

Post » Mon May 02, 2011 9:56 pm

Yes, that was what I was thinking of up in post #24. Great stuff :)

That is really, really awesome.
User avatar
Harry Hearing
 
Posts: 3366
Joined: Sun Jul 22, 2007 6:19 am

Post » Tue May 03, 2011 3:39 am

Thanks. Could you post the details for it here (like how to call it to get the index among any item in the barter menu, or only within the ones with the same name, and what it returns if you call it without being over any active item)?
Ofcourse, the basic idea is that with the GetMenuActiveChildIndex you can do the same as what SetMenuActiveXXXValue only not just while the element is selected. The code would be something like this:
SetMenuActiveFloatValue "user0", 1001, 99-which is the same as-let index := mqGetMenuActiveChildIndexlet sElement := GetActiveUIComponentNamelet sRoot := GetActiveUIComponentFullName-some magic to remove 'sElement' at the end of 'sRoot', needed because the child element needs a '#' in front of it0mqSetMenuChildFloatValue "%z\#%z\user0", sRoot, sElement, 1001, index, 99
The latter ofcourse can be used with stored values, making it suitable to undo/revert things changed with SetMenuActiveXXXValue.

I would say there's a little work left before you beat OBSE, but nice indeed :P

Be nice, you want the function, don't you. :hehe: But you're right, nothing beats OBSE.

Oi! You don't deflate bigheads so heedlessly. They need a nice, caring touch :P
That's more like it, although I'm not so sure this is as nice as it seems (bighead...? ;)) Oh and since we're talking about a 'nice and caring touch', CSE would get pretty close to OBSE in terms of awesomeness. :toughninja:


Wait, this insertXML thing means that we can add values into the statistics menu without each mod conflicting each other with their own different stat menus for example?
Yes, that was what I was thinking of up in post #24. Great stuff :)
That is really, really awesome.
It sure is, I got the function working a few days ago but after some testing I discovered the inserted file had a few layout requirements (basically it needed to start with a ). So the next step was creating a dummy file with the exact same content of the inserted file, with the exception of it having a small, empty rect at the very top. And with lots of help from shadeMe I finally got it working in an efficient way. :D

Just tested it with Meh MiniMap and everything was inserted correctly. Although that was merely one file, inserted at top level so I'm gonna test it with a more complex structure. Possibly with QuestLogManager. After that (shouldn't take more than an hour or two) I can release this baby to wreck havoc on the world, muhahahahaha..... :nuke:

-kyoma
User avatar
No Name
 
Posts: 3456
Joined: Mon Dec 03, 2007 2:30 am

Post » Tue May 03, 2011 3:29 am

That's more like it, although I'm not so sure this is as nice as it seems (bighead...? ;))
Hey, I was in b'ween a UT match :D But I apologize if I'd offended you - Not my intention.
User avatar
Damian Parsons
 
Posts: 3375
Joined: Wed Nov 07, 2007 6:48 am

Post » Mon May 02, 2011 6:49 pm

I can't believe the progress Oblivion modding is making. A year ago, NO ONE ever thought something like this would ever be feasible.
User avatar
Kit Marsden
 
Posts: 3467
Joined: Thu Jul 19, 2007 2:19 pm

Post » Tue May 03, 2011 12:03 am

Hi, mqGetMenuChildStringValue gave me a bit of a headache until it occured to me that maybe it required "set" instead of "let". So you should probably note that in the documentation. I haven't looked into the actual C++ code, but from my understanding I assume "let" must allocate a new string buffer each time in order to work.

The functions work fine except for that (tested mqGetMenuChildCount, mqGetMenuChildHasTrait, mqGetMenuChildStringValue, mqGetMenuChildFloatValue and mqSetMenuChildFloatValue) :)
User avatar
Chavala
 
Posts: 3355
Joined: Sun Jun 25, 2006 5:28 am

Post » Mon May 02, 2011 11:54 pm

Hi, mqGetMenuChildStringValue gave me a bit of a headache until it occured to me that maybe it required "set" instead of "let". So you should probably note that in the documentation. I haven't looked into the actual C++ code, but from my understanding I assume "let" must allocate a new string buffer each time in order to work.
Hmm, I have no idea. Maybe it's because it is an OBSE plugin that returns a string, which doesn't have access to or doesn't work with let. I'll go ask in the OBSE thread, it would certainly be useful to know if this is the case.

The functions work fine except for that (tested mqGetMenuChildCount, mqGetMenuChildHasTrait, mqGetMenuChildStringValue, mqGetMenuChildFloatValue and mqSetMenuChildFloatValue) :)
Cool thanks, I tested them myself but it's always good to see it works for other people too. :) Although most of my tests were done in the console, hence I never encountered the problem above.
User avatar
Suzy Santana
 
Posts: 3572
Joined: Fri Aug 10, 2007 12:02 am

Post » Tue May 03, 2011 12:07 am

Just wanted to post a little bit of code where I use the new functions. This is part of a little mod I've had on the backburner for a long time. The mod makes owning houses more important, by punishing repair and alchemy if you're not at home. For the repair bit, one of the effects is that you cannot repair items if their health is above a limit (say 85%). To do that, I use kyoma's functions to traverse all children of "rep_contents\rep_list_pane", check their health (user5), and if so, set user0 to 2, which to the engine means that it's an enchanted item you don't have the skill to repair.

Here's the bit doing this:
			let i := mqGetMenuChildCount "rep_contents\rep_list_pane\##" 1035			DebugPrint "UH:Found %.0f elements", i						While i > 0				let i -= 1				if (mqGetMenuChildHasTrait "rep_contents\rep_list_pane\##\filename" 1035 i)					DebugPrint "UH:Don't do anything about scrollbar at index %0.f", i				else					set str1 to mqGetMenuChildStringValue "rep_contents\rep_list_pane\##\user5" 1035 i					let tempF := ToNumber str1					DebugPrint "UH:Health %.0f with str %z at index %.0f", tempF, str1, i					if tempF >= current_repair_limit						DebugPrint "UH:Disable repair for index %.0f", i						mqSetMenuChildFloatValue "rep_contents\rep_list_pane\##\user0" 1035 i 2					endif				endif			Loop


Nothing fancy, but shows a real use for the new functions :)
User avatar
Nicole M
 
Posts: 3501
Joined: Thu Jun 15, 2006 6:31 am

Post » Mon May 02, 2011 10:06 pm

Hehe, I'm beginning to think this plugin might not have been such a good idea. I'm loosing my monopoly position with regards to (scripting)UI mods.:P
User avatar
sexy zara
 
Posts: 3268
Joined: Wed Nov 01, 2006 7:53 am

Post » Mon May 02, 2011 11:33 pm

Hehe, I'm beginning to think this plugin might not have been such a good idea. I'm loosing my monopoly position with regards to (scripting)UI mods.:P

Too late now. I have now released the first mod that requires your plugin: http://www.gamesas.com/index.php?/topic/1098744-relz-useful-houses/. I will probably make more of the mod later, but wanted to really get your plugin into use :)

Thanks for the work. :foodndrink:
User avatar
josie treuberg
 
Posts: 3572
Joined: Wed Feb 07, 2007 7:56 am

Post » Tue May 03, 2011 1:53 am

Uploaded version 2
* Added two new functions: mqInsertXML and mqGetMenuActiveChildIndex.
* Rewrote both mqCreateMenuXXXValue functions and removed the beta tag.
* Rewrote mqGetHighlightedClass, should no longer cause sound spamming when used.
* Fixed the functions returning a string not working with let.
* Removed some obsolete code.

I'm also thinking of adjusting mqInsertXML to (also) work with a string directly instead of requiring an actual file. Is probably useful for when you have a change to make that is relatively small and don't want to create lots of tiny cluttering files. But we'll see how it goes first. :)


Too late now. I have now released the first mod that requires your plugin: http://www.gamesas.com/index.php?/topic/1098744-relz-useful-houses/. I will probably make more of the mod later, but wanted to really get your plugin into use :)

Thanks for the work. :foodndrink:
Cool, now I can start making a list of mods that use MenuQue. Even if it is just one atm. :P

-kyoma
User avatar
Cagla Cali
 
Posts: 3431
Joined: Tue Apr 10, 2007 8:36 am

Post » Tue May 03, 2011 10:49 am

Good job :foodndrink:

Have tested the mqInsertXML now and it works great :celebration:

Btw, Is there a general rule for when it can be used? E.g. If I want to have a new element in the container/barter menu, do I have to repeat the insertion each time the menu is opened, or can I do it just after savegame load, or what?

Not that it is too important, because this works and should catch all situations (called from within Menumode 1008): :)
		if (GetMenuHasTrait "item_cost_popup\item_cost_popup_text\string" 1008) == 0			mqInsertXML "EnhancedEconomy\dui_item_cost_popup.xml" 1008			if (GetMenuHasTrait "item_cost_popup\item_cost_popup_text\string" 1008) == 0				DebugPrint "EE:Failed to insert item cost popup!"			endif		endif
...and I did not see the debug message :)
User avatar
Alyna
 
Posts: 3412
Joined: Wed Aug 30, 2006 4:54 am

Post » Tue May 03, 2011 7:06 am

Btw, Is there a general rule for when it can be used? E.g. If I want to have a new element in the container/barter menu, do I have to repeat the insertion each time the menu is opened, or can I do it just after savegame load, or what?
The general rule is to do it each time the relative menu is reloaded/reparsed. For the 4 main menus (stats, inv, magic (and popup), map) this is once per game restart, for most other menus this is each time they are (re)opened.

Also, dunno if you tried it already but currently it isn't possible to insert stuff directly into the template elements. Mainly because ingame they don't exist, I suspect whenever a file with templates is parsed that the game caches it in a different area. Ofcourse you could insert a file into each element derived from the template but this may be problematic with multi-named-elements.

Apart from that, during my own tests the function never failed to insert the content. There may still be some rare scenario where it fails but currently it works as I dreamed. :D

P.S. Do the two string functions now work with let? I forgot to test it after changing the code.

-kyoma
User avatar
Taylah Haines
 
Posts: 3439
Joined: Tue Feb 13, 2007 3:10 am

Post » Mon May 02, 2011 8:27 pm

The general rule is to do it each time the relative menu is reloaded/reparsed. For the 4 main menus (stats, inv, magic (and popup), map) this is once per game restart, for most other menus this is each time they are (re)opened.
OK, then checking and adding if needed each time I actually need to use it is pretty sensible, so I keep that.

Also, dunno if you tried it already but currently it isn't possible to insert stuff directly into the template elements. Mainly because ingame they don't exist, I suspect whenever a file with templates is parsed that the game caches it in a different area. Ofcourse you could insert a file into each element derived from the template but this may be problematic with multi-named-elements.
I haven't tried that, but I have earlier tried to copy one trait within the template elements to a trait outside, and that didn't work, for the same reason, so I have learned to not refer elements there...

Apart from that, during my own tests the function never failed to insert the content. There may still be some rare scenario where it fails but currently it works as I dreamed. :D
It have worked fine so far (tested 15 times maybe), but I guess the main reason that it will fail is when the xml file to insert isn't installed correctly :P

P.S. Do the two string functions now work with let? I forgot to test it after changing the code.
I haven't checked yet, but I can try to change the lines in Useful Houses from set to let again.
User avatar
Trista Jim
 
Posts: 3308
Joined: Sat Aug 25, 2007 10:39 pm

Post » Tue May 03, 2011 9:35 am

Uploaded version 2a
* Now ALL functions should work with let.

I haven't tried that, but I have earlier tried to copy one trait within the template elements to a trait outside, and that didn't work, for the same reason, so I have learned to not refer elements there...
It should be possible to refer to elements outside of the template, not the other way around ofcourse. If you're referring to another element within the same template you may wish to use "src=http://forums.bethsoft.com/index.php?/topic/1097119-relz-obse-plugin-menuque/sibling(element)" or "src=http://forums.bethsoft.com/index.php?/topic/1097119-relz-obse-plugin-menuque/child(element)".

-kyoma
User avatar
Lewis Morel
 
Posts: 3431
Joined: Thu Aug 16, 2007 7:40 pm

Post » Tue May 03, 2011 2:15 am

Hi kyoma,

I have a request that I'm not sure if suits better here or in the main OBSE thread, so I'll ask both places:

The MenuQue "mqGet/setMenuActive..." functions, as well as OBSE's "GetActive..." functions only work when navigating the menus with the mouse. As soon as you start using the up/down keys, those functions stop working (as if there is no active item). I would very much get some of them to work, especially the GetActiveMenuSelection function.

I see that the "mouseover" trait is 1 for the item that has focus, both when pointed to by the mouse (when ...Active... functions work) and when being selected using keyboard (when ...Active... functions doesn't work). I don't know how the inner functions of the ...Active... functions are, but my hope is that they can be extended to return the value/object in focus also when the player navigates with the keyboard.

Given that the focus box, and the "mouseover" trait follows the active item even when not using the mouse, I hope this is not too difficult.

For now, the OBSE GetActiveMenuSelection function is most important for me, but it would of course be a good improvement to get all the othe ...Active... functions to work with keyboard navigation as well :)
User avatar
rebecca moody
 
Posts: 3430
Joined: Mon Mar 05, 2007 3:01 pm

Post » Tue May 03, 2011 5:10 am

Finally found the http://cs.elderscrolls.com/constwiki/index.php/Category:Oblivion_XML. They aren't slightly as complicated as I thought. :whistling:


Currently I'm trying to change http://tes.multimediaxis.de/?go=dlfile&fileid=383 to use xml-elements so user's experiencing CTDs with Pluggy's Hud-component are also able to use it. One problem is, that I got one file which would have to be inserted several times. Of course, I could create several copies of it, but that would limit the amount of maximum displayed Actors.
So basically, is it possible to implement an mqInsertXML-version which also changes the name of the top-level-element (of the inserted xml)?
Or maybe add an additional parameter to mqInsertXML which always creates a new element, even if the old one already exists.


*doing some first test*

Wait, did some tests using the console and it already is the case, that the new object-element is inserted, no matter if another one with the same name already exists or not. :)
I think I got everything I need. Thanks for this plugin. :)


PS:
mqSetMessageBoxSource is sth. I'd used a year or so ago. Bypassed this problem by returning an Array containing strings and using them for the MessageBox. ;)
User avatar
emma sweeney
 
Posts: 3396
Joined: Fri Sep 22, 2006 7:02 pm

Post » Tue May 03, 2011 7:25 am

....
I knew they wouldn't work when you use the keyboard to navigate but I didn't know GetActiveMenuSelection stops working. I always thought it just kept returning the item the mouse is over. I'll see what I can do. First I need to look at how the original command works.

[edit]
Actually, it would be easier if GetActiveMenuSelection indeed returns 0 when using the keyboard navigation. Cause then I'd have a clear yes/no switch for a possible GetActiveMenuFocus-ish function/code. As in, something that would be part of the same function.
[/edit]

Wait, did some tests using the console and it already is the case, that the new object-element is inserted, no matter if another one with the same name already exists or not. :)
I think I got everything I need. Thanks for this plugin. :)
Gonna reply to this first, yes, the elements are always inserted as a new instance, even if they already exist. At first I considered making an InsertXMLTemplate function which would allow you to insert a file(template), specify the name of the element and possibly the index at which to place it. But I soon realised this wasn't nessecary (atleast not for now) because, well, you know. :P

Oh, but, this does not apply to induvidual traits, so if you are inserting a file that has any traits at top-level (aka, not inside another element) they will replace the existing ones. Which IMO is a good thing. :)

Currently I'm trying to change http://tes.multimediaxis.de/?go=dlfile&fileid=383 to use xml-elements so user's experiencing CTDs with Pluggy's Hud-component are also able to use it. One problem is, that I got one file which would have to be inserted several times. Of course, I could create several copies of it, but that would limit the amount of maximum displayed Actors.
So basically, is it possible to implement an mqInsertXML-version which also changes the name of the top-level-element (of the inserted xml)?
Or maybe add an additional parameter to mqInsertXML which always creates a new element, even if the old one already exists.
There would be another way without having to make several copies. You'd use a structure like this (which I frequently use in X-Skills), with the master file X-Skills\main_skill_slots.xml containing this bit (the _nth stuff is for things in the template file that require the global index of the element and such)
			<_nth> 1 				<_nth> 2 	.....
And the X-Skills\skill_data_layout.xml contains the actual content of each xskill element. Ofcourse your solution is just as easy (especially now with the MenuChild functions) but I wanted to let you know of this little 'trick' (I call it a trick because it's not as well known as I'd like). :)


mqSetMessageBoxSource is sth. I'd used a year or so ago. Bypassed this problem by returning an Array containing strings and using them for the MessageBox. ;)
Yea, after I made the function I realised its usefulness wasn't as great as I had imagined. Still, I decided to keep it anyways, who knows what kind of interesting mod may use it in the future.

=====================================================

P.S. Stop asking questions and making requests, I need to work on my mods for a while now. And it's hard enough NOT to work on the plugin already. ;)

-kyoma
User avatar
Sunnii Bebiieh
 
Posts: 3454
Joined: Wed Apr 11, 2007 7:57 pm

Post » Tue May 03, 2011 6:21 am

Gonna reply to this first, yes, the elements are always inserted as a new instance, even if they already exist. At first I considered making an InsertXMLTemplate function which would allow you to insert a file(template), specify the name of the element and possibly the index at which to place it. But I soon realised this wasn't nessecary (atleast not for now) because, well, you know. :P

Oh, but, this does not apply to induvidual traits, so if you are inserting a file that has any traits at top-level (aka, not inside another element) they will replace the existing ones. Which IMO is a good thing. :)


Sure, since "traits" only make sense if they're not doubled replacing is the right thing. :)
I think you should mention this behavior (traits are replaced, elements simply added, no matter if another element with that name already exists) in the function list.

There would be another way without having to make several copies. You'd use a structure like this (which I frequently use in X-Skills), with the master file X-Skills\main_skill_slots.xml containing this bit (the _nth stuff is for things in the template file that require the global index of the element and such)
			<_nth> 1 				<_nth> 2 	.....
And the X-Skills\skill_data_layout.xml contains the actual content of each xskill element. Ofcourse your solution is just as easy (especially now with the MenuChild functions) but I wanted to let you know of this little 'trick' (I call it a trick because it's not as well known as I'd like). :)


Well, since I thought Oblivion-xml follows the general xml-rules, i thought there has to be exactly one top-level element. Therefore this didn't come to my mind, but I was only thinking for about 5 minutes about that problem. Anyway, since I can just copy the whole file (and access all elements with the same name) there's no need for this trick. :)

Edit:
Wait, I got to implement three different Bars with (almost) the same values. I think I found a good use for this trick, thanks. :)


LP



PS:
I'll do my best not to ask questions anymore. :)
User avatar
Ebou Suso
 
Posts: 3604
Joined: Thu May 03, 2007 5:28 am

Post » Tue May 03, 2011 7:45 am

Sure, since "traits" only make sense if they're not doubled replacing is the right thing. :)
I think you should mention this behavior (traits are replaced, elements simply added, no matter if another element with that name already exists) in the function list.
I suppose you're right, never really thought about people not knowing this. It's one of those things I just assume everybody knows (or atleast, the people who would be interested in the function). :)

PS:
I'll do my best not to ask questions anymore. :)
Not sure it'll matter cause even without asked questions I find myself working on MenuQue. :P (but also X-Skills! :toughninja:)

Speaking of which, MenuQue that is, while digging around I think I found a way to access (and probably change) the 'global menu strings' (the content of the strings.xml file). Since there are many menus that don't use a gamesetting but one of those 'global strings' I figured it might be handy to be able to access or change them. I'll still need to implement it ofcourse but from the looks of things it shouldn't be that hard.

And something else, probably just for TheNiceOne though, I can make a version of GetActiveMenuSelection that'll work with keyboard navigation. Although I am a bit reluctant to add it since it would be the exact same function, with just 2 lines added at the top. So if someone wants it really really bad then say the word..... :D

-kyoma
User avatar
Juan Suarez
 
Posts: 3395
Joined: Sun Nov 25, 2007 4:09 am

Post » Tue May 03, 2011 8:58 am

(but also X-Skills! :toughninja:)


:woot: :twirl: :celebration:


Currently taking a break from my skills mod, but that's also because I reached the ugly part (i.e. compatibility/world implementation/testing/ducumentation/etc.). MenuQue is a great toy to play with. :)


Edit:
Got an idea how you could implement an GetCurserPosition-function which always returns the same values for the same position on the screen (contrary to GetCursorPos --> IIRC movement is reported correctly, but you can't rely on the starting position; also changes the output in gamemode if the mouse is used to change direction of the player & Cursor doesn't start in the center of the screen at menumode/console-start): Add a rect-element (if it works, else an transparent picture) to each pixel on the screen (or use stripes, if you only want to determine the axis) and use the mouseover-trait (and x/y-trait(s)) to determine where the cursor currently is.
Using mqIncludeXml (and two custom traints in the inserted file with and ) every screen size could be easily supported.

My question is: wouldn't it be possible to make this directly by MenuQue( and use "virtual" (i.e. not existing) *.xml-files)?
This way there won't be as many invisible elements only searching for a mouseover and I won't have to search for all the menus it has to be inserted. :P

Edit2:
First but report: mqGetMenuChildFloatValue doesn't work for Nth-top-level element (e.g. ( mqGetMenuChildFloatValue "#test\_test", 1004, 0 ) only returns 0, while ( mqGetMenuChildFloatValue "test\#test\_test", 1004, 0 ) returns 1/2; all traits exist (created with mqIncludeXML, accessible via G/SetMenuFloatValue) and have a value of %false;/%true;).
User avatar
Daniel Brown
 
Posts: 3463
Joined: Fri May 04, 2007 11:21 am

Post » Mon May 02, 2011 11:06 pm

:woot: :twirl: :celebration:
Hehe, I knew you'd like it. ;)

Currently taking a break from my skills mod, but that's also because I reached the ugly part (i.e. compatibility/world implementation/testing/ducumentation/etc.). MenuQue is a great toy to play with. :)
Trust me, I know exactly how you feel. ;)

.......
My question is: wouldn't it be possible to make this directly by MenuQue( and use "virtual" (i.e. not existing) *.xml-files)?
This way there won't be as many invisible elements only searching for a mouseover and I won't have to search for all the menus it has to be inserted. :P
It is certainly an interesting idea and in theory it should work. But I'm afraid it'll be next to impossible to do it from script. Why? Well mainly because you'd have to add these invisible elements to each menu that is open (or rather, to the menu that is at the very top), and without a way to delete it again it would quickly pile up (well there won't be duplicates but as soon as it's used in multiple menus the exact same element has to be copied too). :(

Apart from that, I suppose I could see if it is even possible, there is a small chance the whole 'mouseover' stuff doesn't work in the same frame the element gets added. But lets assume that it does, then I think it is better to start off with relatively large elements and then slowly make them smaller. As in, first use squares of 100x100 pixels, check which of the ~15 squares is selected and then further divide it into squares of 10x10, etc. Dividing the entire screen into 1x1 elements would be very, very bad for Oblivion's memory. Not to mention the fps. On average that would be nearly 1 million elements (1024x800 = 819200, and alot of people play higher resolutions)! :o

Edit2:
First but report: mqGetMenuChildFloatValue doesn't work for Nth-top-level element (e.g. ( mqGetMenuChildFloatValue "#test\_test", 1004, 0 ) only returns 0, while ( mqGetMenuChildFloatValue "test\#test\_test", 1004, 0 ) returns 1/2; all traits exist (created with mqIncludeXML, accessible via G/SetMenuFloatValue) and have a value of %false;/%true;).
I think you have to use "\#test\_test", similar to how PrintTileInfo needs "\" for dumping top-level content. If that doesn't work let me know and I'll look into it. Oh and ofcourse I should add it to the documentation, which will probably be later today with an update too. :blush:

-kyoma
User avatar
Mimi BC
 
Posts: 3282
Joined: Sat Oct 07, 2006 10:30 pm

PreviousNext

Return to IV - Oblivion