Unit enters region event question

futeki

Active Member
Reaction score
4
I've got a collection of main regions (62, if the number matters) in a region array. If a unit matches some conditions I've set I'm wanting do a few actions when that unit enters those different regions (just entry, not leaves).

Without having to create 62 triggers, is there anyway to accomplish this?
 

Music Man

Cool Member
Reaction score
3
I've got a collection of main regions (62, if the number matters) in a region array. If a unit matches some conditions I've set I'm wanting do a few actions when that unit enters those different regions (just entry, not leaves).

Without having to create 62 triggers, is there anyway to accomplish this?

Your request is confusing. Do you want different actions in different regions?
 

jig7c

Stop reading me...-statement
Reaction score
123
probably easier in jass...


JASS:
private function Cond1 takes nothing returns boolean
 return ((GetUnitTypeId(GetTriggerUnit()) == '(your unit-type id)') ==true)
endfunction

private function Actions takes nothing returns nothing
 //actions
 call KillUnit(GetTriggerUnit)
endfunctions

private function Init takes nothing returns nothing
 local trigger t = CreateTrigger ()
 local integer i = 0
 //if no variables are set to the regions, use following
 call TriggerRegisterEnterRectSimple( t, gg_rct_region_name )
 //if you have different regions, in a variable array, use following
 call TriggerRegisterEnterRectSimple( t, udg_Region[1] )
 //if you have multiple regions, in increasing numerical order, set in a variable array, use following
 loop
  exitwhen i > 62 
  call TriggerRegisterEnterRectSimple( t, udg_Region<i> )
  set i = i + 1
 endloop
 call TriggerAddCondition( t, Condition( function Cond1) )
 call TriggerAddAction( t, function Actions )
endfunction</i>
 

tooltiperror

Super Moderator
Reaction score
231
Registering the event is easy.
Trigger:
  • Trigger
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Custom script: local integer x=0
      • Custom script: loop
      • Custom script: call TriggerRegisterEnterRectSimple( t, YourArray[x] )
      • Custom script: set x=x+1
      • Custom script: exitwhen x==63
      • Custom script: endloop


Adding a handler is beyond me.
 

educator

New Member
Reaction score
9
i have probably misunderstood but....
events
--like this if unit enters either of those regions your actions will apply, you can have more events--
a unit enters -your region 1-
a unit enters -your region 2-
conditions
--this is if it is for some units not others--
(entering unit) equal to (your unit/ unit type)
actions
-your actions-
 

tooltiperror

Super Moderator
Reaction score
231
Tee hee, silly me, I forgot the add event action, this is much better and doesn't require JASS.

Trigger:
  • Imba
    • Events
      • Map initialization
    • Conditions
    • Actions
      • For each (Integer A) from 1 to 62, do (Actions)
        • Loop - Actions
          • Trigger - Add to (Some trigger) the event (Unit - A unit enters RegionArray[Integer A] &lt;gen&gt;)
 

jig7c

Stop reading me...-statement
Reaction score
123
the above trigger will only work if it is the same actions for each region!
 

tooltiperror

Super Moderator
Reaction score
231
They didn't specify they wanted something different.
 

jig7c

Stop reading me...-statement
Reaction score
123
I've got a collection of main regions (62, if the number matters) in a region array. If a unit matches some conditions I've set I'm wanting do a few actions when that unit enters those different regions (just entry, not leaves).

Without having to create 62 triggers, is there anyway to accomplish this?

:cool:
 

tooltiperror

Super Moderator
Reaction score
231
Again, it doesn't say that they need to be different triggers.
 

Aniconic

I am the very model of a modern major general!
Reaction score
3
What Exactly do you want to do for each region? I assume you've grouped together the regions in the array that you want to do the same if not similar actions right?
 

Azylaminaz

Vox Populi
Reaction score
91
Making specific triggers might be easier, but if you are content on the one...

Trigger:
  • Actions
    • Custom script: local integer i = 0
    • Custom script: loop
    • Custom script: exitwhen i == 62
    • Custom script: set udg_enterRectTrigger<i> = CreateTrigger()
    • Custom script: call TriggerRegisterEnterRectSimple(udg_enterRectTrigger<i>, udg_RegionArray<i>)
    • Custom script: call TriggerAddAction(udg_enterRectTrigger<i>, function Trig_NAME_Actions)
    • Custom script: set i = i + 1
    • Custom script: endloop
    • </i></i></i></i>

This requires global variable enterRectTrigger, a Trigger type variable with array checked.

Then to check unit type..
Trigger:
  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • (This trigger) Equal to enterRectTrigger[0]
    • Then - Actions
      • Unit - Move (Triggering unit) instantly to (Center of RegionArray[0])
    • Else - Actions

This was a simple example of moving to the center of a region (it leaks, I know).

I'm honestly not an expert with regions and rects and might have had them cross used (JASS names them properly, GUI is a tad funny).

A tad complicated, especially when mixing in JASS and GUI. ^^
If you still don't understand and you want to do it this method, I can make a basic example...


This was directly adapted from http://www.thehelper.net/forums/showpost.php?p=1257123&postcount=6
 

futeki

Active Member
Reaction score
4
Your request is confusing. Do you want different actions in different regions?
Same actions, different regions. The goal is not to have to type out 62 events. Not only because it's ugly, but because it would probably cause some sort of mental affliction making me twitch at the most in opportune times.

Again, it doesn't say that they need to be different triggers.
And you assumed correctly. I want the same actions, different regions. I must admit I don't understand how that works. Can you explain your solution?

i have probably misunderstood but....
events
--like this if unit enters either of those regions your actions will apply, you can have more events--
a unit enters -your region 1-
a unit enters -your region 2-
conditions
--this is if it is for some units not others--
(entering unit) equal to (your unit/ unit type)
actions
-your actions-
This would cause me to have to type out 62 events...

What Exactly do you want to do for each region? I assume you've grouped together the regions in the array that you want to do the same if not similar actions right?
Same actions, different regions.

A tad complicated, especially when mixing in JASS and GUI. ^^
If you still don't understand and you want to do it this method, I can make a basic example...

This was directly adapted from http://www.thehelper.net/forums/showpost.php?p=1257123&postcount=6
I hate JASS for the simple fact that I have to write code for a living, using another language for something that's a hobby and do to relax just doesn't sound fun in the least bit. I've never even looked at it.
 

tooltiperror

Super Moderator
Reaction score
231
Trigger:
  • Imba
    • Events
      • Map initialization
    • Conditions
    • Actions
      • For each (Integer A) from 1 to 62, do (Actions)
        • Loop - Actions
          • Trigger - Add to (Some trigger) the event (Unit - A unit enters RegionArray[Integer A] &lt;gen&gt;)


I'm not going to explain the event, you probably understand that, so I'll just explain the loop.

For Each (Integer A) from 1 to 62 is like a loop in a programming language that ends at 62. Each time, integer A increases by one. So it runs the code once with Integer A being 1, again with Integer A as 2, and so on until it reaches 62. So we're registering the event for RegionArray[1], then RegionArray[2], and so on until we get to 62.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top