For your last question - the selection one:
There are 2 ways
First way - this one is advanced.
Download Vexorians Hero Selection system (a spell) - it does exactly what you said!
If this fails for you - I made 2 simple triggers:
VARIABLES: Name: Selected. Type: Unit(array)
The array is for the players e.g. Selected(1) would be player 1, selected(2) would be player 2.
Trigger 1: Change ownership of selected unit
E
layer(x) selects a unit
C: Unit is owned by (neutral passive or w/e)
(top condition is for security - to make sure selected unit is who you want it to be)
A: Change ownership of triggering unit to triggering player
A: Set SELECTED(Player number of triggering player) = triggering unit - important for next triggers
Trigger 2: Checks to see if unit is selected,
E: Every 0.05 seconds
The below action using (integer A) is a way of checking through each player. If the map was a 6 player map, (integer A) would count as 1,2,3,4,5,6.
A: For each (integer A) from 1-(how many players there are) loop actions:
If(conditions): SELECTED(integer A) is in units currently selected by player (integer A) - This condition is a boolean: Unit is in unit group
Then: do nothing
Else: Change ownership of SELECTED(integer A) to (Neutral Passive or w/e)
Depending on what your map's purposes are, there are other triggers to be added aswell. E.g. if you don't want the player to steal the unit and be able to control it (just ask if you want that) or if you want the player to see the unit's skills. ETC. Just give me the specific curcimstances of the map and i will tell you more modifications!