Servere Lag after a few casts of my skill.

Fujiwari

Active Member
Reaction score
0
Trigger:
  • Frigid Grasp
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Frigid Grasp
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Level of Frigid Grasp for (Casting unit)) Equal to 1
        • Then - Actions
          • Unit Group - Pick every unit in (Units within 600.00 of (Position of (Casting unit))) and do (Actions)
            • Loop - Actions
              • Unit - Create 1 Dummy Spellcaster (For Skills) for (Owner of (Casting unit)) at (Position of (Casting unit)) facing Default building facing degrees
              • Unit - Add Frigid Grasp (Dummy Unit Version) to (Last created unit)
              • Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
              • Unit - Set level of Frigid Grasp (Dummy Unit Version) for (Last created unit) to 1
              • Unit - Order (Last created unit) to Neutral - Firebolt (Picked unit)
        • Else - Actions
          • Do nothing
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Level of Frigid Grasp for (Casting unit)) Equal to 2
        • Then - Actions
          • Unit Group - Pick every unit in (Units within 600.00 of (Position of (Casting unit))) and do (Actions)
            • Loop - Actions
              • Unit - Create 1 Dummy Spellcaster (For Skills) for (Owner of (Casting unit)) at (Position of (Casting unit)) facing Default building facing degrees
              • Unit - Add Frigid Grasp (Dummy Unit Version) to (Last created unit)
              • Unit - Set level of Frigid Grasp (Dummy Unit Version) for (Last created unit) to 2
              • Unit - Order (Last created unit) to Neutral - Firebolt (Picked unit)
              • Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
        • Else - Actions
          • Do nothing
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Level of Frigid Grasp for (Casting unit)) Equal to 3
        • Then - Actions
          • Unit Group - Pick every unit in (Units within 600.00 of (Position of (Casting unit))) and do (Actions)
            • Loop - Actions
              • Unit - Create 1 Dummy Spellcaster (For Skills) for (Owner of (Casting unit)) at (Position of (Casting unit)) facing Default building facing degrees
              • Unit - Add Frigid Grasp (Dummy Unit Version) to (Last created unit)
              • Unit - Set level of Frigid Grasp (Dummy Unit Version) for (Last created unit) to 3
              • Unit - Order (Last created unit) to Neutral - Firebolt (Picked unit)
              • Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
        • Else - Actions
          • Do nothing
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Level of Frigid Grasp for (Casting unit)) Equal to 4
        • Then - Actions
          • Unit Group - Pick every unit in (Units within 600.00 of (Position of (Casting unit))) and do (Actions)
            • Loop - Actions
              • Unit - Create 1 Dummy Spellcaster (For Skills) for (Owner of (Casting unit)) at (Position of (Casting unit)) facing Default building facing degrees
              • Unit - Add Frigid Grasp (Dummy Unit Version) to (Last created unit)
              • Unit - Set level of Frigid Grasp (Dummy Unit Version) for (Last created unit) to 4
              • Unit - Order (Last created unit) to Neutral - Firebolt (Picked unit)
              • Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
        • Else - Actions
          • Do nothing


I read a guide on hiveworkshops about how to do AOE skills. The skill I made here looks fine but after 5 - 6 casts the whole game lags up really bad.

Thinking "what the heck happened?" I changed my dummy model to a little zerg to see if the dummy units dies properly. It does. I keep doing so and until the 5th cast, the models of my target and the dummy are messed up (Kind of stretched) and it lags the game everytime I view that area.

There are no longer dummy units there but I have no idea why it is still lagging. Any help?
 

Nenad

~Choco Coronet~ Omnomnom
Reaction score
137
It's because you have a lot of memory leaks X)

Set TempPoint = Position of (Casting Unit)
Set TempGroup = Units within 600.00 of (TempPoint)
Then - Actions

* Unit Group - Pick every unit in (TempGroup) and do (Actions)

call DestroyGroup(udg_TempGroup)
call RemoveLocation(udg_TempPoint)

This is how you're trigger should look like for groups.
Someone fix the syntax in the memory leak removal if it's wrong please, been a while since i done it ^^

Also i'm unsure that units within 600 will leak as well...

Edit: Also remove all the do nothing actions, you don't need them.
 

Fujiwari

Active Member
Reaction score
0
It's because you have a lot of memory leaks X)

Set TempPoint = Position of (Casting Unit)
Set TempGroup = Units within 600.00 of (TempPoint)
Then - Actions

* Unit Group - Pick every unit in (TempGroup) and do (Actions)

call DestroyGroup(udg_TempGroup)
call RemoveLocation(udg_TempPoint)

This is how you're trigger should look like for groups.
Someone fix the syntax in the memory leak removal if it's wrong please, been a while since i done it ^^

Also i'm unsure that units within 600 will leak as well...

Edit: Also remove all the do nothing actions, you don't need them.

Thank you! I'll try it out now.
 

Fujiwari

Active Member
Reaction score
0
Trigger:
  • Frigid Grasp
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Frigid Grasp
    • Actions
      • Set TempPoint = (Position of (Casting unit))
      • Set TempGroup = (Units within 512.00 of TempPoint matching (((Picked unit) is A structure) Equal to False))
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Level of Frigid Grasp for (Casting unit)) Equal to 1
        • Then - Actions
          • Unit Group - Pick every unit in TempGroup and do (Actions)
            • Loop - Actions
              • Unit - Create 1 Dummy Spellcaster (For Skills) for (Owner of (Casting unit)) at TempPoint facing Default building facing degrees
              • Unit - Add Frigid Grasp (Dummy Unit Version) to (Last created unit)
              • Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
              • Unit - Set level of Frigid Grasp (Dummy Unit Version) for (Last created unit) to 1
              • Unit - Order (Last created unit) to Neutral - Firebolt (Picked unit)
              • Custom script: call DestroyGroup(udg_TempGroup)
              • Custom script: call RemoveLocation(udg_TempPoint)


Is it supposed to look like this? Now my skill won't function at all lol... Sorry I'm really a novice at this.
 

vypur85

Hibernate
Reaction score
803
You guys and leaks again... If leaks can cause lag in 5 casts, then something must be very wrong with your computer.

The lag is caused by amounts of dummies produced. You pick ALL units without filtering them. Imagine, at first cast, you created 10 dummies. The next cast, you will produce 20 dummies... and so on. Without filtering, the unit group will pick up dead units as well, and the number goes up exponentially.


Code:
 Frigid Grasp
    Events
        Unit - A unit Starts the effect of an ability
    Conditions
        (Ability being cast) Equal to Frigid Grasp 
    Actions
        Unit Group - Pick every unit in (Units within 600.00 of (Position of (Casting unit))) matching [B](Matching unit) is alive Equal to True and (Matching unit) belongs to an enemy of (Owner of Triggering unit)) [/B]and do (Actions)
            Loop - Actions
               Unit - Create 1 Dummy Spellcaster (For Skills) for (Owner of (Casting unit)) at (Position of (Casting unit)) facing Default building facing degrees
               Unit - Add Frigid Grasp (Dummy Unit Version)  to (Last created unit)
               Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
               Unit - Set level of Frigid Grasp (Dummy Unit Version)  for (Last created unit) to [B](Level of Frigid Grasp for (Triggering unit))[/B]
               Unit - Order (Last created unit) to Neutral - Firebolt (Picked unit)

Look out for the bolded areas. Then again, I'm assuming the ability only works on enemies, otherwise, just change the 'matching' part as needed. As for the leak, just change accordingly as adviced.
 

Fujiwari

Active Member
Reaction score
0
You guys and leaks again... If leaks can cause lag in 5 casts, then something must be very wrong with your computer.

The lag is caused by amounts of dummies produced. You pick ALL units without filtering them. Imagine, at first cast, you created 10 dummies. The next cast, you will produce 20 dummies... and so on. Without filtering, the unit group will pick up dead units as well, and the number goes up exponentially.


Code:
 Frigid Grasp
    Events
        Unit - A unit Starts the effect of an ability
    Conditions
        (Ability being cast) Equal to Frigid Grasp 
    Actions
        Unit Group - Pick every unit in (Units within 600.00 of (Position of (Casting unit))) matching [B](Matching unit) is alive Equal to True and (Matching unit) belongs to an enemy of (Owner of Triggering unit)) [/B]and do (Actions)
            Loop - Actions
               Unit - Create 1 Dummy Spellcaster (For Skills) for (Owner of (Casting unit)) at (Position of (Casting unit)) facing Default building facing degrees
               Unit - Add Frigid Grasp (Dummy Unit Version)  to (Last created unit)
               Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
               Unit - Set level of Frigid Grasp (Dummy Unit Version)  for (Last created unit) to [B](Level of Frigid Grasp for (Triggering unit))[/B]
               Unit - Order (Last created unit) to Neutral - Firebolt (Picked unit)

Look out for the bolded areas. Then again, I'm assuming the ability only works on enemies, otherwise, just change the 'matching' part as needed. As for the leak, just change accordingly as adviced.

Ignore what I posted above, I heed both your advices and my skill now works smoothly. Thank you! :thup:
 

MiddleHanded

New Member
Reaction score
1
I'll just post a quick thing to optimize the length a little...
I hope it doesn't cause more leaks :D

Trigger:
  • Frigid Grasp
    • Events
    • Unit - A unit Starts the effect of an ability
    • Conditions
    • (Ability being cast) Equal to Frigid Grasp
    • Actions
    • Set TempPoint = (Position of (Casting unit))
    • Set TempGroup = (Units within 600.00 of TempPoint matching (((Matching unit) is A structure) Equal to False))
    • Unit Group - Pick every unit in TempGroup and do (Actions)
    • Loop - Actions
    • Unit - Create 1 Dummy Spellcaster (For Skills) for (Owner of (Casting unit)) at TempPoint facing Default building facing degrees
    • Unit - Add Frigid Grasp (Dummy Unit Version) to (Last created unit)
    • Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
    • Unit - Set level of Frigid Grasp (Dummy Unit Version) for (Last created unit) to (Level of Frigid Grasp for Triggering unit)
    • Unit - Order (Last created unit) to Neutral - Firebolt (Picked unit)
    • Custom script: call DestroyGroup(udg_TempGroup)
    • Custom script: call RemoveLocation(udg_TempPoint)
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top