• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

[Crash] Random Fatal error

Status
Not open for further replies.
Level 3
Joined
Mar 21, 2010
Messages
34
Hey there folks,

looks like i need your help once again. I tried my best with google but i cannot find the mistakes in the code or what is giving me trouble...

Basically the map randomly crashes at some point. I so far could not figure out why. it also appears that sometimes when picking the initial hero other people in the game lose connection...:vw_wtf:

https://i.imgur.com/y37f3bM.jpg

View attachment Back in Farlass V1.04.w3x

View attachment 2016-02-05 20.29.43 Crash.txt
View attachment 2016-02-06 02.22.40 Crash.txt
View attachment 2016-02-06 02.46.23 Crash.txt

The map isnt nearly finished but if you solve the mistery haunting me, enjoy.

have a good night! zZz
 
Last edited:
First let me say that is great documentation. Now for the bad news. If you googled it, you know just as much as I do. I had a similar problem once though and someone solved it for me. Are you getting any warnings when you save (yellow text across the bottom of the screen)? It may be possible that there is something referencing a currupted model, missing ability or some file or data that is no longer in existence. For example "Unknown Ability." Also, if triggers reference such an ability or file this may happen. Maybe someone nicer than me will download the map and look closer to find the actual thing, but those are my best guesses.
 
Level 3
Joined
Mar 21, 2010
Messages
34
although there are some triggers id say they are fairly tidy. same with the abilities. most of the time when using an ability i created a new one from the original one (LOTS of tooltips missing here but whatever) other than that i had issues with a skirmisher model. it still is in the import manager but finds no use in the game.

I rly dont know what to say. someone ask me a question please and i will answer to my best knowledge.

-no troubles with saving afaicansay
-no other issues that appeared.
-melee ai is at this point intentionally left in as it give quite a nice fight. if someone can properly configure a custom ai i would happily take that as well though. (i didnt get as far with the tutorials...(stupido me))

"testmode" can be activated by typing "blargblarg" as player 1
 
Level 3
Joined
Mar 21, 2010
Messages
34
UPDATE:

im quite sure it either has something to do with the map borders or the water or both. been playing around alittle and i kept crashing when i looked near the edge of the map where there is water (and/or) creeps. maybe the creeps being to close to the edge crashes the game ?

either way i changed the borders a little. no idea wether thats it, im going to try after i got some sleep. :vw_sleep:
 
Level 3
Joined
Mar 21, 2010
Messages
34
still not exactly sure. ran it for a whiile today without breaking down but not enough to be certain ~2 hours. due to lack of time next update would proberbly be on monday or tuesday... o/
 
Level 20
Joined
Jul 10, 2009
Messages
477
I took a short look at your map and couldn't yet find an obvious reason for your fatal error.

But I would like to give you some general mapping advice, because you did some things that lead to problems ;) These things can cause serious laggs and/or bugs, and might be a reason for your issues.

  • You don't use variables at all, and same for For-Loops. That's an indicator for me that you recently started programming and have not gotten much experience yet. This is ok of course, we all began learning this from scratch :) You could probably seek for some beginner tutorials and read them thoroughly. I'm sure that you can learn much by doing so!
  • You use waits inside of "Pick all units in unitgroup and do" actions, like this:
    • Your trigger
      • Unitgroup - Pick every unit in (Units in Undead Plague Spawn <gen> owned by Player 12 (Brown)) and do (Actions)
        • Loop - Actions
          • Unit - Order (Picked unit) to Attack/Move at (Random point in Undead Plague A01 <gen>)
          • Wait 120.00 seconds
          • Unit - Order (Picked unit) to Attack/Move at (Random point in Undead Plague A02 <gen>)
          • Wait 300.00 seconds
          • Unit - Kill (Picked unit)
    This trigger can't work as intended. Such a unitgroup loop picks unit per unit and tries to complete all actions before going on to the next. Your trigger would probably send one unit, and a second unit 420 seconds later. To prevent that, you could save the unitgroup in a local variable and put the waits outside of the pick loop. The result may look like this:
    • Custom script: local group udg_TempUnitgroup
    • Set TempUnitgroup = (Units in Undead Plague Spawn <gen> owned by Player 12 (Brown))
    • Unitgroup - Pick every unit in TempUnitgroup and do (Actions)
      • Loop - Actions
        • Unit- Order (Picked unit) to Attack/Move at (Random point in Undead Plague A01 <gen>)
    • Wait 120.00 seconds
    • Unitgroup - Pick every unit in TempUnitgroup and do (Actions)
      • Loop - Actions
        • Unit - Order (Picked unit) to Attack/Move at (Random point in Undead Plague A02 <gen>)
    • Wait 300.00 seconds
    • Unitgroup - Pick every unit in TempUnitgroup and do (Actions)
      • Loop - Actions
        • Unit - Kill (Picked unit)
    Note that this still contains memory leaks which have to be removed. Local variables in GUI require advanced knowledge. I strongly advice you to respect point 1 of this list at first, because you will only get confused otherwise.
  • You produce tons of memory leaks. Mainly unit groups and locations. This will produce lagg that grows the longer you play your map. According to this list, a huge amount of memory leaks can also crash your game. You should take a look at a Memory Leak Tutorial and remove them from your map. This is an advanced thing, but really needed in the case of your map.

Best regards!

Edit: I decided to give you an example how variables and For-loops can be used to save a lot of time, and produce efficient code.
You currently have the option to ally a player by typing "-ally playercolor" in the chat. For each of the 8 players, you made one trigger of the form
  • ally blue
    • Events
      • Player - Player 1 (Red) types a chat message containing -ally blue as an exact match
    • Conditions
    • Actions
      • Player - Make Player 1 (Red) treat Player 2 (Blue) as an ally with shared vision
for each other player, adding up to a total of 56 triggers for the allying subject alone. By setting up a variable during the loading time of the map, you can reduce that to one single trigger.
You need a string variable with array size 9 (here called PlayerColors) and an integer variable (here TempInt).
The loading trigger could be:
  • Map Init
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Set TempInt = 1
      • Set PlayerColors[TempInt] = red
      • Set TempInt = (TempInt + 1)
      • Set PlayerColors[TempInt] = blue
      • Set TempInt = (TempInt + 1)
      • Set PlayerColors[TempInt] = teal
      • Set TempInt = (TempInt + 1)
      • Set PlayerColors[TempInt] = purple
      • Set TempInt = (TempInt + 1)
      • Set PlayerColors[TempInt] = yellow
      • Set TempInt = (TempInt + 1)
      • Set PlayerColors[TempInt] = orange
      • Set TempInt = (TempInt + 1)
      • Set PlayerColors[TempInt] = green
      • Set TempInt = (TempInt + 1)
      • Set PlayerColors[TempInt] = pink
and the ally trigger could look like this:
  • ally player
    • Events
      • Player - Player 1 (Red) types a chat message containing -ally as a sub-string
      • Player - Player 2 (Blue) types a chat message containing -ally as a sub-string
      • Player - Player 3 (Teal) types a chat message containing -ally as a sub-string
      • Player - Player 4 (Purple) types a chat message containing -ally as a sub-string
      • Player - Player 5 (Yellow) types a chat message containing -ally as a sub-string
      • Player - Player 6 (Orange) types a chat message containing -ally as a sub-string
      • Player - Player 7 (Green) types a chat message containing -ally as a sub-string
      • Player - Player 8 (Pink) types a chat message containing -ally as a sub-string
    • Conditions
    • Actions
      • For each (Integer A) from 1 to 8, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • 'IF'-Conditions
              • (Substring((Entered chat string), 7, (Length of (Entered chat string)))) Equal to PlayerColors[(Integer A)]
            • 'THEN'-Actions
              • Player - Make (Triggering player) treat (Player((Integer A))) as an ally with shared vision
            • 'ELSE'-Actions
This method would save you 55 triggers and a tremendous amount of work. :)
 
Last edited:
Level 3
Joined
Mar 21, 2010
Messages
34
argh very sorry, i typed a post yesterday, got distracted and forgot about the tab.

Thanks alot for that long post Eikonium, i will see what i can change and then test... maybe tonight, maybe sometime else... i got some rocks to grind in "EVE Online", for my first supercarrier.

I didnt exactly just start with triggers, more like i never got very far as this is basically my 2nd project.

Much thanks,

Barrni
 
Level 3
Joined
Mar 21, 2010
Messages
34
so the part about the unit groupd i kinda grasped but (sorry at this point) it became kinda irrelevant.
When testing i realised i accidentially left the melee ai in place. At this point i want to keep it as it provides good fun. the system fights back eventually. makes the game a bit more unpredictable.

for the ally system, its definetly interesting but i first have to understand it...

thanks alot again :)
 
Status
Not open for further replies.
Top