• 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.

I Keep Hitting the OP Limit!!

Status
Not open for further replies.
Level 8
Joined
Jul 18, 2010
Messages
332
I've already learned the thing about OP limit. I've shrank my array sizes to just one. I've deleted the variables that are no longer needed(But there still so many of them, when opening my map it says I have 3000 object variables.) I've minimized the actions on the map init.

But when I create a new variable/trigger (not sure which causes it.), I hit the OP limit again then triggers stopped working again.

I've been searching for a more efficient solution. I'm close to finishing my map but I'm stuck with this problem. I've actually seen some solutions like TriggerSleep, TriggerExecute or something like that but we're talking about GUI here not Jass. If anybody can help, I'll be really glad.
 
Level 14
Joined
Jun 27, 2008
Messages
1,325
I've already learned the thing about OP limit. I've shrank my array sizes to just one. I've deleted the variables that are no longer needed(But there still so many of them, when opening my map it says I have 3000 object variables.) I've minimized the actions on the map init.

You got this wrong -OP limit has absolutely nothing to do with the amount of objects/variables in your map. Op limit only means that a trigger that has too many actions wont competely execute.

If you however have many triggers with only a few actions each then Op limit will NOT be a problem.

(triggers and threads are pretty much the same for GUI users)

If you have a trigger with lots of actions and you know its interrupted at some point you have to split the trigger into several triggers.
Example:

Code:
Trigger1:
Event: whatever...
Condition: ...
Action:
Loop: For Loop A from 1 to 2000 do:
 Create 1 Footmen for Player 1 at center of Map
This trigger executes 2000 actions, lets assume the Op limit is hit after creating 1200 Units you can just split it into 2 triggers:


Code:
Trigger1:
Event: whatever...
Condition: ...
Action:
Loop: For Loop A from 1 to 1000 do:
 Create 1 Footmen for Player 1 at center of Map
Execute Trigger2

Trigger2:
Event: -
Condition: -
Action:
Loop: For Loop A from 1000 to 2000 do:
 Create 1 Footmen for Player 1 at center of Map

Other possible solution (using Waits)
Code:
Trigger1:
Event: whatever...
Condition: ...
Action:
Loop: For Loop A from 1 to 1000 do:
 Create 1 Footmen for Player 1 at center of Map
Wait 0 Seconds
Loop: For Loop A from 1000 to 2000 do:
 Create 1 Footmen for Player 1 at center of Map
Wait(0 seconds) sort of resets the Op limit
 
Level 17
Joined
Apr 27, 2008
Messages
2,455
In GUI, the number of array variables does matter if their "size" is not 0, because there will be a loop called on the main function for the "default" values.
For example i guess that with 2 (or maybe more) GUI array variables sized 8192, you would reach the limit op, which means triggers will be never created.

But most of time you just don't need to give them a size if you just need the default value of the type (0, false, 0.0, ""), especially for not handles ones (integer, boolean, real, string)
 
Level 37
Joined
Mar 6, 2006
Messages
9,243
Unit group arrays (and I think also player groups) MUST have their sizes initialized, otherwise only [0] will work.

For everything else, though, set array size to 0.

The initialization script will loop arrays from 0 to 1 by default, so indexes 0 and 1 will work automatically.

I recommend leaving initial sizes to 1 and creating things on the fly.
 
Level 8
Joined
Jul 18, 2010
Messages
332
Ok, I'm really confused. Someone told me before that it's about the amount of variables and arrays and triggers in map init because whenever I start the map, almost all of the triggers don't work. So I'm guessing it's not about what you're talking about, cokemonkey11 and muzzel.

And which one should I do, set arrays to 1 or 0? I have them set already to one even the unit and player groups but I have many array variables. I've counted them and they are 123. Is that too many? Which one should I set the array sizes to 1; everything except unit and player group variables?

Need solutions for this problem. Thank you very much for the quick replies.
 
Level 25
Joined
Jul 10, 2006
Messages
3,315
Which one should I set the array sizes to 1; everything except unit and player group variables?

Do this.

In my experience with this bug in the past, you may need to re-import all your triggers to make the map work again.

If this is the case, try:
Trigger editor, File -> export triggers. Save backup of map. Import triggers.
 
Level 8
Joined
Jul 18, 2010
Messages
332
It's really big, I don't want to consume your time for checking my map. My problem is that when I start my map, some triggers don't work especially map init, it always doesn't work. Some say it's about variables and arrays so I did that and it work but when I add again new variables, even if they're only few, the problem comes back again. Yesterday, I deleted all my unused variables which I only discovered when I opened my object manager. It worked, I was able to delete a LOT but today it doesn't work again and I don't know why.


Currently I have, 1074 triggers and 2660 variables according to the object manager.
 
Wow thts a lot of triggers and a good amount of variables only way I can help tho is to see ur map I have no problem taking time to look at it if u decide to upload it ill be checking back on this otherwise good luck and I hope u find a solution only thing I can say is look at the variables tht should be started at map init and look for variables tht should never be started at map init I would think thts ur main cause and if u don't have jngp u should get tht mybe the syntax checked will find something like I said tho if u can't find it upload ur map I'm happy to take a look at it
 
Level 8
Joined
Jul 18, 2010
Messages
332
The only actions I have in the map init are camera filter, time of the day, day/night cycle off, music volume to 0%, environment weather effects, and making all destructibles invulnerable. I also notice that the only trigger not working is map init.

I promise you, it will take ages for you to find the solution so I suggest you just tell me what could be wrong. Try to look at the other responses above. I need something like that.

And your english is bad but luckily I can still understand it.
 
Level 14
Joined
Jun 27, 2008
Messages
1,325
Wow thts a lot of triggers and a good amount of variables only way I can help tho is to see ur map I have no problem taking time to look at it if u decide to upload it ill be checking back on this otherwise good luck and I hope u find a solution only thing I can say is look at the variables tht should be started at map init and look for variables tht should never be started at map init I would think thts ur main cause and if u don't have jngp u should get tht mybe the syntax checked will find something like I said tho if u can't find it upload ur map I'm happy to take a look at it

punctuation marks are overrated ~

tOWtqIO_grammar_nazi_logo.jpg


but hes right, if u have >1000 triggers ur definately doing something wrong (im not saying this causes ur op limit tho).
 
And your english is bad but luckily I can still understand it.

lol i like tht one my first language is english but i dont care for perfect grammer lol its how everyone i know tlks and types lol only time grammar matters to me is formal letters and documents other than tht idc about grammar lol i type how i feel like typing lol and ya i shorten a lot of words :p
 
well u obviously understood what i said so no reason to be rude muzzel.

edit: if u have a problem w the way i type then dont read my posts

I can understand your frustration, but suggesting someone not to read your posts is not a healthy approach. This is a forum and everyone has access to your posts, so what you propose is unrealistic to begin with.
 
Level 21
Joined
Mar 27, 2012
Messages
3,232
The only actions I have in the map init are camera filter, time of the day, day/night cycle off, music volume to 0%, environment weather effects, and making all destructibles invulnerable. I also notice that the only trigger not working is map init.

I promise you, it will take ages for you to find the solution so I suggest you just tell me what could be wrong. Try to look at the other responses above. I need something like that.

And your english is bad but luckily I can still understand it.

ALL destructibles? That might be your problem, if there's too many.
 
Level 14
Joined
Jun 27, 2008
Messages
1,325
yea either it annoys me for some weird reason
OR
it annoys everyone and im just the only one to mention it.

>.< just try to express yourself in a way other ppl can understand, and punctuation marks really help.
Since u opened a thread and posted a question i assume you need help with something. I am willing to help, just give me a chance and write proper sentences.
 
Level 21
Joined
Mar 27, 2012
Messages
3,232
yea either it annoys me for some weird reason
OR
it annoys everyone and im just the only one to mention it.

>.< just try to express yourself in a way other ppl can understand, and punctuation marks really help.
Since u opened a thread and posted a question i assume you need help with something. I am willing to help, just give me a chance and write proper sentences.

I have to agree with muzzel, one can't hope to be helped when not making oneself understood.
 
Level 8
Joined
Jul 18, 2010
Messages
332
Wow, congratulations to me. I just made an argument and I wasn't even trying.
The only good answer I got was from Xonok. I haven't tried it yet but I'll post how many destructibles I got in the map later so you can know.

This is not about typing problems. That's okay deathismyfriend, you'll be able to learn how to use punctuations someday but for now I need help on my own problem which is the main purpose of this thread.
 
Level 21
Joined
Mar 27, 2012
Messages
3,232
I have 1001 destructibles as of the moment and 1767 doodads. I have 1074 triggers and 2660 variables right now. Does anybody have a solution for my problem?

The variables probably are not a problem, but destructibles might be. Try testing to see where exactly the thread crashes. You can do that by making it post messages. I would put a message inside the loop that makes trees invulnerable.
Something like this:

Set tempint = 0
loop pick all destructables blablabla
make destructable invulnerable
set tempint = tempint + 1
game - text message (tempint)

Since you know how many trees you have, then you will see if this is the problem.
 
Level 21
Joined
Mar 27, 2012
Messages
3,232
Ok I'll try to remove the make all destructibles invulnerable. Well it loops 1001 times so that probably is the problem. The way I make the destructibles invulnerable was by a destructible group.

That action is also placed in the map init.

I would somehow split it into parts.

First add all destructables to group, then lets say you use "first of group" for 400 at a time, then make them invulnerable and remove from group. It could be done with a looping trigger.
 
Level 8
Joined
Jul 18, 2010
Messages
332
Is 1001 destructibes in one loop too much that it will reach the OP limit?

Edit: No it's not the destructibles which is the cause. I tried changing the map init before into elapsed game time and it worked. So it definitely has something to do with the map init which includes variables and arrays.

Ok so I have 2660 variables, 123 of them being arrays with initial values of 1. (I'm not even sure if setting them to 1 is right cause there will be a maximum of 10 players.)

Are there are anymore things that will be done in the map init that might be causing the problem.

I'll just recap this real quick. I've deleted some unused variables before and they've solved my problem but if I add some again even if they're only few, the problem goes back. I've now deleted all the unused variables in my triggers after discovering I could detect them in the object manager which I've forgot to delete before and they're probably more than hundreds.
It worked but then add a few variables again, the problem will persist. Not really sure about this but I think only my map init doesn't work.

Again, does anybody have any answers?
 
Last edited:
Level 21
Joined
Mar 27, 2012
Messages
3,232
Is 1001 destructibes in one loop too much that it will reach the OP limit?

Edit: No it's not the destructibles which is the cause. I tried changing the map init before into elapsed game time and it worked. So it definitely has something to do with the map init which includes variables and arrays.

Ok so I have 2660 variables, 123 of them being arrays with initial values of 1. (I'm not even sure if setting them to 1 is right cause there will be a maximum of 10 players.)

Are there are anymore things that will be done in the map init that might be causing the problem.

I'll just recap this real quick. I've deleted some unused variables before and they've solved my problem but if I add some again even if they're only few, the problem goes back. I've now deleted all the unused variables in my triggers after discovering I could detect them in the object manager which I've forgot to delete before and they're probably more than hundreds.
It worked but then add a few variables again, the problem will persist. Not really sure about this but I think only my map init doesn't work.

Again, does anybody have any answers?

Well, some things can not be done on map init and everything that is done while loading is done in map init.
So it might actually work if you make things wait 0.03 seconds(time elapsed) or something like that.
 
What are the "few" variables you are adding when the init function stops working?

As Xonok says, there is stuff that stops a trigger from working aside from the OP limit, especially when done on map init.

For example getting the player slot state at map init. It might not cause the trigger from working, but it can cause desyncs. So it might help alot if you just upload the map so we can look over it.

Btw, 1000 destructables is not a big number at all.

I got systems initializing over 2000 pathing blockers, removing them, replacing them with terrain pathing functions in my map. Thats 20 function calls per destructable. You simply won't reach the OP limit that easy, believe me and I highly doubt your problem is even related to the OP limit!
 
Level 8
Joined
Jul 18, 2010
Messages
332
If that's the case about the destructibles, I believe my problem is coming from the variables. Ok so I have 2660 variables, 123 of them being arrays with initial values of 1. (I'm not even sure if setting them to 1 is right cause there will be a maximum of 10 players.) When I save the map, I think it says that I have 3007(around that number) object variables.

Any thoughts on that?

I'll upload the map, it's a really big map(12 mb, to be decreased down to 8mb when I'm finish with everything, and it's pretty messy.). I suggest just looking at the object manager and the map init.
 

Attachments

  • Grand Chase PVP Match Part Two.w3x
    12.2 MB · Views: 42
the problem might be because the map is just to big in size. u should start combining ur triggers and start optimizing everything. tht would cut down the size and see if tht is a problem. i also notice tht u do not have jngp u should get tht it helps a lot if ur using jass. all of the custom spells i looked at r not mui. whenever u make a multiboard set it to a variable.

first u set the multiboard variable in this one after u use it u should set it right after creating multiboard and use the multiboard in the multiboard items after it. u also need to change the locations tht u preset in this trigger. only set them when u r going to use them and remove them after u r done w them. do not use for each integer a make ur own variable and use ur own variable from 1 to 12. for each integer a has a lot of bugs

  • dungeon start
    • Events
      • Time - Elapsed game time is 5.00 seconds
    • Conditions
    • Actions
      • Neutral Building - Add Sidtri Pet Card to Pet Shop (Limited for One Player) 0023 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Little Gaikoz Pet Card to Pet Shop (Limited for One Player) 0023 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Nerissa Pet Card to Pet Shop (Limited for One Player) 0023 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Little Kaze'aaze Pet Card to Pet Shop (Limited for One Player) 0023 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Gorgon Pet Card to Pet Shop (Limited for One Player) 0023 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Ice Fairy Pet Card to Pet Shop (Limited for One Player) 0023 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Rocco Pet Card to Pet Shop (Limited for One Player) 0023 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Ariel Pet Card to Pet Shop (Limited for One Player) 0023 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Knight Master Pet Card to Pet Shop (Limited for One Player) 0023 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Little Thanatos Pet Card to Pet Shop (Limited for One Player) 0023 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Sidtri Pet Card to Pet Shop (Limited for One Player) 0061 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Little Gaikoz Pet Card to Pet Shop (Limited for One Player) 0061 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Nerissa Pet Card to Pet Shop (Limited for One Player) 0061 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Little Kaze'aaze Pet Card to Pet Shop (Limited for One Player) 0061 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Gorgon Pet Card to Pet Shop (Limited for One Player) 0061 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Ice Fairy Pet Card to Pet Shop (Limited for One Player) 0061 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Rocco Pet Card to Pet Shop (Limited for One Player) 0061 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Ariel Pet Card to Pet Shop (Limited for One Player) 0023 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Knight Master Pet Card to Pet Shop (Limited for One Player) 0023 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Little Thanatos Pet Card to Pet Shop (Limited for One Player) 0023 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Elesis) to Magic Library 1 0022 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Elesis No.2) to Magic Library 1 0022 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Elesis 2nd Bar Skill No.1) to Magic Library 1 0022 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Elesis 2nd Bar Skill No.2) to Magic Library 1 0022 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Lire) to Magic Library 1 0022 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Lire No.2) to Magic Library 1 0022 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Lire 2nd Bar Skill) to Magic Library 1 0022 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Lire 3rd Bar Skill) to Magic Library 1 0022 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Arme) to Magic Library 1 0022 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Arme No.2) to Magic Library 1 0022 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Arme 2nd Bar Skill No.1) to Magic Library 1 0022 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Arme 2nd Bar Skill No.2) to Magic Library 2 0024 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Lass) to Magic Library 2 0024 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Lass No.2) to Magic Library 2 0024 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Lass 2nd Bar Skill) to Magic Library 2 0024 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Lass 3rd Bar Skill) to Magic Library 2 0024 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Ryan) to Magic Library 2 0024 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Ryan No.2) to Magic Library 2 0024 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Ryan 2nd Bar Skill) to Magic Library 2 0024 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Ryan 3rd Bar Skill) to Magic Library 2 0024 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Ronan) to Magic Library 2 0024 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Ronan No.2) to Magic Library 2 0024 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Ronan 2nd Bar Skill No.1) to Magic Library 3 0025 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Ronan 2nd Bar Skill No.2) to Magic Library 3 0025 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Amy) to Magic Library 3 0025 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Amy No.2) to Magic Library 3 0025 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Amy 2nd Bar Skill No.1) to Magic Library 3 0025 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Amy 2nd Bar Skill No.2) to Magic Library 3 0025 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Jin) to Magic Library 3 0025 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Jin No.2) to Magic Library 3 0025 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Jin 2nd Bar Skill) to Magic Library 3 0025 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Jin 3rd Bar Skill) to Magic Library 3 0025 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Sieghart) to Magic Library 3 0025 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Sieghart No.2) to Magic Library 4 0047 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Sieghart 2nd Bar Skill) to Magic Library 4 0047 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Sieghart 3rd Bar Skill) to Magic Library 4 0047 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Dio) to Magic Library 4 0047 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Dio No.2) to Magic Library 4 0047 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Dio 2nd AP Bar Skill No.1) to Magic Library 4 0047 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Dio 2nd AP Bar Skill No.2) to Magic Library 4 0047 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Mari) to Magic Library 4 0047 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Mari No.2) to Magic Library 4 0047 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Mari 3rd Bar Skill No.1) to Magic Library 4 0047 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Mari 3rd Bar Skill No.2) to Magic Library 4 0047 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Elesis) to Magic Library 1 0069 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Elesis No.2) to Magic Library 1 0069 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Elesis 2nd Bar Skill No.1) to Magic Library 1 0069 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Elesis 2nd Bar Skill No.2) to Magic Library 1 0069 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Lire) to Magic Library 1 0069 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Lire No.2) to Magic Library 1 0069 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Lire 2nd Bar Skill) to Magic Library 1 0069 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Lire 3rd Bar Skill) to Magic Library 1 0069 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Arme) to Magic Library 1 0069 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Arme No.2) to Magic Library 1 0069 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Arme 2nd Bar Skill No.1) to Magic Library 1 0069 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Arme 2nd Bar Skill No.2) to Magic Library 2 0070 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Lass) to Magic Library 2 0070 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Lass No.2) to Magic Library 2 0070 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Lass 2nd Bar Skill) to Magic Library 2 0070 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Lass 3rd Bar Skill) to Magic Library 2 0070 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Ryan) to Magic Library 2 0070 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Ryan No.2) to Magic Library 2 0070 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Ryan 2nd Bar Skill) to Magic Library 2 0070 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Ryan 3rd Bar Skill) to Magic Library 2 0070 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Ronan) to Magic Library 2 0070 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Ronan No.2) to Magic Library 2 0070 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Ronan 2nd Bar Skill No.1) to Magic Library 3 0071 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Ronan 2nd Bar Skill No.2) to Magic Library 3 0071 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Amy) to Magic Library 3 0071 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Amy No.2) to Magic Library 3 0071 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Amy 2nd Bar Skill No.1) to Magic Library 3 0071 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Amy 2nd Bar Skill No.2) to Magic Library 3 0071 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Jin) to Magic Library 3 0071 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Jin No.2) to Magic Library 3 0071 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Jin 2nd Bar Skill) to Magic Library 3 0071 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Jin 3rd Bar Skill) to Magic Library 3 0071 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Sieghart) to Magic Library 3 0071 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Sieghart No.2) to Magic Library 4 0072 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Sieghart 2nd Bar Skill) to Magic Library 4 0072 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Sieghart 3rd Bar Skill) to Magic Library 4 0072 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Dio) to Magic Library 4 0072 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Dio No.2) to Magic Library 4 0072 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Dio 2nd AP Bar Skill No.1) to Magic Library 4 0072 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Dio 2nd AP Bar Skill No.2) to Magic Library 4 0072 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Mari) to Magic Library 4 0072 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Mari No.2) to Magic Library 4 0072 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Mari 3rd Bar Skill No.1) to Magic Library 4 0072 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Mari 3rd Bar Skill No.2) to Magic Library 4 0072 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Zero) to Magic Library 5 0155 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Zero No.2) to Magic Library 5 0155 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Zero 2nd AP Bar Skill No.1) to Magic Library 5 0155 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Zero 2nd AP Bar Skill No.2) to Magic Library 5 0155 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Ley) to Magic Library 5 0155 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Ley No.2) to Magic Library 5 0155 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Ley 2nd AP Bar Skill) to Magic Library 5 0155 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Ley 3rd AP Bar Skill) to Magic Library 5 0155 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Zero) to Magic Library 5 0012 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Zero No.2) to Magic Library 5 0012 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Zero 2nd AP Bar Skill No.1) to Magic Library 5 0012 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Zero 2nd AP Bar Skill No.2) to Magic Library 5 0012 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Ley) to Magic Library 5 0012 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Ley No.2) to Magic Library 5 0012 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Ley 2nd AP Bar Skill) to Magic Library 5 0012 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Ley 3rd AP Bar Skill) to Magic Library 5 0012 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Rufus) to Magic Library 5 0012 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Rufus) to Magic Library 5 0155 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Rufus No.2) to Magic Library 5 0012 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Rufus No.2) to Magic Library 5 0155 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Rufus No.3) to Magic Library 5 0012 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Rufus No.3) to Magic Library 5 0155 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Rufus No.4) to Magic Library 6 0038 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Rufus No.4) to Magic Library 6 0037 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Rufus No.5) to Magic Library 6 0037 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Rufus No.5) to Magic Library 6 0038 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Rufus No.6) to Magic Library 6 0037 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Rufus No.6) to Magic Library 6 0038 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Asmodian Devil Path to Magic Library 6 0038 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Asmodian Weapon Path to Magic Library 6 0038 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Asmodian Devil Path to Magic Library 6 0037 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Asmodian Weapon Path to Magic Library 6 0037 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Upgraded Duel Pet Scroll to Serdin Heroic Shop 0121 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Upgraded Duel Pet Scroll to Kanaavan Heroic Shop 0122 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Azin) (No.1 - 1) to Magic Library 6 0038 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Azin) (No.1 - 2) to Magic Library 7 0133 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Azin) (No.1 - 3) to Magic Library 7 0133 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Azin) (No.1 - 1) to Magic Library 6 0037 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Azin) (No.1 - 2) to Magic Library 7 0134 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Azin) (No.1 - 3) to Magic Library 7 0134 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Azin) (No.2 - 1) to Magic Library 7 0133 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Azin) (No.2 - 2) to Magic Library 7 0133 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Azin) (No.2 - 3) to Magic Library 7 0133 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Azin) (No.2 - 1) to Magic Library 7 0134 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Azin) (No.2 - 2) to Magic Library 7 0134 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Azin) (No.2 - 3) to Magic Library 7 0134 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Lime) (No.1 - 1) to Magic Library 7 0133 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Lime) (No.1 - 1) to Magic Library 7 0134 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Lime) (No.1 - 2) to Magic Library 7 0133 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Lime) (No.1 - 2) to Magic Library 7 0134 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Lime) (No.1 - 3) to Magic Library 7 0133 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Lime) (No.1 - 3) to Magic Library 7 0134 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Lime) (No.2 - 1) to Magic Library 7 0133 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Lime) (No.2 - 1) to Magic Library 7 0134 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Lime) (No.2 - 2) to Magic Library 7 0133 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Lime) (No.2 - 2) to Magic Library 7 0134 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Lime) (No.2 - 3) to Magic Library 7 0133 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Lime) (No.2 - 3) to Magic Library 7 0134 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Rin)(Light Side) to Magic Library 8 0161 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Rin No.2)(Light Side) to Magic Library 8 0161 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Rin 2nd Bar Skill)(Light Side) to Magic Library 8 0161 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Rin 3rd Bar Skill No.1)(Light Side) to Magic Library 8 0161 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Rin 3rd Bar Skill No.2)(Light Side) to Magic Library 8 0161 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Rin)(Dark Side) to Magic Library 8 0161 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Rin No.2)(Dark Side) to Magic Library 8 0161 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Rin 2nd Bar Skill No.1)(Dark Side) to Magic Library 8 0161 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Rin 2nd Bar Skill No.2)(Dark Side) to Magic Library 8 0161 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Rin 3rd Bar Skill)(Dark Side) to Magic Library 8 0161 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Rin)(Light Side) to Magic Library 8 0153 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Rin No.2)(Light Side) to Magic Library 8 0153 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Rin 2nd Bar Skill)(Light Side) to Magic Library 8 0153 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Rin 3rd Bar Skill No.1)(Light Side) to Magic Library 8 0153 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Rin 3rd Bar Skill No.2)(Light Side) to Magic Library 8 0153 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Rin)(Dark Side) to Magic Library 8 0153 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Rin No.2)(Dark Side) to Magic Library 8 0153 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Rin 2nd Bar Skill No.1)(Dark Side) to Magic Library 8 0153 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Rin 2nd Bar Skill No.2)(Dark Side) to Magic Library 8 0153 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Skill Tree (Rin 3rd Bar Skill)(Dark Side) to Magic Library 8 0153 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Dark Goddess Transformation to Magic Library 6 0037 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Light Goddess Transformation to Magic Library 6 0037 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Dark Goddess Transformation to Magic Library 6 0038 <gen> with 1 in stock and a max stock of 1
      • Neutral Building - Add Light Goddess Transformation to Magic Library 6 0038 <gen> with 1 in stock and a max stock of 1
      • Set monstertrainscpoint = (Center of Region 051 Copy 2 <gen>)
      • Set monstertrainscpoint_Copy = (Center of Region 051 <gen>)
      • Set monstertrainscpoint_Copy_2 = (Center of Region 051 Copy <gen>)
      • Set monstertrainscpoint_Copy_3 = (Center of Region 051 Copy 3 <gen>)
      • Unit Group - Add Train 301 Trains 0054 <gen> to monstertrainscgroup
      • Unit Group - Add Train 301 Trains 0055 <gen> to monstertrainscgroup
      • Unit Group - Add Train 301 Trains 0073 <gen> to monstertrainscgroup
      • Unit Group - Add Train 301 Trains 0089 <gen> to monstertrainscgroup_Copy
      • Unit Group - Add Train 301 Trains 0093 <gen> to monstertrainscgroup_Copy
      • Unit Group - Add Train 301 Trains 0097 <gen> to monstertrainscgroup_Copy
      • Set BossStageEntrance = (Center of Boss Stage Entrance <gen>)
      • Set BossStageEntrance_Copy = (Center of Boss Stage Entrance Copy <gen>)
      • Set BossStageEntrance_Copy_2 = (Center of Boss Stage Entrance Copy 2 <gen>)
      • Set BossStageEntrance_Copy_3 = (Center of Boss Stage Entrance Copy 3 <gen>)
      • Set BossStageEntrance_Copy_4 = (Center of Boss Stage Entrance Copy 4 <gen>)
      • Set BossStageEntrance_Copy_5 = (Center of Boss Stage Entrance Copy 5 <gen>)
      • Set BossStageEntrance_Copy_6 = (Center of Boss Stage Entrance Copy 6 <gen>)
      • Set BossStageEntrance_Copy_7 = (Center of Boss Stage Entrance Copy 7 <gen>)
      • Set BossStageEntrance_Copy_8 = (Center of Boss Stage Entrance Copy 8 <gen>)
      • Set BossStageEntrance_Copy_9 = (Center of Boss Stage Entrance Copy 9 <gen>)
      • Set BossStageEntrance_Copy_10 = (Center of Boss Stage Entrance Copy 10 <gen>)
      • Set BossStageEntrance_Copy_11 = (Center of Boss Stage Entrance Copy 11 <gen>)
      • Set BossStageEntrance_Copy_12 = (Center of Boss Stage Entrance Copy 12 <gen>)
      • Set BossStageEntrance_Copy_13 = (Center of Boss Stage Entrance Copy 13 <gen>)
      • Set BossStageEntrance_Copy_14 = (Center of Boss Stage Entrance Copy 14 <gen>)
      • Set BossStageEntrance_Copy_15 = (Center of Boss Stage Entrance Copy 15 <gen>)
      • Set BossStageEntrance_Copy_16 = (Center of Boss Stage Entrance Copy 16 <gen>)
      • Set BossSpot = (Center of BossSpot <gen>)
      • Set BossSpot_Copy = (Center of BossSpot Copy <gen>)
      • Set BossSpot_Copy_2 = (Center of BossSpot Copy 2 <gen>)
      • Set BossSpot_Copy_3 = (Center of BossSpot Copy 3 <gen>)
      • Set BossSpot_Copy_4 = (Center of BossSpot Copy 4 <gen>)
      • Set BossSpot_Copy_5 = (Center of BossSpot Copy 5 <gen>)
      • Set BossSpot_Copy_6 = (Center of BossSpot Copy 6 <gen>)
      • Set Player1BossStage = (Center of Player1BossStage <gen>)
      • Set Player2BossStage = (Center of Player2BossStage <gen>)
      • Set Player3BossStage = (Center of Player3BossStage <gen>)
      • Set Player4BossStage = (Center of Player4BossStage <gen>)
      • Set Player5BossStage = (Center of Player5BossStage <gen>)
      • Set Player6BossStage = (Center of Player6BossStage <gen>)
      • Set Player7BossStage = (Center of Player7BossStage <gen>)
      • Set Player8BossStage = (Center of Player8BossStage <gen>)
      • Set Player9BossStage = (Center of Player9BossStage <gen>)
      • Set Player10BossStage = (Center of Player10BossStage <gen>)
      • Set Player1and6PS = (Center of Player 1 and 6 PS <gen>)
      • Set Player2and7PS = (Center of Player 2 and 7 PS <gen>)
      • Set Player3and8PS = (Center of Player 3 and 8 PS <gen>)
      • Set Player4and9PS = (Center of Player 4 and 9 PS <gen>)
      • Set Player5and10PS = (Center of Player 5 and 10 PS <gen>)
      • Set talinportal = (Center of Region 133 Copy 4 <gen>)
      • Set talinportal_Copy = (Center of Region 133 Copy 2 <gen>)
      • Set talinportal_Copy_2 = (Center of Region 133 Copy 3 <gen>)
      • Set talinportal_Copy_3 = (Center of Region 133 <gen>)
      • Set jinspotcinematic = (Center of Jin Spot Cinematic <gen>)
      • Set victorspotcinematic = (Center of Victor Spot Cinematic <gen>)
      • Dialog - Change the title of relaydungeondialog to |c00889e78Relay Dun...
      • Dialog - Create a dialog button for relaydungeondialog labelled Yes
      • Set relaydungeondialog_Copy[1] = (Last created dialog Button)
      • Dialog - Create a dialog button for relaydungeondialog labelled No
      • Set relaydungeondialog_Copy[2] = (Last created dialog Button)
      • For each (Integer A) from 1 to 12, do (Actions)
        • Loop - Actions
          • Dialog - Show relaydungeondialog for (Player((Integer A)))
      • Wait 10.00 seconds
      • Player Group - Pick every player in (All players) and do (Visibility - Create an initially Enabled visibility modifier for (Picked player) emitting Visibility across Region 000 <gen>)
      • For each (Integer A) from 1 to 12, do (Actions)
        • Loop - Actions
          • Dialog - Hide relaydungeondialog for (Player((Integer A)))
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • relaydungeonvote[1] Greater than relaydungeonvote[2]
        • Then - Actions
          • Set itemdropchance = 90
          • Trigger - Turn on unit kill Copy <gen>
          • Player Group - Pick every player in (All players) and do (Actions)
            • Loop - Actions
              • Hero - Make (Picked player) Heroes gain 200.00% experience from future kills
          • Countdown Timer - Start DungeonBossTimer as a One-shot timer that will expire in 30.00 seconds
          • Countdown Timer - Create a timer window for DungeonBossTimer with title Next Boss will come...
          • Set dungeonbosstimerwindow = (Last created timer window)
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • relaydungeonvote[2] Greater than or equal to relaydungeonvote[1]
        • Then - Actions
          • Set itemdropchance = 40
          • Trigger - Turn on unit kill <gen>
          • Countdown Timer - Start DungeonBossTimer as a One-shot timer that will expire in 180.00 seconds
          • Countdown Timer - Create a timer window for DungeonBossTimer with title Next Boss will come...
          • Set dungeonbosstimerwindow = (Last created timer window)
        • Else - Actions
      • Trigger - Turn on finish transform for boss Copy <gen>
      • Quest - Create a Required quest titled |cffffff00Grand Cha... with the description Defeat all the boss..., using icon path ReplaceableTextures\CommandButtons\BTNGC_Mari_Icon.blp
      • Quest - Enable (Last created quest)
      • Quest - Mark (Last created quest) as Discovered
      • Quest - Create a Optional quest titled |cffffff00Dungeons|... with the description |cffffff00Silver La..., using icon path ReplaceableTextures\CommandButtons\BTNGC_Elesis_Icon.blp
      • Quest - Enable (Last created quest)
      • Quest - Mark (Last created quest) as Discovered
      • Quest - Create a Optional quest titled |cffffff00Event Dun... with the description Event Dungeons are ..., using icon path ReplaceableTextures\CommandButtons\BTNGC_Ley_Icon.blp
      • Quest - Enable (Last created quest)
      • Quest - Mark (Last created quest) as Discovered
      • Quest - Create a Optional quest titled |cffffff00Event Dun... with the description Event Dungeons are ..., using icon path ReplaceableTextures\CommandButtons\BTNGC_Jin_Icon.blp
      • Quest - Enable (Last created quest)
      • Quest - Mark (Last created quest) as Discovered
      • Quest - Create a Optional quest titled |cffffff00Character... with the description Pick up to 17 chara..., using icon path ReplaceableTextures\CommandButtons\BTNGC_Sieghart_Icon.blp
      • Quest - Enable (Last created quest)
      • Quest - Mark (Last created quest) as Discovered
      • Quest - Create a Optional quest titled |cffffff00Skill Tre... with the description Skill Trees are spe..., using icon path ReplaceableTextures\CommandButtons\BTNGC_Rufus_Icon.blp
      • Quest - Enable (Last created quest)
      • Quest - Mark (Last created quest) as Discovered
      • Quest - Create a Optional quest titled |cffffff00Credits|r with the description All imported models..., using icon path ReplaceableTextures\CommandButtons\BTNGC_Dio_Icon.blp
      • Quest - Enable (Last created quest)
      • Quest - Mark (Last created quest) as Discovered
      • Set quest = (Last created quest)
      • Multiboard - Create a multiboard with 4 columns and 14 rows, titled Grand Chase Dungeon...
      • Multiboard - Hide (Last created multiboard)
      • Multiboard - Set the display style for (Last created multiboard) item in column 0, row 0 to Show text and Hide icons
      • Multiboard - Set the text for (Last created multiboard) item in column 1, row 1 to Serdin Team
      • Multiboard - Set the text for (Last created multiboard) item in column 1, row 8 to Kanaavan Team
      • Multiboard - Set the text for (Last created multiboard) item in column 2, row 1 to Unit Kill
      • Multiboard - Set the text for (Last created multiboard) item in column 2, row 8 to Unit Kill
      • Multiboard - Set the text for (Last created multiboard) item in column 3, row 1 to Boss Kill
      • Multiboard - Set the text for (Last created multiboard) item in column 3, row 8 to Boss Kill
      • Multiboard - Set the text for (Last created multiboard) item in column 4, row 1 to Total Kill
      • Multiboard - Set the text for (Last created multiboard) item in column 4, row 8 to Total Kill
      • Multiboard - Set the color for (Last created multiboard) item in column 0, row 1 to (0.00%, 100.00%, 0.00%) with 0.00% transparency
      • Multiboard - Set the color for (Last created multiboard) item in column 1, row 1 to (100.00%, 0.00%, 0.00%) with 0.00% transparency
      • Multiboard - Set the color for (Last created multiboard) item in column 0, row 8 to (0.00%, 100.00%, 0.00%) with 0.00% transparency
      • Multiboard - Set the color for (Last created multiboard) item in column 1, row 8 to (0.00%, 0.00%, 100.00%) with 0.00% transparency
      • Multiboard - Set the width for (Last created multiboard) item in column 1, row 0 to 11.50% of the total screen width
      • Multiboard - Set the width for (Last created multiboard) item in column 2, row 0 to 5.00% of the total screen width
      • Multiboard - Set the width for (Last created multiboard) item in column 3, row 0 to 5.00% of the total screen width
      • Multiboard - Set the width for (Last created multiboard) item in column 4, row 0 to 5.00% of the total screen width
      • For each (Integer A) from 2 to 6, do (Actions)
        • Loop - Actions
          • Multiboard - Set the text for (Last created multiboard) item in column 1, row (Integer A) to (Name of (Player(((Integer A) - 1))))
          • Multiboard - Set the text for (Last created multiboard) item in column 2, row (Integer A) to 0
          • Multiboard - Set the text for (Last created multiboard) item in column 3, row (Integer A) to 0
          • Multiboard - Set the text for (Last created multiboard) item in column 4, row (Integer A) to 0
      • Multiboard - Set the text for (Last created multiboard) item in column 1, row 7 to Total Score
      • Multiboard - Set the text for (Last created multiboard) item in column 2, row 7 to 0
      • Multiboard - Set the text for (Last created multiboard) item in column 3, row 7 to 0
      • Multiboard - Set the text for (Last created multiboard) item in column 4, row 7 to 0
      • For each (Integer A) from 8 to 12, do (Actions)
        • Loop - Actions
          • Multiboard - Set the text for (Last created multiboard) item in column 1, row ((Integer A) + 1) to (Name of (Player(((Integer A) - 2))))
          • Multiboard - Set the text for (Last created multiboard) item in column 2, row ((Integer A) + 1) to 0
          • Multiboard - Set the text for (Last created multiboard) item in column 3, row ((Integer A) + 1) to 0
          • Multiboard - Set the text for (Last created multiboard) item in column 4, row ((Integer A) + 1) to 0
      • Multiboard - Set the text for (Last created multiboard) item in column 1, row 14 to Total Score
      • Multiboard - Set the text for (Last created multiboard) item in column 2, row 14 to 0
      • Multiboard - Set the text for (Last created multiboard) item in column 3, row 14 to 0
      • Multiboard - Set the text for (Last created multiboard) item in column 4, row 14 to 0
      • Multiboard - Show (Last created multiboard)
      • Set dungeonboard = (Last created multiboard)
      • Quest - Display to (All players) the Quest Discovered message: |cffFFFF00MAIN QUES...
      • Sound - Play NagaTheme <gen>
      • Wait 3.00 seconds
      • Quest - Display to (All players) the Quest Update message: |cff77bbffNew Conti...
      • Wait 3.00 seconds
      • Quest - Display to (All players) the Hint message: |cffffff00Dungeon L...
      • Wait 3.00 seconds
      • Quest - Display to (All players) the Hint message: |cffffff00Monsters ...
      • Wait 5.00 seconds
      • Quest - Display to (All players) the Hint message: |c0096FF96Blood Loc...
      • Wait 5.00 seconds
      • Quest - Display to (All players) the Hint message: |c0096FF96Tree Craw...
      • Wait 5.00 seconds
      • Quest - Display to (All players) the Hint message: |c0096FF96Dessicate...
      • Wait 6.00 seconds
      • Quest - Display to (All players) the Hint message: |c0096FF96Warning:|...
      • Wait 3.00 seconds
      • Quest - Display to (All players) the Hint message: |c0096FF96Note:|r B...
      • Wait 3.00 seconds
      • Quest - Display to (All players) the Hint message: |c0096FF96Note:|r A...
      • Wait 3.00 seconds
      • Quest - Display to (All players) the Hint message: |c0096FF96Note:|r T...
change owner of triggering unit to triggering player
  • Unit - Create 1 Light Goddess Blink for (Owner of (Triggering unit)) at teleportspinpoint facing Default building facing degrees
whenever possible
  • Unit - Create 1 Light Goddess Blink for (Triggering player) at teleportspinpoint facing Default building facing degrees
change dying unit in ur triggers to triggering unit. also change entering unit to triggering unit. and any other like this.
whenever u use owner of ( something unit ) change it to triggering player

change this trigger and any others like it to this (note: look at the conditions)
  • monster kill team 2
    • Events
      • Unit - A unit owned by Neutral Hostile Dies
    • Conditions
      • ((Killing unit) belongs to an enemy of (Owner of (Dying unit))) Equal to True
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • ((Owner of (Killing unit)) is in team2) Equal to True
        • Then - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Or - Any (Conditions) are true
                • Conditions
                  • (Dying unit) Equal to boss
                  • (Dying unit) Equal to boss1stform
                  • (Dying unit) Equal to miniboss
                  • (Unit-type of (Dying unit)) Equal to Evil Hammer Man
                  • (Unit-type of (Dying unit)) Equal to Oretina
                  • (Unit-type of (Dying unit)) Equal to Zidler the Chaotic Ringmaster
                  • (Unit-type of (Dying unit)) Equal to Zidler the Ringmaster
                  • (Unit-type of (Dying unit)) Equal to Death Prisoner
                  • (Unit-type of (Dying unit)) Equal to Engineer Pipe Jack
                  • (Unit-type of (Dying unit)) Equal to Death Engine 301 (First Part)
                  • (Unit-type of (Dying unit)) Equal to Death Engine 301 (Second Part)
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Or - Any (Conditions) are true
                    • Conditions
                      • (Dying unit) Equal to boss
                      • (Dying unit) Equal to boss1stform
                      • (Unit-type of (Dying unit)) Equal to Zidler the Chaotic Ringmaster
                      • (Unit-type of (Dying unit)) Equal to Zidler the Ringmaster
                      • (Unit-type of (Dying unit)) Equal to Engineer Pipe Jack
                      • (Unit-type of (Dying unit)) Equal to Death Engine 301 (First Part)
                      • (Unit-type of (Dying unit)) Equal to Death Engine 301 (Second Part)
                • Then - Actions
                  • Set bosskills[(Player number of (Owner of (Killing unit)))] = (bosskills[(Player number of (Owner of (Killing unit)))] + 5)
                  • Set tempint = ((Player number of (Owner of (Killing unit))) + 3)
                  • Set bosskillsoverall = (bosskills[6] + (bosskills[7] + (bosskills[8] + (bosskills[9] + bosskills[10]))))
                  • Multiboard - Set the text for dungeonboard item in column 3, row tempint to (String(bosskills[(Player number of (Owner of (Killing unit)))]))
                  • Multiboard - Set the text for dungeonboard item in column 3, row 14 to (String(bosskillsoverall))
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Or - Any (Conditions) are true
                    • Conditions
                      • (Dying unit) Equal to miniboss
                      • (Unit-type of (Dying unit)) Equal to Evil Hammer Man
                      • (Unit-type of (Dying unit)) Equal to Oretina
                      • (Unit-type of (Dying unit)) Equal to Death Prisoner
                • Then - Actions
                  • Set bosskills[(Player number of (Owner of (Killing unit)))] = (bosskills[(Player number of (Owner of (Killing unit)))] + 3)
                  • Set tempint = ((Player number of (Owner of (Killing unit))) + 3)
                  • Set bosskillsoverall = (bosskills[6] + (bosskills[7] + (bosskills[8] + (bosskills[9] + bosskills[10]))))
                  • Multiboard - Set the text for dungeonboard item in column 3, row tempint to (String(bosskills[(Player number of (Owner of (Killing unit)))]))
                  • Multiboard - Set the text for dungeonboard item in column 3, row 14 to (String(bosskillsoverall))
                • Else - Actions
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Dying unit) Not equal to miniboss
              • (Dying unit) Not equal to boss
              • (Dying unit) Not equal to boss1stform
              • (Unit-type of (Dying unit)) Not equal to Evil Hammer Man
              • (Unit-type of (Dying unit)) Not equal to Oretina
              • (Unit-type of (Dying unit)) Not equal to Zidler the Chaotic Ringmaster
              • (Unit-type of (Dying unit)) Not equal to Zidler the Ringmaster
              • (Unit-type of (Dying unit)) Not equal to Death Prisoner
              • (Unit-type of (Dying unit)) Not equal to Engineer Pipe Jack
              • (Unit-type of (Dying unit)) Not equal to Death Engine 301 (First Part)
              • (Unit-type of (Dying unit)) Not equal to Death Engine 301 (Second Part)
            • Then - Actions
              • Set kills[(Player number of (Owner of (Killing unit)))] = (kills[(Player number of (Owner of (Killing unit)))] + 1)
              • Set tempint = ((Player number of (Owner of (Killing unit))) + 3)
              • Set killsoverall = (kills[6] + (kills[7] + (kills[8] + (kills[9] + kills[10]))))
              • Multiboard - Set the text for dungeonboard item in column 2, row tempint to (String(kills[(Player number of (Owner of (Killing unit)))]))
              • Multiboard - Set the text for dungeonboard item in column 2, row 14 to (String(killsoverall))
            • Else - Actions
          • Multiboard - Set the text for dungeonboard item in column 4, row tempint to (String((bosskills[(Player number of (Owner of (Killing unit)))] + kills[(Player number of (Owner of (Killing unit)))])))
          • Multiboard - Set the text for dungeonboard item in column 4, row 14 to (String((bosskillsoverall + killsoverall)))
        • Else - Actions
  • monster kill team 2
    • Events
      • Unit - A unit owned by Neutral Hostile Dies
    • Conditions
      • ((Killing unit) belongs to an enemy of (Owner of (Dying unit))) Equal to True
      • ((Owner of (Killing unit)) is in team2) Equal to True
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Or - Any (Conditions) are true
            • Conditions
              • (Dying unit) Equal to boss
              • (Dying unit) Equal to boss1stform
              • (Dying unit) Equal to miniboss
              • (Unit-type of (Dying unit)) Equal to Evil Hammer Man
              • (Unit-type of (Dying unit)) Equal to Oretina
              • (Unit-type of (Dying unit)) Equal to Zidler the Chaotic Ringmaster
              • (Unit-type of (Dying unit)) Equal to Zidler the Ringmaster
              • (Unit-type of (Dying unit)) Equal to Death Prisoner
              • (Unit-type of (Dying unit)) Equal to Engineer Pipe Jack
              • (Unit-type of (Dying unit)) Equal to Death Engine 301 (First Part)
              • (Unit-type of (Dying unit)) Equal to Death Engine 301 (Second Part)
        • Then - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Or - Any (Conditions) are true
                • Conditions
                  • (Dying unit) Equal to boss
                  • (Dying unit) Equal to boss1stform
                  • (Unit-type of (Dying unit)) Equal to Zidler the Chaotic Ringmaster
                  • (Unit-type of (Dying unit)) Equal to Zidler the Ringmaster
                  • (Unit-type of (Dying unit)) Equal to Engineer Pipe Jack
                  • (Unit-type of (Dying unit)) Equal to Death Engine 301 (First Part)
                  • (Unit-type of (Dying unit)) Equal to Death Engine 301 (Second Part)
            • Then - Actions
              • Set bosskills[(Player number of (Owner of (Killing unit)))] = (bosskills[(Player number of (Owner of (Killing unit)))] + 5)
              • Set tempint = ((Player number of (Owner of (Killing unit))) + 3)
              • Set bosskillsoverall = (bosskills[6] + (bosskills[7] + (bosskills[8] + (bosskills[9] + bosskills[10]))))
              • Multiboard - Set the text for dungeonboard item in column 3, row tempint to (String(bosskills[(Player number of (Owner of (Killing unit)))]))
              • Multiboard - Set the text for dungeonboard item in column 3, row 14 to (String(bosskillsoverall))
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Or - Any (Conditions) are true
                • Conditions
                  • (Dying unit) Equal to miniboss
                  • (Unit-type of (Dying unit)) Equal to Evil Hammer Man
                  • (Unit-type of (Dying unit)) Equal to Oretina
                  • (Unit-type of (Dying unit)) Equal to Death Prisoner
            • Then - Actions
              • Set bosskills[(Player number of (Owner of (Killing unit)))] = (bosskills[(Player number of (Owner of (Killing unit)))] + 3)
              • Set tempint = ((Player number of (Owner of (Killing unit))) + 3)
              • Set bosskillsoverall = (bosskills[6] + (bosskills[7] + (bosskills[8] + (bosskills[9] + bosskills[10]))))
              • Multiboard - Set the text for dungeonboard item in column 3, row tempint to (String(bosskills[(Player number of (Owner of (Killing unit)))]))
              • Multiboard - Set the text for dungeonboard item in column 3, row 14 to (String(bosskillsoverall))
            • Else - Actions
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Dying unit) Not equal to miniboss
          • (Dying unit) Not equal to boss
          • (Dying unit) Not equal to boss1stform
          • (Unit-type of (Dying unit)) Not equal to Evil Hammer Man
          • (Unit-type of (Dying unit)) Not equal to Oretina
          • (Unit-type of (Dying unit)) Not equal to Zidler the Chaotic Ringmaster
          • (Unit-type of (Dying unit)) Not equal to Zidler the Ringmaster
          • (Unit-type of (Dying unit)) Not equal to Death Prisoner
          • (Unit-type of (Dying unit)) Not equal to Engineer Pipe Jack
          • (Unit-type of (Dying unit)) Not equal to Death Engine 301 (First Part)
          • (Unit-type of (Dying unit)) Not equal to Death Engine 301 (Second Part)
        • Then - Actions
          • Set kills[(Player number of (Owner of (Killing unit)))] = (kills[(Player number of (Owner of (Killing unit)))] + 1)
          • Set tempint = ((Player number of (Owner of (Killing unit))) + 3)
          • Set killsoverall = (kills[6] + (kills[7] + (kills[8] + (kills[9] + kills[10]))))
          • Multiboard - Set the text for dungeonboard item in column 2, row tempint to (String(kills[(Player number of (Owner of (Killing unit)))]))
          • Multiboard - Set the text for dungeonboard item in column 2, row 14 to (String(killsoverall))
        • Else - Actions
      • Multiboard - Set the text for dungeonboard item in column 4, row tempint to (String((bosskills[(Player number of (Owner of (Killing unit)))] + kills[(Player number of (Owner of (Killing unit)))])))
      • Multiboard - Set the text for dungeonboard item in column 4, row 14 to (String((bosskillsoverall + killsoverall)))
u should optimize all ur triggers. change what i suggested and what anyone else suggests. then see if the problem persists. if it does repost ur new map and ill see if i can find anything else. also i did not look through ur whole map as i was seeing the same mistakes. i think if u delete all of the presetting locations tho and only set them right b4 u use them tht it will help u out a lot and hopefully fix ur problem. also note tht u should only need 1 location variable. not all the ones u have. removing all of them will reduce ur number of variables by a lot. i believe it is simply tht ur map is to big. too many triggers i disabled a couple of the triggers and every time i saved it i got parser stack overflow error on the same line. so i think u just have to many triggers
 
Last edited:
Level 8
Joined
Jul 18, 2010
Messages
332
Someone told me in this thread that this isn't about the number of triggers. But i agree with you that my map is indeed really big and that i need to simplify things more.

No, i need to preset the locations cause they'll be used all throughout the game so i'm not gonna change that part.

I'm gonna try to lessen the size of my map and see what happens. Thanks again
 
Level 21
Joined
Mar 27, 2012
Messages
3,232
I think that would cause leaks. I only set them once and then use it whenever i need to.
Usually this isn't a problem, as the leaked amount is negligible.
It causes a leak when u use it more than once and it takes up unnecessary memory when u have them set for so long
This becomes a problem when you have hundreds of such variables.

You can both make a little test to find out exactly how great the problem is.

Make a trigger than runs 10 times every 10 seconds.
Each time it does this
Unit group - pick every unit in Units in playable map area
then don't write anything in it.
After the group loop set an integer variable to increase by 1(set temp int = tempint + 1)
Display the integer as a message.

This way you leak 1 group per second and display the amount of leaks.

Why so long period? Because then you can observe the lag caused by leaks without trigger actions causing it all the time.
 
Quote:
Originally Posted by deathismyfriend
It causes a leak when u use it more than once and it takes up unnecessary memory when u have them set for so long
This becomes a problem when you have hundreds of such variables.

i know tht i just thought since it was such a big map tht keeps hitting op limit every little bit helps.
 
It causes a leak when u use it more than once and it takes up unnecessary memory when u have them set for so long
This is bullshit. Please don't spread this.

A leak is caused when you create an object variable that is never used again without destroying it afterwards. It doesn't matter how long an object variable exists or how often it is used, as long as you can still access and use it again.

Since a lot of people seem to post here that spread dangerous semi-knowledge, here's the facts:

- the OP limit can only be reached inside one single thread. Some GUI functions open up seperate threads (group/force enumerations, waits, conditional waits - and all triggers will run on a different thread!), so that the amount of operations per trigger can be much larger
- the OP limit has nothing to do with the size of your map or the amount of variables and triggers; only object arrays with an initial value might hit the OP limit at variable declaration - but its very unlikely. Removing random stuff in your map just because you think your map is too big won't change anything
- Some functions take up more operation time as others, causing the OP-limit to be reached faster. Variable setters for example are fast as hell whereas you are much likely to hit the OP limit when creating THOUSANDS of units (quite literally, you won't hit the OP limit with just a couple of hundrets - however, that doesn't mean the trigger will not lag when creating so many units ;) )
- When the OP-limit is reached, it doesn't mean that the whole trigger doesn't execute - it does execute up to the point the OP-limit is reached and then simply stops, which means that everything up to this point should still be happening in your map
- Leaks are a totally different thing and have no impact on reaching the OP limit or causing triggers to not execute at all - while leaks can have an impact on decreasing performance of your map, they will never crash/terminate or stop threads
- If you are unsure about leaks, read tutorials about them to avoid them whenever possible


I'm still pretty sure that your problem is NOT the op limit. Again: it doesn't matter how many variables or triggers you have in your map. Only the number of functions inside one trigger execution matters.

If you still think its the OP-limit, put in test messages in all your longer triggers. If you can't read all the messages after the map starts, you know the culprit and can post the specific trigger in this thread so that we can debug it or validate its indeed the OP-limit (which I still doubt it is).
 
Level 8
Joined
Jul 18, 2010
Messages
332
I've already asked this before and they say it's the op limit and they said that I should decrease the number of my variables that has arrays. Arrays were the first answers that I got. I had variables with arrays of 8192 and when I shrinked them down to 1, my map got fixed. But when I add again some few variables, the problem persists so I deleted some variables again. Right now I have 123 variables with arrays all with 1 array size.

The problem that I have right now is that my map init doesn't work and people have said it's because of the op limit. Here's something that I quoted from thehelper.net, we have the same problem.

"Hi, this is going to be a long one, i appreciate it if you get through it

I´ve seen this thread a couple of times but none of them had an answer to why this is happening. One said maybe too many triggers, but that can´t be the case, since it keeps happening still after deleting back to the amount of triggers that the map had when it last worked. Then i´ve seen the ones that say you can´t have certain stuff in Map ini triggers, and i have none of that stuff.

This map has been in the making on & off for about 6 years now, and this is the 2nd time it´s happening. Last week, and now. Last week it only disabled some of the map ini triggers, and i got it to work again by putting the actions from the others to the ones that worked. But this time, none of them worked anymore. So now i had to check all of them, and put Time elapsed events in them.

All sort of strange things also happened during all this, like items appearing to units to sell, even though those items were definitely not added to Items sold list for that unit. Then wrong items executed actions in triggers (Unit acquires an item event). So, now i´ve lost a lot of confidence in the editor and things working correctly, and i feel like i should test everything now. Does anyone have a clue what´s going on here?

Thanks in advance for any replies."


And then someone answered

"I have a clue. Tell me all about your arrays and their sizes. What happened to me was that my arrays got too big, when I made them all smaller, everything worked. Editor's got limits man. BTW, what's your map about?"

I've did these solution already but I think it's not enough.
 
Level 14
Joined
Jun 27, 2008
Messages
1,325
If you really think the problem is the amount of array initializations you could check the generated war3map.j in the map mpq (it contains your triggers + the code that inits arrays and creates starting units etc.).

However, as i stated before i agree with zwiebel that your arrays aint the problem.
 
Level 8
Joined
Jul 18, 2010
Messages
332
I've mentioned many times before that my variable count is 2660 and the variables that have arrays are 123 all with sizes of 1. And when I save my map the object variables that are being saved(not sure what these are) are 3009(around that number). Don't you think that's too many? I think that the thread that's causing the op limit is the map initialization because map init is not just the actions that you put on the trigger but it also includes all the variables, and all the other things that you've put on the map and I have the feeling that mine has surpassed the op limit.


If not, I'll just try to keep on solving my problem and listen to your suggestions for now. How do you do what you just said muzzel, how can I open the war3map.j? I only look at the object manager cause it has all the info i need about the amount of variables that i have.
 
Status
Not open for further replies.
Top