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!

[Website] Character Display for MapleStory v134

Junior Spellweaver
Joined
Dec 21, 2008
Messages
108
Reaction score
69
I could have extracted this more neatly and efficiently I'm sure, but given my lack of programming experience, here's what I did instead:

1. Extract PNGs from character.wz using HaRepacker
2. Use AgentRansack to find and delete all unnecessary PNGs
3. Extract XMLs from character.wz using HaRepacker
4. Use a File-to-Folder Script to put all of the XMLs in their own folders
5. Merge the PNG and XML folders
6. Use Superb Batch Renamer to rename all XML files to index.xml
7. Run EmptyFolderNuker to remove all empty folders
8. Create XSLT stylesheets to convert the XMLs to TXT files that match the GD I started with (from MapleSyrup)
9. Run the XSLT stylesheets in Kernow 1.7.2
10. Update the scripts in the GD to display a variety of new weapons including dual bow guns
11. Run a folder script to remove all folders that do not have PNGs in them
12. Use AgentRansack to remove all index.xml files
13. ZIP all files
14. Post on Ragezone
15. Drink Pepsi :pepsi:

I couldn't find any more issues so as long as there are no major bugs mentioned here, I think this is my final GD release (at least for a while). It's working perfectly for me.

Now I Can finally get back to my MaplePress project in the dev section. I will be using this GD in that project and may update it again before I release MaplePress.

Here's a list of changes from my first release a few days ago:

New Additions
  • Mercedes Ears
  • All Skins
  • info_icons folder (updated)
Fixes
  • Dual Bow Guns Display
  • hairBelowHead coordinates
  • All NX Items
Maintenance
  • Removed thousands of useless PNG files
  • Cleaned indexes (not perfect)
Possible Future Updates
  • Update to latest GMS Version
  • Pet Support
  • Bug Fixes (none that I am aware of)
  • Cleaner indexes

Basis - [Website] Character Display for MapleStory v134 - RaGEZONE Forums


Download:
Code:
http://www.filedropper.com/gd
Code:
http://speedy.sh/6WBVn/GD.7z

And of course, all I can say is thank you Holthelper. :thumbup:
 
Last edited:
may web.very maple.pls.
Member
Joined
Aug 12, 2009
Messages
1,810
Reaction score
606
If it's a perfect GD image library perfectly extracted I'm willing to release my php file to show the characters, it's really efficient and complete(even with missing data like mercedes(typo? idk thejob's name) ears) .. I'll be testing it :)


Hey check your msgs.
 

Attachments

You must be registered for see attachments list
Experienced Elementalist
Joined
Jul 19, 2011
Messages
288
Reaction score
32
Been looking forever on how to do this, thanks. Mind sharing your scripts?
+1'd
 
may web.very maple.pls.
Member
Joined
Aug 12, 2009
Messages
1,810
Reaction score
606
Hmm... the images seem to be perfect but the index.. to make it more neater I would make it json.. I can't work with this unless I make a script which converts it for me.. sorry :/
 
Joined
Jul 12, 2011
Messages
1,229
Reaction score
475
If it's a perfect GD image library perfectly extracted I'm willing to release my php file to show the characters, it's really efficient and complete(even with missing data like mercedes(typo? idk thejob's name) ears) .. I'll be testing it :)



Hey check your msgs.

Yup, I checked after and it's most likely not the images, but my script.
Great job on GD, it's a painful process!
 
Junior Spellweaver
Joined
Dec 21, 2008
Messages
108
Reaction score
69
Yeah, I'm sorry that it's not probably compatible for everyone. I was just using what I chose. Thanks for the pat on the back though. I thought it would be a lot easier than it was. If I had realized how long it would take, I don't know if I would have done it. lol

Also, matthieu503 asked for this so I will go ahead and share. It's my set of tools I used and I have the style sheets to convert the XML in a folder called XSLT. A lot of them are the same and I'm sure they could be streamlined to work better. I mainly just used [value-of select=""] to pull what I needed to fit the script of MapleSyrup. I adjusted them until they did the job for me.

Code:
http://www.filedropper.com/gdtools
 
Last edited:
may web.very maple.pls.
Member
Joined
Aug 12, 2009
Messages
1,810
Reaction score
606
Well I have some free time so I decided to play with this and since the data is in txt and it's really messing, I made a script which converts the messy data to an optimized json
(Do not use this for this release, my script faces coordination is completely different from this one):
PHP:
<?php
// Face Data
$id = "00020006";
$getData = @file_get_contents("Face/{$id}.img/index.txt", FILE_USE_INCLUDE_PATH);
$result = array_filter(explode(" ", str_replace("\n", " ", $getData)));

// Calculations
$x_calc = ($result[1]+$result[5])*-1;
$y_calc = ($result[3]+$result[7])*-1;

$arr = ['face_x' => $x_calc, 'face_y' => $y_calc];

// Save to JSON
file_put_contents($id.'.json', json_encode($arr));
?>

result:
PHP:
{"face_x":-12,"face_y":5}
 
Experienced Elementalist
Joined
Jul 19, 2011
Messages
288
Reaction score
32
Well I have some free time so I decided to play with this and since the data is in txt and it's really messing, I made a script which converts the messy data to an optimized json
(Do not use this for this release, my script faces coordination is completely different from this one):
PHP:
<?php
// Face Data
$id = "00020006";
$getData = @file_get_contents("Face/{$id}.img/index.txt", FILE_USE_INCLUDE_PATH);
$result = array_filter(explode(" ", str_replace("\n", " ", $getData)));

// Calculations
$x_calc = ($result[1]+$result[5])*-1;
$y_calc = ($result[3]+$result[7])*-1;

$arr = ['face_x' => $x_calc, 'face_y' => $y_calc];

// Save to JSON
file_put_contents($id.'.json', json_encode($arr));
?>

result:
PHP:
{"face_x":-12,"face_y":5}
Would that now work with your script?
 
may web.very maple.pls.
Member
Joined
Aug 12, 2009
Messages
1,810
Reaction score
606
Yup since my script only reads JSON and I'm using ian's old GD(v107?) to determine the coordinate and I only calculated the coordinate of the faces.
 
Experienced Elementalist
Joined
Jul 19, 2011
Messages
288
Reaction score
32
Looking forward to your progress ^^ Will this be released or just a secret?
 
may web.very maple.pls.
Member
Joined
Aug 12, 2009
Messages
1,810
Reaction score
606
If I can convert everything correctly and to the previous calculation formulas Ian had then yes. :p
 
Infraction Baɴɴed
Member
Joined
Apr 9, 2008
Messages
1,416
Reaction score
169
which version are you using???? ive updated the script to be less ugly then that
 
may web.very maple.pls.
Member
Joined
Aug 12, 2009
Messages
1,810
Reaction score
606
Faces Done.(Don't use this for your site since my coordinates formulas don't go with this release formulas..)
Well I finished all the faces, I ran into some problems with some of the faces but I manage to get all of them (;
PHP:
<?php
if ($handle = opendir('Face')) {
    while (false !== ($entry = readdir($handle))) {
		if ($entry != "." && $entry != "..") {
			// Collect Data
			$getData = file_get_contents("Face/{$entry}/index.txt", FILE_USE_INCLUDE_PATH
                                 // Only reason why this is long because of the line breaks which messed up the array..(this is the fix to some of the faces which I had problem with :P)
			$result = array_values(array_filter(explode(" ", str_replace("\n", " ", $getData)),'strlen'));
			
			// Calculations
			$x_calc = ($result[1]+$result[5])*-1;
			$y_calc = ($result[3]+$result[7])*-1;

			$arr = ['face_x' => $x_calc, 'face_y' => $y_calc];

			// Save to JSON
			file_put_contents("Face/{$entry}/".str_replace(".img", "", $entry).".json", json_encode($arr));
		
			// Delete old data
			unlink("Face/{$entry}/index.txt");
		}
    }
    closedir($handle);
}
echo "Done";
?>
 
Junior Spellweaver
Joined
Dec 21, 2008
Messages
108
Reaction score
69
If anyone completes something that is better than what I came up with, but uses some of what I did, then if possible, I'd like a copy of it for my own development :)
 
may web.very maple.pls.
Member
Joined
Aug 12, 2009
Messages
1,810
Reaction score
606
Hair is done.(Don't use this, coordinates are different from this release.) (So far I have the hair and face and it's align).
PHP:
<?php
if ($handle = opendir('Hair')) {
    while (false !== ($entry = readdir($handle))) {
		if ($entry != "." && $entry != "..") {
			// Get Data
			$getData = file_get_contents("Hair/{$entry}/index.txt", FILE_USE_INCLUDE_PATH);
			$result = array_values(array_filter(explode(" ", str_replace("\n", " ", $getData)),'strlen'));
	
			// Put name with their values
			for($i=0, $data=[]; $i < count($result); $i++) {
				if ($i % 2 == 0){
					$data[$result[$i]] = $result[$i+1];
				}
			}
			
			//These don't have X/Y coordinate.. but I do know it's from Kanna's patch
			if($entry == "00036320.img" || $entry == "00036321.img") {
				continue;
			}
			
			//Gather needed information
			$arr = [
				'hairBelowBody_x' =>	(array_key_exists('default.hairBelowBody.origin.x',$data) ? $data['default.hairBelowBody.origin.x']*-1 : 0), 
				'hairBelowBody_y' => 	(array_key_exists('default.hairBelowBody.origin.y',$data) ? $data['default.hairBelowBody.origin.y']*-1 : 0), 
				'hairShade_x' => 		(array_key_exists('default.hairShade.0.origin.x',$data) ? $data['default.hairShade.0.origin.x']*-1 : 0),
				'hairShade_y' => 		(array_key_exists('default.hairShade.0.origin.y',$data) ? $data['default.hairShade.0.origin.y']*-1 : 0),
				"hair_x"=> 				($data['default.hair.origin.x']*-1),
				"hair_y"=> 				($data['default.hair.origin.y']*-1),
				"hairOverHead_x"=> 		(array_key_exists('default.hairOverHead.origin.x',$data) ? $data['default.hairOverHead.origin.x']*-1 : 0),
				"hairOverHead_y"=>		(array_key_exists('default.hairOverHead.origin.y',$data) ? $data['default.hairOverHead.origin.y']*-1 : 0),
	
			];
	
			// Save to JSON
			file_put_contents("Hair/{$entry}/".str_replace(".img", "", $entry).".json", json_encode($arr));
		
			// Delete old data
			unlink("Hair/{$entry}/index.txt");
		}
    }
    closedir($handle);
}
?>
 
Infraction Baɴɴed
Member
Joined
Apr 9, 2008
Messages
1,416
Reaction score
169
just a heads up akira why not dump your own xml files and use a xml parser like simpleXML to then output into json querys
 
Junior Spellweaver
Joined
Dec 21, 2008
Messages
108
Reaction score
69
I did find one error with certain hair files and will upload the solution soon. I think it will fix the hair issue that Matt is running into. As for the body being missing, I'm guessing this is due to the use of a weapon ID that does not exist in the GD. This happened to me a few times and I was able to fix it. Apparently, you have found some more though. I have fixed the hair thing though. I will upload the fixed hair files tomorrow. I need to go to bed right now.

Here's an example of my outputted hair though that is fixed that was previously doing the same thing that your images were doing.
ecdc312c87439a8979d4416f72e53c75 - [Website] Character Display for MapleStory v134 - RaGEZONE Forums
 

Attachments

You must be registered for see attachments list
Experienced Elementalist
Joined
Jul 19, 2011
Messages
288
Reaction score
32
The top is in th ebottom corner, so maybe that needs some fixing also
 
Back
Top