- Joined
- Jan 27, 2007
- Messages
- 208
I learn Hashtable and now I often to using it. But when i tested it in LAN, i got lag when i use this spell. This spell is shooting a bullet to line and deals some damage to every enemy units in line and works fine. I use 2 trigger for the spell. Here it goes.
Btw, after i got surprised with lag, and i try to create new game in LAN, its not lagging. So now im a bit confuse. My computer sucks or my trigger leaks?
Thanks for help.
-
Piercing Shot
-
Events
- Unit - A unit Starts the effect of an ability
-
Conditions
- (Ability being cast) Equal to Piercing Shot [Rogue]
-
Actions
- Set temp_Point = (Target point of ability being cast)
- Set PiercingShotAngle = (Angle from (Position of (Triggering unit)) to temp_Point)
- Set PiercingShotDistance = 35.00
- Set PiercingShotTime = 5.50
- Set PiercingShotPoint = (Position of (Triggering unit))
- Unit - Create 1 DummyUnitPiercingShot for (Owner of (Triggering unit)) at PiercingShotPoint facing Default building facing degrees
- Set PiercingDummyUnit = (Last created unit)
- Hashtable - Save PiercingShotAngle as 0 of (Key (Last created unit)) in PiercingShotTable
- Hashtable - Save PiercingShotDistance as 1 of (Key (Last created unit)) in PiercingShotTable
- Hashtable - Save PiercingShotTime as 2 of (Key (Last created unit)) in PiercingShotTable
- Hashtable - Save Handle OfPiercingDummyUnit as 3 of (Key (Last created unit)) in PiercingShotTable
- Unit Group - Add (Last created unit) to PiercingGroup
- Custom script: call RemoveLocation(udg_PiercingShotPoint)
- Custom script: call RemoveLocation(udg_temp_Point)
-
Events
-
Activate Piercing Shot
-
Events
- Time - Every 0.04 seconds of game time
- Conditions
-
Actions
-
Unit Group - Pick every unit in PiercingGroup and do (Actions)
-
Loop - Actions
- Set PiercingShotAngle = (Load 0 of (Key (Picked unit)) from PiercingShotTable)
- Set PiercingShotDistance = (Load 1 of (Key (Picked unit)) from PiercingShotTable)
- Set PiercingShotTime = (Load 2 of (Key (Picked unit)) from PiercingShotTable)
- Set PiercingDummyUnit = (Load 3 of (Key (Picked unit)) in PiercingShotTable)
- Set PiercingDummyPoint[(Player number of (Owner of (Picked unit)))] = (Position of PiercingDummyUnit)
- Unit - Move PiercingDummyUnit instantly to (PiercingDummyPoint[(Player number of (Owner of (Picked unit)))] offset by PiercingShotDistance towards PiercingShotAngle degrees)
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- PiercingShotTime Greater than 0.00
-
Then - Actions
- Set PiercingShotUnitGroup[(Player number of (Owner of (Picked unit)))] = (Units within 75.00 of PiercingDummyPoint[(Player number of (Owner of (Picked unit)))] matching ((((Matching unit) belongs to an enemy of (Owner of (Picked unit))) Equal to True) and (((Matching unit) is in PiercingShotDamagedUnitGroup[(Player number of (Owne
-
Unit Group - Pick every unit in PiercingShotUnitGroup[(Player number of (Owner of (Picked unit)))] and do (Actions)
-
Loop - Actions
- Unit - Cause PlayerHeroes[(Player number of (Owner of PiercingDummyUnit))] to damage (Picked unit), dealing ((Real((Strength of PlayerHeroes[(Player number of (Owner of PiercingDummyUnit))] (Include bonuses)))) x 4.50) damage of attack type Hero and damage type Normal
- Unit Group - Add (Picked unit) to PiercingShotDamagedUnitGroup[(Player number of (Owner of PiercingDummyUnit))]
-
Loop - Actions
- Custom script: call DestroyGroup(udg_PiercingShotUnitGroup[GetConvertedPlayerId(GetOwningPlayer(GetEnumUnit()))])
- Hashtable - Save (PiercingShotTime - 0.10) as 2 of (Key (Picked unit)) in PiercingShotTable
-
Else - Actions
- Special Effect - Create a special effect at PiercingDummyPoint[(Player number of (Owner of (Picked unit)))] using Objects\Spawnmodels\Human\FragmentationShards\FragBoomSpawn.mdl
- Special Effect - Destroy (Last created special effect)
- Unit - Remove PiercingDummyUnit from the game
- Unit Group - Remove (Picked unit) from PiercingGroup
- Unit Group - Remove all units from PiercingShotDamagedUnitGroup[(Player number of (Owner of (Picked unit)))]
- Hashtable - Clear all child hashtables of child (Key (Picked unit)) in PiercingShotTable
- Custom script: call RemoveLocation(udg_PiercingDummyPoint[GetConvertedPlayerId(GetOwningPlayer(GetEnumUnit()))])
- Custom script: call DestroyGroup(udg_PiercingShotUnitGroup[GetConvertedPlayerId(GetOwningPlayer(GetEnumUnit()))])
-
If - Conditions
-
Loop - Actions
-
Unit Group - Pick every unit in PiercingGroup and do (Actions)
-
Events
Btw, after i got surprised with lag, and i try to create new game in LAN, its not lagging. So now im a bit confuse. My computer sucks or my trigger leaks?
Thanks for help.