Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

WZ Ultimate XML

Joined
Oct 15, 2013
Messages
515
Reaction score
159
Hello all, @Zychronix aka deathstar and I, are back to help you guys out with your Wz editing needs.

We decided to actually release a 3-in-1 bundle thing so to speak. This includes our WzClear and our XML Source Parser that was released before, but it has been recoded and works more efficiently. The third thing we are adding is a Character Node Finder. The name is self explanatory. It finds nodes inside the Character.wz.

The correct order for importing CHARACTER files are as followed;
Source Parser > Node Finder > Wz Clear
Do NOT change the order or it will mess up.

The idea is to run the CMDs which is quicker then doing it through NetBeans. However do note that doing all three steps will take about a day or so, depending on your hard drive.

Each XML you wish to edit, has to be in the CLASSIC format.
Export as Classic > Run program > Reimport into the WZ.

Lets get into what is being released right here;


XML Source Parser


This is what most of you guys will be downloading this file for. This makes those pesky blinking items not blink no more. This it goes to the source and copies the canvas data. In case you do not know, the WzUOL property is inside every Maplestory version and acts just the same as the Source property.

PHP:
java -cp dist/XML.jar UltimateXMLSourceParser W:\\Parse Character.wz
pause

You can type it in without a WZ folder and it will do the entire wz directory.

You need one main folder, it will run if you are missing folders (meaning when you export the folders of the kinds of items that are there) but if it tries to get a source value from a different wz file or a different file that doesn't exist it'll give you errors.

Here is our older XML Parser.


Character Node Finder


This needs to be ran before you do any of the other two projects. They find the nodes that is coded inside the Character.wz

How does this help? You ask, well it finds the nodes in all the items so that way if it is a node that Nexon just added, it will be in the list and that way you can use the WzClear to get rid of the pesky little node that is not coded inside the version of Maplestory you are working on. That simple!

Be sure to change your file location.

PHP:
static String BASE_FOLDER = "F:\\MapleStory";


WzClear

WzClear is a nice little thing. It gets rid of those pesky little nodes that isn't coded into your Maplestory version. Now for you to know exactly what is and isnt coded. All you really need to do is get a clean Character.wz file and run the Node finder and see what nodes are inside your version. Then run the Node Finder again on the newest GMS/KMS or whatever files to know whats there and boom, use WzClear to remove all the nodes that you don't need and now you got working items.

One main thing you must do before running WzClear is changing the file location. Open up the file in NetBeans or whatever it is you use, and change the location.

PHP:
static String BASE_FOLDER = "F:\\MapleStory\\v90\\Character.wz";

This is what you need to change.

If you keep scrolling you will see this line of code;

PHP:
static String[] knownNodes = {

This is what WzClear will NOT remove. If there is anything on this list that you want to keep, put it on the list otherwise WzClear will automatically remove it. If you want things to removed, then just delete it from the list.

Here is a link to our old WzClear release, the way to run it is mostly the same.



I'm not exactly sure what else to write, I'm just gonna end it here. If you need reference the older versions of these items are posted in this thread. I will adding a virus scan to the .rar file as well. If you need any help with anything just post below.



 
Last edited:
Experienced Elementalist
Joined
Sep 27, 2016
Messages
217
Reaction score
68
Does this also work for ilinks and outlinks? I noticed you mentioned the Source property, but I don't see any servers using that property anymore. From what I've seen, KMS, CMS, JMS and GMS have all switched to inlinking and outlinking.

Here's a screenshot just in case you need it
l4m13v7 - Ultimate XML - RaGEZONE Forums

They work exactly the same as Source property do, the only difference is that inlinking is used when it's used inside the same XML, and outlinking is when it links to another XML.
 

Attachments

You must be registered for see attachments list
Last edited:
Joined
Oct 15, 2013
Messages
515
Reaction score
159
Does this also work for ilinks and outlinks? I noticed you mentioned the Source property, but I don't see any servers using that property anymore. From what I've seen, KMS, CMS, JMS and GMS have all switched to inlinking and outlinking.

Here's a screenshot just in case you need it

They work exactly the same as Source property do, the only difference is that inlinking is used when it's used inside the same XML, and outlinking is when it links to another XML.

It doesn't because this was created based off of the source property (the Source Parser) I actually don't know anything about inlink and outlink because I've been out of the WZ Dev for awhile. But also servers can't even use the source property because it's not coded into the servers you feel me. I just wish they would stick to WzUOL instead of making more and more shenanigans. sIGH.
 
Elite Diviner
Joined
May 4, 2011
Messages
491
Reaction score
105
Okay so, it runs and I get this.
7eYdhJ2 - Ultimate XML - RaGEZONE Forums

Is this working correctly, because I changed my server XMLs and the items are still invisible/blinking.
Is there something else I'm supposed to do?
 

Attachments

You must be registered for see attachments list
Junior Spellweaver
Joined
Apr 30, 2012
Messages
100
Reaction score
41
Okay so, it runs and I get this.
7eYdhJ2 - Ultimate XML - RaGEZONE Forums

Is this working correctly, because I changed my server XMLs and the items are still invisible/blinking.
Is there something else I'm supposed to do?
You need to modify your actual .wz files, not the server xmls. Or if I'm misunderstanding you, see Age's post above. You can try using XMLs from before GMS177, I believe that is when the inlink/outlink was implemented.
 

Attachments

You must be registered for see attachments list
Joined
Oct 15, 2013
Messages
515
Reaction score
159
Okay so, it runs and I get this.
7eYdhJ2 - Ultimate XML - RaGEZONE Forums
Is this working correctly, because I changed my server XMLs and the items are still invisible/blinking.
Is there something else I'm supposed to do?

Is this v60 xmls or v160. It won't remove nothing if it has nothing to remove. The xmls need to be of newer versions.

Also are you working with Classic xmls or PS. It has be to ran off of classic xmls. I forgot to mention that in the thread. Will edit it in.
 

Attachments

You must be registered for see attachments list
Newbie Spellweaver
Joined
Apr 25, 2014
Messages
15
Reaction score
13
Does this also work for ilinks and outlinks?

I decided to look into these new properties.

_outlink works exactly the same as the source property.
_inlink works nearly the same as a WzUOL property. _inlink doesn't have the dots indicating to go back a folder, it starts off with the file as the base location. The program doesn't currently support _inlinks but with a few minor code changes you can add it in.

I put in bold what I added/changed.

UltimateXMLSourceParser.java
Code:
...

static ArrayList<String> source = null;
static ArrayList<String> sourceValue = null;
[B]static ArrayList<String> sourceType = null;
[/B]
...

if (check) {
    for (int i = 0; i < nodeMap.getLength(); i++) {
        Node node = nodeMap.item(i);
        if (i == 1) {
            sourceValue.add(node.getNodeValue());
        } [B]else {
            sourceType.add(node.getNodeValue());
        }[/B]
    }

...

for (int x = 0; x < sourceValueArray.length; x++) {
    [B]if (!start && !sourceType.get(i).equals("_inlink")) {[/B]
        if (sourceValueArray[x].endsWith(".img")) {
            valueFile = sourceValueArray[x];
            sourceValueFolderPath += "/" + sourceValueArray[x];
            start = true;
        } else {
            sourceValueFolderPath += "/" + sourceValueArray[x];
        }
    } else if (x == sourceValueArray.length - 1) {
        expression += "/canvas[@name='" + sourceValueArray[x] + "']";
    } else {
        expression += "/imgdir[@name='" + sourceValueArray[x] + "']";
    }
}

[B]if (sourceType.get(i).equals("_inlink")) {
    valueFile = file.getName().substring(0, file.getName().length() - 4);
}
[/B]
...

Now it'll work with source, _outlink, and _inlinks. I'll get religion to update the download link with the updated source in the thread later.
2GOeAFA - Ultimate XML - RaGEZONE Forums

Also the simplified full tutorial is for example...
Server WZ: v83
Importing WZ: v179


  • Make sure the folder paths for the CMD/Java files are correct.
  • Export Classic v179 WZ XMLs
  • Run "Run Ultimate XML Source Parser.cmd" or "UltimateXMLSourceParser.java" (I recommend the CMD as it will take a while. Just make sure to put an updated JAR in there if you've changed the source code).
  • Run "Run Node Finder.cmd" or "CharacterInfoNode.java" on your v83 Server XMLs. The program will give you a list of nodes you need to put in the "knownNodes" array of UltimateWzClear. You only need to do this step each time you change server version (i.e v83->v90).
  • After you've saved "UltimateWzClear.java" and compiled the JAR run, "Run Ultimate WZ Clear.cmd" or "UltimateWzClear.java". You should run these on your Classic v179 WZ XMLs after the Source Parser is finished.
  • Once WZ Clear is finished you are ready to re-import the completed v179 XMLs in your v83 WZ files.
  • After all that importing your items should no longer blink. Export the updated v83 WZ files to your v83 Server XML folder and go in game to test.

The three programs should look something similar to this when completed.
L4Ts3wG - Ultimate XML - RaGEZONE Forums
 

Attachments

You must be registered for see attachments list
Junior Spellweaver
Joined
Apr 30, 2012
Messages
100
Reaction score
41
Can this be used with v146 from higher versions? Since it had only the "Source" node and not _outlink _inlink nodes.

You can modify Zychronix's post to only affect inlink/outlinks pretty easily.
 
UNTIL THEN!
Loyal Member
Joined
Mar 5, 2011
Messages
1,086
Reaction score
213
The download link has been updated with the new verison, that has the edited in/out links. Follow Zcho's post on how to exactly change it to use in/out links.


Thanks. I'm assuming to make it only affect _in and _out links would be to change:

Code:
if (node.getNodeValue().equals("source") || node.getNodeValue().equals("_inlink") || node.getNodeValue().equals("_outlink")) {

to this?

Code:
if (node.getNodeValue().equals("_inlink") || node.getNodeValue().equals("_outlink")) {

because the wz file size would skyrocket I guess if it didn't do that lol

Another thing I'm wondering is that..I'm importing about 4 different versions of MapleStory into one type of file. If I just put all of the xmls into one file, dump them, and then use the parser, would that change all of the custom xmls into ones that v146 could use? It would save me hours of time..
 
Joined
Oct 15, 2013
Messages
515
Reaction score
159
Another thing I'm wondering is that..I'm importing about 4 different versions of MapleStory into one type of file. If I just put all of the xmls into one file, dump them, and then use the parser, would that change all of the custom xmls into ones that v146 could use? It would save me hours of time..

When Zchro and I did that, we did each version separately because each version has about the same ID ranges but different items in the IDs. We did it and changed the conflicting IDs. I mean you can do it all at once but it depends because some XMLs might get overridden by one from a different Maple.

But the only other thing you would need to look out for is things that are inside the items like how KMS has rebirth flames, and stuff for the stats, if you wanted to clear that up, you would need to add that into the WzClear and such.
 
Experienced Elementalist
Joined
Sep 27, 2016
Messages
217
Reaction score
68
Okay so let's say I want to add a new eye from GMS right?

So I take out all the necessary XML's to make the eye work, run Ultimate XML Parser and get this:
UnhOxND - Ultimate XML - RaGEZONE Forums


Then, I want to know what nodes to remove, so I run NodeFinder and get this:
w71gr2G - Ultimate XML - RaGEZONE Forums


Lastly, I actually want to remove the unnecessary nodes, so I run WzClear and get:
H2zyDu5 - Ultimate XML - RaGEZONE Forums


As you can see in the second image, it doesn't list all nodes that exist in a Face xml, and in the last image it doesn't remove any extra nodes. Any hints on what I'm doing wrong? I changed the paths in the bats, and in netbeans
 

Attachments

You must be registered for see attachments list
Joined
Oct 15, 2013
Messages
515
Reaction score
159
If I can recall you only need to run the source parser on the Face/Eyes bcause there is only the source property inside it. Nothing else was added (unless they added new properties) into those files. So of course the other two won't do nothing because there is nothing for it to find/remove.

However can you post a screen shot of the eye inside HaRepacker with some nodes expanded?
Does the eye work at all as well?

(Sorry for the late reply.)
 
Experienced Elementalist
Joined
Sep 27, 2016
Messages
217
Reaction score
68
Well as far as my knowledge goes, they've added _inlink, _outlink and _hash to ALL wz files that contain images.

BWp6hMD - Ultimate XML - RaGEZONE Forums

So here, you can see the image of Pepe Face is missing
(I'm using the old version of GM Handtool so I don't add duplicate items into my wz)

If it's too much trouble you really don't have to fix it ;o; I've already got all faces working, it's just that if I don't want those properties in my wz, I'd have to manually remove those extra nodes that don't work in v83 one by one :huh:
 

Attachments

You must be registered for see attachments list
Joined
Oct 15, 2013
Messages
515
Reaction score
159
Well GM Handtool doesn't always show the picture inside the program, if it comes from a different version. I know after experience. I see you doing MapleSEA? Face/Hair doesn't really ever have extra nodes except the in/outlink.
 
Experienced Elementalist
Joined
Sep 27, 2016
Messages
217
Reaction score
68
Actually I've loaded and saved GMS's face into GM Handtool, the default images are missing because they have in/outlinks. And I've also loaded GMS's Character.wz in Harepacker :sleep: the reason you see Chinese text in Harepacker is because I changed my pc settings lmao. Still though, anything I can do to make Node Finder and WzClear read inlinks, outlinks and hashes in all wz images?
 
Newbie Spellweaver
Joined
Apr 6, 2017
Messages
33
Reaction score
0
Hello all, @Zychronix aka deathstar and I, are back to help you guys out with your Wz editing needs.

We decided to actually release a 3-in-1 bundle thing so to speak. This includes our WzClear and our XML Source Parser that was released before, but it has been recoded and works more efficiently. The third thing we are adding is a Character Node Finder. The name is self explanatory. It finds nodes inside the Character.wz.

The correct order for importing CHARACTER files are as followed;
Source Parser > Node Finder > Wz Clear
Do NOT change the order or it will mess up.

The idea is to run the CMDs which is quicker then doing it through NetBeans. However do note that doing all three steps will take about a day or so, depending on your hard drive.

Each XML you wish to edit, has to be in the CLASSIC format.
Export as Classic > Run program > Reimport into the WZ.

Lets get into what is being released right here;


XML Source Parser


This is what most of you guys will be downloading this file for. This makes those pesky blinking items not blink no more. This it goes to the source and copies the canvas data. In case you do not know, the WzUOL property is inside every Maplestory version and acts just the same as the Source property.

PHP:
java -cp dist/XML.jar UltimateXMLSourceParser W:\\Parse Character.wz
pause

You can type it in without a WZ folder and it will do the entire wz directory.

You need one main folder, it will run if you are missing folders (meaning when you export the folders of the kinds of items that are there) but if it tries to get a source value from a different wz file or a different file that doesn't exist it'll give you errors.

Here is our older XML Parser.


Character Node Finder


This needs to be ran before you do any of the other two projects. They find the nodes that is coded inside the Character.wz

How does this help? You ask, well it finds the nodes in all the items so that way if it is a node that Nexon just added, it will be in the list and that way you can use the WzClear to get rid of the pesky little node that is not coded inside the version of Maplestory you are working on. That simple!

Be sure to change your file location.

PHP:
static String BASE_FOLDER = "F:\\MapleStory";


WzClear

WzClear is a nice little thing. It gets rid of those pesky little nodes that isn't coded into your Maplestory version. Now for you to know exactly what is and isnt coded. All you really need to do is get a clean Character.wz file and run the Node finder and see what nodes are inside your version. Then run the Node Finder again on the newest GMS/KMS or whatever files to know whats there and boom, use WzClear to remove all the nodes that you don't need and now you got working items.

One main thing you must do before running WzClear is changing the file location. Open up the file in NetBeans or whatever it is you use, and change the location.

PHP:
static String BASE_FOLDER = "F:\\MapleStory\\v90\\Character.wz";

This is what you need to change.

If you keep scrolling you will see this line of code;

PHP:
static String[] knownNodes = {

This is what WzClear will NOT remove. If there is anything on this list that you want to keep, put it on the list otherwise WzClear will automatically remove it. If you want things to removed, then just delete it from the list.

Here is a link to our old WzClear release, the way to run it is mostly the same.



I'm not exactly sure what else to write, I'm just gonna end it here. If you need reference the older versions of these items are posted in this thread. I will adding a virus scan to the .rar file as well. If you need any help with anything just post below.





hello, um how can i use this? i open the " Run Ultimate XML Source Parser.cmd "

it just shows
Exception in thread "main" java.lang.UnsupportedClassVersionError: UltimateXMLSourceParser : Unsupported major.minor version 52.0"am i doing it wrongly? i changed the folder already
 
Newbie Spellweaver
Joined
Nov 4, 2017
Messages
12
Reaction score
0
Hi! First off, thank you so much for creating this program, it's super helpful!

I'm having the same problem as Age
I ran parser & wzclear on Hair & Face from v180 and I imported all into my v83.

However, when I try changing my character's hair to a new hair from v180, it just make the character bald.

I compared the different nodes between v180 and v83 Character.wz/hair
and its the _inlink _outlink and _hash that are present in all v180

I just don't know how to make the wzfile read the images with _inlink _outlink _hash so that all hair & face will properly be displayed in game.

Any ideas?
 
Last edited:
Back
Top