• 🏆 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!

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.
 
Level 12
Joined
Jan 16, 2008
Messages
1,037
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!
 
Level 12
Joined
Feb 23, 2007
Messages
1,030
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
 

Dr Super Good

Spell Reviewer
Level 63
Joined
Jan 18, 2005
Messages
27,195
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.
 
Level 19
Joined
Oct 15, 2008
Messages
3,231
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...
 
Level 8
Joined
Aug 6, 2008
Messages
451
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.
 
Level 8
Joined
Aug 6, 2008
Messages
451
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.
 
Level 12
Joined
Aug 7, 2004
Messages
875
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...
 
Level 8
Joined
Aug 23, 2007
Messages
491
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:
 
Level 1
Joined
Aug 6, 2009
Messages
3
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
 
Level 2
Joined
Feb 13, 2009
Messages
20
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.
 
Level 31
Joined
Jul 10, 2007
Messages
6,306
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:
Level 19
Joined
Oct 15, 2008
Messages
3,231
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...
 
Level 8
Joined
Aug 6, 2008
Messages
451
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.
 
Level 19
Joined
Oct 15, 2008
Messages
3,231
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?
 
Level 21
Joined
Aug 21, 2005
Messages
3,699
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.
 
Level 19
Joined
Oct 15, 2008
Messages
3,231
Right now some maps were bugged in Warcraft, must wait for the new patch in order to go back to the normal way...
 
Level 12
Joined
Aug 7, 2004
Messages
875
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...
 
Level 2
Joined
Feb 13, 2009
Messages
20
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:
Level 8
Joined
Aug 6, 2008
Messages
451
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:
Level 8
Joined
Aug 6, 2008
Messages
451
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.
Top