Home Forum Downloads My Favorites Register FAQ Mark Forums Read

Go Back   EQInterface Forums > Developer Discussion > General authoring help / discussion
User Name
Password

Reply
 
Thread Tools Display Modes
Old 07-27-2002, 04:24 AM   #1
Akephalos
A Ghoul
 
Join Date: Jul 2002
Posts: 16
Default Question

Ok, so I have been working on some rather interesting mods for the UI. Currently, I am attempting to reduce the number of windows that we have floating around on screen, and consolidate them into 3 or 4 smaller, well organized windows.

Here is an example of what I do/did with the EQUI_CastingWindow.xml. I opened that file, and took a whole section of the code out, and placed it in the hotkey box (after widening the hotkey box, and making some other mods to it.) When this is done, I disable the EQUI_CastingWindow.xml file from ever being loaded in the UI by placing <!-- --> around that particular file name in the EQUI.xml file.

So far this has worked great for the Target Window, the casting window, the air supply window, and some other one that I cant recall right now. However, this does not seem to be working for, among many others, the player window.

When I make my code adjustments to these files, I get an error in the xml. It is something along the lines of "Unable to load child pet_hp in EQUI_PlayerWindow.xml". I get that error if I dont disable it from loading in the EQUI.xml. If I disable it, I crash directly to desktop without even an entry in the UI errors.

My question is, what, if anything, can I do to correct this issue. I havent been able to figure it out, but Im guessing that somewhere, these windows are deemed as being "Required" for proper loading of the UI. I need to remove them from that list of required files, if I can.

I have found a way to hax0r around this, so that I can put the items where I want them, but its not 100 percent correct, and it does not disable those other windows from loading, which is my ultimate goal.

Any information would be great!
Akephalos is offline   Reply With Quote
Old 07-27-2002, 04:29 AM   #2
Akephalos
A Ghoul
 
Join Date: Jul 2002
Posts: 16
Default

Oh, yeah, I guess I should mention, that I do not simply want to duplicate the effect of the window Im trying to remove, I want to completely remove it from the loading process, so that its never even loaded at all.


So like, instead of loading EQUI_PlayerWindow and EQUIHotButtonWindow, I just load EQUI_HotButtonWindow with all of the elements from EQUI_PlayerWindow.


Sorry if I confused anyone
Akephalos is offline   Reply With Quote
Old 07-27-2002, 09:29 AM   #3
Kellk
A Gray Wolf
 
Join Date: Jul 2002
Posts: 9
Default

I think I understand what you want. You need to keep all of the window XML files, but you can make it "disappear". Basically find the definition in the file of the window and make it's location 0,0 and it's size 0,0.
For example, let's say you wanted to move your casting bar to your player info bar, but you don't want the cast bar to pop up anymore. You can't delete the EQUI_CastingWindow.xml file, but you can edit it to make it disappear:

In the "Screen item" section -
<Location>
<X>0</X>
<Y>0</Y>
</Location>
<Size>
<CX>0</CX>
<CY>0</CY>
</Size>


Hopefully that helps.
Kellk is offline   Reply With Quote
Old 07-27-2002, 12:42 PM   #4
Akephalos
A Ghoul
 
Join Date: Jul 2002
Posts: 16
Default

Yeah, I can do that, but it doesnt accomplish exactly what I want. Instead of hiding the windows, I dont want them to load at all, except this cant be done due to the child error Im getting.

This may be a question for experienced XML programmers, Im not sure.
Akephalos is offline   Reply With Quote
Old 07-27-2002, 12:50 PM   #5
Martinusiv
A Ghoul
 
Join Date: Jul 2002
Posts: 14
Default

Can't be done, EQ asks for it so it has to be there :-(

Isn't in the XML, its in the program itself
Martinusiv is offline   Reply With Quote
Old 07-27-2002, 12:57 PM   #6
Akephalos
A Ghoul
 
Join Date: Jul 2002
Posts: 16
Default

I find it exceedingly strange that they would make the ui to be customizable, then hard code something as silly as that, to cause customization to come to a crawl.

Im sure it has to be somewhere, I just dont know xml well enough to know what Im looking for.
Akephalos is offline   Reply With Quote
Old 07-27-2002, 01:44 PM   #7
psychogears
A Shissar Disciple
 
psychogears's Avatar
 
Join Date: Jul 2002
Server: Xev
Posts: 106
Send a message via ICQ to psychogears Send a message via AIM to psychogears Send a message via Yahoo to psychogears
Default

Hmm... it's not that silly. You have a client that has two parts to it, the game with all the spels casting and other NPCs and PCs swinging their swords and casting their bolts and buffs, and you have the client, which is the interface to the human playing the game. The client is customizable, but at some point the game which you CANNOT change has to reference things like the player window that the game expects to be there, whether or not you want it to load. It's the reason you can't delete any windows or make new ones, because the customization only goes so far, like changing skins on winamp, you can't add a single button that makes the program do something totally new like spawn another window... the SUITE is more complex but essentially acts the same way. It's customizable up to a point, and then that's it. At least for now.

-TJ
__________________
Hazul, Plik, Xzhamacharathae, Seis, Lyca, Pogi, Camm...

of Xev
psychogears is offline   Reply With Quote
Old 07-27-2002, 02:09 PM   #8
Akephalos
A Ghoul
 
Join Date: Jul 2002
Posts: 16
Default

Closer to reality, you have the game code, that has all this information that goes to the client. The client takes that information and displays it in a manner that you tell it to. The hard-code of the game does not determine the "child" parameters in the xml. It is the xml programming itself that determines that.

What this means, to the average folk, is that there *should* be some way to take the information, in entirety, out of one window, choose not to load that window, and add it into another window elsewhere. You are not loosing any information, you are simply moving where something is loaded.

Case and point on this front, is the fact that I can disable the target window, the breath window, and the cast time window completely from ever loading in the UI. So, yes, it does work.

The problem comes in when you have a "child" in that window. There is something, somewhere in the xml programming (perhaps a file that we cant see, maybe cant even edit : Im guessing that this would be located in the more embedded SUITE code) that sets this child, in this window. As a programmer, we should be able to locate that file, and change the "path", so to speak, of that "child" and point it to the new window in which we would like it to be displayed.

To further display my point, I have included a graphic of what I have done, and been able to do thus far. It is not done, nor fully functional, but I am working on that.



This is a graphic of several windows being combined. Aside from a completely blank window in the UI, where all this information used to reside, what you are saying is that I can not have done this.
Akephalos is offline   Reply With Quote
Old 07-27-2002, 09:44 PM   #9
NijK
A Snow Cougar
 
Join Date: Jul 2002
Posts: 43
Default trying to understand

Is there any way you or someone else that understands this better than I, could explain a little further on finding the file or line of code or multiple lines of code or whatever is in the "suite" that we are assuming is not allowing a window which a child inhabits to be completely removed?

I have a picture in my head of everyone on these forums writing XML stuff in Notepad and UltraEdit etc, and in their codes they're putting the EQTypes for gauges and labels (and what else btw?) as to their liking, moving them around windows etc such as Exp bar from Inventory to Player Window. But what's this "SUITE code" we need to search through and find the part screwing us over the childs locked to windows?

Sorry if this is extreme newbdom and/or makes no sense at all, I'm just still trying to grasp this (never heard of XML before yesterday, making sucky DTDs from tutorials and not knowing why now heh)
NijK is offline   Reply With Quote
Old 07-27-2002, 11:13 PM   #10
psychogears
A Shissar Disciple
 
psychogears's Avatar
 
Join Date: Jul 2002
Server: Xev
Posts: 106
Send a message via ICQ to psychogears Send a message via AIM to psychogears Send a message via Yahoo to psychogears
Default

Akephalos,

I have no idea who you are referring to as "you", but if you're talking to me I didn't mean that you can't take gauges and labels and buttons from other windows and put them there. Lots of ppl have already done that, and I think it's very cool, and I think your window is nicely done as well.

However, I have trouble understanding some things, like how did you "disable" the target window, cast time window, and breath window? Are you talking about disabling them from within the XML file, or do you just toggle them off in game? What do they look like if you just toggle them off in game? Is it completely blank? I've heard people get errors because they don't have certain gauges in certain windows, like the pethp gauge when removed from the PlayerWindow screen item will cause errors, and when the PlayerWindow declaration is removed totally the client crasyes...

Perhaps you can remove some of those windows because they're not active all the time? Althought I suppose that wouldn't make sense, and it would make more sense for the program itself to just unhide and hide them, like the Casting and Breath window.

I don't know XML that well, I only started learning really when I took my first glance at the EQUI code which was like 3 weeks ago, and I'm still flipping through the XML files for the interface to see if I can learn anything new. But ya I still stand by my belief and will continue to do so until proven otherwise that certain things need to remain named as they are or at least if the name is changed then the reference to them in the XML file needs to be changed accordingly... Like for example, if you check ALL the XML files for the word "PlayerWindow" in that case, without the quotes of course, that you will only find 1 file with that word, which is the EQUI_PlayerWindow.xml file, where it is defined. This leads me to believe that as far as the XML files this is the top of the line for this particular instance of the Screen structure. The "thing" that references this lies within the actual game itself, in the realm of C code that says "okay, I need to load a player window, so I will look in the XML files and load the PlayerWindow Screen item" (note that I didn't specifically say EQUI_PlayerWindow.xml... I think the client looks first in EQUI.xml then loads all the files listed there, then collects all the bits and pieces of declared information like all the instances of Screen items, and maybe Gauges and Labels... not sure on what's collected)

phew! Well anyway, I'm pretty sure that wasn't laymen-friendly, but it's the most precise way I could think of to put it down. I would appreciate a counterpoint and a specific example, I will look at it and try to see where my logic is flawed.

-TJ
psychogears is offline   Reply With Quote
Old 07-27-2002, 11:29 PM   #11
Geddine
A Wooly Rhino
 
Join Date: Jul 2002
Server: Morell-Thule
Posts: 77
Interface Author - Click to view interfaces
Default

Yes there is limitations and there needs to be. As one pointed out the customisation stops at a certain point if it didn't we'd all be able to just go and make our own clients up.

The client does expect certain things to exist. Yes I'd like to get rid of a few buttons that I personally would not use, but Verant has decided that these things need to exist and so they do. I liken to the comparison to winamp, yes you can change how it looks but there are limits you need to abide by.

Would I like more customisation? Yes, I think there are parts where verant could be a bit more leniant (especially when it comes to buttons). If they would just come out with an EQType for buttons we would then be able to do what we like with them.
__________________
Geddine
"Of all the things I've lost, I miss my mind the most"
Geddine is offline   Reply With Quote
Old 07-27-2002, 11:30 PM   #12
NijK
A Snow Cougar
 
Join Date: Jul 2002
Posts: 43
Default but... *confused*

But I thought you could remove some of the lines in the EQUI.xml without messing stuff up, like for certain windows without a child in its default elements etc *completely lost now* I'm going to learn this crap if it kills me!
NijK is offline   Reply With Quote
Old 07-27-2002, 11:38 PM   #13
Geddine
A Wooly Rhino
 
Join Date: Jul 2002
Server: Morell-Thule
Posts: 77
Interface Author - Click to view interfaces
Default

Nope. The UI requires that all the files exist, even if it doesn't need them just as a cautionary thing that it might need them.

If you go to the bank and you managed to somehow remove your inventory file from the UI, the game will crash becuase the client is expecting it to be there. You cannot rewrite the client to tell it to open up the pet window instead.

It is all becuase the client has inherit behavior in it for certain windows and without being able to change that behavior (which we can't) we are required to have all those windows exist.
Geddine is offline   Reply With Quote
Old 07-28-2002, 12:49 AM   #14
Akephalos
A Ghoul
 
Join Date: Jul 2002
Posts: 16
Default

Ok, first off, this is great, being new to XML myself, Im trying to learn whats going on here, and find out precisely how to make my mods work as intended. If I sound condescending to anyone, its not intentional, its just the way I word things, so dont get too defensive and stuff.

First off, Geddine, I think you misunderstood. Im not trying to tell the UI to open the window for a pet when I am banking. Yes, that is hard coded. I am not trying to alter the code in such a manner that it does freaky stuff, like when I inspect my pet a bank window opens up. Im not trying to pop up a spell gem window when I right click my jboots, and Im not quite sure how my post could have been misconstrued as such.

Geddine, you are also incorrect in your assumption that the UI requires all files to exist, and to be loaded, or else you would get an error.

PsychoGears, You follow this too, because I dont think you understood properly what I was trying to do either, and Ill do my best to rectify that.

Open your EQUI.XML file, in here is a composite list of all the XML files that the UI will load when you load the game. Currently I have three of these file inclusions effectively deleted from this file, and the UI loads and works wonderfully. EDIT: These files listed in the EQUI.XML are what are called "Parent Files". This information will be more relavent a bit farther down in the post.

Dont believe me, copy the default folder, rename it to something else, find the EQUI.XML file, crack that baby open and delete the following lines in their entirety :
<Include>EQUI_CastingWindow.xml</Include>
<Include>EQUI_TargetWindow.xml</Include>
<Include>EQUI_BreathWindow.xml</Include>
Save it, and then load the skin. You will notice that it did not crash, it did not error out, and loaded perfectly fine. Try to cast. Go drown yourself, or try and target something, you will find that none of those windows exist, because they were NEVER LOADED by the UI.

Ok, so now you see that you can indeed cause windows to not be loaded by the UI, lets see if we can put this to use somehow. We now have three windows that are not being loaded, but we still would like the information displayed in them in some other window, yet, keeping this window effectively deactivated. So, we open up the three deactivated files and take a look. We then take the pertinent code from these files, copy it, and paste it into the file where we would like it displayed (Hotkey Window perhaps), carefully making sure all the syntax is correct, and save it. Reload the UI. This information is now displayed in the Hotkey Window, and the originating Parent Window remains deactivated.

Allrighty, now on to the tricky stuff. Not all of the windows are as simple as the breath, target, and casting window. Some of these windows, such as the EQUI_PlayerWindow.xml have what is deemed a "Child" element. This child element is typically defined within the parent. The following is a crude representation of how this hierarchy works.

<Parent>
<Child1>
</Child1>
<Child2>
</Child2>
</Parent>

Now, The parent opens, executes each and every element within it, then closes the parent. Sometimes these children reference other files, or, other files have exceptionary code within their xml, that cause the child to not be able to be moved, unless we update the exceptionary code or other file references to point to where this child has moved to. The following is a crude representation of that.

<Parent>
<Child1>
</Child1>
<Child2>
<LoadPetInfoFrom_PetInfoWindow.xml>
</Load>
</Child2>
</Parent>


In this instance, it is looking elsewhere for more information, and within this external source, if it has a <ReturnInformationTo_PetWindow>, and we moved all of the code from PetWindow to PlayerWindow, we would get an error, because the code is returning data to an invalid, and unused file or location.

Granted, this is a very watered down, and crude representation of how the code is, but, you should understand how it works. Currently, it is the "Child Element" so to speak that is causing me grief. It gives me the XML ERROR "Unable to load child pet_hp in EQUI_PlayerWindow.xml".

What this means to me, is that there is an xml file somewhere, that is making reference in some fashion, to the "Pet_HP" child element, and cannot find it, because I have moved it.

What I need to do is find which file is making that reference, and point it to the new residence of that child, and all will be well and good in the world of my UI mods.

And, the reason I do not believe it to be an issue that is hard coded, is 1. Theres no reason for this simple of a function to be hard coded, 2. XML is a parent/child language, and to get an error like what I got would not come from the external hard coding, and 3. Im getting an XML Error, not an illegal operation. If the hard code was looking for this file, the eq.exe file would crash, not the xml file.

Make sense now?

Last edited by Akephalos : 07-28-2002 at 01:12 AM.
Akephalos is offline   Reply With Quote
Old 07-28-2002, 01:01 AM   #15
guice
Keeper of the Hampster
 
guice's Avatar
 
Join Date: Jul 2002
Server: Mithaniel Marr
Posts: 598
Interface Author - Click to view interfaces
Send a message via AIM to guice Send a message via Yahoo to guice
Default

Just a quick clarification here.

This has nothing to do with windows. Understand that, and many things can be done beyond the scope of a single file.

The "breath window" is not required. What is required is the Breath Element Gauge.

Same with the others.

You can certainly defined elements in one file and use them in another. As long as you don't have elements across files with the same ID name, it will work, I've done this.

Well, With gauges and stuff. Buttons are still flacky from what I can see.
guice is offline   Reply With Quote
Reply



Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off


All times are GMT -5. The time now is 03:34 AM.


vBulletin Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
© MMOUI