Para lo primero:
Necesitas un grupo de unidad, este contendrá todas las unidades de la oleada
Un temporizador, así la siguiente oleada ocurra siempre un tiempo exacto después de terminar(De otra forma puede suceder que logras derrotar una oleada y sin darte tiempo salga la siguiente)
Y: Unos cuantos detonadores
[gui]Oleada Empieza
Acontecimientos
Tiempo - TemporizadorDeOleada expires
Condiciones
Acciones
Unidad - Create 20 Soldado raso for Jugador 1 (rojo) at (Center of (Playable map area)) facing Vista edificio predeterminada (270.0) degrees
Grupo de unidad - Add all units of (Last created unit group) to GrupoDeOleada
Unidad - Create 15 Fusilero for Jugador 1 (rojo) at (Center of (Playable map area)) facing Vista edificio predeterminada (270.0) degrees
Grupo de unidad - Add all units of (Last created unit group) to GrupoDeOleada
[/gui]
[gui]Oleada Muerta
Acontecimientos
Unidad - A unit Muere
Condiciones
((Triggering unit) is in GrupoDeOleada) Igual a (==) True
Acciones
Grupo de unidad - Remove (Triggering unit) from GrupoDeOleada
Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
(Number of units in GrupoDeOleada) Igual a (==) 0
Entonces: Acciones
Cuenta atrás del reloj - Start TemporizadorDeOleada as a Un tiro timer that will expire in 20.00 seconds
Otros: Acciones
[/gui]
Como ves, en el primer detonador se repite una acción
[gui]Grupo de unidad - Add all units of (Last created unit group) to GrupoDeOleada[/gui]
Esto agregará todas las unidades que se acaban de crear al grupo. Siempre que las agregues a tu grupo de unidad debes hacerlo de esta forma, primero la acción de Crear unidades y después la acción de agregarlas al grupo.
¡Si colocas la acción de crear unidades dos veces SEGUIDAS sin la acción de agregarlas al grupo en el medio funcionará MAL!Luego en el segundo detonador las vamos descontando
[gui]Oleada Muerta
Acontecimientos
Unidad - A unit Muere
Condiciones
((Triggering unit) is in GrupoDeOleada) Igual a (==) True
Acciones
Grupo de unidad - Remove (Triggering unit) from GrupoDeOleada[/gui]
Cuando una unidad muera -> Revisamos si esa unidad pertenece a nuestro grupo. Esto se hace con una condición dentro de "Boolean Comparison" -> Removemos la unidad de nuestro grupo.
Luego revisamos si quedan unidades en la oleada (Que es lo mismo que revisar cuantos unidades hay en el grupo)
[gui]Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si: Condiciones
(Number of units in GrupoDeOleada) Igual a (==) 0
Entonces: Acciones
Cuenta atrás del reloj - Start TemporizadorDeOleada as a Un tiro timer that will expire in 20.00 seconds
Otros: Acciones[/gui]
Esta condición la encuentras en "Integer comparison". Si hay 0 unidades en el grupo, entonces la oleada fue eliminada. Iniciaremos nuestro temporizador.
Este es un ejemplo totalmente mínimo, si quieres poder usarlo. Te aconsejo agregar al detonador "Oleada Empieza" dos acciones
"Detonador - Turn off (This trigger)" y "Detonador - Turn on trigger". Entonces vas desactivando y activando las oleadas una a una. Creo que ese método te será más fácil que hacer un sistemaEn cuanto al segundo problema:
[gui]Detonador sin nombre 001
Acontecimientos
Unidad - A unit Adquiere un objeto
Condiciones
(Item-type of (Item being manipulated)) Igual a (==) Arco solo para rango
((Triggering unit) is Un atacante de refriega) Igual a (==) True
Acciones
HÃ

roe - Drop (Item being manipulated) from (Triggering unit)
[/gui]