• 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.
  • The Hive's 22nd Icon Contest: Creep Abilities is now concluded, time to vote for your favourite set of icons! Click here to vote!
  • ✅ The POLL for Hive's Texturing Contest #34 is OPEN! Vote for the TOP 3 SKINS! 🔗Click here to cast your vote!
  • ✅ The POLL for Hive's Techtree Contest #20 is OPEN! Vote for the TOP 3 FACTIONS! 🔗Click here to cast your vote!

RE: Patch v1.24 update in the latest news

Status
Not open for further replies.
Level 4
Joined
Aug 14, 2008
Messages
29
ADDITIONAL
• “Shadowing” global variables with local variables no longer is possible.
• Fixed a type conversion dealing with operators (i.e. adding a handle with an integer)
• Added the ability to store hashtable handles in a hashtable
• Added getSpellTargetX and getSpellTargetY natives
• Added a new base handle type “Agent” of which many types now extend from.
• Added a SaveAgentHandle native which can be used for saving most handle types
• Added a JASS optimization dealing with global variable change events.
• Increased max map file size from 4MB to 8MB.

This was also included in the patch update, if this even matters..especially the bolded.
 
You didn't post all the patch notes on first post... Most dota maps dont work atm.. and guess what?

WE ARE DOTA FREE!

COME MY FELLOW MAPPERS! THIS IS OUR CHANCE! KILL THE DOTA OWNERS SO THERES NO CHANCE FOR THEM TO COME BACK! BATTLE.NET IS OURS!

WE SHALL HAVE A NEW GENERATION OF MAPS, AND WILL NO MORE BE SPAMMED BY DOTA!
 
You didn't post all the patch notes on first post... Most dota maps dont work atm.. and guess what?

WE ARE DOTA FREE!

COME MY FELLOW MAPPERS! THIS IS OUR CHANCE! KILL THE DOTA OWNERS SO THERES NO CHANCE FOR THEM TO COME BACK! BATTLE.NET IS OURS!

WE SHALL HAVE A NEW GENERATION OF MAPS, AND WILL NO MORE BE SPAMMED BY DOTA!

You can keep battle.net, us (g00d) DotA players will keep Garena :p
 
DotA is hostable, they already have alpha 1.24 version out with some bugs. On top of that blizzard is helping fix DotA. Thus luckilly DotA will be opperational soon I would imagine. Which is good otherwise WC3 would crumble to dust.

On lesser notes, blizzard has resumed work on 1.14 patch for Diablo II LoD.
Also SWAT AM currently is not working, GRRRRR.
 
And okay, as much as I might not like DotA, you shouldn't really insult it either, don't you see, DotA was the main reason this forum even exists, without DotA, there's no Warcraft III craze, without Warcraft III craze, there's no player-made maps, without player-made maps, there's no Hive, and without Hive, there's no us, so in other words, DotA is the main reason people are actually staying in Warcraft III, in fact, we should be THANKING them rather than REBELLING against them. If you need a craze for your map, you just need to make it better...
 
Not quite.

There isnt really anything special in dota, other than it is really popular.

So, if there would be no dota, there had just been some other very popular map to do its job.
 
It might be wise to wait. It could be that they have to release some 1.24b and other fix patch thingies before they get this stuff working properly.
 
yup they ruined it for jass users because they hate you wahahahahah...

there is a way around the return bug tho just i forget how to do it...

Many maps will get removed I think, lots of inactive mapmakers and even some who are active can't seem to work around the issue too. So in conclusion, many will get removed. I wouldn't get my hopes too high on the next patch upgrade, since we don't even know what blizzard is trying to fix other then the fact that they are having exclusive and private confrotations with ice_frog and the fact that return bug can still work...
 
Now that Icefrog has gotten a new working DotA ver out as far as I'm concerned the patch didn't really do anything. I have no knowledge of Jass what so ever, my head would probably explode if i even attempted it. So I'm happy the patch isn't effecting me...Anymore. I HAD TO PLAY AN OLD VER OF DOTA FOR 1 DAY!!!!!!!! :cry::cry:
 
The new patch has kill most of all the games most dota tat is but now u can play 6.61c and most custom games are down i want ua2 to be bak D: all my friend want me to host it but its dead now some1 no how to change the code lines are the maps so they can reverse the patch affects? reply bak to me soon
 
uhm.. You can still use return bug just fine... just letting you all know

JASS:
function I2Unit takes integer i returns unit
return i
call DoNothing()
return null
endfunction

//and

function H2I takes integer handle h returns integer
return h
call DoNothing()
return 0
endfunction


I'm not sure if these two count as the return bug since in the first case you are creating a unit from an integer ID, something Jass does normally.
And in the second case, an Integer Handle is an integer, so there isn't any change in type.
 
I'm not sure if these two count as the return bug since in the first case you are creating a unit from an integer ID, something Jass does normally.
And in the second case, an Integer Handle is an integer, so there isn't any change in type.

1. Try reading it again -.-. It is a return bug and it does not create a unit. I don't see CreateUnit anywhere in there. Also, JASS does not normally convert a handle id into a unit....

JASS:
local unit u = 1000

Unless you're saying that is supposed to compile? I tried it, it doesn't.

But this does
JASS:
local unit u = I2Unit(1000)

2. Second one, the integer handle is obviously a typo, lol. I wrote that straight into the post, so it's my bad that I didn't notice that. integer handle would get you a syntax error in world editor.... so yes, this too is a return bug (does exactly what GetHandleId does)

So it should be this for 2-
JASS:
function H2I takes handle h returns integer
return h
call DoNothing()
return 0
endfunction


Point is all Blizzard did was fix executing bytecode (haven't properly tested yet, I'm doubting they actually fixed), add hashtables, create an almost useless agent handle (call SaveAgentHandle appears to be its purpose, since there's no SaveHandle... why not just do a SaveHandle -.-, frustrating), and make map making more annoying with return. Oh yes, and they added new natives without any documentation or any reference to them (they're purely in .dll), so you have to guess at what even exists (I didn't know the SaveAgentHandle native existed, I just tried it randomly and it worked. No reference to it anywhere and no mention by blizzard).

As for the return bugs themselves... they still are not fixed ; ).

and for hashtables.. this stuff makes me sad : (

no worky
JASS:
    private function start takes nothing returns nothing
        local hashtable h
        if h == null then
            call DisplayTextToPlayer(GetLocalPlayer(), 0, 0, "NULL")
        else
            call DisplayTextToPlayer(GetLocalPlayer(), 0, 0, "NOT NULL")
        endif
    endfunction
while this works..
JASS:
    private function start takes nothing returns nothing
        local hashtable h = InitHashtable()
        if h == null then
            call DisplayTextToPlayer(GetLocalPlayer(), 0, 0, "NULL")
        else
            call DisplayTextToPlayer(GetLocalPlayer(), 0, 0, "NOT NULL")
        endif
    endfunction

No way to un initialize them (really suited for GUI)
JASS:
        local hashtable h = InitHashtable()
        call DisplayTextToPlayer(GetLocalPlayer(), 0, 0, I2S(GetHandleId(h)))
        call FlushParentHashtable(h)
        set h = null
        set h = InitHashtable()
        call DisplayTextToPlayer(GetLocalPlayer(), 0, 0, I2S(GetHandleId(h)))

Oh, and apparently my return bug example... it works, but you can't store it in a var... so u have to do it each and every bloody time -.-.

-Doesn't Work-
JASS:
    private function i2unit takes integer i returns unit
        return i
        call DoNothing()
        return null
    endfunction

    private function test takes integer i returns nothing
        local unit u = i2unit(i)
        call RemoveUnit(u)
        set u = null
    endfunction
    
    private function start takes nothing returns nothing
        call test(GetHandleId(CreateUnit(Player(0), 'hpea', Mfn_Map_centerX, Mfn_Map_centerY, 270)))
    endfunction

-Does Work-
JASS:
    private function i2unit takes integer i returns unit
        return i
        call DoNothing()
        return null
    endfunction
    
    private function test takes integer i returns nothing
        call RemoveUnit(i2unit(i))
    endfunction
    
    private function start takes nothing returns nothing
        call test(GetHandleId(CreateUnit(Player(0), 'hpea', Mfn_Map_centerX, Mfn_Map_centerY, 270)))
    endfunction


wth is with that. : |

And do you want to see something even richer...

JASS:
library a initializer ini requires Mfn
    globals
        hashtable c = InitHashtable()
    endglobals
    
    private function i2unit takes integer i returns unit
        return i
        call DoNothing()
        return null
    endfunction
    
    private function test takes integer i returns nothing
        call SaveUnitHandle(c, 0, 0, i2unit(i))
        call RemoveUnit(LoadUnitHandle(c, 0, 0))
        call RemoveSavedHandle(c, 0, 0)
    endfunction
    
    private function start takes nothing returns nothing
        call test(GetHandleId(CreateUnit(Player(0), 'hpea', Mfn_Map_centerX, Mfn_Map_centerY, 270)))
    endfunction

    private function ini takes nothing returns nothing
        call TriggerAddAction(Mfn_ini, function start)
    endfunction
endlibrary

which can translate into... (yes... I stored my broken return into a local variable thru the above example...)

JASS:
library a initializer ini requires Mfn
    globals
        hashtable c = InitHashtable()
    endglobals
    
    private function i2unit takes integer i returns unit
        return i
        call DoNothing()
        return null
    endfunction
    
    private function test takes integer i returns nothing
        local unit u
        call SaveUnitHandle(c, 0, 0, i2unit(i))
        set u = LoadUnitHandle(c, 0, 0)
        call RemoveSavedHandle(c, 0, 0)
        call RemoveUnit(u)
    endfunction
    
    private function start takes nothing returns nothing
        call test(GetHandleId(CreateUnit(Player(0), 'hpea', Mfn_Map_centerX, Mfn_Map_centerY, 270)))
    endfunction

    private function ini takes nothing returns nothing
        call TriggerAddAction(Mfn_ini, function start)
    endfunction
endlibrary

And I ask you why.... Why put everyone thru all of this trouble...................................................


Fix it right or leave it broken.... : |
 
Last edited:
If anyone has a solution to make everything back to normal, even configuring the JASS options, please do post it and make the thread erm... Sticky, or maybe even an Announcement...
 
Back to normal ey?

If you mean how to fix those maps that used H2I, you justbasicly have to replace it with that new native GetHandleId.

Thanks to vJass modularity, if you used systems like Table and TimerUtils for attaching your data, the only thing you need to do is update those systems.

Also there was some problems with returns inside if/then/else blocks that might need fixing, so you might have to update some other systems too and rewrite some code, but that should not be a big job.
 
Okay, thanks a lot, oh and could you mods make a sub-forum especially meant for information like Emergency Blizzard News, or just Blizzard Updates?
 
Back to normal ey?

If you mean how to fix those maps that used H2I, you justbasicly have to replace it with that new native GetHandleId.

Thanks to vJass modularity, if you used systems like Table and TimerUtils for attaching your data, the only thing you need to do is update those systems.

Also there was some problems with returns inside if/then/else blocks that might need fixing, so you might have to update some other systems too and rewrite some code, but that should not be a big job.

Except that *older* maps still use things like local handle vars. For example wc3:wow sticked to normal jass for a very long time since it's a very annoying process to get vjass to work in campaigns with 30 maps. It's even worse there since the GUI was screwed up too, making the campaign unopenable by the editor and forcing us to remove all scripts with an MPQ editor. It's like the campaign just got nuked by blizzard.

It's true that Local Handle vars is old, but for people that cannot use vjass it's the only option. And some maps such as wow happen to be in development for a very long time, way before Table was made.
 
Right now some maps were bugged in Warcraft, must wait for the new patch in order to go back to the normal way...
 
Now that Icefrog has gotten a new working DotA ver out as far as I'm concerned the patch didn't really do anything. I have no knowledge of Jass what so ever, my head would probably explode if i even attempted it. So I'm happy the patch isn't effecting me...Anymore. I HAD TO PLAY AN OLD VER OF DOTA FOR 1 DAY!!!!!!!! :cry::cry:

6.61c is not the compatible version, it still has many bugs. IceFrog stated that the compatible version will be 6.62 but that will also require a new patch from blizzard.

Right now some maps were bugged in Warcraft, must wait for the new patch in order to go back to the normal way...

Why so many ppl don't get it. Even if Blizzard releases a new patch to make things normal, many maps will still not work prior to using external systems that implement exploits such as return bug or typecasting. In-fact I don't even think they fix those to the core, they only fix through recognizing patterns which is why DotA is now messed up...
 
JASS:
library a initializer ini requires Mfn
    globals
        hashtable c = InitHashtable()
    endglobals
    
    private function i2unit takes integer i returns unit
        return i
        call DoNothing()
        return null
    endfunction
    
    private function test takes integer i returns nothing
        local unit u
        call SaveUnitHandle(c, 0, 0, i2unit(i))
        set u = LoadUnitHandle(c, 0, 0)
        call RemoveSavedHandle(c, 0, 0)
        call RemoveUnit(u)
    endfunction
    
    private function start takes nothing returns nothing
        call test(GetHandleId(CreateUnit(Player(0), 'hpea', Mfn_Map_centerX, Mfn_Map_centerY, 270)))
    endfunction

    private function ini takes nothing returns nothing
        call TriggerAddAction(Mfn_ini, function start)
    endfunction
endlibrary

And I ask you why.... Why put everyone thru all of this trouble...................................................


Fix it right or leave it broken.... : |



you're not taking it far enough......
Even nicer is:

JASS:
library a initializer ini requires Mfn
    globals
        hashtable c = InitHashtable()
    endglobals
    
     private function test takes nothing returns nothing
        local unit u
        set u = LoadUnitHandle(c, 0, 0)
        call RemoveSavedHandle(c, 0, 0)
        call RemoveUnit(u)
    endfunction
    
    private function start takes nothing returns nothing
        call SaveUnitHandle(c, 0, 0, CreateUnit(Player(0), 'hpea', Mfn_Map_centerX, Mfn_Map_centerY, 270))
        call test()
    endfunction

    private function ini takes nothing returns nothing
        call TriggerAddAction(Mfn_ini, function start)
    endfunction
endlibrary


And applying the new fuctionality :

JASS:
library a initializer ini requires Mfn
    globals
        hashtable c        = InitHashtable()
        timer     unitlife = CreateTimer()
    endglobals
    
     private function test takes nothing returns nothing
        local unit u
        set u = LoadUnitHandle(c, 0, 0)
        call RemoveSavedHandle(c, 0, 0)
        call RemoveUnit(u)
    endfunction
    
    private function start takes nothing returns nothing
        call SaveUnitHandle(c, 0, 0, CreateUnit(Player(0), 'hpea', Mfn_Map_centerX, Mfn_Map_centerY, 270))
        call TimerStart( unitlife, 10.0, false, function test )
    endfunction

    private function ini takes nothing returns nothing
        call TriggerAddAction(Mfn_ini, function start)
    endfunction
endlibrary
 
Last edited:
It's like the campaign just got nuked by blizzard.

Thats sucks. :/

Yea, well, if you used local handle vars, you need to write some hashtable thing to replace them.

I dont even remember what local handle vars look like, so I dont knowthe details, but I think Vexorian released some faux handle vars thigny that uses hashtables.

Its probably vJass, like all other Jass systems in these days, but it shouldnt be too hard to get it work for non-vJassers too.


Anyways, what stuff did we loose for good now? There is nothing to replace this one as far as I know:

JASS:
function getStringFromStringtable takes integer i returns string
     return i
     return ""
endfunction
 
Last edited:
This one:

JASS:
function getStringFromStringtable takes integer i returns string    
    return i     
    return ""
endfunction

It was used to get a string from string table. I was just wondering what stuff we loose for good and this is one of them.
 
Status
Not open for further replies.
Back
Top