• Check out the results of the Techtree Contest #19!
  • 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.
  • Create a void inspired texture for Warcraft 3 and enter Hive's 34th Texturing Contest: Void! Click here to enter!
  • The Hive's 22nd Icon Contest: Creep Abilities is now concluded, time to vote for your favourite set of icons! Click here to vote!

Ground unit spawn crash problem

Level 27
Joined
Dec 3, 2018
Messages
906
In the 3rd part. when summoning the rabble(or any other ground unit) it crashes the game. spawning an air unit doesn't. why would this happen?? pls help


Miniquake is the farseer earthquake with a smaller radious
Dirtfall is blizzard reskinned


  • Earthquake attacks
    • Events
      • Time - Every 30.00 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in (Units in (Playable map area) matching (((Unit-type of (Matching unit)) Equal to Summoner (True)) and (((Matching unit) is alive) Equal to True))) and do (Actions)
        • Loop - Actions
          • Unit - Set mana of (Picked unit) to ((Mana of (Picked unit)) - 40.00)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Mana of (Picked unit)) Equal to 0.00
            • Then - Actions
              • Unit - Kill (Picked unit)
            • Else - Actions
          • Wait 0.00 seconds
          • Unit - Create 1 Dummy Empty for (Owner of (Picked unit)) at (Center of (Playable map area)) facing Default building facing degrees
          • Set VariableSet TempUnit = (Last created unit)
          • Unit - Add Dirt Fall (Eye of Sargeras) to TempUnit
          • Unit - Add a 10.00 second Generic expiration timer to TempUnit
          • Unit Group - Pick every unit in (Random 1 units from (Units in (Playable map area) matching ((((Owner of TempUnit) is an ally of (Owner of (Matching unit)).) Equal to False) and (((Level of Out of Combat for (Matching unit)) Equal to 0) and ((((Matching unit) is alive) Equal to True) and ( and do (Actions)
            • Loop - Actions
              • Unit - Move TempUnit instantly to (Position of (Picked unit))
              • Unit - Order TempUnit to Human Archmage - Blizzard (Position of (Picked unit))
      • Unit Group - Pick every unit in (Units in (Playable map area) matching (((Unit-type of (Matching unit)) Equal to Summoner (True)) and (((Matching unit) is alive) Equal to True))) and do (Actions)
        • Loop - Actions
          • Unit - Create 1 Dummy Empty for (Owner of (Picked unit)) at (Center of (Playable map area)) facing Default building facing degrees
          • Set VariableSet TempUnit = (Last created unit)
          • Unit - Add Miniquake (Eye of Sargeras) to TempUnit
          • Unit - Add a 10.00 second Generic expiration timer to TempUnit
          • Wait 0.00 seconds
          • Unit Group - Pick every unit in (Random 1 units from (Units in (Playable map area) matching ((((Owner of TempUnit) is an ally of (Owner of (Matching unit)).) Equal to False) and (((Level of Out of Combat for (Matching unit)) Equal to 0) and ((((Matching unit) is alive) Equal to True) and ( and do (Actions)
            • Loop - Actions
              • Unit - Move TempUnit instantly to (Position of (Picked unit))
              • Unit - Order TempUnit to Orc Far Seer - Earthquake (Position of (Picked unit))
      • Unit Group - Pick every unit in (Units in (Playable map area) matching (((Unit-type of (Matching unit)) Equal to Summoner (True)) and (((Matching unit) is alive) Equal to True))) and do (Actions)
        • Loop - Actions
          • Set VariableSet TempUnit = (Picked unit)
          • Unit Group - Pick every unit in (Random 1 units from (Units in (Playable map area) matching ((((Owner of TempUnit) is an ally of (Owner of (Matching unit)).) Equal to False) and (((Level of Out of Combat for (Matching unit)) Equal to 0) and ((((Matching unit) is alive) Equal to True) and ( and do (Actions)
            • Loop - Actions
              • Unit - Create 1 Dragonhawk Rider (Defensive) for (Owner of TempUnit) at (Position of (Picked unit)) facing Default building facing degrees
              • Unit - Create 1 Rabble for (Owner of TempUnit) at (Position of (Picked unit)) facing Default building facing degrees
              • Set VariableSet TempUnit = (Last created unit)
              • Unit - Order TempUnit to Human Dragonhawk Rider - Aerial Shackles (Picked unit)
          • Wait 0.00 seconds
 
Does the trigger crash the game (game shuts down and shows you a small window with error) or desync (you are forced to score screen)?
If it is desync, then the most likely candidate is the terrain deformation from earthquake.
If it is crash, try only creating dummies without forcing them to cast anything, see if it helps. If not, try to remove any custom model shown at the time, etc.

Ignoring the memory you leak all over the place
  • I don't understand why you are picking the same unit group of summoners 3 times in row.
  • Waits do not work inside Unit group actions
  • To pick random unit from unit group use the 'Random unit from Unit group' function when assigning value to a unit variable. Currently your inner "Unit Group - Pick every..." actions create two groups: one for units matching conditions, and second group which contains random 1 unit.
  • Set VariableSet TargetGroup = (Units in (Playable map area) matching some_conditions)
  • Set VariableSet TargetUnit = (Random unit from TargetGroup)
 
Back
Top