MU

Arma com Life/Mana Drain mostrando o Heal

Por murilo3107, 22 de jun. de 2021 em Scripts

4
1.7k
murilo3107M
22 de junho de 2021 às 23:16

Olá a todos. Estou com um script de Weapon de HP/Mana drain a cada hit que determinado arrow acerta no bixo, mas estou com dificuldade em ajeitar para mostrar ambas quantidades healadas, tanto de HP quanto de Mana, já tentei de várias formas, mas está aparecendo apenas como se estivesse healando a Mana.

Abaixo o script:

 

-- Código feito por Omega --
function getPlayerTopMeleeSkill(cid)	
skill = 0	
value = 10	
for i = 1, 4 do		
if getPlayerSkillLevel(cid, i) > value then			
value = getPlayerSkillLevel(cid, i)			
skill = i		
end	
end	
return {skill = i, value = value}
end	

-- Porcentagem do dano que será healado pelo jogador	
local healPercent = 35	
local effect = 8   --Distance effect.
function onUseWeapon(cid, var)	
local target = getCreatureTarget(cid)	
if not target then 
return true 
end	
if getPlayerSlotItem(cid, CONST_SLOT_RIGHT).itemid == 8855 or getPlayerSlotItem(cid, CONST_SLOT_LEFT).itemid == 8855 then
local skill, attack, level = getPlayerTopMeleeSkill(cid).value, getItemInfo(getPlayerWeapon(cid).itemid).attack, getPlayerLevel(cid)
	
-- Use skill (maior valor entre melee e distance), level e attack (ataque da arma) para configurar a fórmula do dano	
local formula = 0.5 * (skill * 3 + attack * 3 + level * 2)	
local dmg = math.random(8, 12) / 10 * formula * -1	
doTargetCombatHealth(cid, target, COMBAT_LIFEDRAIN, dmg, dmg, CONST_ME_DRAWBLOOD)
doSendDistanceShoot(getThingPos(cid), getThingPos(target), effect)
local heal = math.ceil(- 1.0 * dmg * healPercent / 100)	doCreatureAddHealth(cid, heal)	
local healmana = math.ceil(- 1.0 * dmg * healPercent / 100)	doCreatureAddMana(cid, healmana)	
return true
end
end

 

Abaixo uma foto de como está:

 

image.png.f14ebafdc4f4f1753c68111827de3af0.png

 

Gostaria que aparecesse assim como no Great Spirit Potion, onde fica evidente a quantidade de HP e Mana Healada.

 

Grato desde já.

1 mês depois...
Yan OliveiraY
02 de julho de 2021 às 22:00

Se entendi bem você quer que mostre a vida e mana drenada, para isso pode mostrar em um animated text:

 

-- Código feito por Omega --
function getPlayerTopMeleeSkill(cid)	
    skill = 0	
    value = 10	

    for i = 1, 4 do		
        if getPlayerSkillLevel(cid, i) > value then			
            value = getPlayerSkillLevel(cid, i)			
            skill = i		
        end	
    end	
    
    return 
    {
        skill = i, 
        value = value
    }

    end	
    
    -- Porcentagem do dano que será healado pelo jogador	
    local healPercent = 35	
    local effect = 8   --Distance effect.

    function onUseWeapon(cid, var)	
    local target = getCreatureTarget(cid)	

    if not target then 
        return true 
    end	

    if getPlayerSlotItem(cid, CONST_SLOT_RIGHT).itemid == 8855 or getPlayerSlotItem(cid, CONST_SLOT_LEFT).itemid == 8855 then
    local skill, 
    local attack, level = getPlayerTopMeleeSkill(cid).value, getItemInfo(getPlayerWeapon(cid).itemid).attack, getPlayerLevel(cid)

    -- Use skill (maior valor entre melee e distance), level e attack (ataque da arma) para configurar a fórmula do dano	
    local formula = 0.5 * (skill * 3 + attack * 3 + level * 2)	
    local dmg = math.random(8, 12) / 10 * formula * -1	

    doTargetCombatHealth(cid, target, COMBAT_LIFEDRAIN, dmg, dmg, CONST_ME_DRAWBLOOD)
    doSendDistanceShoot(getThingPos(cid), getThingPos(target), effect)

    local heal = math.ceil(- 1.0 * dmg * healPercent / 100)	
    local healmana = math.ceil(- 1.0 * dmg * healPercent / 100)	

    doCreatureAddHealth(cid, heal)	
    doCreatureAddMana(cid, healmana)	

    doSendAnimatedText(getThingPos(cid), "HEALTH\n" .. heal .. "\n\nMANA\n" .. healmana, math.random(1, 255))

    return true
    end
end

 

Teste e veja se é assim que você quer.

Editado Julho 2 por Yan Oliveira

murilo3107M
03 de julho de 2021 às 13:20
15 horas atrás, Yan Oliveira disse:

Se entendi bem você quer que mostre a vida e mana drenada, para isso pode mostrar em um animated text:

 

-- Código feito por Omega --
function getPlayerTopMeleeSkill(cid)	
    skill = 0	
    value = 10	

    for i = 1, 4 do		
        if getPlayerSkillLevel(cid, i) > value then			
            value = getPlayerSkillLevel(cid, i)			
            skill = i		
        end	
    end	
    
    return 
    {
        skill = i, 
        value = value
    }

    end	
    
    -- Porcentagem do dano que será healado pelo jogador	
    local healPercent = 35	
    local effect = 8   --Distance effect.

    function onUseWeapon(cid, var)	
    local target = getCreatureTarget(cid)	

    if not target then 
        return true 
    end	

    if getPlayerSlotItem(cid, CONST_SLOT_RIGHT).itemid == 8855 or getPlayerSlotItem(cid, CONST_SLOT_LEFT).itemid == 8855 then
    local skill, 
    local attack, level = getPlayerTopMeleeSkill(cid).value, getItemInfo(getPlayerWeapon(cid).itemid).attack, getPlayerLevel(cid)

    -- Use skill (maior valor entre melee e distance), level e attack (ataque da arma) para configurar a fórmula do dano	
    local formula = 0.5 * (skill * 3 + attack * 3 + level * 2)	
    local dmg = math.random(8, 12) / 10 * formula * -1	

    doTargetCombatHealth(cid, target, COMBAT_LIFEDRAIN, dmg, dmg, CONST_ME_DRAWBLOOD)
    doSendDistanceShoot(getThingPos(cid), getThingPos(target), effect)

    local heal = math.ceil(- 1.0 * dmg * healPercent / 100)	
    local healmana = math.ceil(- 1.0 * dmg * healPercent / 100)	

    doCreatureAddHealth(cid, heal)	
    doCreatureAddMana(cid, healmana)	

    doSendAnimatedText(getThingPos(cid), "HEALTH\n" .. heal .. "\n\nMANA\n" .. healmana, math.random(1, 255))

    return true
    end
end

 

Teste e veja se é assim que você quer.

 

 

Fiz o teste, entendi a lógica por trás, mas acabou ficando fora do padrão que eu queria mesmo, assim como a Spirit Potion apresenta a quantidade de HP e de Mana healada a cada use, queria que o lifedrain da arma fizesse o mesmo e não apenas o Health ou a Mana, deu pra entender? É meio ruim de explicar.

 

+Rep já, pela disponibilidade e vontade!

1 mês depois...
Yan OliveiraY
28 de agosto de 2021 às 11:33
Em 03/07/2021 em 13:20, murilo3107 disse:

 

 

Fiz o teste, entendi a lógica por trás, mas acabou ficando fora do padrão que eu queria mesmo, assim como a Spirit Potion apresenta a quantidade de HP e de Mana healada a cada use, queria que o lifedrain da arma fizesse o mesmo e não apenas o Health ou a Mana, deu pra entender? É meio ruim de explicar.

 

+Rep já, pela disponibilidade e vontade!

Então amigo, mas no caso do script que fiz para você ai ele mostra mensagem da life e mana. Não era isso que você queria? Os dois juntos sendo exibidos?