- Joined
- Jul 18, 2010
- Messages
- 2,201
Reselect makes deselection of your units less painful.
It saves the Units a player had selected when deselecting them.
After the deselection, when not selecting an new orderable Unit, a simple mouseclick on the map (not the Interface) will reselect them. A righclick will order the reselected group to do "smart" to the wanted position.
In the game this means one can select an enemy/shop inspect it, then simply left click on the gameScreen and the units are reselected.
Didn't tested in multiplayer, but theoretical the 0s timer should be MPI-save. If one can prove otherwise please do so. Wouldn't be much to rework to gain 100% MPI-save, but wanted to avoid the second group array.
Edit: Does someone have a good Idea for a screenshot Explaining this?
It saves the Units a player had selected when deselecting them.
After the deselection, when not selecting an new orderable Unit, a simple mouseclick on the map (not the Interface) will reselect them. A righclick will order the reselected group to do "smart" to the wanted position.
In the game this means one can select an enemy/shop inspect it, then simply left click on the gameScreen and the units are reselected.
Didn't tested in multiplayer, but theoretical the 0s timer should be MPI-save. If one can prove otherwise please do so. Wouldn't be much to rework to gain 100% MPI-save, but wanted to avoid the second group array.
-
Reselect Timer
-
Events
- Time - Reselect_Timer expires
- Conditions
-
Actions
- -------- selected nothing? --------
- -------- selected something unorderAble? --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
Or - Any (Conditions) are true
-
Conditions
- (Reselect_LastSelected[(Player number of Reselect_TimerPlayer)] is selected by Reselect_TimerPlayer) Equal to False
- ((Owner of Reselect_LastSelected[(Player number of Reselect_TimerPlayer)]) is giving Reselect_TimerPlayer Shared units) Equal to False
-
Conditions
-
Or - Any (Conditions) are true
-
Then - Actions
- -------- Yes, save group --------
-
Unit Group - Pick every unit in Reselect_Group[0] and do (Actions)
-
Loop - Actions
- Unit Group - Add (Picked unit) to Reselect_Group[(Player number of Reselect_TimerPlayer)]
- Unit Group - Remove (Picked unit) from Reselect_Group[0]
-
Loop - Actions
-
Else - Actions
- -------- New orderAble one selected, purge temp group --------
- Unit Group - Remove all units from Reselect_Group[0]
-
If - Conditions
-
Events
-
Reselect Select
- Events
- Conditions
-
Actions
- Set Reselect_LastSelected[(Player number of (Triggering player))] = (Triggering unit)
-
Reselect DeSelect
- Events
-
Conditions
- ((Owner of (Triggering unit)) is giving (Triggering player) Shared units) Equal to True
-
Actions
- Unit Group - Add (Triggering unit) to Reselect_Group[0]
- Unit Group - Remove (Triggering unit) from Reselect_Group[(Player number of (Triggering player))]
- -------- The 0s timer will expire when all deselection events of this group ended --------
- Set Reselect_TimerPlayer = (Triggering player)
- Countdown Timer - Start Reselect_Timer as a One-shot timer that will expire in 0.00 seconds
-
Reselect
- Events
-
Conditions
-
And - All (Conditions) are true
-
Conditions
- (Mouse Position X for Triggered Mouse Event) Not equal to 0.00
- (Mouse Position Y for Triggered Mouse Event) Not equal to 0.00
-
Conditions
-
Or - Any (Conditions) are true
-
Conditions
- ((Owner of Reselect_LastSelected[(Player number of (Triggering player))]) is giving (Triggering player) Shared units) Equal to False
- (Reselect_LastSelected[(Player number of (Triggering player))] is selected by (Triggering player)) Equal to False
-
Conditions
- (Reselect_Group[(Player number of (Triggering player))] is empty) Equal to False
-
And - All (Conditions) are true
-
Actions
- -------- Avoid (de)selection Events when reselecting --------
- Auslöser - Turn off Reselect DeSelect <gen>
- Auslöser - Turn off Reselect Select <gen>
- Selection - Clear selection for (Triggering player)
-
Unit Group - Pick every unit in Reselect_Group[(Player number of (Triggering player))] and do (Actions)
-
Loop - Actions
- Selection - Add (Picked unit) to selection for (Triggering player)
-
Loop - Actions
- -------- If this is an right click give the units an order --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Trigger Mouse Button) Equal to Rechte MausTaste
-
Then - Actions
- Custom script: call GroupPointOrder( udg_Reselect_Group[GetConvertedPlayerId(GetTriggerPlayer())], "smart", BlzGetTriggerPlayerMouseX(), BlzGetTriggerPlayerMouseY())
- Else - Actions
-
If - Conditions
- Auslöser - Turn on Reselect DeSelect <gen>
- Auslöser - Turn on Reselect Select <gen>
-
Reselect Init
-
Events
- Map initialization
- Conditions
-
Actions
-
Player Group - Pick every player in (All players) and do (Actions)
-
Loop - Actions
- Custom script: local integer index = GetConvertedPlayerId(GetEnumPlayer())
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- ((Picked player) controller) Equal to User
- ((Picked player) slot status) Equal to Is playing
-
Then - Actions
- -------- Event Creation --------
- Auslöser - Add to Reselect <gen> the event (Player - (Picked player) issues Drückt MausTaste event)
- Auslöser - Add to Reselect Select <gen> the event (Player - (Picked player) Auswählen a unit)
- Auslöser - Add to Reselect DeSelect <gen> the event (Player - (Picked player) Abwählen a unit)
- -------- Create None existing, but needed Groups --------
- Custom script: if udg_Reselect_Group[index] == null then
- Custom script: set udg_Reselect_Group[index] = CreateGroup()
- Custom script: endif
- Else - Actions
-
If - Conditions
-
Loop - Actions
-
Player Group - Pick every player in (All players) and do (Actions)
-
Events
Edit: Does someone have a good Idea for a screenshot Explaining this?
Attachments
Last edited: