Terrain deformation not working.

cr4xzZz

Also known as azwraith_ftL.
I tried to make a trigger that periodically changes the terrain on the map, but for some reason it's not working at all... What have I done wrong? :\
EDIT: Answered and fixed.
JASS:
scope Deform initializer Init

globals
    private constant real PERIOD = 60.
    
    private constant integer SNOW1 = 'Nsnw'
    private constant integer SNOW2 = 'Nice'
    private constant integer SNOW3 = 'Ngrs'
    private constant integer SNOW4 = 'Nrck'
    
    private constant integer FALL1 = 'Fdrg'
    private constant integer FALL2 = 'Fgrs'
    private constant integer FALL3 = 'Fgrd'
    private constant integer FALL4 = 'Fdro'
    
    private constant integer GRASS1 = 'Vgrs'
    private constant integer GRASS2 = 'Lgrs'
    private constant integer GRASS3 = 'Lgrd'
    private constant integer GRASS4 = 'Vgrt'
endglobals

private function Actions takes nothing returns nothing
    local integer i1 = GetRandomInt(1, 3)
    local integer i2 = 0
    local integer i3 = GetRandomInt(1,3)
    local real x 
    local real y
    if i3 == 1 then
        loop
            exitwhen i2 > 1000
            set x = GetRandomReal(GetRectMinX(bj_mapInitialPlayableArea), GetRectMaxX(bj_mapInitialPlayableArea))
            set y = GetRandomReal(GetRectMinY(bj_mapInitialPlayableArea), GetRectMaxY(bj_mapInitialPlayableArea))
            call SetTerrainType(x, y, SNOW1, -1, i1, 0)
            set x = GetRandomReal(GetRectMinX(bj_mapInitialPlayableArea), GetRectMaxX(bj_mapInitialPlayableArea))
            set y = GetRandomReal(GetRectMinY(bj_mapInitialPlayableArea), GetRectMaxY(bj_mapInitialPlayableArea))
            call SetTerrainType(x, y, SNOW2, -1, i1, 0)
            set x = GetRandomReal(GetRectMinX(bj_mapInitialPlayableArea), GetRectMaxX(bj_mapInitialPlayableArea))
            set y = GetRandomReal(GetRectMinY(bj_mapInitialPlayableArea), GetRectMaxY(bj_mapInitialPlayableArea))
            call SetTerrainType(x, y, SNOW3, -1, i1, 0)
            set x = GetRandomReal(GetRectMinX(bj_mapInitialPlayableArea), GetRectMaxX(bj_mapInitialPlayableArea))
            set y = GetRandomReal(GetRectMinY(bj_mapInitialPlayableArea), GetRectMaxY(bj_mapInitialPlayableArea))
            call SetTerrainType(x, y, SNOW4, -1, i1, 0)
            set i2 = i2 + 1
            set i1 = GetRandomInt(1, 3)
        endloop
    elseif i3 == 2 then
        loop
            exitwhen i2 > 1000
            set x = GetRandomReal(GetRectMinX(bj_mapInitialPlayableArea), GetRectMaxX(bj_mapInitialPlayableArea))
            set y = GetRandomReal(GetRectMinY(bj_mapInitialPlayableArea), GetRectMaxY(bj_mapInitialPlayableArea))
            call SetTerrainType(x, y, FALL1, -1, i1, 0)
            set x = GetRandomReal(GetRectMinX(bj_mapInitialPlayableArea), GetRectMaxX(bj_mapInitialPlayableArea))
            set y = GetRandomReal(GetRectMinY(bj_mapInitialPlayableArea), GetRectMaxY(bj_mapInitialPlayableArea))
            call SetTerrainType(x, y, FALL2, -1, i1, 0)
            set x = GetRandomReal(GetRectMinX(bj_mapInitialPlayableArea), GetRectMaxX(bj_mapInitialPlayableArea))
            set y = GetRandomReal(GetRectMinY(bj_mapInitialPlayableArea), GetRectMaxY(bj_mapInitialPlayableArea))
            call SetTerrainType(x, y, FALL3, -1, i1, 0)
            set x = GetRandomReal(GetRectMinX(bj_mapInitialPlayableArea), GetRectMaxX(bj_mapInitialPlayableArea))
            set y = GetRandomReal(GetRectMinY(bj_mapInitialPlayableArea), GetRectMaxY(bj_mapInitialPlayableArea))
            call SetTerrainType(x, y, FALL4, -1, i1, 0)
            set i2 = i2 + 1
            set i1 = GetRandomInt(1, 3)
        endloop
    elseif i3 == 3 then
        loop
            exitwhen i2 > 1000
            set x = GetRandomReal(GetRectMinX(bj_mapInitialPlayableArea), GetRectMaxX(bj_mapInitialPlayableArea))
            set y = GetRandomReal(GetRectMinY(bj_mapInitialPlayableArea), GetRectMaxY(bj_mapInitialPlayableArea))
            call SetTerrainType(x, y, GRASS1, -1, i1, 0)
            set x = GetRandomReal(GetRectMinX(bj_mapInitialPlayableArea), GetRectMaxX(bj_mapInitialPlayableArea))
            set y = GetRandomReal(GetRectMinY(bj_mapInitialPlayableArea), GetRectMaxY(bj_mapInitialPlayableArea))
            call SetTerrainType(x, y, GRASS2, -1, i1, 0)
            set x = GetRandomReal(GetRectMinX(bj_mapInitialPlayableArea), GetRectMaxX(bj_mapInitialPlayableArea))
            set y = GetRandomReal(GetRectMinY(bj_mapInitialPlayableArea), GetRectMaxY(bj_mapInitialPlayableArea))
            call SetTerrainType(x, y, GRASS3, -1, i1, 0)
            set x = GetRandomReal(GetRectMinX(bj_mapInitialPlayableArea), GetRectMaxX(bj_mapInitialPlayableArea))
            set y = GetRandomReal(GetRectMinY(bj_mapInitialPlayableArea), GetRectMaxY(bj_mapInitialPlayableArea))
            call SetTerrainType(x, y, GRASS4, -1, i1, 0)
            set i2 = i2 + 1
            set i1 = GetRandomInt(1, 3)
        endloop
    endif
endfunction

//===========================================================================
private function Init takes nothing returns nothing
    local trigger trig = CreateTrigger()
    //call DisableTrigger(trig) // for a game mode
    call TriggerRegisterTimerEvent(trig, PERIOD, true)
    call TriggerAddAction(trig, function Actions)
endfunction

endscope
 

Artificial

Without Intelligence
I find a couple of things a bit weird.
1) You're never increasing i2.
2) Why are you using a location instead of x and y?
3) You're setting the terrain type at that one specific point several times. You should always take new random values for x and y after you've set the terrain at one point, in case you want to change the terrain at several different points.
3) Why are you using textmacros?
4) Why are you using TriggerRegisterTimerEventPeriodic?
 

cr4xzZz

Also known as azwraith_ftL.
Lol, I'm a lot sleepy and I've made noobish mistakes... -.-

1) Sleepy...
2) Locations are faster. Plus, I'm used to using locations instead of x and y.
3) Sleepy... Forgot to make it random.
4) For better readability - I like things that I want to configure on top.
5) Sleepy...

Anyway, I fixed everything. It's working now.
 
Lol, I'm a lot sleepy and I've made noobish mistakes... -.-

1) Sleepy...
2) Locations are faster. Plus, I'm used to using locations instead of x and y.
3) Sleepy... Forgot to make it random.
4) For better readability - I like things that I want to configure on top.
5) Sleepy...

Anyway, I fixed everything. It's working now.
Locations are not "faster" and textmacro abuse rarely improves code readability. Try to replace the textmacros with functions or something instead.
 

Viikuna

No Marlo no game.
I believe that locations are pretty fast to use, if you dont have to create+destroy+null them. I might be wrong, plus I have no idea how fast MoveLocation is. Anyways, reals are nice, since they dont leak and most of fuctions take or return reals.
 
Using the coordinates is faster than using the locations. Look at all the extra function calls in that trigger. There is no advantage to using a location in that situation.
 

cr4xzZz

Also known as azwraith_ftL.
Don't worry, I've replaced all my stupid things. It works good now, but only problem is that my handles reached 12k in 13 minutes. -.- I'm absolutely sure there are no leaks. Does terrain creation leak anyway?
 

cr4xzZz

Also known as azwraith_ftL.
> It could be the result of something else in the map.
Hmm, yes. I have one massive spell (like 600-700 lines of code) with absolutely no leaks but it keeps increasing handles by 1k with each cast.

Actually, when I just made a fast movement from locations to reals and waited 10 minutes without any action, the handles did not get more than 1500 (jumping from 1000 to 1500). So the terrain code is finally fixed. Anyway, +rep to all of you....
 
General chit-chat
Help Users
  • No one is chatting at the moment.
  • The Helper The Helper:
    It happens in corporations. They just absorb the companies they buy and it is not about the love of making awesome games it is how much money can we make with the least amount of cost.
  • The Helper The Helper:
    Blizzard is watered down now hopefully they can pull it together
  • The Helper The Helper:
    they got a server engineer job opening :)
  • Ghan Ghan:
    I really do not want to move to California otherwise I might consider it.
  • The Helper The Helper:
    yeah California is not anywhere you really want to live
  • The Helper The Helper:
    That is why I did not take the job Blizzard offered me back in the day, there is no way I could have moved my family there on what they were offering, not even close and that was like 20 years ago
  • The Helper The Helper:
    yeah they wanted me on the tech support team when they did not get me they got one of the next MVPs in Dinobot
  • The Helper The Helper:
    Dinobot was one of the youngest of the MVPs tkron probably could have worked for Blizzard but he had a good job in Chicago doing business programming already
  • The Helper The Helper:
    Dinobot probably still works for Blizzard would love to reconnect with that guy
  • The Helper The Helper:
    I wonder what ever happened to Wargasm?
  • The Helper The Helper:
    This new version of Xenforo really is awesome
  • Ghan Ghan:
    Wargasm is still around. He works for the domain registrar where thehelper.net is kept.

    Members online

    No members online now.

    Affiliates

    Hive Workshop
    Top