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

Can anyone find the leak/lag?

Status
Not open for further replies.
Level 9
Joined
Dec 6, 2007
Messages
233
This has been haunting me for a while: these triggers lag horrendously with more than 2 units fighting!

  • apply
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • Set Sheilds_Ready = (Units in (Playable map area) matching (((Custom value of (Matching unit)) Equal to 0) and ((Mana of (Matching unit)) Greater than or equal to 50.00)))
      • Unit Group - Pick every unit in Sheilds_Ready and do (Actions)
        • Loop - Actions
          • Unit - Set the custom value of (Picked unit) to 1
          • Unit Group - Add (Picked unit) to Sheild_Protectees
      • Custom script: call DestroyGroup(udg_Sheilds_Ready)
  • function
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in Sheild_Protectees and do (Actions)
        • Loop - Actions
          • Set Sheild_Violatee = (Picked unit)
          • Set Sheild_Violatee_Loc = (Position of Sheild_Violatee)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Unit-type of Sheild_Violatee) Equal to Frigate
            • Then - Actions
              • Set Sheild_Radius = 300.00
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Unit-type of Sheild_Violatee) Equal to Railgun Emplacement
                • Then - Actions
                  • Set Sheild_Radius = 150.00
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Unit-type of Sheild_Violatee) Equal to Carrier
                    • Then - Actions
                      • Set Sheild_Radius = 250.00
                    • Else - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (Unit-type of Sheild_Violatee) Equal to Cruiser
                        • Then - Actions
                          • Set Sheild_Radius = 500.00
                        • Else - Actions
          • Set Sheild_Violators = (Units within Sheild_Radius of Sheild_Violatee_Loc matching ((((Matching unit) is A sapper) Equal to True) and (((Matching unit) belongs to an enemy of (Owner of Sheild_Violatee)) Equal to True)))
          • Unit Group - Pick every unit in Sheild_Violators and do (Actions)
            • Loop - Actions
              • Set Sheild_Violator = (Picked unit)
              • Set Sheild_Violator_Loc = (Position of Sheild_Violator)
              • Set Sheild_Violatees = (Units within Sheild_Radius of Sheild_Violatee_Loc matching ((Custom value of (Matching unit)) Equal to 1))
              • Unit Group - Pick every unit in Sheild_Violatees and do (Actions)
                • Loop - Actions
                  • Unit - Set mana of Sheild_Violatee to ((Mana of Sheild_Violatee) - (Life of Sheild_Violator))
                  • Unit - Kill Sheild_Violator
              • Custom script: call RemoveLocation(udg_Sheild_Violator_Loc)
              • Custom script: call DestroyGroup(udg_Sheild_Violatees)
          • Custom script: call DestroyGroup(udg_Sheild_Violators)
          • Custom script: call RemoveLocation(udg_Sheild_Violatee_Loc)
  • effect
    • Events
      • Time - Every 1.00 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in Sheild_Protectees and do (Actions)
        • Loop - Actions
          • Special Effect - Create a special effect attached to the overhead of (Picked unit) using Abilities\Spells\Undead\ReplenishMana\ReplenishManaCasterOverhead.mdl
          • Special Effect - Destroy (Last created special effect)
  • remove
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • Set Sheilds_Dying = (Units in (Playable map area) matching (((Mana of (Matching unit)) Equal to 0.00) and ((Custom value of (Matching unit)) Equal to 1)))
      • Unit Group - Pick every unit in Sheilds_Dying and do (Actions)
        • Loop - Actions
          • Unit Group - Remove (Picked unit) from Sheild_Protectees
          • Unit - Set the custom value of (Picked unit) to 0
          • Special Effect - Create a special effect attached to the overhead of (Picked unit) using Abilities\Spells\NightElf\Blink\BlinkTarget.mdl
          • Special Effect - Destroy (Last created special effect)
      • Custom script: call DestroyGroup(udg_Sheilds_Dying)
can anyone help??
 
Level 9
Joined
Dec 6, 2007
Messages
233
hmm, combining the triggers fixed it. Thanks!

@Axarion: once a second is spam? nah

EDIT: Can't rep ya bribe, you helped me too recently
 
Level 9
Joined
Dec 6, 2007
Messages
233
Hey man, only way to make it work and mui at the same time. The projectiles move fast, reduce the time interval and they might skip straight through the shield.
 
Status
Not open for further replies.
Top