terça-feira, 15 de fevereiro de 2011

News

Ae galera, vou mudar o blog para um outro lugar daqui uns tempos. Assim que tiver tempo vou mover meus posts pra la e apagar os daqui. Mas isso vai demorar um pouco.

^^

Leia Mais...

domingo, 13 de fevereiro de 2011

Add Life v1.1

Esse system é bem simples e util. Para você adicionar HP (hit points) a uma unidade ao ponto que ela fique com hp completo, você deve adicionar uma habilidade que almenta a quantidade de hp dela. Para não ter o trabalho de cria aquelas functions que adicionam e removem essa habilidade, eu fiz esse system.

O system só tem uma function principal:
function UnitAddLife takes unit whichUnit, real amount returns nothing
Essa function adiciona uma quantidade de hp (amount) a unidade desejada (whichUnit). Simples!

Script do Sistema:
library AddLife
// Add Life System
// Criado por "Bills"
// Versão: 1.2
//=====================================
// Como implementar:
// Crie uma nova trigger,
// converta ela para custom script,
// salve seu mapa,
// feche-o,
// reabra-o
// e apague o ! da linha abaixo.
//! external ObjectMerger w3a AIlz ALBA anam "Life Bonus" ansf "(Bills's AddLife System)" Ilif 1 500000 aite 0
//=====================================================================
//Caso ja tenha essa native declarada, "comenta" a linha abaixo
native UnitAlive takes unit whichUnit returns boolean

private struct AL extends array // struct array não possui method create/destroy
    private static constant integer LIFE_BONUS_ABIL = 'ALBA'
    private static unit array tempUnit
    private static integer index
    private static timer timerFunc
   
    private static method removeLifeBonus takes nothing returns nothing
        loop
            exitwhen (index==0)
            call UnitRemoveAbility(tempUnit[index],LIFE_BONUS_ABIL)
            if (UnitAlive(tempUnit[index])) then
                call SetWidgetLife(tempUnit[index],GetWidgetLife(tempUnit[index]))
            endif
            set index=index-1
        endloop
    endmethod
   
    static method unitAddLife takes unit u, real amount returns nothing
        set amount=GetWidgetLife(u)+amount
        call SetWidgetLife(u,amount)
        if (GetWidgetLife(u)<amount) then
            call UnitAddAbility(u,LIFE_BONUS_ABIL)
            call SetWidgetLife(u,amount)
            set index=index+1
            set tempUnit[index]=u
            call ResumeTimer(timerFunc)
        endif
    endmethod
   
    private static method onInit takes nothing returns nothing
        set index=0
        set timerFunc=CreateTimer()
        call TimerStart(timerFunc,0.00,false,function thistype.removeLifeBonus)
    endmethod
endstruct

 function UnitAddLife takes unit u, real amount returns nothing // por compatibilidade
    call AL.unitAddLife(u,amount)
 endfunction

endlibrary

Leia Mais...

quinta-feira, 3 de fevereiro de 2011

Fear v1.0

WTF is Fear?
O.O fear? fear signica medo, se eu não estiver errado. Fear é um status comum em alguns MMORPG (eu mesmo só conheço de WoW e zOMG). 
Quando uma unidade está "feared" ela irá correr para longe do daquele que amedrontou ela.

Como usar Fear em seu mapa
- Crie uma nova trigger chamada "Fear" e converta ela para Custom Script.
- Substitua todo texto na trigger pelo script desse system.
- Salve seu mapa e feche o editor.
- Reabra seu mapa e apague o ! na segunda linha do script. Pronto!

Funtions Principais do System
function UnitFearTarget takes unit source, unit target, real duration returns nothing
Esta function adiciona fear a um alvo a sua escolha.

function UnitRemoveFear takes unit whichUnit returns nothing
Esta function remove fear da unidade.

function IsUnitFeared takes unit whichUnit returns boolean
Esta function indica se a unidade está ou não "feared".

Como usar Fear com buffs
Fear System funciona sem buff, apenas contando a duração. Caso você prefira que o fear tenha buff ele irá durar até a duração escolhida ou até o alvo perder o buff. Se você quiser usar buff siga a instruções abaixo:

- Escolha um buff padrão para o fear. Feito isso, mude o valor da variable BUFF_CHECKER para o raw-code do buff escolhido. 

private constant integer BUFF_CHECKER = 'B000'
Agora mude o valor da variable USE_BUFF_CHECKER para true.
Pronto!

Obs: use dummy para adicionar o buff escolhido, pois caso você demore a adicionar aquele buff (não pode demorar mais que 0.2 segundos) a unidade acaba perdendo o fear, pois o trigger detecta que a unidade não estava com o buff.



Leia Mais...