BuscarEntrar al ChatboxPortal del foroÍndiceSpellsRegistrarseConectarseGrupos de Usuarios
Eventos Actuales
¡ Bienvenido Invitado!

Editar Perfil

Tus temas
Tus Mensajes ()

Enlaces rápidos








Comparte | .
 

 [Libreria] Extra Damage by Angelcraft y Distor •

Ver el tema anterior Ver el tema siguiente Ir abajo 
AutorMensaje
angelcraft
Soldado
avatar


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

Mensajes Mensajes : 80
Reputación Reputación : 14
Monedas de oro : 256


Inventario :



Mensaje(#) Tema: [Libreria] Extra Damage by Angelcraft y Distor • Miér Ago 07, 2013 1:50 am

Derechos de autor:
El autor original de este aporte es: Distor
Del sitio: http://worldedit.foroactivo.com/

El autor de este material tiene todo el derecho a pedir su remoción tanto al creador del tema como a algún moderador, ya sea para que éste mismo autor lo postee o directamente sea removido de la página.
Bueno como el nombre lo dice este post es un aporte de una librería en paralelo de la librería de distor Librería UnitAddDamage (Basándome en este librería en jass), usando en mi caso Jass y vJass mixto, de la cual el sistema consiste en aumentar el ataque de una unidad.

Nota: La descripción por Distor se encuentra en este enlace: http://worldedit.foroactivo.com/t5788-libreriaunitadddamage Y la de mi parte aqui:

Citación :
[Libreria] Extra Damage

Realizado por Distor y Angelos
- Este sistema simplemente aumenta daño a unidad máximo de 9999. Solo es un ejemplo de utilización de otros codeos en vJass.


- El sistema no acepta valores negativos y valores nullos de unidad, ademas
no provocara error por superar el limite de 9999 de daño.

* function UnitAddDamage takes unit u, integer damage returns nothing
 - Otorga una determinada cantidad de daño a una unidad,
   esta funcion es como un set ya que setea el daño que se
   otroga.  
 - Si se pone 0, entonces todas las habilidades que aumenta daño serán Eliminadas de la unidad.  


* function GetUnitAddDamage takes unit u returns integer
 - Obtiene el daño otorgado a una unidad.    

Nota: Si se quiere aumentar daño puede agregarse otra habilidad
     solo desmarque las "//" de las 4 lineas donde dice
     //Un id extra de spell de damage 10000-90000:
     - //public constant integer DMGx10000 = 'A005'
     - //call AbilityPreload(DMGx10000)
     - //! runtextmacro DMGxFunction("DAx_DMGx10000","10000")
     - //set n = n + GetUnitAbilityLevel(u,DAx_DMGx1000)*10000

Como verán solo se necesita de UnitAddDamage(u,damage) para aumentar daño a una unidad, y GetUnitAddDamage(u) para obtener el daño obtenido por una unidad mediante el sistema.
Nota: Esta librería esta trabajando con código mixto, textmacro y static if. (Espero que esto no sea muy confuso, por mi parte no lo quise hacer demasiado simplificado, por que seria un dolor de cabeza entenderlo ya que requiere de otros tipos de parámetros... XD)

El código del sistema:

[jass] //-Distor- Libreria][UnitAddDamage http://worldedit.foroactivo.com/t5788-libreriaunitadddamage
//*Angelos* [Libreria] Extra Damage
//
//===========================================================================
//AddAttack: Realizado por Distor y Angelos
//- Este sistema simplemente aumenta daño a unidad maximo de 9999. Solo es un
//ejemplo de utilizacion de otros codeos en vJass.
//
//- El sistema no acepta valores negativos y valores nullos de unidad, ademas
//no provocara error por superar el limite de 9999 de daño.
//
//* function UnitAddDamage takes unit u, integer damage returns nothing
//  - Otorga una determinada cantidad de daño a una unidad,
//    esta funcion es como un set ya que setea el daño que se
//    otroga.  
//  - Si se pone 0, entonces todas las habilidades que aumenta daño seran
//    Eliminadas de la unidad.  
//* function GetUnitAddDamage takes unit u returns integer
//  - Obtiene el daño otrogado a una unidad.      
//
//Nota: Si se quiere aumentar daño puede agregarse otra habilidad
//      solo desmarque las "//" de las 4 lineas donde dice
//      //Un id extra de spell de damage 10000-90000:
//      - //public constant integer DMGx10000 = 'A005'
//      - //call AbilityPreload(DMGx10000)
//      - //! runtextmacro DMGxFunction("DAx_DMGx10000","10000")
//      - //set n = n + GetUnitAbilityLevel(u,DAx_DMGx1000)*10000
//===========================================================================
scope DAx initializer Init

globals
   //Un id extra de spell de damage 10000-90000:
   //public constant integer DMGx10000 = 'A005'
   
   public constant integer DMGx1000 = 'A004' //El ID del spell de damage 1000-9000
   public constant integer DMGx100 = 'A003' //El ID del spell de damage 100-900
   public constant integer DMGx10 = 'A002' //El ID del spell de damage 10-90
   public constant integer DMGx1 = 'A001' //El ID del spell de damage 1-9

//Existe una funcion en Libreria que contenga un precargador de habilidades,
//si no ponga falso
   private constant boolean Preload_Ability = true
endglobals
//===========================================================================
private function Init takes nothing returns nothing
   //Si Preload_Ability es verdadero funciona esta linea de codigo
   static if Preload_Ability then
   //Precargar las Abilidades
   //Si existe una funciom que precarga habilidades con diferente nombre a AbilityPreload
   //puede reemplazarlo por ese nombre.
       //Un id extra de spell de damage 10000-90000:
       //call AbilityPreload(DMGx10000)
       
       call AbilityPreload(DMGx1000)
       call AbilityPreload(DMGx100)
       call AbilityPreload(DMGx10)
       call AbilityPreload(DMGx1)
   endif
endfunction

endscope

//Runtextmacro que engloba las operaciones para aumentar el daño a una unidad
//! textmacro DMGxFunction takes SpellID_DMGx, Unidad_Medicion
   set var_medicion = 0
   if damage >= $Unidad_Medicion$ then
       set var_medicion = damage/$Unidad_Medicion$
       set damage = ModuloInteger(damage,$Unidad_Medicion$)
   endif
   
   if GetUnitAbilityLevel(u,$SpellID_DMGx$) < 1 and var_medicion >= 1 then
       call UnitAddAbility(u,$SpellID_DMGx$)
       call UnitMakeAbilityPermanent(u,true,$SpellID_DMGx$)
   elseif GetUnitAbilityLevel(u,$SpellID_DMGx$) > 0 and var_medicion < 1 then
       call UnitMakeAbilityPermanent(u,false,$SpellID_DMGx$)
       call UnitRemoveAbility(u,$SpellID_DMGx$)
   endif
   call SetUnitAbilityLevel(u,$SpellID_DMGx$,var_medicion)
//! endtextmacro

function UnitAddDamage takes unit u, integer damage returns nothing
   local integer var_medicion
   if damage < 0 or u == null then
       return
   endif
   //Este algoritmo es del mas grande al mas pequeño
   //Tiene que seguirse este orden si se quiere agregar otro valor
   //Un id extra de spell de damage 10000-90000:
   // //! runtextmacro DMGxFunction("DAx_DMGx10000","10000")
   
   //! runtextmacro DMGxFunction("DAx_DMGx1000","1000")
   //! runtextmacro DMGxFunction("DAx_DMGx100","100")
   //! runtextmacro DMGxFunction("DAx_DMGx10","10")
   //! runtextmacro DMGxFunction("DAx_DMGx1","1")
endfunction

function GetUnitAddDamage takes unit u returns integer
   local integer n = 0
   if u == null then
       return 0
   else
       //Un id extra de spell de damage 10000-90000:
       //set n = n + GetUnitAbilityLevel(u,DAx_DMGx1000)*10000
     
       set n = n + GetUnitAbilityLevel(u,DAx_DMGx1000)*1000
       set n = n + GetUnitAbilityLevel(u,DAx_DMGx100)*100
       set n = n + GetUnitAbilityLevel(u,DAx_DMGx10)*10
       set n = n + GetUnitAbilityLevel(u,DAx_DMGx1)
       return n
   endif
endfunction [/jass]


Librería adicional:

[jass]//*Angelos*
library CustomPreload

//Precargar Unidades
function UnitPreload takes integer unitID returns nothing
   call RemoveUnit(CreateUnit(Player(15), unitID, 0, 0, 0))
endfunction

//Precargar Habilidad
globals
   private unit PreloadUnit = null
endglobals

function AbilityPreload takes integer abilId returns nothing
   call UnitAddAbility(PreloadUnit, abilId)
   call UnitRemoveAbility(PreloadUnit, abilId)
endfunction

private struct Init extends array
   private static method onInit takes nothing returns nothing
       set PreloadUnit = CreateUnit(Player(15), 'zsmc', 0., 0., 0.)
       call UnitApplyTimedLife(PreloadUnit, 0, .001)
       call ShowUnit(PreloadUnit, false)
       call AbilityPreload('Aloc')
   endmethod
endstruct

endlibrary
//*Angelos*[/jass]
- Mapa test ejemplo utilizando el util Enrage del Ursar Warrior del Dota:
Citación :
Enrage

Cuando es activado, su daño se incrementa segun la vida que el tenga.

Nivel 1 - 4% de la vida de Ulfsaar`s convertido en daño.
Nivel 2 - 5% de la vida de Ulfsaar`s convertido en daño.
Nivel 3 - 6% de la vida de Ulfsaar`s convertido en daño.

Cooldown: 25 segundos.
:descargar: 
http://www.epicwar.com/maps/232018/


Esta librería paralela lo hago simplemente como prueba y testeo de nuevas funciones que se pueden utilizar en librerías mixtas, (y dar conocer un poco del mundo del vJass y Jass mixto) cualquier consulta o duda pueden comentar. Cool 
Saludos...


Última edición por angelcraft el Miér Ago 07, 2013 3:30 pm, editado 1 vez
Volver arriba Ir abajo
Distor
Peón
avatar


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

Mensajes Mensajes : 41
Reputación Reputación : 8
Monedas de oro : 244


Inventario :



Mensaje(#) Tema: Re: [Libreria] Extra Damage by Angelcraft y Distor • Miér Ago 07, 2013 2:02 am

Esta copado Very Happy gracias por nombrarme.
Saludos
Volver arriba Ir abajo
MuSe

avatar


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

Mensajes Mensajes : 210
Reputación Reputación : 43
Monedas de oro : 2576
Monedas de Platino : 5

Inventario :



Mensaje(#) Tema: Re: [Libreria] Extra Damage by Angelcraft y Distor • Sáb Ago 10, 2013 12:48 am

Very Happy  Está muy bueno.

Sencillo y fácil de entender, por allí ya me diste algunas pautas para entender los textmacros Very Happy.

Buen aporte Angel. Wink

Saludos.
Volver arriba Ir abajo
Trigger.edge

avatar


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

Mensajes Mensajes : 971
Reputación Reputación : 103
Monedas de oro : 1224
Monedas de Platino : 0

Inventario :
Cetro del Rey Armadura Mágica Daga Mística


Mensaje(#) Tema: Re: [Libreria] Extra Damage by Angelcraft y Distor • Miér Ago 13, 2014 12:34 pm

Me parece interesante y muy oportuno ya que estaba trabajando en algo similar... Gracias angelcraft y distor  Wink 


Volver arriba Ir abajo
Contenido patrocinado




Mensaje(#) Tema: Re: [Libreria] Extra Damage by Angelcraft y Distor •

Volver arriba Ir abajo
 

[Libreria] Extra Damage by Angelcraft y Distor •

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

 Temas similares

-
» HORARIO DE LIBRERIA ALEXANDRIA
» instalando el Mod 69 extra
» Libreria de Plataformas
» Libreria especial de plataformas + tutorial!
» kof-extra UM final version

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