1 [Tutorial]Tumbar árboles al caminar Jue Jul 05, 2012 11:21 pm
lukario!
Administrador
Hola!
Hoy les muestro un detonador bastante simple para que, cuando una unidad camina, tumbe los árboles a su paso.
En este tuto voy a usar como unidad al "Archimago", si éste tiene la habilidad "Aura de brillantez", tumbará los árboles a su paso. De lo contrario, no pasa nada
Veamos el deto:
Ahora vamos a explicarlo un poquito
En los acontecimientos vemos "Tiempo - Every 0.01 seconds of game time"
Esto hace que el detonador corra cada 0.01 segundos, este valor es a gusto, pueden usar 0.10 para que no gaste tanta memoria.
En condiciones tenemos una condición un poquito interesante (si no la usan seguido, este concepto les ayudará mucho para otros casos, igualmente es de lo más simple y lógico)
La condición dice "(Level of Aura de brillantez for Unidad) Mayor que 0"
Es bastante simple, pero por esta razón a muchos les cuesta hacer esta condición.
Lo que hace es verificar el nivel de habilidad de Aura de brillante de la unidad que va a derribar árboles. ¿Por qué establecer que el nivel de habilidad debe ser mayor que cero? Pues porque si el nivel de habilidad es 0, significa que la unidad no aprendió dicha habilidad, por lo tanto el detonador no se ejecutará
Esto lo uso mucho como reemplazo a una booleana que me gustaría que existiera, que sería mas o menos "Unit has ability"
Ahora en Acciones vemos una variable, vamos a explicar esto:
El detonados usa 2 variables, una que almacena la unidad que derriba los árboles, y otra que almacena el punto en el que se encuentra.
Estos valores, si son muchas unidades, se pueden usar como variables Array(de formación), y asignarle el número del jugador propietario de la unidad como valor Array.
Yo en otro detonador usé "Set Unidad = Archimago 0000 , es decir, un archimago que puse en el mapa.
Bien, vemos que dice "Set Unidad_posicion = (Position of Unidad)". Simple, ¿no? Le decimos que guarde el lugar en el que se encuentra la unidad en una variable, que se utiliza en un momentito.
Lo que sigue es seleccionar los árboles que estén a cierta distancia de la unidad, esto lo hacemos mediante un grupo de complementos, o sea, "Destructible - Pick every destructible within 300 of Unidad_posicion and do (Actions)", esto hace lo antes mencionado, seleccionar TODOS los destructibles dentro de un radio de 300(esto es variable) de la posicion de la Unidad.
Ahora en el bucle le ponemos "Destructible - Kill Picked destructible". Esto "mata" a os destructibles que estén dentro de ese radio. Usamos "Picked destructible", ya que lo estamos usando dentro de un grupo que para seleccionarlos usa "pick" por decirlo fácil, no es esta la mejor explicación pero como para que se den una idea a simple vista.
Por último, usamos una Custom Script para eliminar el punto almacenado en Unidad_posicion para evitar leaks.
La función en JASS es esta "call RemoveLocation(udg_Unidad_posicion)"
O sea: "call RemoveLocation(udg_NOMBREDELAVARIABLE)"
Listo
Ahora, esto mata a TODOS los destructibles en el área, pero sólo queremos que mate a los ARBOLES, por lo que simplemente le agregamos una pequeña condición:
Simplemente le decimos que el destructible debe ser un "Pared de árboles de verano", esto lo cambiamos de acuerdo a nuestro conjunto gráfico o destructible a derribar
Ahora por las dudas les dejo un mapa de ejemplo:
Bueno, acá termina el tuto cualquier cosa pregunten
Saludos!
Hoy les muestro un detonador bastante simple para que, cuando una unidad camina, tumbe los árboles a su paso.
En este tuto voy a usar como unidad al "Archimago", si éste tiene la habilidad "Aura de brillantez", tumbará los árboles a su paso. De lo contrario, no pasa nada
Veamos el deto:
Ahora vamos a explicarlo un poquito
En los acontecimientos vemos "Tiempo - Every 0.01 seconds of game time"
Esto hace que el detonador corra cada 0.01 segundos, este valor es a gusto, pueden usar 0.10 para que no gaste tanta memoria.
En condiciones tenemos una condición un poquito interesante (si no la usan seguido, este concepto les ayudará mucho para otros casos, igualmente es de lo más simple y lógico)
La condición dice "(Level of Aura de brillantez for Unidad) Mayor que 0"
Es bastante simple, pero por esta razón a muchos les cuesta hacer esta condición.
Lo que hace es verificar el nivel de habilidad de Aura de brillante de la unidad que va a derribar árboles. ¿Por qué establecer que el nivel de habilidad debe ser mayor que cero? Pues porque si el nivel de habilidad es 0, significa que la unidad no aprendió dicha habilidad, por lo tanto el detonador no se ejecutará
Esto lo uso mucho como reemplazo a una booleana que me gustaría que existiera, que sería mas o menos "Unit has ability"
Ahora en Acciones vemos una variable, vamos a explicar esto:
El detonados usa 2 variables, una que almacena la unidad que derriba los árboles, y otra que almacena el punto en el que se encuentra.
Estos valores, si son muchas unidades, se pueden usar como variables Array(de formación), y asignarle el número del jugador propietario de la unidad como valor Array.
Yo en otro detonador usé "Set Unidad = Archimago 0000
Bien, vemos que dice "Set Unidad_posicion = (Position of Unidad)". Simple, ¿no? Le decimos que guarde el lugar en el que se encuentra la unidad en una variable, que se utiliza en un momentito.
Lo que sigue es seleccionar los árboles que estén a cierta distancia de la unidad, esto lo hacemos mediante un grupo de complementos, o sea, "Destructible - Pick every destructible within 300 of Unidad_posicion and do (Actions)", esto hace lo antes mencionado, seleccionar TODOS los destructibles dentro de un radio de 300(esto es variable) de la posicion de la Unidad.
Ahora en el bucle le ponemos "Destructible - Kill Picked destructible". Esto "mata" a os destructibles que estén dentro de ese radio. Usamos "Picked destructible", ya que lo estamos usando dentro de un grupo que para seleccionarlos usa "pick" por decirlo fácil, no es esta la mejor explicación pero como para que se den una idea a simple vista.
Por último, usamos una Custom Script para eliminar el punto almacenado en Unidad_posicion para evitar leaks.
La función en JASS es esta "call RemoveLocation(udg_Unidad_posicion)"
O sea: "call RemoveLocation(udg_NOMBREDELAVARIABLE)"
Listo
Ahora, esto mata a TODOS los destructibles en el área, pero sólo queremos que mate a los ARBOLES, por lo que simplemente le agregamos una pequeña condición:
Simplemente le decimos que el destructible debe ser un "Pared de árboles de verano", esto lo cambiamos de acuerdo a nuestro conjunto gráfico o destructible a derribar
Ahora por las dudas les dejo un mapa de ejemplo:
Bueno, acá termina el tuto cualquier cosa pregunten
Saludos!