• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!

Object Data Extractor

Status
Not open for further replies.
Level 40
Joined
Dec 14, 2005
Messages
10,532
WC3C thread

Requires JassNewGenPack and Java.

I originally posted this on WC3C about 5 years ago, but given that it seems like WC3C is basically dead nowadays I figured I should probably post it here as well.

Note that I can't guarantee this is 100% stable. It should be treated as a beta.

All information about functionality, download links etc is available in the WC3C thread.

I'm at least temporarily modding again, so if people have any feature requests I should be able to add them. If I disappear again, Deaod or Bobo_The_Kodo still check WC3C occasionally and will probably add them sooner or later if you post there. Huge thanks to Deaod and Bobo_The_Kodo for maintaining this since 2010 and to Deaod in particular for cleaning up my hacked-together temporary code into something more reasonable.
 
Level 5
Joined
May 6, 2013
Messages
125
I'd assume it flushes every single piece of data into a hashtable. Everything else wouldn't make any sense, as the function syntax used would else be implying a functionality that the program doesn't have.
I've made a similar hack once, so this is essentially throwing up some questions that i had to deal with while making mine:
1: how do you access the different levels of abilities etc? The DWORD identifiers you use for the function name do not contain this information, so i doesn't seem clear to me how you would do that
2: will it give problems with default values? they are not part of the object file itself, but read from a gigantic slk somewhere in the warcraft 3 mpqs. Indexing them takes an enormous amount of time (and i asume so will a linear search at some point), so reading them out at every compile step would add a decent chunk of compile time, and i don't think that JNGP gives the ability to open and close programs with the editor itself (which would make you able to index them at the we startup)
3: using the actual raw names seems much more intuitive to me (HeroDur etc)
4: dang, can't even use it, its in java :D
 
Level 14
Joined
Nov 18, 2007
Messages
816
re 1.) Abilities are a problem. Id like to not think about them until i actually have the drive to get them working. I have a bit of an idea, but its really not well thought out. I might have to refactor things yet again to get Abilities to work.

re 2.) ODE comes with all those SLKs extracted from WC3, and uses an SLK parser to extract the default values from them.
EDIT 2: SLKs are evil things that should never be allowed anywhere near anyone. Burn those fuckers with fire. Blizzard has a perfectly reasonable BINARY file format for the many different objects the game has. So why the FUCK are they using SLKs (which are glorified CSV files)? I hate string manipulations. I hate the UTF-8 BOM at the start of SLKs - wait, no, that was at the start of war3map.wts, another custom file format. I hate the mangling of the SLK file format Blizzard inflicted on us. I hate just about every goddamn thing about SLKs. Seriously, screw everything about them.

re 3.) I thought about that, but didnt want to change the interface.
EDIT: Actually, now that i think about it, using those identifiers would complicate the code. At the moment i can just convert the identifiers into integers and have them work with w3o files from maps. I would have to translate those short identifiers into integers before being able to use them. Also, in order to view the short identifiers, you have to switch the object editor to raw display mode, while you can see the integers in brackets next to the pretty name.

re 4.) What is WRONG with you?
 
Last edited:
Status
Not open for further replies.
Top