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

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
 
Level 8
Joined
Jul 17, 2004
Messages
283
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.
 
Level 8
Joined
Jul 17, 2004
Messages
283
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.
Top