- Joined
- Aug 15, 2008
- Messages
- 720
Since I learned these hashtables, I was testing them.
I was creating knockback trigger with hashtable method (as wyrm tutorial)
Thing is... I want that Knockback without leaks, so I did basic memory fixing method, but then basic Knockback only knocks one unit and in other castings it doesn't knock target, he just stands at his place.
Trigger:
I was creating knockback trigger with hashtable method (as wyrm tutorial)
Thing is... I want that Knockback without leaks, so I did basic memory fixing method, but then basic Knockback only knocks one unit and in other castings it doesn't knock target, he just stands at his place.
Trigger:
-
Fire Fist
-
Events
- Unit - A unit Starts the effect of an ability
-
Conditions
- (Ability being cast) Equal to Fire Fist
-
Actions
- Set TrigUnit = (Triggering unit)
- Set Target = (Target unit of ability being cast)
- Set TargetUnitHandle = (Target unit of ability being cast)
- Set TempLoc1 = (Position of TrigUnit)
- Set TempLoc2 = (Position of Target)
- -------- --------------- --------
- Set FFKnockbackAngle = (Angle from TempLoc1 to TempLoc2)
- Set FFKnockbackDistance = 20.00
- Set RemainingTime = 1.00
- -------- --------------- --------
- Hashtable - Save FFKnockbackAngle as 0 of (Key TargetUnitHandle) in FFKnockbackTable
- Hashtable - Save FFKnockbackDistance as 1 of (Key TargetUnitHandle) in FFKnockbackTable
- Hashtable - Save RemainingTime as 2 of (Key TargetUnitHandle) in FFKnockbackTable
- -------- --------------- --------
- Unit Group - Add Target to FFKnockbackGroup
- -------- --------------- --------
- Custom script: call RemoveLocation(udg_TempLoc1)
- Custom script: call RemoveLocation(udg_TempLoc2)
-
Events
-
Fire Fist Knockback
-
Events
- Time - Every 0.04 seconds of game time
- Conditions
-
Actions
-
Unit Group - Pick every unit in FFKnockbackGroup and do (Actions)
-
Loop - Actions
- Set PickUnitHandle = (Picked unit)
- Set PickUnit = (Picked unit)
- Set TempLoc1 = (Position of PickUnit)
- Set TempLoc2 = (TempLoc1 offset by FFKnockbackDistance towards FFKnockbackAngle degrees)
- Set FFKnockbackAngle = (Load 0 of (Key PickUnitHandle) from FFKnockbackTable)
- Set FFKnockbackDistance = (Load 1 of (Key PickUnitHandle) from FFKnockbackTable)
- Set RemainingTime = (Load 2 of (Key PickUnitHandle) from FFKnockbackTable)
- -------- --------------- --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- RemainingTime Greater than 0.00
-
Then - Actions
- Unit - Move PickUnit instantly to TempLoc2
- Special Effect - Create a special effect attached to the origin of PickUnit using Objects\Spawnmodels\Undead\ImpaleTargetDust\ImpaleTargetDust.mdl
- -------- --------------- --------
- Set SFX1 = (Last created special effect)
- Special Effect - Destroy SFX1
- -------- --------------- --------
- Hashtable - Save (FFKnockbackDistance - 0.08) as 0 of (Key PickUnitHandle) in FFKnockbackTable
- Hashtable - Save (RemainingTime - 0.04) as 2 of (Key PickUnitHandle) in FFKnockbackTable
-
Else - Actions
- Hashtable - Clear all child hashtables of child (Key PickUnitHandle) in FFKnockbackTable
- Unit Group - Remove PickUnit from RespawnGroup
- -------- --------------- --------
- Custom script: call RemoveLocation(udg_TempLoc1)
- Custom script: call RemoveLocation(udg_TempLoc2)
-
If - Conditions
-
Loop - Actions
-
Unit Group - Pick every unit in FFKnockbackGroup and do (Actions)
-
Events