- Joined
- Jul 18, 2010
- Messages
- 2,471
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
-
-
-
-



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]
-
-
-
-



Else - Actions
-




-------- New orderAble one selected, purge temp group --------
-




Unit Group - Remove all units from Reselect_Group[0]
-
-
-
-
-
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
-
-
-


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
-
-
-


(Reselect_Group[(Player number of (Triggering player))] is empty) Equal to False
-
-

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)
-
-
-


-------- 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
-
-


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
-
-
-
-
-
Edit: Does someone have a good Idea for a screenshot Explaining this?
Attachments
Last edited:
