• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.

Fixing a Map

Status
Not open for further replies.
Level 16
Joined
Mar 27, 2011
Messages
1,349
I remember playing this map a few years ago, one of my favourites. However, I tried hosting it again online and an error occurs "the game is not found". I think one of the warcraft 3 patches may have done this. With a bit of research, apparently it may be because the map may have had cheat codes or something in it...?

I looked into map deprotection (not supported on the hive workshop I know) in hope to fix the map so it is playable again, but it didn't work.

Can anybody suggest a fix to the map?
 

Attachments

  • Zombie Takeover v0.72 (RE).w3x
    107.4 KB · Views: 47
Level 12
Joined
Jun 10, 2008
Messages
1,043
Well, if you really want to play it, I believe you can uninstall the patch and it'll work. Not sure how that works online, though.

I don't know of any way to fix it, I think it's a problem with JASS coding.
 
Level 16
Joined
Mar 27, 2011
Messages
1,349
I didn't think of reverting to an earlier patch, however I wanted to host this game online,
and that won't work. If its a jass problem, could that jass editor fix it(jass craft I think)?
If somebody managed to deprotect it, could it be fixed then?
 
Level 12
Joined
Jun 10, 2008
Messages
1,043
I honestly couldn't tell you due to rules, and lack of knowledge. Deprotection usually destroys a part of the map. Did you try to contact the maker and ask him to edit the map, or an unprotected version?
 
Level 16
Joined
Mar 27, 2011
Messages
1,349
Well the author submitted his last version of it in 2007. I can't find an email or anything to contact him by.
Although, a very early version of the map (by the original creator) is unprotected so I can look into the map
but it is also unplayable in warcraft 3.

I tried saving the map within world editor and it was unsuccessful, compiling 1500 errors (lol...) within the
"war3map.j file (the same error that occurs if you make a spelling mistake in a custom script). So I'm guessing
that means to give up :/

I was kinda hoping if i managed to open the map, it would automatically update to the latest version (that
would be generous of blizzard since they stopped them working in the first place!) :(
 

Attachments

  • ZombieTakeover 2.94.w3x
    177.5 KB · Views: 24
Last edited:
Level 12
Joined
Jun 10, 2008
Messages
1,043
No, the maps have to be manually updated. A lot of maps I used to like were killed too - it sucks, but it's a rather old issue.
 
jasscraft is just a program that allows you to make scripts out of the editor while maintaining the function database of wc3 (meaning you don't need to memorize all the functions)... basically it just allows you to do some script when you cannot access the editor and just paste the code later...

To fix it, you need to find everything that is fixed/removed/updated by the new patches and update them manually... most incompatibility issues arose from the return bug which a lot of maps b4 1.23 used...

you can have two installations of wc3 if you just want to play that map... one with the old version, then another one with the latest version... but if you want to play it with friends or online, then you need to manually update that map...
 
Level 16
Joined
Mar 27, 2011
Messages
1,349
Everything in the map is GUI with the exception of 1 small trigger. The world editor hasn't blanked out
any triggers or code inside the (E.g. when you have a "set variable" line, then u deleat the variable and
the line gets greyed out)

I have noticed there are a lot of "loop" triggers. I suppose i'll just remake them and that will fix the problem?
 
Level 16
Joined
Mar 27, 2011
Messages
1,349
have you checked the map header too?

btw, are you using the normal WE?

Oh wow, i reckon this is everything. The header has some wierd script. I have no knowledge of jass, I'm not sure how to fix this...

// ===========================
function H2I takes handle h returns integer
return h
return 0
endfunction
// ===========================
function LocalVars takes nothing returns gamecache
// Replace InitGameCache("jasslocalvars.w3v") with a global variable!!
return udg_GameCache
endfunction

function SetHandleHandle takes handle subject, string name, handle value returns nothing
if value==null then
call FlushStoredInteger(LocalVars(),I2S(H2I(subject)),name)
else
call StoreInteger(LocalVars(), I2S(H2I(subject)), name, H2I(value))
endif
endfunction

function SetHandleInt takes handle subject, string name, integer value returns nothing
if value==0 then
call FlushStoredInteger(LocalVars(),I2S(H2I(subject)),name)
else
call StoreInteger(LocalVars(), I2S(H2I(subject)), name, value)
endif
endfunction

function SetHandleBoolean takes handle subject, string name, boolean value returns nothing
if value==false then
call FlushStoredBoolean(LocalVars(),I2S(H2I(subject)),name)
else
call StoreBoolean(LocalVars(), I2S(H2I(subject)), name, value)
endif
endfunction

function SetHandleReal takes handle subject, string name, real value returns nothing
if value==0 then
call FlushStoredReal(LocalVars(), I2S(H2I(subject)), name)
else
call StoreReal(LocalVars(), I2S(H2I(subject)), name, value)
endif
endfunction

function SetHandleString takes handle subject, string name, string value returns nothing
if value==null then
call FlushStoredString(LocalVars(), I2S(H2I(subject)), name)
else
call StoreString(LocalVars(), I2S(H2I(subject)), name, value)
endif
endfunction

function GetHandleHandle takes handle subject, string name returns handle
return GetStoredInteger(LocalVars(), I2S(H2I(subject)), name)
return null
endfunction
function GetHandleInt takes handle subject, string name returns integer
return GetStoredInteger(LocalVars(), I2S(H2I(subject)), name)
endfunction
function GetHandleBoolean takes handle subject, string name returns boolean
return GetStoredBoolean(LocalVars(), I2S(H2I(subject)), name)
endfunction
function GetHandleReal takes handle subject, string name returns real
return GetStoredReal(LocalVars(), I2S(H2I(subject)), name)
endfunction
function GetHandleString takes handle subject, string name returns string
return GetStoredString(LocalVars(), I2S(H2I(subject)), name)
endfunction

function GetHandleUnit takes handle subject, string name returns unit
return GetStoredInteger(LocalVars(), I2S(H2I(subject)), name)
return null
endfunction
function GetHandleTimer takes handle subject, string name returns timer
return GetStoredInteger(LocalVars(), I2S(H2I(subject)), name)
return null
endfunction
function GetHandleTrigger takes handle subject, string name returns trigger
return GetStoredInteger(LocalVars(), I2S(H2I(subject)), name)
return null
endfunction
function GetHandleEffect takes handle subject, string name returns effect
return GetStoredInteger(LocalVars(), I2S(H2I(subject)), name)
return null
endfunction
function GetHandleGroup takes handle subject, string name returns group
return GetStoredInteger(LocalVars(), I2S(H2I(subject)), name)
return null
endfunction
function GetHandleLightning takes handle subject, string name returns lightning
return GetStoredInteger(LocalVars(), I2S(H2I(subject)), name)
return null
endfunction
function GetHandleWidget takes handle subject, string name returns widget
return GetStoredInteger(LocalVars(), I2S(H2I(subject)), name)
return null
endfunction

function FlushHandleLocals takes handle subject returns nothing
call FlushStoredMission(LocalVars(), I2S(H2I(subject)) )
endfunction
// =======================================================================
function GetHandleTriggerAction takes handle subject, string name returns triggeraction
return GetHandleHandle(subject,name)
return null
endfunction

function UnitAddTimedEffect_Expire takes nothing returns nothing
local trigger trg = GetTriggeringTrigger()
local effect fx = GetHandleEffect(trg, "fx")
call TriggerRemoveAction( trg, GetHandleTriggerAction( trg, "action" ) )
call DestroyEffect(fx)
call FlushHandleLocals(trg)
call DestroyTrigger(trg)
set trg = null
set fx = null
endfunction

function UnitAddTimedEffect takes unit who, string path, string attach, real duration returns effect
local effect fx = AddSpecialEffectTarget(path, who, attach)
local trigger remover = CreateTrigger()
call SetHandleHandle(remover, "fx", fx)
call SetHandleHandle( remover, "action", TriggerAddAction(remover, function UnitAddTimedEffect_Expire) )
call TriggerRegisterTimerEvent(remover, duration, false)
call TriggerRegisterUnitEvent(remover, who, EVENT_UNIT_DEATH)
set remover = null
return fx
endfunction

// ===========================

function AsciiCharToInteger takes string char returns integer
local string charMap = " !\"#$%%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
local string u = SubString(char, 0, 1)
local string c
local integer i = 0
if u == "" or u == null then
return 0
elseif u == "\b" then // Backspace?
return 8
elseif u == "\t" then // Horizontal Tab?
return 9
elseif u == "\n" then // Newline
return 10
elseif u == "\f" then // Form feed?
return 12
elseif u == "\r" then // Carriage return
return 13
endif
loop
set c = SubString(charMap, i, i + 1)
exitwhen c == ""
if c == u then
return i + 32
endif
set i = i + 1
endloop
return 0
endfunction
 
JASS:
// ===========================
function H2I takes handle h returns integer
return h
return 0
endfunction

that is the return bug or at least that's how the return bug is used...

since most of those custom scripts are utilizing the H2I function, you will need to modify them all manually to use something else...
 
Status
Not open for further replies.
Top