Selección Mediante Doble-Click - Básico
TRISTAN
Buenas, estaba algo desocupado así que decidí aportar algo para los mas polluelos como yo

. Vi varios tutos de selección pero no de este tipo.
Esta vez vengo a acercar un tutorial que nos muestra como elegir héroes mediante un Doble-Click, hay muchos métodos para esto, yo utilizo un objeto para denotar que el héroe ya recibió un click. Este detonador nos permite elegir un héroe por jugador pero no nos prohíbe elegir el mismo héroe que el otro jugador.
El detonador es muy básico, cada uno le puede dar su variación y agregarles detalles como efectos, mensajes y demás.
En la primer imagen podemos apreciar el instante en que la unidad que clickeamos tiene en su poder la esfera (item que utilice para marcar el click. ustedes lo configuran a su manera). En la segunda imagen apreciamos el héroe ya creado en su PlayerStartLocatión
VARIABLES

HEROE: Variable de tipo Unidad con Formación. La usamos para almacenar el héroe seleccionado por cada jugador para cada indice (array) de la variable.

Seleccion: Variable de tipo Booleana con Formación. La usamos para marcar si el jugador ya eligió un héroe anteriormente. Aplicamos un indice (array) de variable para cada jugador.

TP1: Variable de tipo Punto. La usamos para almacenar el PlayerStartLocation (Posición Inicial del Jugador), y luego borrar los datos almacenados con el CustomScript.
DETONADOR

Selección: Cuando un jugador selecciona una unidad, en condiciones vemos que la variable booleana "Seleccion"(con el index/indice de el numero de el jugador detonador) tiene que ser falsa, esto es para que el jugador solo pueda elegir un héroe(cuando es false puede elegir cuando es true ya no), y la siguiente condición nos dice que si la unidad seleccionada es una de las siguientes (las que especifican las condiciones, esto es configurable a nuestro mapa. aquí van los héroes que queremos que se elijan pero recordemos que ya tienen que estar puestos en el mapa) entonces se desarrollan las acciones
[gui]Seleccin
Acontecimientos
Jugador - Jugador 1 (rojo) Seleccionar a unit
Jugador - Jugador 2 (azul) Seleccionar a unit
Jugador - Jugador 3 (teja) Seleccionar a unit
Condiciones
Seleccion[(Player number of (Triggering player))] Igual a False
Or - Any (Conditions) are true
Condiciones
(Triggering unit) Igual a PaladÃn 0000
(Triggering unit) Igual a Archimago 0001
(Triggering unit) Igual a Rey de la Montaña 0002
(Triggering unit) Igual a Mago sanguinario 0003
Acciones
-------- seteamos la player star location de el jugador detonador en la variable de punto TP1 para referirnos a ella y luego remover las fugas con el custom script --------
Set TP1 = ((Triggering player) start location)
-------- - en el If/then/else aplicamos las condiciones de que si la unidad seleccionada tiene en su slot 1 del inventario una esfera de hielo realiza las acciones --------
-------- Esto es lo que demarcara si el jugador hizo un o doble click --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
Esfera de Hielo Igual a (Item-type of (Item carried by (Triggering unit) in slot 1))
Entonces: Acciones
-------- Si el jugador hizo doble click entonces le daremos el valor True a la Variable booleana "Seleccion" (con el indice de el jugador que la detono) --------
-------- La manera en la que usamos el indice nos permite darle un indice de variable para cada uno de los jugadores --------
-------- esto es lo que le prohibe al jugador elegir otro heroe --------
Set Seleccion[(Player number of (Triggering player))] = True
-------- Aca creamos la unidad con el tipo de la unidad seleccionada para el jugador detonador --------
Unidad - Create 1 (Unit-type of (Triggering unit)) for (Triggering player) at TP1 facing Vista edificio predeterminada degrees
Set HEROE[(Player number of (Owner of (Last created unit)))] = (Last created unit)
-------- seteamos la ultima unidad creada en la variable de unidad con formacion HEROE con el indice (array) del numero de jugador del controlador de la ultima undad creada, es decir la anterior --------
Cámara - Pan camera for (Owner of (Last created unit)) to TP1 over 0.00 seconds
-------- aplicamos la camara por el controlador de la unidad en TP1 la actual posicion de la unidad. --------
-------- Aca le removemos la esfera que le creamos en el primer click que paso a explicar ahora abajo --------
Objeto - Remove (Item carried by (Triggering unit) in slot 1)
Otros: Acciones
-------- En caso de que la condicion no se cumpla realizamos las siguientes acciones --------
-------- esta accion crea una esfera en el slot 1 de la unidad seleccionada para detonar que se le dio el primer click --------
HÃ
roe - Create Esfera de Hielo and give it to (Triggering unit)
Wait 0.01 seconds
Objeto - Remove (Item carried by (Triggering unit) in slot 1)
-------- tras para 0.01 segundos removemos el item de la unidad a la que le dimos el primer click --------
Custom script: call RemoveLocation(udg_TP1)
-------- removemos los datos almacenados en la variable de punto TP1 evitando las fugas de memoria(leak) --------[/gui]
MAPA EJEMPLO
Espero les sea de utilidad. Buena suerte y más que suerte.