hi, i am having trouble with my waypoint trigger
it orders units that reach their WP to move to the next one
and units that are stopped to move again
the problems:
it is verry ineficient, when the number of units it checks is above 100 the games performance decreases
another thing is the leaks with location when(i think its here) Unit_Rally_Point is set to the next waypoint. if i try to remove the location all other units that are moving to the same WP have the location removed also and stop. i added a comment where i put the RemoveLocation
i'm using the original world editor, but you can suggest JASS, i don't know JASS if needed i can look into it
edit: added hidden tag for a cleaner post
it orders units that reach their WP to move to the next one
and units that are stopped to move again
the problems:
it is verry ineficient, when the number of units it checks is above 100 the games performance decreases
another thing is the leaks with location when(i think its here) Unit_Rally_Point is set to the next waypoint. if i try to remove the location all other units that are moving to the same WP have the location removed also and stop. i added a comment where i put the RemoveLocation
i'm using the original world editor, but you can suggest JASS, i don't know JASS if needed i can look into it
-
Waypoint Move
- Events
- Conditions
-
Actions
- Set i_Wave_Created = i_Wave_Creating
-
For each (Integer For_West[0]) from 0 to i_Wave_Created, do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Unit_Array[For_West[0]] is alive) Equal to True
-
Then - Actions
- Set Temp_Pos = (Position of Unit_Array[For_West[0]])
- Set Unit_Distance_Array[For_West[0]] = (Distance between Temp_Pos and Unit_Rally_Point[For_West[0]])
- Custom script: call RemoveLocation(udg_Temp_Pos)
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- Unit_Distance_Array[For_West[0]] Less than 200.00
-
Then - Actions
- If (Unit_Current_Waypoint[For_West[0]] Greater than 87) then do (Unit - Remove (Triggering unit) from the game) else do (Do nothing)
- Set Unit_Current_Waypoint[For_West[0]] = (Unit_Current_Waypoint[For_West[0]] + 8)
- -------- Custom script: call RemoveLocation( udg_Unit_Rally_Point[udg_For_West[0]] ) --------
- Set Temp_Pos = (Position of Unit_Array[For_West[0]])
- Set Unit_Rally_Point[For_West[0]] = Waypoints[Unit_Current_Waypoint[For_West[0]]]
- Set Unit_Distance_Array[For_West[0]] = (Distance between Temp_Pos and Unit_Rally_Point[For_West[0]])
- Custom script: call RemoveLocation(udg_Temp_Pos)
- Unit - Order Unit_Array[For_West[0]] to Move To Unit_Rally_Point[For_West[0]]
- Else - Actions
-
If - Conditions
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
Loop - Actions
- Wait 0.10 seconds
-
For each (Integer For_West[0]) from 0 to i_Wave_Created, do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Unit_Array[For_West[0]] is alive) Equal to True
-
Then - Actions
- If (Unit_Current_Waypoint[For_West[0]] Greater than 87) then do (Unit - Remove (Triggering unit) from the game) else do (Do nothing)
- Set Temp_Pos = (Position of Unit_Array[For_West[0]])
- Set Unit_Distance_Array2[For_West[0]] = (Distance between Temp_Pos and Unit_Rally_Point[For_West[0]])
- Custom script: call RemoveLocation(udg_Temp_Pos)
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- Unit_Distance_Array2[For_West[0]] Less than 200.00
-
Then - Actions
- If (Unit_Current_Waypoint[For_West[0]] Greater than 87) then do (Unit - Remove (Triggering unit) from the game) else do (Do nothing)
- Set Unit_Current_Waypoint[For_West[0]] = (Unit_Current_Waypoint[For_West[0]] + 8)
- -------- Custom script: call RemoveLocation( udg_Unit_Rally_Point[udg_For_West[0]] ) --------
- Set Temp_Pos = (Position of Unit_Array[For_West[0]])
- Set Unit_Rally_Point[For_West[0]] = Waypoints[Unit_Current_Waypoint[For_West[0]]]
- Set Unit_Distance_Array2[For_West[0]] = (Distance between Temp_Pos and Unit_Rally_Point[For_West[0]])
- Custom script: call RemoveLocation(udg_Temp_Pos)
- Unit - Order Unit_Array[For_West[0]] to Move To Unit_Rally_Point[For_West[0]]
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- Unit_Distance_Array[For_West[0]] Equal to Unit_Distance_Array2[For_West[0]]
-
Then - Actions
- Unit - Order Unit_Array[For_West[0]] to Move To Unit_Rally_Point[For_West[0]]
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
Loop - Actions
- Trigger - Remove (This trigger) from the trigger queue
Last edited: