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

Need help cleaning leaks

Status
Not open for further replies.
Level 8
Joined
Jul 17, 2004
Messages
283
Here are my triggers. What is leaking and how do I fix them?

  • Dash Knockback
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Dash
    • Actions
      • Set maxIndexDash = (maxIndexDash + 1)
      • Set casterUnitsIndexDash[maxIndexDash] = (Triggering unit)
      • Set targetUnitsIndexDash[maxIndexDash] = (Target unit of ability being cast)
      • Set locationUnitsIndexDash[maxIndexDash] = (Position of casterUnitsIndexDash[maxIndexDash])
      • Set timeLeftDash[maxIndexDash] = 9
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • maxIndexDash Equal to 1
        • Then - Actions
          • Trigger - Turn on Dash Push <gen>
        • Else - Actions
  • Dash Push (Initially Off)
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • For each (Integer tempInt) from 1 to maxIndexDash, do (Actions)
        • Loop - Actions
          • Unit - Move targetUnitsIndexDash[tempInt] instantly to ((Position of targetUnitsIndexDash[tempInt]) offset by 8.00 towards (Facing of casterUnitsIndexDash[tempInt]) degrees)
          • Set timeLeftDash[tempInt] = (timeLeftDash[tempInt] - 1)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • timeLeftDash[tempInt] Equal to 0
            • Then - Actions
              • Set casterUnitsIndexDash[tempInt] = casterUnitsIndexDash[maxIndexDash]
              • Set casterUnitsIndexDash[tempInt] = No unit
              • Set targetUnitsIndexDash[tempInt] = targetUnitsIndexDash[maxIndexDash]
              • Set targetUnitsIndexDash[maxIndexDash] = No unit
              • Set timeLeftDash[tempInt] = timeLeftDash[maxIndexDash]
              • Set timeLeftDash[maxIndexDash] = 0
              • Set maxIndexDash = (maxIndexDash - 1)
              • Set tempInt = (tempInt - 1)
            • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • maxIndexDash Equal to 0
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions
 
So is this how it should look?

  • Dash Knockback
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Dash
    • Actions
      • Set maxIndexDash = (maxIndexDash + 1)
      • Set casterUnitsIndexDash[maxIndexDash] = (Triggering unit)
      • Set targetUnitsIndexDash[maxIndexDash] = (Target unit of ability being cast)
      • Set tempLocation[maxIndexDash] = ((Position of targetUnitsIndexDash[maxIndexDash]) offset by 8.00 towards (Facing of casterUnitsIndexDash[maxIndexDash]) degrees)
      • Set timeLeftDash[maxIndexDash] = 9
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • maxIndexDash Equal to 1
        • Then - Actions
          • Trigger - Turn on Dash Push <gen>
        • Else - Actions
  • Dash Push
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • For each (Integer tempInt) from 1 to maxIndexDash, do (Actions)
        • Loop - Actions
          • Unit - Move targetUnitsIndexDash[tempInt] instantly to tempLocation[tempInt]
          • Custom script: call RemoveLocation( udg_tempLocation[tempInt])
          • Set timeLeftDash[tempInt] = (timeLeftDash[tempInt] - 1)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • timeLeftDash[tempInt] Equal to 0
            • Then - Actions
              • Set casterUnitsIndexDash[tempInt] = casterUnitsIndexDash[maxIndexDash]
              • Set casterUnitsIndexDash[tempInt] = No unit
              • Set targetUnitsIndexDash[tempInt] = targetUnitsIndexDash[maxIndexDash]
              • Set targetUnitsIndexDash[maxIndexDash] = No unit
              • Set timeLeftDash[tempInt] = timeLeftDash[maxIndexDash]
              • Set timeLeftDash[maxIndexDash] = 0
              • Set maxIndexDash = (maxIndexDash - 1)
              • Set tempInt = (tempInt - 1)
            • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • maxIndexDash Equal to 0
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions
 
this leaks still.
  • (Position of targetUnitsIndexDash[maxIndexDash])
also this wont work all it will do is move the unit to the same spot everytime.

You need tempPoint1 and tempPoint2
tempPoint1 = position of the unit.
tempPoint2 = offset
then move unit then remove the locations with custom script to clean the leaks.

this must all be done in your loop trigger not in your cast trigger.
 
Should it be like this?

  • Dash Push
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • For each (Integer tempInt) from 1 to maxIndexDash, do (Actions)
        • Loop - Actions
          • Set TempPoint = (Position of targetUnitsIndexDash[tempInt])
          • Set TempPoint2 = (TempPoint offset by 8.00 towards (Facing of casterUnitsIndexDash[tempInt]) degrees)
          • Unit - Move targetUnitsIndexDash[tempInt] instantly to TempPoint2
          • Custom script: call RemoveLocation( udg_TempPoint)
          • Custom script: call RemoveLocation( udg_TempPoint2)
          • Set timeLeftDash[tempInt] = (timeLeftDash[tempInt] - 1)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • timeLeftDash[tempInt] Equal to 0
            • Then - Actions
              • Set casterUnitsIndexDash[tempInt] = casterUnitsIndexDash[maxIndexDash]
              • Set casterUnitsIndexDash[maxIndexDash] = No unit
              • Set targetUnitsIndexDash[tempInt] = targetUnitsIndexDash[maxIndexDash]
              • Set targetUnitsIndexDash[maxIndexDash] = No unit
              • Set timeLeftDash[tempInt] = timeLeftDash[maxIndexDash]
              • Set timeLeftDash[maxIndexDash] = 0
              • Set maxIndexDash = (maxIndexDash - 1)
              • Set tempInt = (tempInt - 1)
            • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • maxIndexDash Equal to 0
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions
 
Status
Not open for further replies.
Back
Top