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!
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.
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...
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...
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 handle h returns integer
return h
call DoNothing()
return 0
endfunction
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!!!!!!!!
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...................................................
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...
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.
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.
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!!!!!!!!
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...
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...................................................
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
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
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.