Ir para conteúdo

Featured Replies

Postado

Boa tarde Galerinha DO TK Como esta a Greve Por aeee???

 

bem vamos ao conteúdo 

depois de muito pesquisar atras de um script finalmente encontrei oque precisava.....

mas nao esta muito do jeito que eu quero vcs conseguem modificar ele um pouco para min??

e o seguinte 

 

esse script ataca fire e e psychical e tem buff e heal

gostaria de mudar onde e buff e heal para ataque de ice e veneno

e quem funcionasse de longe tbm pois so funciona se o players estiver colado no monstro 

 

chega de conversa e vamos ao script

 

-- Configuracoes do script
local globalConfig = {
    storageID = 23000,
}
local burnBuff = {
    interval = 1, -- intervalo entre turnos
    damage = 5, -- dano de cada turno
    ticks = 5, -- quantidade de turnos
    effect = CONST_ME_HITBYFIRE, -- efeito
}
local energyBuff = {
    chance = 50, -- % de ativacao, 0~100
    effect = CONST_ME_ENERGYHIT, -- efeito
}
local healBuff = {
    chance = 25, -- % de ativacao, 0~100
    lifePercentage = 25, -- % de vida em cura, 0~100
    effect = CONST_ME_SMALLPLANTS, -- efeito
}
local waterBuff = {
    cooldown = 30, -- tempo para ativar proximo
    cooldownStorage = 23001, -- storage
    interval = 1, -- intevalo entre turnos
    effect = CONST_ME_LOSEENERGY, -- efeito
}

-- Caso queira configurar damage/area, que não se apliquem nas configuracoes acima,
-- modifique abaixo:

-- FIRE EFFECT
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, true)
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, burnBuff.effect)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)

local condition = createConditionObject(CONDITION_FIRE)
setConditionParam(condition, CONDITION_PARAM_DELAYED, 1)
addDamageCondition(condition, burnBuff.ticks, burnBuff.interval, -burnBuff.damage)
setCombatCondition(combat, condition)
------------------------------------------------------------------------
-- ENERGY EFFECT
local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -0.6, -30, -1.2, 0)

local arr = {
    {0, 0, 0},
    {1, 3, 1},
    {0, 0, 0}
}

local area = createCombatArea(arr)
setCombatArea(combat1, area)
------------------------------------------------------------------------
-- WATER EFFECT
local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_DROWNDAMAGE)
setCombatParam(combat2, COMBAT_PARAM_EFFECT, waterBuff.effect)
setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -0.6, -30, -1.2, 0)

local arr2 = {
    {1, 1, 1},
    {1, 2, 1},
    {1, 1, 1}
}

local area = createCombatArea(arr2)
setCombatArea(combat2, area)
------------------------------------------------------------------------

function onAttack(cid, target)
    storageStatus = getPlayerStorageValue (cid, globalConfig.storageID)
    playerPos = getCreaturePosition (cid)
    targetPos = getCreaturePosition (target)

    if storageStatus == 0 then return true end -- FIM - jogador sem o buff
    if getDistanceBetween (playerPos, targetPos) > 1 then return true end -- FIM - jogador longe

    if storageStatus == 1 then -- Efeito Energy
        if math.random (0, 100) < energyBuff.chance then -- % de ativacao
            doCombat(cid, combat1, numberToVariant(target)) -- Dano em area
            doSendMagicEffect (targetPos, energyBuff.effect) -- efeito
        end    

    elseif storageStatus == 2 then -- Efeito de Burn
        doCombatAreaCondition(cid, targetPos, nil, condition, burnBuff.effect)

    elseif storageStatus == 3 then -- Efeito de Heal
        if math.random (0, 100) < healBuff.chance then -- % de ativacao
            doCreatureAddHealth (cid, getCreatureMaxHealth(cid) * healBuff.lifePercentage / 100) -- formula de Heal
            doSendMagicEffect (playerPos, healBuff.effect) -- efeito
        end

    elseif storageStatus == 4 then
        if getPlayerStorageValue(cid, waterBuff.cooldownStorage) < os.time() then -- respeitando intervalo (para nao stackar 2 skills)
            setPlayerStorageValue (cid, waterBuff.cooldownStorage, os.time() + waterBuff.cooldown) -- cooldown set
            addEvent (waterCombat, waterBuff.interval * 1000, cid, waterBuff.cooldown) -- inicia evento waterCombat, responsavel pela skill
        end
    end
    return true
end

-- evento waterCombat
function waterCombat (cid, times)
    if times == 0 then -- caso base de recursividade, quando termina o evento
        return true
    else -- caso recursivo
        doCombat (cid, combat2, numberToVariant(cid)) -- skill individual
        addEvent (waterCombat, waterBuff.interval * 1000, cid, times - 1) -- reativa o evento
    end
end

 

obrigado por ajudar


 

 

 

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo