BuscarEntrar al ChatboxPortal del foroÍndiceSpellsRegistrarseConectarseGrupos de Usuarios
Eventos Actuales
No hay eventos actualmente
¡ Bienvenido Invitado!

Editar Perfil

Tus temas
Tus Mensajes ()

Enlaces rápidos








Comparte | .
 

 Hacer una unidad heroica

Ver el tema anterior Ver el tema siguiente Ir abajo 
AutorMensaje
Marcos_M

avatar


Barra de Salud : Su salud está al 100% - Este usuario no ha recibido infracciones

Mensajes Mensajes : 2457
Reputación Reputación : 381
Monedas de oro : 7516
Monedas de Platino : 0

Inventario :



Mensaje(#) Tema: Hacer una unidad heroica Lun Jul 11, 2016 9:21 pm

Buenos días, tardes, noches n_n

Como hace años que no subo ningún aporte al foro, al ver esto, supe que había que postearlo aquí para que cualquiera pueda usarlo. Todos los créditos van a leandrotp, el descubrió este asombroso truco.

Resumiendo el funcionamiento del sistema.

- Cuando transformas una unidad a un héroe 3 cosas suceden:
1_ Se otorgan los atributos y la unidad gana la habilidad para tener Habilidades de héroe('AHer').
2_ La unidad pierde las habilidades no permanentes y gana todas las habilidades de la nueva unidad.
3_ Se aplican las nuevas estadísticas de la unidad(vida, velocidad de movimiento).

Este sistema, intercepta la transformación en la primera etapa, y removiendo la habilidad, y "desmorfeamos" nuestra unidad, y al interrumpirla, los atributos y la habilidad 'AHer' permanecen.

Los efectos de este sistema sobre nuestra unidad son los siguientes:
- La unidad ahora tiene atributos. Por lo que puedes agregarle fuerza/agi/int, pero solo con libros
- La unidad puede subir de nivel como un héroe. Pero no absorbe experiencia
- La unidad hereda las habilidades del héroe al cual se quiso transformar
- La unidad hereda los atributos base de este héroe, y gana atributo por nivel de este héroe

Detalles importantes del sistema
- La unidad requiere tener la capacidad de usar objetos para que esto funcione
- La unidad no puede tener la habilidad Defender para que esto funcione
- En las constantes de juego, la vida por punto de fuerza, debe ser mayor a 1.
- Tengan en cuenta que todos los héroes por defecto tienen una defensa base de "-2" y por alguna razón, la defensa base de la unidad nueva será "-6" al hacerla heroica. O sea, aplica esta defensa base 3 veces sobre la unidad, antes de las bonificaciones de agilidad.


[jass]
function HeroicUnit_OnMorph takes nothing returns boolean
   local unit u = GetTriggerUnit()
   local trigger t = GetTriggeringTrigger()
   if GetTriggerEventId() == EVENT_UNIT_STATE_LIMIT then
       call DisableTrigger(t)
       call UnitRemoveAbility(u, udg_HeroicUnit_MorphID)
   elseif GetUnitTypeId(u) != udg_HeroicUnit_HeroeDummyID then
       call UnitAddAbility(u, udg_HeroicUnit_MorphID)
       call UnitAddAbility(u, udg_HeroicUnit_BonusID)
       call UnitMakeAbilityPermanent(u, true, udg_HeroicUnit_BonusID)
       call TriggerRegisterUnitStateEvent(t, u, UNIT_STATE_LIFE, GREATER_THAN, GetWidgetLife(u)+1.)
       call RemoveItem(UnitAddItemById(u, udg_HeroicUnit_ItemID))
   else
       call UnitAddAbility(u, udg_HeroicUnit_DetectorID)
   endif
   set t = null
   set u = null
   return false
endfunction

function HeroicUnit_UnitMakeHeroic takes unit u returns boolean
   local trigger t = CreateTrigger()
   local real hp = GetWidgetLife(u)
   local real mp = GetUnitState(u, UNIT_STATE_MANA)
   call SetWidgetLife(u, GetUnitState(u, UNIT_STATE_MAX_LIFE))
   call TriggerRegisterUnitEvent(t, u, EVENT_UNIT_ISSUED_ORDER)
   call TriggerAddCondition(t, Condition(function HeroicUnit_OnMorph))
   call UnitAddAbility(u, 'AInv')
   call UnitAddAbility(u, udg_HeroicUnit_DetectorID)
   call UnitAddAbility(u, udg_HeroicUnit_BonusID)
   call RemoveItem(UnitAddItemById(u, udg_HeroicUnit_ItemID))
   call UnitRemoveAbility(u, udg_HeroicUnit_BonusID)
   call SetUnitAnimation(u, "stand")
   call DestroyTrigger(t)
   set t = null
   return GetUnitAbilityLevel(u, 'AHer') > 0
endfunction[/jass]

[gui]HeroicUnit Configurables
   Acontecimientos
       Map initialization
   Condiciones
   Acciones
       Set HeroicUnit_BonusID = Objeto Bonificación estadísticas de héroe (Fuerza +1)
       Set HeroicUnit_DetectorID = Defender
       Set HeroicUnit_HeroeDummyID = Paladín
       Set HeroicUnit_ItemID = HeroicMorphTome
       Set HeroicUnit_MorphID = HeroicMorph
       -------- ----------- Creando variables ----------- --------
       Set HeroicUnit_Unidad = Ninguna unidad
[/gui]

[gui]MakeUnitHeroic
   Acontecimientos
   Condiciones
   Acciones
       Custom script:   call HeroicUnit_UnitMakeHeroic(udg_HeroicUnit_Unidad)
[/gui][/spoiler]

Para usarla simplemente deben configurar la variable HeroicUnit_Unidad y correr el detonador MakeUnitHeroic, de esta forma

[gui]Guia de uso
   Acontecimientos
   Condiciones
   Acciones
       Set HeroicUnit_Unidad = Ninguna unidad
       Detonador - Run MakeUnitHeroic (ignoring conditions)
[/gui]

Como toque final, también agregué una variación de la librería en la que puedes elegir la habilidad de transformación, así aprovechar una unidad con atributos base, atributos por nivel y capacidad de aprender habilidades.

[jass]function HeroicUnit_OnMorph takes nothing returns boolean
   local unit u = GetTriggerUnit()
   local trigger t = GetTriggeringTrigger()
   if GetTriggerEventId() == EVENT_UNIT_STATE_LIMIT then
       call DisableTrigger(t)
       call UnitRemoveAbility(u, udg_HeroicUnit_MorphID)
   elseif GetUnitTypeId(u) != udg_HeroicUnit_HeroeDummyID then
       call UnitAddAbility(u, udg_HeroicUnit_MorphID)
       //call UnitAddAbility(u, udg_HeroicUnit_BonusID)
       //call UnitMakeAbilityPermanent(u, true, udg_HeroicUnit_BonusID)
       call TriggerRegisterUnitStateEvent(t, u, UNIT_STATE_LIFE, GREATER_THAN, GetWidgetLife(u)+1.)
       call RemoveItem(UnitAddItemById(u, udg_HeroicUnit_ItemID))
   else
       call UnitAddAbility(u, udg_HeroicUnit_DetectorID)
   endif
   set t = null
   set u = null
   return false
endfunction

function HeroicUnit_UnitMakeHeroic takes unit u returns boolean
   local trigger t = CreateTrigger()
   local real hp = GetWidgetLife(u)
   local real mp = GetUnitState(u, UNIT_STATE_MANA)
   call SetWidgetLife(u, GetUnitState(u, UNIT_STATE_MAX_LIFE))
   call TriggerRegisterUnitEvent(t, u, EVENT_UNIT_ISSUED_ORDER)
   call TriggerAddCondition(t, Condition(function HeroicUnit_OnMorph))
   call UnitAddAbility(u, 'AInv')
   call UnitAddAbility(u, udg_HeroicUnit_DetectorID)
   call UnitAddAbility(u, udg_HeroicUnit_BonusID)
   call RemoveItem(UnitAddItemById(u, udg_HeroicUnit_ItemID))
   call UnitRemoveAbility(u, udg_HeroicUnit_BonusID)
   call SetUnitAnimation(u, "stand")
   call DestroyTrigger(t)
   set t = null
   return GetUnitAbilityLevel(u, 'AHer') > 0
endfunction[/jass]

[gui]HeroicUnit Variacion Configurables
   Acontecimientos
       Map initialization
   Condiciones
   Acciones
       Set HeroicUnit_DetectorID = Defender
       -------- ----------- Creando variables ----------- --------
       Set HeroicUnit_Unidad = Ninguna unidad
       Set HeroicUnit_MorphID = (Ability being cast)
       Set HeroicUnit_ItemID = (Item-type of (Last created item))
       Set HeroicUnit_HeroeDummyID = No unidad-tipo
[/gui]

[gui]MakeUnitHeroic Variacion
   Acontecimientos
   Condiciones
   Acciones
       Custom script:   call HeroicUnit_UnitMakeHeroic(udg_HeroicUnit_Unidad)
[/gui]

Son lo mismo prácticamente. NO USEN AMBOS AL MISMO TIEMPO, SE CRUZARAN LOS SISTEMAS.

Espero que les haya gustado, y se diviertan con esta locura .3

edit: aqui el link
http://www.epicwar.com/maps/263386/


No entiendes lo que digo cuando comento??
http://www.worldofeditors.net/t184-glosario-de-terminos-en-we

Último spell de JASS:Spellpack Cazador de Sombras
Último spell de GUI:Spellpack Mago Sanguinario
Último Héroe:Skorp, el Escorpión Gigante

Invoker Wars
Volver arriba Ir abajo
Sapphiron

avatar


Barra de Salud : Este usuario es invulnerable ¿Será que es fiel a las normas?

Mensajes Mensajes : 1430
Reputación Reputación : 208
Monedas de oro : 12058
Monedas de Platino : 0

Inventario :
Frostmourne Escudo lunar Armadura Lunar Avanzada
Diamante Encantado Anillo Sagrado Libro de Leyendas

Mensaje(#) Tema: Re: Hacer una unidad heroica Mar Jul 12, 2016 12:46 am

Realmente este tipo descubrió la polvora en algún modo. Buen aporte. Podría resultar útil. (y)


Lets take a moment to break the ice, so my intentions are known..


¡Hola Invitado!
Tal vez los siguientes vínculos puedan interesante:
:star:Reglas del foro:star:
:star:Listado de Tutoriales:star:
:star:Consultas del editor de mundos:star:
Like a Star @ heaven Requisitos de Tutoriales y Spells:star:
Volver arriba Ir abajo
http://www.worldofeditors.net
armando368
Caballero
avatar


Barra de Salud : Su salud está al 80% - Este usuario ha recibido una infracción

Mensajes Mensajes : 289
Reputación Reputación : 15
Monedas de oro : 1092
Monedas de Platino : 0

Inventario :



Mensaje(#) Tema: Re: Hacer una unidad heroica Dom Oct 30, 2016 12:17 am

Eso es como hacer un mapa dios del Olimpo Shocked


HOLA VOLVI ! ! !
Como los Viejos tiempos eh ?

{Username}, estas leyendo esto -.- , tanta lectura ? No tienes nada mejor que hacer ?
Volver arriba Ir abajo
Contenido patrocinado




Mensaje(#) Tema: Re: Hacer una unidad heroica

Volver arriba Ir abajo
 

Hacer una unidad heroica

Ver el tema anterior Ver el tema siguiente Volver arriba 
Página 1 de 1.

 Temas similares

-
» [Tutorial] ¿Como hacer que la cámara siga a una unidad?
» LA UNIDAD 9
» [Tutorial] Convertir una Unidad a Héroe
» Ayuda!!! como hacer saltar a una unidad
» Como crear una faccion des de zero ? Como canviar la forma de los asentamientos en el mapa de campaña? Como hacer para que una unidad solo se pueda reclutar en una ciudad especifica como en el bellum crucis?

Permisos de este foro:No puedes responder a temas en este foro.
Warcraft III - WorldEditor :: Academia :: Area GUI :: Sistemas-