Playing Maps that only works in 1.26 in Warcraft 1.28.5

The map probably uses the virus/ACE ("arbitrary code execution") exploit to add more features to the game that 1.26 does not officially offer.

So you probably need a reverse engineer guy, skilled with university level understanding of computer hardware and how to take apart binary, who takes it apart and moves it to 1.28 instead.

Or, you could play a map that does not use the virus technology and is made to play on Warcraft III, and in that case 1.28 is backwards compatible with all the maps from the previous versions

As an example, if I use the links you provided and unarchive this map, then we review the script file that you are trying to run on your computer we can see that it is like this:

JASS:
function OOC takes integer i returns code
  call OGC(i)
  loop
   return RKU
  endloop
  return null
endfunction

function Typecast2 takes nothing returns nothing
  local integer R3U
  local string RKU
endfunction

function OPC takes string s returns integer
  call OXC(s)
  loop
    return R3U
  endloop
  return 0
endfunction

Declaring a local string RKU that has no purpose in a function called Typecast2 is an indicator that this script file is attempting to break the computer.

By making a variable with the same name as a variable somewhere else -- that is itself unused -- we break the computer, using an exploit and not a part of Warcraft III game.

In order to play your map on the Reforged prepatch 1.28 made by the Reforged team, you will need to either:
- Play a map that is not broken
- Play a map that is designed specifically to break the patch 1.28, most likely in some other way.

For what it is worth, if my memory serves, the name collision between local and global variable as a means for performing the virus attack was not patched until Patch 1.29, so it is possible that you might still be able to fix this map.

But in my personal opinion, I would not try to play this kind of hack file, and would instead stick to maps that are not depending on specific glitches and problems in specific game versions.

If you would like to construct a valid loop construct in the Jass programming language, this loop construct should have an exit condition, such as this:

JASS:
function DoSomething takes nothing returns integer
  local integer x = 0
  loop
    exitwhen x >= 5
    call BJDebugMsg("doing something...")
    set x = x + 1
  endloop
endfunction

The above loop struction will print "doing something..." five times.

But when you try to run a loop structure that instantly returns a variable from a different function that isn't used, you are breaking the computer.
The purpose of breaking the computer in the DotA is to try to add features that aren't there. It gains "Run as Administrator" access to your computer, where it can run anything or download anything or install anything, and then uploads its updates into the Warcraft III program that is actively running, to add the features that aren't there.

But if you want to have better computer security, the way to get features that aren't there is to play a newer and more advanced version of Warcraft III, such as Reforged, or my rebellious rewrite of the game.

Edit:
And let me just say, the first line that I copied from the map file you linked, the function OOC takes integer i returns code, this is not a hypothetical about the virus but is instead most definitely doing the virus. The purpose of this function is to take a number value of type integer and convert it into a callable function value of type code. It is already possible to call a function on Warcraft III using the syntax call MyFunction() or with local code x = function MyFunction to get a function reference, so when we instead have to convert a number value to a function the only reason to do that is to take over the computer and begin executing functions that are not a part of the Warcraft III Map Script file. So, it's up to you to make decisions about what that means to you.

Even if you could pull it off on 1.28, why would you want to do that?
1726259165221.png
 
Last edited:
Level 34
Joined
May 14, 2021
Messages
1,598
I can confirm that DotA/DotA LOD maps aren't fully working on the latest patches of Warcraft III. As explained in this thread (it's for the Reforged, but you know that the same problem also applies to other versions of Warcraft III non-Reforged), some versions of DotA maps use weird stuff, which is basically the arbitrary code execution that Retera explained above to make sure that some features are only executed in 1.26 patch. You might search for another version of the DotA/DotA LOD maps that's suitable for 1.28.5 (or even, the latest versions of Warcraft III non-Reforged). Tbf, the last version of DotA LOD which does require an old version of Warcraft III is (I think) DotA 6.85 (this was explained in one of the post from that thread), although the modder making intended to create a new version that supports the latest versions of the game (which turned out to be fake news).

Also, if you are using the very latest versions of Warcraft III (of course, 1.36), attempting to start DotA/DotA LOD maps (of course, the latest version of that map) will get you the so-called "blank error" window (the one with just plain exclamation mark and the "OK" button), implying that some JASS elements that Retera points out are broken in the Reforged builds.
 
Top