Foro especializado en Warcraft III y su editor
 
BuscarEntrar al ChatboxPortal del foroÍndiceSpellsRegistrarseConectarse
Eventos Actuales
¡ Bienvenido Invitado !

Editar Perfil

Tus temas
Tus Mensajes ()

Enlaces rápidos








Comparte
 

 And now... Buffs [EXTENSION GUI]

Ver el tema anterior Ver el tema siguiente Ir abajo 
Ir a la página : Precedente  1, 2
AutorMensaje
Marcos_M

Marcos_M


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

Mensajes Mensajes : 3317
Reputación Reputación : 590
Monedas de oro : 10330
Monedas de Platino : 0 And now... Buffs [EXTENSION GUI] - Página 2 Empty

Inventario :
And now... Buffs [EXTENSION GUI] - Página 2 Empysl10 And now... Buffs [EXTENSION GUI] - Página 2 Empysl10 And now... Buffs [EXTENSION GUI] - Página 2 Empysl10
And now... Buffs [EXTENSION GUI] - Página 2 Empysl10 And now... Buffs [EXTENSION GUI] - Página 2 Empysl10 And now... Buffs [EXTENSION GUI] - Página 2 Empysl10

And now... Buffs [EXTENSION GUI] - Página 2 Empty
Mensaje(#) Tema: And now... Buffs [EXTENSION GUI] And now... Buffs [EXTENSION GUI] - Página 2 Clock10Jue Oct 24, 2013 9:07 pm

Recuerdo del primer mensaje :

Librería Buffs, espero les guste .3

Código:
[jass]library Buffs requires optional MS, optional AS, optional AM, optional AD, optional MP, optional Stun, optional Life, optional Mana, optional DR, optional DC, optional RM
// By Marcos_M
// Agradecimientos a MuSe por librería Slow que sirvió de base
// Y a Sauron por ser ayudador y aportar el sistema de daño

// Versión 1.2

///////////////////////////////////////////////////////////////////////////
// Changelog                                                             //
//                                                                       //
// 1.0  -Publicado                                                       //
// 1.1  -Agregado 2 variables booleanas al struct base                   //
//      negative(implica si es un buff negativo o positivo)              //
//      nonpurgable(si es true, este buff no puede removerse)            //
//      -Agregada la función RemoveBuffs takes unit u, boolean negatives //
//      Remueve los buffs positivos o negativos de la unidad indicada    //
//      -Agregado buff "RM"(Regeneración de maná en porcentaje)          //
//      -Bugs arreglados..                                               //
// 1.2  -Librerías RM, Life y Mana corregidas                            //
//      -Bugs arreglados..                                               //
///////////////////////////////////////////////////////////////////////////

/*  El funcionamiento de esta librería es peculiar, está hecha por y para mí(ya que yo la usaré :_ )
Así que hay cosas que DEBEN ser así.

    Los buffs que permite son los siguientes

        AS (Velocidad de ataque)
        MS (Velocidad de movimiento)
        AM (Modificador de ataque[es en base a porcentaje])
        AD (Modificador de ataque[en base a número entero])
        MP (Probabilidad de fallar)
        MR (Resistencia mágica)
        DR (Reducción de daño recibido)
        DC (Aumento de daño causado)
        RM (Regeneración de maná en porcentaje)
        Armor (Modificador de armadura[en base a número entero])
        Damage (Daño periódico[incluye curaciones si se coloca valor negativo])
        ManaBurn (Quemar maná)
        Life (Modificador de vida máxima)
        Mana (Modificador de maná máximo)
        
    Si se les ocurre algo más son libres de crearlo y agregarlo(animation speed o turn speed?)
        
*/

    globals
    
        private hashtable HashTable = InitHashtable()
        
    endglobals
    
    function GetBuffAbil takes integer buff1 returns integer
        return LoadInteger(HashTable, buff1, 0)
    endfunction
    
    //////////////////// Funciones del sistema y struct Base /////////////////////////
    
    function GetLoss takes unit u, string buffType returns integer
        return LoadInteger(HashTable, GetHandleId(u), StringHash(buffType))
    endfunction

///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
    
    function GetBonus takes unit u, string buffType returns integer
        return -LoadInteger(HashTable, GetHandleId(u), StringHash(buffType))
    endfunction
    
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////

    struct Buff
        
        integer INS
        unit target
        integer buff1
        integer array percentage[14]
        real intervalo
        real duration
        string array BuffType[14]
        integer BuffUseds
        timer t
        boolean negative = true
        boolean nonpurgable
        integer abil
        
    ///////////////////////////////////////////////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////////////////////////////////////////////
        
        method GetABuff takes unit u returns integer
            local integer n
            local integer I = -8192
            local integer Id = GetHandleId(u)
            local integer i = LoadInteger(HashTable, Id, 0)
            local Buff b
        
            loop
            
                set b = LoadInteger(HashTable, Id, i)
                    
                if b.buff1 != I then
                
                    set n = I
                    exitwhen true
                    
                endif
            
                set i = i - 1
                set I = I + 1
                
            endloop
            
            return n
        endmethod
 
    ///////////////////////////////////////////////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////////////////////////////////////////////
 
        method ApplyDamage takes unit caster, unit target, real damage, boolean pureDamage returns nothing
            if damage >= 0 then
                                
                if pureDamage then
                    call UnitDamageTarget(caster, target, damage, true, false, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNIVERSAL, null)
                else
                    call UnitDamageTarget(caster, target, damage, true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_MAGIC, null)
                endif
                            
            else
                            
                call SetWidgetLife(target, GetWidgetLife(target) - damage)
                        
            endif
        endmethod
        
    ///////////////////////////////////////////////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////////////////////////////////////////////
        
        method ApplyManaBurn takes unit u, real damage returns nothing
            
            call SetUnitState(u, UNIT_STATE_MANA, GetUnitState(u, UNIT_STATE_MANA) - damage)
            
        endmethod
        
    ///////////////////////////////////////////////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////////////////////////////////////////////
        
        method Apply takes unit u, integer percentage, string buffType returns nothing
            local integer n
            if .negative then
                set n = percentage
            else
                set n = percentage*-1
            endif
            
            /**/if buffType == "AS" then
                static if LIBRARY_AS then
                    call ApplyAS(u, n)
                else
                    call BJDebugMsg("BUFF_INEXISTENTE")
                endif
            elseif buffType == "MS" then                    
                static if LIBRARY_MS then
                    call ApplyMS(u, n)
                else
                    call BJDebugMsg("BUFF_INEXISTENTE")
                endif
            elseif buffType == "AM" then
                static if LIBRARY_AM then
                    call ApplyAM(u, n)
                else
                    call BJDebugMsg("BUFF_INEXISTENTE")
                endif
            elseif buffType == "AD" then
                static if LIBRARY_AD then
                    call ApplyAD(u, n)
                else
                    call BJDebugMsg("BUFF_INEXISTENTE")
                endif
            elseif buffType == "MP" then
                static if LIBRARY_MP then
                    call ApplyMP(u, n)
                else
                    call BJDebugMsg("BUFF_INEXISTENTE")
                endif
            elseif buffType == "MR" then
                static if LIBRARY_MR then
                    call ApplyMR(u, n)
                else
                    call BJDebugMsg("BUFF_INEXISTENTE")
                endif
            /*elseif buffType == "DR" then
                static if LIBRARY_DR then
                    call ApplyDR(u, n)
                else
                    call BJDebugMsg("BUFF_INEXISTENTE")
                endif
            elseif buffType == "DC" then
                static if LIBRARY_DC then
                    call ApplyDC(u, n)
                else
                    call BJDebugMsg("BUFF_INEXISTENTE")
                endif*/
            elseif buffType == "Armor" then
                static if LIBRARY_Armor then
                    call ApplyArmor(u, n)
                else
                    call BJDebugMsg("BUFF_INEXISTENTE")
                endif
            elseif buffType == "Life" then
                static if LIBRARY_Life then
                    call ApplyLife(u, n)
                else
                    call BJDebugMsg("BUFF_INEXISTENTE")
                endif
            elseif buffType == "Mana" then
                static if LIBRARY_Mana then
                    call ApplyMana(u, n)
                else
                    call BJDebugMsg("BUFF_INEXISTENTE")
                endif
            elseif buffType == "RM" then
                static if LIBRARY_RM then
                    call ApplyRM(u, n)
                else
                    call BJDebugMsg("BUFF_INEXISTENTE")
                endif
            else
                call BJDebugMsg("BUFF_INEXISTENTE")
            endif
            
        endmethod
        
        static method create takes integer buff1, boolean negative, boolean nonpurgable returns thistype
            local thistype this = thistype.allocate()
            
            set this.buff1 = buff1
            set this.negative = negative
            set this.nonpurgable = nonpurgable
            set this.abil = GetBuffAbil(buff1)
            
            return this
        endmethod
        
        stub method onApply takes nothing returns nothing
        
        endmethod
        
        stub method onPeriodic takes nothing returns nothing
            
        endmethod
        
        stub method onRemove takes nothing returns nothing
            
        endmethod
        
        stub method onRefresh takes nothing returns nothing
            
        endmethod
        
        method destroy takes nothing returns nothing
            local integer n = 0
            call UnitMakeAbilityPermanent(.target,false,.abil)
            call UnitRemoveAbility(.target,.abil)
            call UnitRemoveAbility(.target,.buff1)
            
            loop
                set n = n + 1
                
                set .BuffType[n] = ""
                set .percentage[n] = 0
            
                exitwhen n == .BuffUseds
            endloop
            
            set .BuffUseds = 0
            set .t = null
            set .target = null
            set .buff1 = 0
            set .abil = 0
            
            call this.deallocate()
        endmethod
        
    endstruct
    
    
    
    ///////////////////////////////////////////////////////////////////////////////////////
    //////////// CODIGO DEL SISTEMA. NO TOCAR SI NO SABES LO QUE HACES ////////////////////
    ///////////////////////////////////////////////////////////////////////////////////////
    
    private function Timer takes nothing returns nothing
        local timer t = GetExpiredTimer()
        local integer Id = GetHandleId(t)
        local Buff whichBuff = LoadInteger(HashTable, Id, 0)
        local integer n = 0
        local integer gL
        local integer int
        
        loop
            set n = n + 1
                
            call SaveInteger(HashTable, GetHandleId(whichBuff.target), StringHash(whichBuff.BuffType[n]), GetLoss(whichBuff.target, whichBuff.BuffType[n]) - whichBuff.percentage[n])
            
            exitwhen n == whichBuff.BuffUseds
        endloop
        
        set n = 0
        
        call whichBuff.onPeriodic()
        
        loop
            set n = n + 1
                
                if whichBuff.negative then
                    set gL = GetLoss(whichBuff.target,whichBuff.BuffType[n]) + whichBuff.percentage[n]
                else
                    set gL = GetLoss(whichBuff.target,whichBuff.BuffType[n]) - whichBuff.percentage[n]
                endif
                
                    call SaveInteger(HashTable, GetHandleId(whichBuff.target), StringHash(whichBuff.BuffType[n]), gL)
                    call whichBuff.Apply(whichBuff.target, gL, whichBuff.BuffType[n])
            
            exitwhen n >= whichBuff.BuffUseds
        endloop
        
        set n = 0
        
        if GetWidgetLife(whichBuff.target) <= 0.505 then
            set whichBuff.duration = 0.00
        else
            set whichBuff.duration = whichBuff.duration - whichBuff.intervalo
        endif
        
        if whichBuff.duration <= 0.00 then
            
            loop
                set n = n + 1
                
                if whichBuff.negative then
                    set int = GetLoss(whichBuff.target,whichBuff.BuffType[n]) - whichBuff.percentage[n]
                else
                    set int = GetLoss(whichBuff.target,whichBuff.BuffType[n]) + whichBuff.percentage[n]
                endif
                
                    call SaveInteger(HashTable, GetHandleId(whichBuff.target), StringHash(whichBuff.BuffType[n]), int)
                    call whichBuff.Apply(whichBuff.target, int, whichBuff.BuffType[n])
                
                exitwhen n >= whichBuff.BuffUseds
            endloop
            
            call whichBuff.onRemove()
            
            call RemoveSavedInteger(HashTable, GetHandleId(whichBuff.target), whichBuff.INS)
            
            call whichBuff.destroy()
            
            call FlushChildHashtable(HashTable, Id)
            
            
            call PauseTimer(t)
            call DestroyTimer(t)
        endif
        
            set t = null
    endfunction
    
    function HaveBuff takes unit u, integer whichBuff returns boolean
        local integer Id = GetHandleId(u)
        local integer i = LoadInteger(HashTable, Id, 0)
        local Buff b
        local boolean success = false
        
        loop
            
            set b = LoadInteger(HashTable, Id, i)
                
            if b.buff1 == whichBuff then
                
                set success = true
                
            endif
            
            set i = i - 1
            exitwhen i == 0 or success
        endloop
        
        return success
    endfunction
    
    function RemoveAllBuffs takes unit u returns nothing
        local integer Id = GetHandleId(u)
        local integer i = LoadInteger(HashTable, Id, 0)
        local Buff b
        
        loop
            
            set b = LoadInteger(HashTable, Id, i)
                
            if not(b.nonpurgable) then
                set b.duration = 0.00
                call TimerStart(b.t, 0.0,false, function Timer)
            endif
            set i = i - 1
            exitwhen i == 0
        endloop
        
    endfunction
    
    function RemoveBuffs takes unit u, boolean negatives returns nothing
        local integer Id = GetHandleId(u)
        local integer i = LoadInteger(HashTable, Id, 0)
        local Buff b
        
        loop
            
            set b = LoadInteger(HashTable, Id, i)
                
            if not(b.nonpurgable) and b.negative == negatives then
                set b.duration = 0.00
                call TimerStart(b.t, 0.0,false, function Timer)
            endif
            set i = i - 1
            exitwhen i == 0
        endloop
        
    
    endfunction
    
    function RemoveBuff takes unit u, integer whichBuff returns boolean
        local integer Id = GetHandleId(u)
        local integer i = LoadInteger(HashTable, Id, 0)
        local Buff b
        local boolean success = false
        
        loop
            
            set b = LoadInteger(HashTable, Id, i)
                
            if b.buff1 == whichBuff and not(b.nonpurgable) then
                
                set b.duration = 0.00
                call TimerStart(b.t, 0.0,false, function Timer)
                set success = true
                
            endif
            
            set i = i - 1
            exitwhen i == 0 or success
        endloop
                
        return success
    endfunction
    
    function AddBuff takes unit u, real intervalo, real duration, Buff whichBuff returns boolean
        local integer IdU = GetHandleId(u)
        local integer i = LoadInteger(HashTable, IdU, 0)
        local integer n = 0
        local timer t
        local integer Id
        local Buff b
        local integer int
        
        local boolean success = true
        
        loop
            exitwhen i == 0
            set b = LoadInteger(HashTable, IdU, i)
            if whichBuff.buff1 == b.buff1 then
                set success = false
                
                loop
                    set n = n + 1
                    
                    if b.negative then
                        call SaveInteger(HashTable, IdU, StringHash(b.BuffType[n]), GetLoss(u, b.BuffType[n]) - b.percentage[n])
                    else
                        call SaveInteger(HashTable, IdU, StringHash(b.BuffType[n]), GetLoss(u, b.BuffType[n]) + b.percentage[n])
                    endif
                    
                    exitwhen n >= b.BuffUseds
                endloop
                
                set n = 0
                call b.onRefresh()
                
                loop
                    set n = n + 1
                    
                    if b.negative then
                        set int = GetLoss(u, b.BuffType[n]) + b.percentage[n]
                    else
                        set int = GetLoss(u, b.BuffType[n]) - b.percentage[n]
                    endif
                    
                        call SaveInteger(HashTable, IdU, StringHash(b.BuffType[n]), int)
                        call b.Apply(b.target, int, b.BuffType[n])
                    
                    exitwhen n >= b.BuffUseds
                endloop
                
                if duration > b.duration then
                    set b.duration = duration
                endif
                
            endif
            
            set i = i - 1
            
        endloop    
        
        set i = LoadInteger(HashTable, IdU, 0) + 1
        
        if success then
            set t = CreateTimer()
            set Id = GetHandleId(t)
            
            call UnitAddAbility(u,whichBuff.abil)
            call UnitMakeAbilityPermanent(u,true,whichBuff.abil)
            set whichBuff.target = u
            set whichBuff.duration = duration
            set whichBuff.intervalo = intervalo
            set whichBuff.t = t
            set whichBuff.INS = i
            
            call SaveInteger(HashTable, Id, 0, whichBuff)
            
            call whichBuff.onApply()
            
            loop
                set n = n + 1
                
                if whichBuff.negative then
                    set int = GetLoss(u, whichBuff.BuffType[n]) + whichBuff.percentage[n]
                else
                    set int = GetLoss(u, whichBuff.BuffType[n]) - whichBuff.percentage[n]
                endif
                    call SaveInteger(HashTable, IdU, StringHash(whichBuff.BuffType[n]), int)
                    call whichBuff.Apply(whichBuff.target, int, whichBuff.BuffType[n])
                
                exitwhen n == whichBuff.BuffUseds
            endloop
            
            
            call SaveInteger(HashTable, IdU, i, whichBuff)
            call SaveInteger(HashTable, IdU, 0, i)
            
            call TimerStart(t, intervalo, true, function Timer)
            
            set t = null
        else
            
            call whichBuff.destroy()
            
        endif
        
        return success
    endfunction

    function RegisterBuff takes integer buff1, integer abil returns nothing
        call SaveInteger(HashTable,buff1,0,abil)
    endfunction
    
endlibrary[/jass]



Funciones que ofrece e instrucciones de uso:

Esta librería contiene las siguientes funciones
[jass]    function GetLoss takes unit u, string buffType returns integer
   
   Esto devuelve el porcentaje o cantidad(depende del buff) negativa que la unidad posee
   Devuelve valor negativo cuando el porcentaje o cantidad es positivo. Solo el otorgado por la librería
   
   ////////////////////////////////////////////////////////////////////////////////////////////////////////////
   
   function GetBonus takes unit u, string buffType returns integer

   Esto devuelve el porcentaje o cantidad(depende del buff) positiva que la unidad posee
   Devuelve valor negativo cuando el porcentaje o cantidad es negativa. Solo el otorgado por la librería
   
   ////////////////////////////////////////////////////////////////////////////////////////////////////////////
   
   function HaveBuff takes unit u, integer whichBuff returns boolean
   
   Colocamos la unidad y el ID del buff, y nos devolverá si la unidad contiene ese buff mediante la librería
   
   ////////////////////////////////////////////////////////////////////////////////////////////////////////////
   
   function RemoveAllBuffs takes unit u returns nothing

   Remueve todos los buffs colocados por la librería de la unidad colocada
   
   ////////////////////////////////////////////////////////////////////////////////////////////////////////////
   
   function RemoveBuff takes unit u, integer whichBuff returns boolean

   Colocas unidad y el ID del buff y lo remueve de la unidad. Devuelve verdadero si el buff le fue removido y falso si no tenía el buff
   
   ////////////////////////////////////////////////////////////////////////////////////////////////////////////
   
   function RemoveBuffs takes unit u, boolean negatives returns nothing
   
   Remueve todos los buffs negativos o positivos, depende de la booleana, de una unidad.
   
   ////////////////////////////////////////////////////////////////////////////////////////////////////////////
   
   function AddBuff takes unit u, real intervalo, real duration, Buff whichBuff returns boolean
   
   Esta es la función para agregar buffs. Toma una unidad, el tiempo entre intervalo, la duración total
   y el struct que otorga el buff
   [/jass]

Instrucciones de uso:
[jass]La librería viene con un struct base llamado Buff

Este usa las siguientes variables

   integer INS ==> Esta variable define la instancia de buff sobre la unidad
   unit target ==> Esta variable define a la unidad que recibe el buff(Se setea en AddBuff)
   integer buff1 ==> Esta variable es el ID del buff que colocaremos
   integer array percentage[14] ==> El porcentaje o cantidad del modificador de cada buff(el array se asocia con BuffType)
   real intervalo ==> Es el intervalo entre períodos(Se setea en AddBuff)
   real duration ==> La duración del buff hasta acabarse(Se setea en AddBuff)
   effect e ==> El efecto que se agrega a la unidad objetivo(Se crea solo al llamar a AddBuff y depende del ID del buff)
   string attachPoint ==> Punto de attachment a donde se agrega el efecto("origin", "chest", "overhead", etc.)
   string array BuffType[14] ==> El tipo de Buff(el array [0] no se utiliza, y las cadenas usadas son
                                   "MS", "AS", "AM", "MP", "AD", "MR", "Life", "Mana", "Armor", "DR", "DC"
                                   [Para DPS, ManaBurns y Stuns se crea otro struct, lo vemos más adelante])
   
   integer BuffUseds ==> La cantidad de modificadores usados por el struct
   timer t ==> Este es el timer que el buff usa(Se setea solo al llamar a AddBuff)
   boolean negative ==> True, y el  buff es negativo, false, y el buff es positivo
   boolean nonpurgable ==> True y el buff no podrá ser removido de la unidad
   
Y contiene los siguientes métodos

   method GetABuff takes unit u returns integer

   Este método es para cuando agregamos un buff pero no tenemos rawcode para el, crea un número y se lo otorgará a la unidad
   (No se crea efecto al usar esto)
   
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////

   method ApplyDamage takes unit caster, unit target, real damage, boolean pureDamage returns nothing
   
   Causa daño, toma una unidad que causará daño, la unidad que recibe el daño, el daño y una booleana para daña puro o daño mágico
   (Valores negativos curarán)
   
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
   
   method ApplyManaBurn takes unit u, real damage returns nothing
   
   Quita maná a la unidad colocada(Valor negativo aumenta el maná)
   
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
   
   method Apply takes unit u, integer percentage, string buffType returns nothing

   Este método no lo usarán, la librería lo llama solo. Aplica los modificadores de los buffs
   
   method destroy takes nothing returns nothing
   
   Destruye el efecto y nullea las variables.
   
Para agregar un buff utilizando el struct base es sencillo

   local Buff Nombre = Buff.create()
       
   set Nombre.attachPoint = attachpoint (como "origin")
   set Nombre.buff1 = El Rawcode del Buff (en Slow es 'Bslo')
   
   set Nombre.BuffType[1] = El buff que deseen (Por ejemplo: "DC")
   set Nombre.percentage[1] = Porcentaje (Por ejemplo: -120)
   set Nombre.BuffUseds = El numero que agregaron (Sería 1 en este caso)
   
   call AddBuff(Unidad, TiempoIntervalo, Duracion, Nombre)[/jass]

También pueden crear su propio struct para buffs(esa es la gracia de la librería) eso lo pueden hacer así:

[jass]Para crear un nuevo struct para Buffs es muy sencillo(siempre y cuando sepas algo de structs)

Se hace de la siguiente forma:

   struct Nombre extends Buff
       
       /* Pueden declarar variables extras (como Caster para buffs de daño, una variable real de daño, booleana de daño puro,
       también pueden usar efectos extras, stuns, etc.)*/
       unit caster
       real damage
       boolean pureDamage = false
       
       // Deben tener su método create, yo generalmente declaro los valores de mis BuffType[] aquí(Es más corto al usarlo).
       static method create takes nothing returns thistype
           local thistype this = thistype.allocate()
           
           set BuffType[1] = "MS"
           set BuffType[2] = "AS"
           set BuffUseds = 2
           
           return this
       endmethod
       
       // Luego crean sus stub method
       
       // onApply será llamado cuando se llame a AddBuff (al agregarse el buff)
       stub method onApply takes nothing returns nothing

           call .ApplyDamage(this.caster, this.target, this.damage, this.pureDamage)
                   
       endmethod
       
       // onPeriodic será llamado en cada intervalo
       stub method onPeriodic takes nothing returns nothing
           
           call .ApplyDamage(this.caster, this.target, this.damage, this.pureDamage)
           
       endmethod
       
       // onRemove será llamado cuando se termine la duración o el buff sea removido(aquí deben nullear sus variables)
       stub method onRemove takes nothing returns nothing
           set .caster = null
           
           
       endmethod
       
       // También tienen onRefresh, que será llamado cuando se le agregue el mismo buff a una unidad
       // cuando se refresca un buff, automáticamente se refresca la duración del mismo
       stub method onRefresh takes nothing returns nothing
           set .damage = .damage * 1.25
           
       endfunction
       
   endstruct[/jass]


Extensión GUI

[gui]Variables
   Acontecimientos
   Condiciones
   Acciones
       Set Buff_Buff = Aceite hirviendo
       Set Buff_Caster = Ninguna unidad
       Set Buff_Duration = 0.00
       Set Buff_Interval = 0.00
       Set Buff_Negative = False
       Set Buff_Purgable = False
       Set Buff_Percentage[0] = 0
       Set Buff_Type[0] =
       Set Buff_Target = Ninguna unidad
       Set Buff_Booleans[0] = False
       Set Buff_Effects[0] = (Last created special effect)
       Set Buff_Locations[0] = (Center of (Playable map area))
       Set Buff_OnApply = False
       Set Buff_OnPeriodic = False
       Set Buff_OnRefresh = False
       Set Buff_OnRemove = False
       Set Buff_Reals[0] = 0.00
       Set Buff_Strings[0] =
       Set Buff_Units[0] = Ninguna unidad
       Set Buff_Integers[0] = 0
       Set Buff_Trigger = (This trigger)
[/gui]

[gui]Ejemplo GUI Init
   Acontecimientos
       Map initialization
   Condiciones
   Acciones
       -------- La habilidad será el efecto, aparte de agregar el buff --------
       -------- (el efecto y el buff que otorga se configuran en editor de objetos) --------
       Set Register_Abil = Dummy Ability (Buffs example GUI)
       -------- El buff es para el tooltip --------
       Set Register_Buff = Quemar almas
       -------- Esta primera acción registra su buff con su habilidad --------
       Detonador - Run RegisterAbil (checking conditions)
       Detonador - Run Ejemplo GUI (checking conditions)
[/gui]

[gui]Ejemplo GUI
   Acontecimientos
   Condiciones
   Acciones
       -------- Espero esto sea autoexplicativo.. --------
       Set Buff_Buff = Quemar almas
       Set Buff_Caster = Mago sanguinario 0004
       Set Buff_Target = Maestro de las Espadas 0005
       Set Buff_Duration = 5.00
       Set Buff_Interval = 1.00
       -------- ----------------------------------------------------------------- --------
       -------- Detalle importante: Si Buff_Negative es "True", el porcentaje será un modificar negativo, esto quiere decir --------
       -------- si ponen 100 en MS, tendrá 100% de reducción de velocidad de movimiento --------
       Set Buff_Negative = True
       -------- ----------------------------------------------------------------- --------
       -------- Esto determina si pueden remover el buff o no. Purgable = True significa que puede removerse --------
       Set Buff_Purgable = False
       -------- ----------------------------------------------------------------- --------
       -------- El índice del porcentaje y del tipo del buff deben coincidir, no sea pabilo mi amigo --------
       -------- En el comentario "Tipos de buffs" pueden ver las cadenas de texto permitidas y lo que modifican .3 --------
       Set Buff_Percentage[1] = 60
       Set Buff_Type[1] = MS
       -------- ----------------------------------------------------------------- --------
       -------- Todas estas variables se pueden usar hasta el índice "10" --------
       -------- si quieren manejar más datos las utilizan --------
       Set Buff_Booleans[0] = False
       Set Buff_Effects[0] = (Last created special effect)
       Set Buff_Locations[0] = (Position of Buff_Target)
       Set Buff_Reals[0] = 0.00
       Set Buff_Strings[0] =
       Set Buff_Units[0] = Ninguna unidad
       Set Buff_Integers[0] = 0
       -------- ----------------------------------------------------------------- --------
       -------- Este detonador es el que correrá en cada instancia del buff e.e --------
       Set Buff_Trigger = Ejemplo GUI Buff
       -------- ----------------------------------------------------------------- --------
       -------- Esta función siempre al final, sin esa función todo lo que setean será para nada. NUNCA OLVIDAR --------
       Custom script:   call GUIAddBuff()
[/gui]

[gui]Ejemplo GUI Buff
   Acontecimientos
   Condiciones
   Acciones
       -------- Lo aconsejable es dividir todos sus detonadores de Buff así --------
       -------- de este modo, es mucho más ordenado y nunca deberían usar acciones fuera de los ifs --------
       -------- a menos que de verdad SEPAN que están haciendo --------
        Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
           Si: Condiciones
               Buff_OnApply Igual a (==) True
           Entonces: Acciones
               -------- Este primero correrá cada vez que el buff inicie, o sea aplicado --------
               Efecto especial - Create a special effect attached to the overhead of Buff_Target using Abilities\Weapons\AvengerMissile\AvengerMissile.mdl
               Set Buff_Integers[0] = 0
               Set Buff_Effects[Buff_Integers[0]] = (Last created special effect)
           Otros: Acciones
        Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
           Si: Condiciones
               Buff_OnPeriodic Igual a (==) True
           Entonces: Acciones
               -------- Este correrá en cada intervalo del buff --------
                Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                   Si: Condiciones
                       Buff_Integers[0] Menor que (<) 10
                   Entonces: Acciones
                       Efecto especial - Create a special effect attached to the overhead of Buff_Target using Abilities\Weapons\AvengerMissile\AvengerMissile.mdl
                       Set Buff_Integers[0] = (Buff_Integers[0] + 1)
                       Set Buff_Effects[Buff_Integers[0]] = (Last created special effect)
                   Otros: Acciones
           Otros: Acciones
        Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
           Si: Condiciones
               Buff_OnRefresh Igual a (==) True
           Entonces: Acciones
               -------- Este es especial, correrá cuando quieran aplicar un buff, cuando la unidad objetivo ya es afectado por ese mismo buff --------
               -------- Generalmente es cuando quieren crear buffs con stacks y eso --------
           Otros: Acciones
        Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
           Si: Condiciones
               Buff_OnRemove Igual a (==) True
           Entonces: Acciones
               -------- Corre cuando el buff se termina --------
               -------- Recuerden destruir sus puntos y efectos especiales y demás leaks! --------
                Do Multiple ActionsFor each (Integer A) from 0 to Buff_Integers[0], do (Actions)
                   Bucle: Acciones
                       Efecto especial - Destroy Buff_Effects[(Integer A)]
           Otros: Acciones
[/gui]

En el mapa están las instrucciones y un par de ejemplos del sistema.


Última edición por Marcos_M el Sáb Nov 22, 2014 11:54 am, editado 6 veces
Volver arriba Ir abajo

AutorMensaje
Marcos_M

Marcos_M


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

Mensajes Mensajes : 3317
Reputación Reputación : 590
Monedas de oro : 10330
Monedas de Platino : 0 And now... Buffs [EXTENSION GUI] - Página 2 Empty

Inventario :
And now... Buffs [EXTENSION GUI] - Página 2 Empysl10 And now... Buffs [EXTENSION GUI] - Página 2 Empysl10 And now... Buffs [EXTENSION GUI] - Página 2 Empysl10
And now... Buffs [EXTENSION GUI] - Página 2 Empysl10 And now... Buffs [EXTENSION GUI] - Página 2 Empysl10 And now... Buffs [EXTENSION GUI] - Página 2 Empysl10

And now... Buffs [EXTENSION GUI] - Página 2 Empty
Mensaje(#) Tema: Re: And now... Buffs [EXTENSION GUI] And now... Buffs [EXTENSION GUI] - Página 2 Clock10Dom Mar 16, 2014 11:07 am

Tengo 8 o 6 habilidades con 160 levels
Más unas 70 o 80 habilidades de un level
1 level 100

Si supiera usar slk, demoraría menos
Volver arriba Ir abajo
GhxBronie

GhxBronie


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

Mensajes Mensajes : 975
Reputación Reputación : 190
Monedas de oro : 4245
Monedas de Platino : 5 And now... Buffs [EXTENSION GUI] - Página 2 Empty

Inventario :
And now... Buffs [EXTENSION GUI] - Página 2 Empysl10 And now... Buffs [EXTENSION GUI] - Página 2 Empysl10 And now... Buffs [EXTENSION GUI] - Página 2 Empysl10
And now... Buffs [EXTENSION GUI] - Página 2 Empysl10 And now... Buffs [EXTENSION GUI] - Página 2 Empysl10 And now... Buffs [EXTENSION GUI] - Página 2 Empysl10

And now... Buffs [EXTENSION GUI] - Página 2 Empty
Mensaje(#) Tema: Re: And now... Buffs [EXTENSION GUI] And now... Buffs [EXTENSION GUI] - Página 2 Clock10Vie Mayo 30, 2014 10:17 am

Marcos_M Que has creado!! - And now... Buffs [EXTENSION GUI] - Página 2 Lyramotherofgodplz

Esto es lo que yo Veo (o_o)

En fin, a probar esos Buffs :l

Saludos Cool


And now... Buffs [EXTENSION GUI] - Página 2 Youtub10

And now... Buffs [EXTENSION GUI] - Página 2 SteamAnd now... Buffs [EXTENSION GUI] - Página 2 XK75Y5MDUPK51382125651816And now... Buffs [EXTENSION GUI] - Página 2 Garena
[ Mis Otras Cuentas ]
Volver arriba Ir abajo
KoleshyEngine

KoleshyEngine


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

Mensajes Mensajes : 547
Reputación Reputación : 124
Monedas de oro : -222
Monedas de Platino : 0 And now... Buffs [EXTENSION GUI] - Página 2 Empty

Inventario :
And now... Buffs [EXTENSION GUI] - Página 2 Empysl10 And now... Buffs [EXTENSION GUI] - Página 2 Empysl10 And now... Buffs [EXTENSION GUI] - Página 2 Empysl10
And now... Buffs [EXTENSION GUI] - Página 2 Empysl10 And now... Buffs [EXTENSION GUI] - Página 2 Empysl10 And now... Buffs [EXTENSION GUI] - Página 2 Empysl10

And now... Buffs [EXTENSION GUI] - Página 2 Empty
Mensaje(#) Tema: Re: And now... Buffs [EXTENSION GUI] And now... Buffs [EXTENSION GUI] - Página 2 Clock10Vie Mayo 30, 2014 4:11 pm

un sistema que produce lag no es eficiente


Like a Star @ heaven  Desarrollador de Software Contactar
Volver arriba Ir abajo
http://koleshyengine.blogspot.com/
Marcos_M

Marcos_M


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

Mensajes Mensajes : 3317
Reputación Reputación : 590
Monedas de oro : 10330
Monedas de Platino : 0 And now... Buffs [EXTENSION GUI] - Página 2 Empty

Inventario :
And now... Buffs [EXTENSION GUI] - Página 2 Empysl10 And now... Buffs [EXTENSION GUI] - Página 2 Empysl10 And now... Buffs [EXTENSION GUI] - Página 2 Empysl10
And now... Buffs [EXTENSION GUI] - Página 2 Empysl10 And now... Buffs [EXTENSION GUI] - Página 2 Empysl10 And now... Buffs [EXTENSION GUI] - Página 2 Empysl10

And now... Buffs [EXTENSION GUI] - Página 2 Empty
Mensaje(#) Tema: Re: And now... Buffs [EXTENSION GUI] And now... Buffs [EXTENSION GUI] - Página 2 Clock10Vie Mayo 30, 2014 5:20 pm

Aumenta tiempo de carga, pero reduce en caso de que uses muchas habilidades dummy para tus spells, aparte de otorgar la seguridad de que tus buffs stackearan
Volver arriba Ir abajo
humberto25
Peón
humberto25


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

Mensajes Mensajes : 55
Reputación Reputación : 6
Monedas de oro : 211
Monedas de Platino : 0 And now... Buffs [EXTENSION GUI] - Página 2 Empty

Inventario :
And now... Buffs [EXTENSION GUI] - Página 2 Empysl10 And now... Buffs [EXTENSION GUI] - Página 2 Empysl10 And now... Buffs [EXTENSION GUI] - Página 2 Empysl10
And now... Buffs [EXTENSION GUI] - Página 2 Empysl10 And now... Buffs [EXTENSION GUI] - Página 2 Empysl10 And now... Buffs [EXTENSION GUI] - Página 2 Empysl10

And now... Buffs [EXTENSION GUI] - Página 2 Empty
Mensaje(#) Tema: Re: And now... Buffs [EXTENSION GUI] And now... Buffs [EXTENSION GUI] - Página 2 Clock10Sáb Mayo 31, 2014 12:55 am

lo necesito
Volver arriba Ir abajo
humberto25
Peón
humberto25


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

Mensajes Mensajes : 55
Reputación Reputación : 6
Monedas de oro : 211
Monedas de Platino : 0 And now... Buffs [EXTENSION GUI] - Página 2 Empty

Inventario :
And now... Buffs [EXTENSION GUI] - Página 2 Empysl10 And now... Buffs [EXTENSION GUI] - Página 2 Empysl10 And now... Buffs [EXTENSION GUI] - Página 2 Empysl10
And now... Buffs [EXTENSION GUI] - Página 2 Empysl10 And now... Buffs [EXTENSION GUI] - Página 2 Empysl10 And now... Buffs [EXTENSION GUI] - Página 2 Empysl10

And now... Buffs [EXTENSION GUI] - Página 2 Empty
Mensaje(#) Tema: Re: And now... Buffs [EXTENSION GUI] And now... Buffs [EXTENSION GUI] - Página 2 Clock10Mar Nov 11, 2014 9:30 am

voy a verlo
Volver arriba Ir abajo
Trigger.edge

Trigger.edge


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

Mensajes Mensajes : 978
Reputación Reputación : 111
Monedas de oro : 1245
Monedas de Platino : 0 And now... Buffs [EXTENSION GUI] - Página 2 Empty

Inventario :
Cetro del Rey Armadura Mágica Daga Mística
And now... Buffs [EXTENSION GUI] - Página 2 Empysl10 And now... Buffs [EXTENSION GUI] - Página 2 Empysl10 And now... Buffs [EXTENSION GUI] - Página 2 Empysl10

And now... Buffs [EXTENSION GUI] - Página 2 Empty
Mensaje(#) Tema: Re: And now... Buffs [EXTENSION GUI] And now... Buffs [EXTENSION GUI] - Página 2 Clock10Vie Nov 21, 2014 1:14 pm

Puedo descargar? xD veré que tal marcos


And now... Buffs [EXTENSION GUI] - Página 2 Wc3scr10
Volver arriba Ir abajo
Marcos_M

Marcos_M


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

Mensajes Mensajes : 3317
Reputación Reputación : 590
Monedas de oro : 10330
Monedas de Platino : 0 And now... Buffs [EXTENSION GUI] - Página 2 Empty

Inventario :
And now... Buffs [EXTENSION GUI] - Página 2 Empysl10 And now... Buffs [EXTENSION GUI] - Página 2 Empysl10 And now... Buffs [EXTENSION GUI] - Página 2 Empysl10
And now... Buffs [EXTENSION GUI] - Página 2 Empysl10 And now... Buffs [EXTENSION GUI] - Página 2 Empysl10 And now... Buffs [EXTENSION GUI] - Página 2 Empysl10

And now... Buffs [EXTENSION GUI] - Página 2 Empty
Mensaje(#) Tema: Re: And now... Buffs [EXTENSION GUI] And now... Buffs [EXTENSION GUI] - Página 2 Clock10Vie Nov 21, 2014 1:17 pm

No descargues, esta versión es la vieja xD

Ahora te subo la actual
Volver arriba Ir abajo
Trigger.edge

Trigger.edge


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

Mensajes Mensajes : 978
Reputación Reputación : 111
Monedas de oro : 1245
Monedas de Platino : 0 And now... Buffs [EXTENSION GUI] - Página 2 Empty

Inventario :
Cetro del Rey Armadura Mágica Daga Mística
And now... Buffs [EXTENSION GUI] - Página 2 Empysl10 And now... Buffs [EXTENSION GUI] - Página 2 Empysl10 And now... Buffs [EXTENSION GUI] - Página 2 Empysl10

And now... Buffs [EXTENSION GUI] - Página 2 Empty
Mensaje(#) Tema: Re: And now... Buffs [EXTENSION GUI] And now... Buffs [EXTENSION GUI] - Página 2 Clock10Vie Nov 21, 2014 1:22 pm

Cuando?


And now... Buffs [EXTENSION GUI] - Página 2 Wc3scr10
Volver arriba Ir abajo
Contenido patrocinado




And now... Buffs [EXTENSION GUI] - Página 2 Empty
Mensaje(#) Tema: Re: And now... Buffs [EXTENSION GUI] And now... Buffs [EXTENSION GUI] - Página 2 Clock10

Volver arriba Ir abajo
 

And now... Buffs [EXTENSION GUI]

Ver el tema anterior Ver el tema siguiente Volver arriba 
Página 2 de 2.Ir a la página : Precedente  1, 2

Permisos de este foro:No puedes responder a temas en este foro.
Warcraft III - WorldEditor :: Aportes :: Librerías-