The Impossible Bugs - You can't fix them

DarkRevenant

Mad Scientist
Reaction score
13
Download the impossible map here

The bugs:
Medium: With no triggers being used or functions being called, later in the game the camera will slowly but inexorably rotate, become more vertical, and zoom in, for no reason at all. Bad computers will notice a much faster zoom-in. One guy I know had a truly awful computer that spontaneously sent the camera smashing straight into the ground.

Very Hard: "Custom Script: call <ANY USER DEFINED FUNCTION>" has a massive problem in GUI and JASS in this map. For some reason, in large triggers, if-then statements are RANDOMLY IGNORED for these functions. I mean this literally. The game will run the trigger, and (a random) one of the lines that calls an user-defined function will fire, EVEN IF IT IS UNDER 5 IF-THEN STATEMENTS WITH IMPOSSIBLE-TO-FULFILL CONDITIONS. The other functions (so long as they are not "call <USERDEFINEDFUNCTION>") work as intended. I even did a test by putting a bunch of those functions under an impossible if-then, by making the condition "if 0 > 1", and it still managed to run after the 20th or so test.

If you can manage to explain why this happens, or at least fix the problem without deleting the triggers altogether, you will get massive rep and bragging rights of being INHUMAN.

I would probably give an actual prize to whomever can fix the Very Hard one.
 

Azlier

Old World Ghost
Reaction score
461
It sounds like your GUI is... decaying? Crumbling? GUI is known to not like really long triggers, anyway.
 

Lightstalker

New Member
Reaction score
55
Download the impossible map here

The bugs:
Medium: With no triggers being used or functions being called, later in the game the camera will slowly but inexorably rotate, become more vertical, and zoom in, for no reason at all. Bad computers will notice a much faster zoom-in. One guy I know had a truly awful computer that spontaneously sent the camera smashing straight into the ground.

Maybe you have a "Pan camera action" in one of your triggers? Try disabling ALL triggers and see if it still happens. If it still does, you might have placed a camera on the map. Go to Window > New Pallete > Camera and delete all cameras.

Very Hard: "Custom Script: call <ANY USER DEFINED FUNCTION>" has a massive problem in GUI and JASS in this map. For some reason, in large triggers, if-then statements are RANDOMLY IGNORED for these functions. I mean this literally. The game will run the trigger, and (a random) one of the lines that calls an user-defined function will fire, EVEN IF IT IS UNDER 5 IF-THEN STATEMENTS WITH IMPOSSIBLE-TO-FULFILL CONDITIONS. The other functions (so long as they are not "call <USERDEFINEDFUNCTION>") work as intended. I even did a test by putting a bunch of those functions under an impossible if-then, by making the condition "if 0 > 1", and it still managed to run after the 20th or so test.

If you can manage to explain why this happens, or at least fix the problem without deleting the triggers altogether, you will get massive rep and bragging rights of being INHUMAN.

Maybe you disabled the if/then/else? Right-click and enable the function. Or maybe you don't have the actions located correctly inside the if/then/elses...
 

DarkRevenant

Mad Scientist
Reaction score
13
@Azlier: No camera functions are being called when it does that. None. At all. But the bug obviously goes away if I delete everything related to cameras in the entire map, but that's not exactly a long term option. I've seen this bug before and it's exceedingly rare.

@Lightstalker: Hahahahaha. If it were something as stupid as that common mistake, I wouldn't need anyone else's help to fix it after two solid weeks of troubleshooting. I would normally post the code, but even one of the triggers in question is approximately 122,000 characters too many to fit into a single post.
 

Azlier

Old World Ghost
Reaction score
461
I downloaded the map before you even posted here, you posted over at WC3C, I believe. :p And those triggers are hideously long, which GUI does not like.

The one I have is unprotected. Go me!
 

Strilanc

Veteran Scripter
Reaction score
42
Ok, you have way too many triggers to just ask for generic help. You need to specify exactly which triggers are causing problems and exactly how to reproduce.

I really suggest saving a copy of the map, and disabling triggers until you have the minimum set required to reproduce the bug. I use this basic technique all the time, and it works. Not only will you make it easier for people to help you, you'll probably end up solving the problem yourself.

As a sidenote, you're triggers repeat themselves. A lot. A LOT. That is an easy way to introduce bugs due to wanting to modify all of them, but forgetting one. Jass is a lot better at extracting that redundancy (eg. with functions), but you can sortof do it in GUI as well.
 

DarkRevenant

Mad Scientist
Reaction score
13
I've already said that the trigger(s) simply ignore If-Then statements. I just want to know WHY. Specifically look at the ordertimer set.
 

Dameon

"All the power in the world resides in the eyes"
Reaction score
127
A trigger can only do so many actions before the engine kills it, this also apllies to jass, give me some time to look over the map.
 

Strilanc

Veteran Scripter
Reaction score
42
I've already said that the trigger simply ignores If-Then statements. I just want to know WHY.

There are dozens of triggers. WHICH trigger EXACTLY? WHICH if-statement EXACTLY?

Don't make it hard for people to help you, or they just won't do it.
 

Dameon

"All the power in the world resides in the eyes"
Reaction score
127
wow I just looked over some of his triggers, 1 question, why are you useing a custom script loop action when gui has it's own loop function?
 

DarkRevenant

Mad Scientist
Reaction score
13
There are dozens of triggers. WHICH trigger EXACTLY? WHICH if-statement EXACTLY?

Don't make it hard for people to help you, or they just won't do it.

ALL of the If-statements are ignored (by a seemingly random chance, like about 1/3 for each if-then) for a specific function: "call WHATEVERUSERDEFINEDFUNCTION"

@Dameon: JASS loops are more controllable and are true loops, unlike the cumbersome Integer-A's.
 

Strilanc

Veteran Scripter
Reaction score
42
ALL of the If-statements are ignored for a specific function: "call WHATEVERUSERDEFINEDFUNCTION"

@Dameon: JASS loops are more controllable and are true loops, unlike the cumbersome Integer-A's.

They're all broken? Great! That'll make it really easy to give a specific example of something broken.
 

Dameon

"All the power in the world resides in the eyes"
Reaction score
127
the gui will work fine for all the triggers you are running, if you need to end the loop just place a skip remaining actions in the if then else actions.

Your triggers are also very messy, you are doing things you dont need to and you are useing to many actions in your tiggers.

Edit, as for the camera, can you tell us when it starts, what your doing when it starts and where your camera is on the map when it starts.
 

Azylaminaz

Vox Populi
Reaction score
91
Trigger:
  • Time - Every 0.01 seconds of game time
    • Camera - Apply RockyForest &lt;gen&gt; for (Player((Integer A))) over 0.02 seconds
Believe it or not, that function would never actually finish... It will just get half way a trillion times. This might not be the specific one doing it (though you have many VERY quick periodic events), but this is probably what is causing your camera issue.

Edit: That actually wouldn't cause it.. eh. -.- But you should fix it anyways... it should be causing problems.


As for your other issue, does it always finish? If not...
AceHeart said:
> it aborts the trigger at a randomish number

It's pretty much exactly at 300000 micro-ops.

Now, a function call takes 2, a "set" takes 2, something like i + 1 takes 4...
For GUI, the guess is somewhere near 12000+ operations.

> excluding waits

With waits, they can, indeed, run much longer. Nearly forever that is.
Also note that a random trigger I checked (from above) is almost 1400 lines - that is, operations. If looped nine times (the entire thing), it will easily exceed this limit...
I ran a test with some dummy trigger and it couldn't pass "0 <> 0"... It might because of your length.


Note that a trigger can only loop every 0.016 seconds, not 0.01 seconds... Even then, it would be smarter to go around 0.05.. Considering that is still more than half as much things needing to be processed...

Also, you should set all your variable constants under a map initialize function (see your stats triggers). Map Initialization means it runs under the loading screen, IE, players don't lag right when the game starts.

Simply enough - try to not do so much at once (even if you break the triggers up, running that much stuff so frequently will cause problems)...
 

FelSheep

New Member
Reaction score
0
Speaking of the map itself, is the map has a latest and less buggy version and if it says yes, where is the download location?
 

DarkRevenant

Mad Scientist
Reaction score
13
The periodic still must be ~0.01 seconds for a specific reason. I've broken up some functions to a slower periodic within that trigger (if a flip-flopping integer equals 1, then run it, if 0 don't run). Setting the camera to apply in 0 seconds might fix it.

However, there is no other way to break up those ordertimer triggers, aside from truncating the GUI at a certain point and just calling a separate trigger.

Even then, the trigger is not aborted. In fact, the problem will happen even if the whole trigger just cuts off early, somewhere like 60 or 70 micro-ops. It may have to do with sheer size. The question now is: Does running a separate trigger break the thread? If so, would I have to redeclare all the temporary variables to avoid them being overwritten by the original trigger's loop? GUI is so damn confusing sometimes.


I'm one of the few people who can actually make massive systems using ridiculously huge triggers. It seems, even after many years of wc3 modding, very few have any idea on what's going on with this.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top