BuscarEntrar al ChatboxPortal del foroÍndiceSpellsRegistrarseConectarseGrupos de Usuarios
Eventos Actuales
¡ 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 : 2714
Reputación Reputación : 416
Monedas de oro : 8318
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/
Volver arriba Ir abajo
Sapphiron

avatar


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

Mensajes Mensajes : 1432
Reputación Reputación : 214
Monedas de oro : 12065
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:
Like a Star @ heavenReglas del foroLike a Star @ heaven
Like a Star @ heavenListado de TutorialesLike a Star @ heaven
Like a Star @ heavenConsultas del editor de mundosLike a Star @ heaven
Like a Star @ heaven Requisitos de Tutoriales y SpellsLike a Star @ heaven
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 : 318
Reputación Reputación : 19
Monedas de oro : 1155
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


Ahora yo soy el que tiene Estrés y Malestar por las Clases . . .
Ahora soy el que tiene que Sufrir , a mi me Vale un Piñón(######)


BAH
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
» La razón de porque no hay que hacer tronar los dedos

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