• 🏆 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!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

Fixing Old Maps

Status
Not open for further replies.
Level 2
Joined
Feb 10, 2014
Messages
9
Hello everyone! This thread is a plea for a topic to fixing old maps, as well as some personal maps I'd like fixed so I can play them.

Below are the maps I'd like to have fixed, I recruited some help earlier on fixing the WoT_3 (WheelofTime) map, but he's been unsuccessful for several weeks now so I'd like to expedite the process if possible. :)

Thanks a lot in advance, and have a great day! ^_^
 

Attachments

  • Lotr Builder v5.5 p.w3x
    1.6 MB · Views: 40
  • WMW TE v4.1.w3x
    3 MB · Views: 46
  • WoT_3.w3x
    2.7 MB · Views: 52

Dr Super Good

Spell Reviewer
Level 63
Joined
Jan 18, 2005
Messages
27,178
Why should people spend their time fixing maps that only you want to play? I mean why has the map maker not fixed them?

The only person who wants to fix them is you, so I advise doing it if you really want the maps fixed. The maps are apparently optimized so you will likely need to modify the trigger script manually in a text editor and re-import it back into the MPQ. Remember that the return bug has been removed (typecast exploit) so you will either need to use one of its more modern forms (if applicable) or upgrade to hashtables (since they do most of the things the typecasting exploit was used for anyway.
 
Level 2
Joined
Feb 10, 2014
Messages
9
First off, I'm quite sure I'm not the ONLY one wanting to play this maps. I have a friends list full of people wanting to play them for one.

Secondly, the reason the mapmakers themselves have not fixed the maps is most likely because they don't play the game anymore. Incase you weren't aware, the game has been out for many years. People move on.

Thirdly, I don't have the knowledge necessary to do it myself, nor the time needed to obtain such knowledge.

Lastly, do you really have to be so high and mighty about it?
 

Dr Super Good

Spell Reviewer
Level 63
Joined
Jan 18, 2005
Messages
27,178
I have a friends list full of people wanting to play them for one.
I highly doubt that. No one on my friends list from before the type cast exploit was fixed still logs on to WC3. Unless you have actively forced real life friends back to playing WC3 after 5 years odd then your friends list will be empty.

Secondly, the reason the mapmakers themselves have not fixed the maps is most likely because they don't play the game anymore. Incase you weren't aware, the game has been out for many years. People move on.
Exactly, which is why I unfortunately have to raise the question about your friends list making no sense. Or are you trying to say that these are people who never played the maps before but might play them if they worked? There are a ton of other maps to play out there that do work.

Thirdly, I don't have the knowledge necessary to do it myself, nor the time needed to obtain such knowledge.
Well a lot of people here do have the knowledge but do not have the time. They would rather help map makers who are making new maps with their problems than to use low level manipulation and sweat blood to try and fix a map the map maker clearly did not want people to modify. One way they spend 5 minutes in worldedit and help someone, the other might take days and may still not work depending what levels of silliness the author took to try and stop people modifying the map. The only person to blame is the map maker for not allowing people to edit (fix) his map.

Lastly, do you really have to be so high and mighty about it?
I am trying to tell you that what you are asking is not reasonable. Someone might help you but the chances are borderline an impossibility. None of those maps I ever played, have seen be played or would want to play and I am sure most people here are in a similar situation (especially since the maps are so old that most of the current WC3 players were not even playing WC3 back then).
 
Last edited:
Level 14
Joined
Jun 27, 2008
Messages
1,325
Oh DSG give it a rest. There are old maps and old players and sometimes old players play old maps. I myself fixed two pre 1.24 maps, not even a year ago.
If he wants the map fixed he has all right to ask for help here.
 

Dr Super Good

Spell Reviewer
Level 63
Joined
Jan 18, 2005
Messages
27,178
If he wants the map fixed he has all right to ask for help here.
There is a big difference between asking for help and requesting someone else do it. He is not asking for help but requesting someone else do it. All I have said is quite reasonable as most requests made on this site go unfulfilled as there are just too many and too few people to do them.

I do notice some of what I said was silly and have removed it.

I can only hope that others will see you for the person you are and not the person you project, Dr Super Good.
I do not think you have seen me for the person I am. Basing your entire opinion about me on my feedback for your request is not going to be accurate.

WoT_3.w3x was made using a third party modification of worldedit that is not standard. It specifically has custom GUI declared in it preventing it from being opened. Until it is known what tool was used to make the map it would be very difficult to fix it.

WMW TE v4.1.w3x is corrupted. It may have been corrupted as a form of "protection" to prevent worldedit from opening it. Making modifications to such a map without the permission of the author is against this site's policy (I belive).
Specifically this...
9.We do not support the protection or opening of protected maps: topics regarding these subjects will be closed!
Although I do not know if it still holds or as to what extent. I do however know that similar requests have been stopped in the past and this site tries to respect the wishes of content makers.

Lotr Builder v5.5 p.w3x has been optimized by vexorian optimizer set to remove GUI trigger data but still allow loading in worldedit. The open source version is required in order for it to be fixed. The author may have used the optimizer as a form of protection so some form of modifiable version (permission) is required.

As for why the maps are not compatible...
WoT_3.w3x uses typecasting exploit which was patched. A fix may be possible as the trigger script is not optimized but this would still be very time consuming out side the editor.
WMW TE v4.1.w3x uses typecasting exploit which was patched. The map is optimized by vexorian optimizer so a fix is not realistic outside the editor.
Lotr Builder v5.5 p.w3x uses typecasting exploit which was patched. The map is optimized by vexorian optimizer so a fix is not realistic outside the editor. The map also appears to use WEU which is mostly unsupported nowadays.

As you can see, the request is far from easy. All of the maps cannot be opened in standard worldedit or JNGP and two of them are optimized making external modification very time consuming. Only a very dedicated person with a lot of motivation should consider taking the task on.
 
Level 7
Joined
Mar 6, 2006
Messages
282
I wasn't scripting when typecasting was around, so lemme get this straight.

The only reason you can't play these maps is because the map script has some lines that need to be replaced? Can every typecasting situation be replaced with something else? How often was typecasting actually used within the script?

If it's known how to replace typecasting with something else, then the only thing stopping you from fixing these maps is Ctrl+F in war3map.j and looking for typecasting, then replacing it with whatever. No need to open the map at all.

I don't think this goes against the rules of protection because he's not trying to actually open the map in the WE, but rather, fix the script so that the map is playable once more.

Google "RMPQEx". It's an MPQ extractor with an option to de-obfuscate the script file. Open the map, click the De-obfuscate button, and select what you want. Now you can read the jass script file, find typecasting, and replace it. You could even copy the whole script, and paste it into JNGP's trigger editor, with TESH enabled, so you can read it more clearly.
 
@DSG:

Even if the request might not be completed, I don't think there is any point in mentioning that it won't be fixed (unless the user continuously bumps the thread). I understand your points, it just isn't very nice. :( Something along the lines of 90% of model requests don't get completed, but that doesn't mean we should post in every model request that it won't be completed.

@DysfunctionaI:

Not every typecasting situation can be replaced. The current means of typecasting is done through hashtables, by saving a handle as one type and then loading it as the return type. However, this is a bit limited. For example, you can't cast terraindeformations or weathereffects (no hashtable functions exist for them). You also can't typecast a rect to a unit, for example. Before patch 1.24, this was possible (for no purpose except for data attachment, but the fact that it was possible makes fixing it require some extra work).

Most of the time, it is relatively easy to get a map to open. The hard part is fixing it so that it retains its old functionality. It is still pretty easy to fix overall, but it requires some knowledge of the bug and how to replicate it with current functions. For more info, you can check out the "Make a map work for 1.24" in my signature (although, I really could extend that tutorial a bit).
 

Dr Super Good

Spell Reviewer
Level 63
Joined
Jan 18, 2005
Messages
27,178
The only reason you can't play these maps is because the map script has some lines that need to be replaced? Can every typecasting situation be replaced with something else? How often was typecasting actually used within the script?
Yes and no. Having fixed maps with such problems in the past I can assure you 99% of cases can be fixed (not all since the reason the fix was applied was to stop something that was a critical security risk and was known to have destroyed several people's OS installations). However fixing them is not as simple as changing from x to y.

Although H2I is now native with GetHandleId and can be replaced 1:1, the inverse typecasts such as integer to unit are not. The only way to implement them is to either not use them (major scripting changes) or to use a hashtable as a sort of intermediate storage (since you can use that to map integer numbers to the appropriate handle types for recalling).

An example was in the map NotD AM where handlevars were used. In order for it to be vaguely functional a lot of script had to be changed over to hashtables (which also fixed string leaks).


If it's known how to replace typecasting with something else, then the only thing stopping you from fixing these maps is Ctrl+F in war3map.j and looking for typecasting, then replacing it with whatever. No need to open the map at all.
The code is optimized so there are no consistent names. Additionally as stated above 1:1 replacements are not always possible and some times it is better to re-engineer pieces of code.

At least one of the maps used WEU and it is likely the only reason it is using the type casting exploit is for the broken GUI actions WEU added that it probably does not use anyway. If we had WEU and the open source version it could probably be fixed in a few minutes.

I don't think this goes against the rules of protection because he's not trying to actually open the map in the WE, but rather, fix the script so that the map is playable once more.
He is still trying to modify a map without the author's permission when the author clearly does not want people modifying his map. One could argue that no author in their right mind would not want their map playable, but some have their reasons (they do not want the map played any more as they find it embarrassing is a common one).

Google "RMPQEx". It's an MPQ extractor with an option to de-obfuscate the script file. Open the map, click the De-obfuscate button, and select what you want. Now you can read the jass script file, find typecasting, and replace it. You could even copy the whole script, and paste it into JNGP's trigger editor, with TESH enabled, so you can read it more clearly.
This is not possible. All human readable names are lost permanently during optimization of the map. Sure you can restore indentation but that is meaningless and most JASS editors support that feature anyway. The actual problem is understanding what the heck a function is doing and this is very hard when you have a deceleration such as...

JASS:
function aym takes integer a, unit b, string c returns integer
Compared with...
JASS:
function registerUnit takes integer slot, unit which, string tag returns integer
 
Level 2
Joined
Feb 10, 2014
Messages
9
Thanks for your help in fixing one of the maps, Purge. It's very, very much appreciated!

For those of you stumbling upon the thread and looking for a fixed version for your own play, it will be attached. :)
 

Attachments

  • WheelOfTime.w3x
    2.7 MB · Views: 40
Status
Not open for further replies.
Top