Staredit Network

Staredit Network -> UMS Assistance -> Quick question
Report, edit, etc...Posted by scwizard on 2005-04-19 at 14:15:07
Often in hyper triggered bounds the waits will suddenly stop working, or something of the sort. I'm a bit confused as to what specifically makes this happen. But I think the waits stop working when the NEO happens for the first time in a hyper triggered map.
What I was wondering is if at the very end of your map making, you made the following triggers (making it the very last trigger run).

Owner
-P7
Condition
-SwitchX is Set
Action
-Wait 1 ( a )
-Clear SwitchX
-Preserve

Owner
-P8
Condition
-Always
Actions
-Wait 1 ( b )
-Set SwitchX
-Wait 1 ( c )
-Preserve

This was lifted from Dabbu's conceptual hyper trigger tutorial.
So what I was wondering was why exactly the waits stop working (and the trigger actions just never happen) sometimes in hyper triggered maps. And if you had these two triggers at the bottom, would it fix the problem forever compleatly?
Report, edit, etc...Posted by SkiLLz on 2005-04-19 at 14:18:35
When I make a hyper, I just do this:

Player [1-8 or w/e]

Condition [ALWAYS]

Action
Wait 0 milleseconds
Wait 0 milleseconds
Wait 0 milleseconds
Wait 0 milleseconds
Wait 0 milleseconds
Wait 0 milleseconds
Wait 0 milleseconds
Wait 0 milleseconds
Preserve Trigga
Report, edit, etc...Posted by BLISSARD[VdD] on 2005-04-19 at 14:41:58
When you use a hyper trigger, its hard to explain about hyper trigger, but hyper trigers are good.
he purpose for hyper trigger is to make other triggers run more properly, but anyhow hyper triggers might mess up your map and other triggers, causes to work in wrong ways and messed up. There are many ways to use triggers, and hyper triggers are easy if you get used to it.

I do it like this combine with my music loops, and units 's hit points changing:
wait(100);
modifyunithitpoint(.....-->
above is the trigger you have to put, put like about 20 pairs of those, and when its very close to the 60th trigger put...
playwave(the music you want to play);
preservetrigger(); mellow.gif
Report, edit, etc...Posted by Heimdal on 2005-04-19 at 16:37:35
m.r.bob: I've never tried it, but those two triggers are supposed to fix the problem you're referring to.

Skillz, if you only have one trigger like that you will experience a pause for a second or so when the trigger finishes. You need 3 or 4 copies of that trigger to prevent that pause from happening before any reasonable amount of time has passed.
Report, edit, etc...Posted by Mini Moose 2707 on 2005-04-19 at 16:38:45
Blissard, you need a better translator. tongue.gif

Why do hyper triggers stop eventually? Check out Dabbu's tutorial, it should answer just about everything you need about hyper triggers. http://www.staredit.net/index.php?tutorial=128
Last note, if you're using the Switch method, put it first. I always put it first, so I can't really say much about other positions.
Report, edit, etc...Posted by chuiu on 2005-04-19 at 17:18:08
Using Dabbu's method is the best because it just keeps going. But with the normal 62 action copy pasted hyper trigger there is an end when all the 0's have run through and it pauses briefly.
Report, edit, etc...Posted by scwizard on 2005-04-19 at 19:10:47
QUOTE(Heimdal @ Apr 19 2005, 03:37 PM)
m.r.bob:  I've never tried it, but those two triggers are supposed to fix the problem you're referring to.

Skillz, if you only have one trigger like that you will experience a pause for a second or so when the trigger finishes.  You need 3 or 4 copies of that trigger to prevent that pause from happening before any reasonable amount of time has passed.
[right][snapback]191391[/snapback][/right]

Yes I know, Dabbu's a genuis.


As I said before with normal hyper triggers, why do triggers with waits stop firing? that question still hasn't been anwsered.
Doodle3000 has had the problem numerous times. If you look in "Hidden Lands RPG" (which was very badly put together) you will see that for one of his spawns he had to use a patroling unit becuase the waits stopped working late in the game. Doodle77 also had the problem with a bound he was recently making.
Why does that happen?
Report, edit, etc...Posted by Heimdal on 2005-04-19 at 21:39:08
Reading dabbu's conceptual hyper trigger tutorial will explain it all.

If you have 3 or 4 copies of the 63-action wait hyper trigger, the NEO (the thing that makes the waits pause) won't happen unless you're playing the game for days.
Report, edit, etc...Posted by in_a_biskit on 2005-04-20 at 09:26:55
The waits don't stop working, it's just that SC only naturally checks its trigger list once a game second.

Whenever it comes to a wait action, it goes ahead and checks all the other triggers a bit faster than it normally would. If you have lots of really short wait actions, this makes it check its triggers up to 12 times in a game second.

If you have enough of these short wait actions, then the triggers will be checked 12 times a second for a very long time. If there aren't enough short wait actions (e.g. if you only made 1 trigger with 62 wait actions in it), then after every wait action has run through, there is no longer anything forcing starcraft to check its trigger list faster than normal, so it reverts back to checking after 1 second. We call this apparent "slowdown" in the trigger-checking the Next Ending Occurence (NEO).

What Dabbu designed was a system where the triggers effectively trick SC into never finding the end of the trigger loop properly, so that the NEO would never occur.

Where the triggers are in their lists shouldn't make nearly as much difference as whether players 7 and 8 have other wait actions or not.
Report, edit, etc...Posted by scwizard on 2005-04-20 at 16:28:48
Umm, no. The waits did stop working. The triggers never fired. And the times that it took for this to happen were much smaller then the times Dabbu talked about (and yes I have read all of his tutorials). It has something to do with mixing up long waits and hyper tirggers. He said something about it in the tutorial but never elaborated.

QUOTE(Dabbu)
Putting more short waits in the very FIRST Trigger block (even a trigger not intended as a HT) changes things abit (examples later) but it has no true bad effect. Putting one long wait (OVER 84 ms) before the hyper triggers has a big effect and will ruin their purpose. This is why if you want to use hyper triggers you should look into other ways of delaying actions.

It says it has a big effect and will ruin there purpose, but he never says what that effect is, or why that effect is caused.
Report, edit, etc...Posted by (U)Bolt_Head on 2005-04-20 at 17:40:36
It sounds like your describing a wait block m.r.bob. His hyper triggers are probolly not at the end of the list.
Report, edit, etc...Posted by in_a_biskit on 2005-04-21 at 08:26:41
There's no such thing "to stop working" for a preserved trigger. A trigger which is preserved will continuously be checked whilst it is not running.
There is such thing, however, as a "wait block" or a delay of the actions (and therefore also the completion) of a trigger.

Dabbu was referring to the 'classic' hypertrigger system (3-4 triggers filled with wait 0's). When you put short wait actions (i.e. wait < 84ms) in a trigger, it kind of works like a hypertrigger, except that it might do other actions as well, and it might not always fire (depending on the conditions). So if a trigger with short wait actions comes before your hypertrigger block, chances are that you don't notice anything changed and the hypers should always work.

But if you have wait actions after your hypertriggers, then the actions after those wait actions won't fire for the whole game. This is because wait actions are given priority according to where their trigger is in the trigger list, and any wait action after a hypertrigger block effectively is delayed until every wait action before it has been cleared (which takes 5 hours with a 3-trigger block). That's why some people recommend that you put your hypertriggers at the end of your trigger list, and others tell you not to use non-hypertrigger wait actions at all.

Now if you have long (more than 84ms) wait actions in a trigger before your hypertriggers, then that wait action will have priority over the wait actions in the hypertriggers. That means, when that wait action fires, the hypertriggers' waits are delayed until the first wait action is done. So if the wait action is for 5 seconds, you'll find a period of 5 seconds where the map acts as if it had no hypertriggers. If you really need hypertriggers to be running throughout the entire duration of the game, this is the "big effect" described by Dabbu.
Next Page (1)