- Joined
- Aug 27, 2009
- Messages
- 473
Ok, so the idea was to make a working Anti-Block system which actually don't lag.. And which works instantly.. I came up with this idea:
This does work for anti-blocking.. This works instantly.. But when the "Chain" is long enough, it lags everytime you build a new tower into the chain.
So the question is: Any ideas how to "remove" the lag?
Define "chain": Towers which touches each other.
Examples:
EDIT:
Trigger updated with leak (pointed out by Maker) fixed..
-
Anti Block
-

Events
-


Unit - A unit Begins construction
-
-

Conditions
-

Actions
-


If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-



If - Conditions
-




(ABChain is empty) Equal to True
-
-



Then - Actions
-




Set TempLoc = (Position of (Triggering unit))
-




Set ABChain = (Units in (Entire map) matching ((Matching unit) Equal to (Triggering unit)))
-




Set ABMin = (X of TempLoc)
-




Set ABMax = (X of TempLoc)
-
-



Else - Actions
-
-


Set ABCheck = False
-


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



Loop - Actions
-




Set TempLoc2 = (Position of (Picked unit))
-




Set TempGroup = (Units owned by (Owner of (Triggering unit)))
-




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





Loop - Actions
-






Set TempLoc3 = (Position of (Picked unit))
-






If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-







If - Conditions
-








(Unit-type of (Picked unit)) Not equal to Human Builder
-








((Picked unit) is in ABChain) Equal to False
-








(Distance between TempLoc2 and TempLoc3) Less than 182.00
-
-







Then - Actions
-








Unit Group - Add (Picked unit) to ABChain
-








If ((X of TempLoc3) Less than ABMin) then do (Set ABMin = (X of TempLoc3)) else do (Do nothing)
-








If ((X of TempLoc3) Greater than ABMax) then do (Set ABMax = (X of TempLoc3)) else do (Do nothing)
-








Set ABCheck = True
-
-







Else - Actions
-
-
-
-
-
-


Custom script: call DestroyGroup(udg_TempGroup)
-


Custom script: call RemoveLocation(udg_TempLoc3)
-


Custom script: call RemoveLocation(udg_TempLoc2)
-


If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-



If - Conditions
-




ABCheck Equal to False
-
-



Then - Actions
-




If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-





If - Conditions
-






(ABMax - ABMin) Greater than or equal to 1792.00
-
-





Then - Actions
-






Special Effect - Create a special effect at TempLoc using Abilities\Spells\Human\DispelMagic\DispelMagicTarget.mdl
-






Special Effect - Destroy (Last created special effect)
-






Unit - Remove (Triggering unit) from the game
-
-





Else - Actions
-
-




Custom script: call DestroyGroup(udg_ABChain)
-




Custom script: call RemoveLocation(udg_TempLoc)
-
-



Else - Actions
-




Trigger - Run Anti Block <gen> (checking conditions)
-
-
-
-
So the question is: Any ideas how to "remove" the lag?
Define "chain": Towers which touches each other.
Examples:
This wont lagCode:| | |XXXXXX | | | | XXXXXX| | | |XXXXXX | | | | XXXXXX| | | |XXXXXX | | |
This will lagCode:| | |XXXXXX | | X | | XXX X | | X X | | X XXX | | X | | XXXXXX| | | |XXXXXX | | |
Trigger updated with leak (pointed out by Maker) fixed..
Last edited:



