Ir para conteúdo
  • Cadastre-se

(Resolvido)[PEDIDO] spell heal x % de vida


Ir para solução Resolvido por 77mateus77,

Posts Recomendados

Boa tarde queria um script de spell para healar x porcentagem de vida: por exemplo se o player tive 1000 de vida por uma spell q heale 30% ira healar 300 de hp desse player, eu consigui um de mana mas não consigo mudar ele pra hp

 

ai o de mana

 

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, TRUE)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, FALSE)
function onCastSpell(cid, var)
local manapercent = 15 * getPlayerMaxMana(cid) / 100 --O 5 é a porcentagem que você quer regenerar
doCreatureAddMana(cid, manapercent)
return doCombat(cid, combat, var)
end
Link para o post
Compartilhar em outros sites

Não entendo muito, mas tenta trocar essas linhas

local manapercent = 15 * getPlayerMaxMana(cid) / 100 --O 5 é a porcentagem que você quer regenerar
doCreatureAddMana(cid, manapercent)
Por essa
local healthpercent = 15 * getPlayerMaxHealth(cid) / 100 --O 5 é a porcentagem que você quer regenerar
doCreatureAddHealth(cid, healthpercent)
 
Link para o post
Compartilhar em outros sites
Vou passar um mais simples:
 
local config = {
cooldown = 10, -- tempo entre uma magia e outra
time = 10, -- tempo em segundos que ficará healando
percent = 5, --- porcentagem da vida que cura
storage = 19330,
effect = 12, --- efeito que vai sair
mana = 40 -- quanto custa de mana
}
function onCastSpell(cid, var)
if getCreatureMana(cid) >= config.mana then
if os.time() - getPlayerStorageValue(cid, config.storage) >= config.cooldown then
doPlayerSetStorageValue(cid, config.storage, os.time())
local i = 0
doCreatureAddMana(cid, -config.mana, 0)
while i < config.time do
i = i+1
addEvent(function()
 if isCreature(cid) then
 if getCreatureMaxHealth(cid) ~= getCreatureHealth(cid) then
 local lifedraw = math.ceil(getCreatureMaxHealth(cid) * (config.percent)/100)
 local pos = getPlayerPosition(cid)
              doCreatureAddHealth(cid, lifedraw, 1) 
              doSendAnimatedText(pos, "+"..lifedraw , TEXTCOLOR_GREEN)
            doSendMagicEffect(pos, config.effect)
end
end
end, 1000*i)
end
else
doPlayerSendCancel(cid, "Your Mass Healing is at cooldown, you must wait "..(config.cooldown - (os.time() - getPlayerStorageValue(cid, config.storage))).." seconds.")
end
else
doPlayerSendCancel(cid, 36)
end
return false
end
 
Spells.xml
<instant name="NOME DA MAGIA" words="PALAVRAS PRA CONJURAR" lvl="40" mana="0" prem="1" aggressive="0" exhaustion="1500" needlearn="0" event="script" value="especiais/healingtime.lua">
<vocation id="1"/>
<vocation id="2"/>
<vocation id="4"/>
<vocation id="8"/>
</instant>

By: xWhiteWolf

Editado por Anuudek (veja o histórico de edições)

Atenciosamente, Anuudek.

                                                               banner.gif

Link para o post
Compartilhar em outros sites

 

Vou passar um mais simples:
 
local config = {
cooldown = 10, -- tempo entre uma magia e outra
time = 10, -- tempo em segundos que ficará healando
percent = 5, --- porcentagem da vida que cura
storage = 19330,
effect = 12, --- efeito que vai sair
mana = 40 -- quanto custa de mana
}
function onCastSpell(cid, var)
if getCreatureMana(cid) >= config.mana then
if os.time() - getPlayerStorageValue(cid, config.storage) >= config.cooldown then
doPlayerSetStorageValue(cid, config.storage, os.time())
local i = 0
doCreatureAddMana(cid, -config.mana, 0)
while i < config.time do
i = i+1
addEvent(function()
 if isCreature(cid) then
 if getCreatureMaxHealth(cid) ~= getCreatureHealth(cid) then
 local lifedraw = math.ceil(getCreatureMaxHealth(cid) * (config.percent)/100)
 local pos = getPlayerPosition(cid)
              doCreatureAddHealth(cid, lifedraw, 1) 
              doSendAnimatedText(pos, "+"..lifedraw , TEXTCOLOR_GREEN)
            doSendMagicEffect(pos, config.effect)
end
end
end, 1000*i)
end
else
doPlayerSendCancel(cid, "Your Mass Healing is at cooldown, you must wait "..(config.cooldown - (os.time() - getPlayerStorageValue(cid, config.storage))).." seconds.")
end
else
doPlayerSendCancel(cid, 36)
end
return false
end
 
Spells.xml
<instant name="NOME DA MAGIA" words="PALAVRAS PRA CONJURAR" lvl="40" mana="0" prem="1" aggressive="0" exhaustion="1500" needlearn="0" event="script" value="especiais/healingtime.lua">
<vocation id="1"/>
<vocation id="2"/>
<vocation id="4"/>
<vocation id="8"/>
</instant>

By: xWhiteWolf

 

Não funciona, e pior que nem erro na distro da, quamdo falo a magia no tibia não acontece nada

 

Não entendo muito, mas tenta trocar essas linhas

local manapercent = 15 * getPlayerMaxMana(cid) / 100 --O 5 é a porcentagem que você quer regenerar
doCreatureAddMana(cid, manapercent)
Por essa
local healthpercent = 15 * getPlayerMaxHealth(cid) / 100 --O 5 é a porcentagem que você quer regenerar
doCreatureAddHealth(cid, healthpercent)
 

 

quamdo tento fazer isso, eu uso a magia no tibia, tambem não acontece nada, e aparece o seguinte erro na distro:

 

[27/07/2015 18:02:55] [Error - Spell Interface] 
[27/07/2015 18:02:55] data/spells/scripts/curavida.lua:onCastSpell
[27/07/2015 18:02:56] Description: 
[27/07/2015 18:02:56] data/spells/scripts/curavida.lua:6: attempt to call global 'getPlayerMaxHealth' (a nil value)
[27/07/2015 18:02:56] stack traceback:
[27/07/2015 18:02:56] data/spells/scripts/curavida.lua:6: in function <data/spells/scripts/curavida.lua:5>
Link para o post
Compartilhar em outros sites

Não esqueça de mudar o diretório em spells.xml

<instant name="NOME DA MAGIA" words="PALAVRAS PRA CONJURAR" lvl="40" mana="0" prem="1" aggressive="0" exhaustion="1500" needlearn="0" event="script" value="especiais/healingtime.lua">
<vocation id="1"/>
<vocation id="2"/>
<vocation id="4"/>
<vocation id="8"/>
</instant>

Aqui: value="especiais/healingtime.lua">

 

 

Mesmo se não da, tente com esse:

 

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, TRUE)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, FALSE)
function onCastSpell(cid, var)
local healthpercent = 15 * getPlayerMaxHealth(cid) / 100 --O 5 é a porcentagem que você quer regenerar
doCreatureAddHealth(cid, healthpercent)
return doCombat(cid, combat, var)
end
Editado por Anuudek (veja o histórico de edições)

Atenciosamente, Anuudek.

                                                               banner.gif

Link para o post
Compartilhar em outros sites

Não esqueça de mudar o diretório em spells.xml

<instant name="NOME DA MAGIA" words="PALAVRAS PRA CONJURAR" lvl="40" mana="0" prem="1" aggressive="0" exhaustion="1500" needlearn="0" event="script" value="especiais/healingtime.lua">
<vocation id="1"/>
<vocation id="2"/>
<vocation id="4"/>
<vocation id="8"/>
</instant>

Aqui: value="especiais/healingtime.lua">

tava certo isso, eu uso a spell no tibia, ai a palavra não aparece e nem acontece nada

 

consigui o unico problema e que nao aparece nada quamdo vc fala, não e como uma magia exura san, como faço pra aparecer a palavra em laranja como as outras spells? essa magia funciona como um utura, não heala na hora que vc fala, quero uma como uma cura normal como faço?

Editado por 77mateus77 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Tente este:

 

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, TRUE)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, FALSE)
function onCastSpell(cid, var)
local healthpercent = 15 * getPlayerMaxHealth(cid) / 100 --O 5 é a porcentagem que você quer regenerar
doCreatureAddHealth(cid, healthpercent)
return doCombat(cid, combat, var)
end

Atenciosamente, Anuudek.

                                                               banner.gif

Link para o post
Compartilhar em outros sites
  • Solução

 

Tente este:

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, TRUE)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, FALSE)
function onCastSpell(cid, var)
local healthpercent = 15 * getPlayerMaxHealth(cid) / 100 --O 5 é a porcentagem que você quer regenerar
doCreatureAddHealth(cid, healthpercent)
return doCombat(cid, combat, var)
end

Não sai a palavra do mesmo geito do outro, e não cura tambe, e aparece esse erro na distro:

 

[27/07/2015 18:33:40] [Error - Spell Interface] 
[27/07/2015 18:33:41] data/spells/scripts/curavida.lua:onCastSpell
[27/07/2015 18:33:41] Description: 
[27/07/2015 18:33:41] data/spells/scripts/curavida.lua:6: attempt to call global 'getPlayerMaxHealth' (a nil value)
[27/07/2015 18:33:41] stack traceback:
[27/07/2015 18:33:41] data/spells/scripts/curavida.lua:6: in function <data/spells/scripts/curavida.lua:5>
 
 
voce por acaso conseguiria fazer a uh heala por % do hp total? tamben serviria no caso se não conseguisse uma spell assim
 
 
 
ae pessoal consegui um valeu por tentarem me ajudar.
 
function onCastSpell(cid, item, fromPosition, itemEx, toPosition)
 
local hpmax = getCreatureMaxHealth(cid)
local min = 15.0 -- this means 15% minimum healing
local max = 15.0 -- this means 15% maximum healing
local hp_add = math.random((hpmax * (min/100)), (hpmax * (max/100))) 
 
if(hasCondition(cid, CONDITION_EXHAUST)) then
doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) 
doPlayerSendCancel(cid, "You are exhausted")
return true
end
doCreatureAddHealth(cid, hp_add)
doSendMagicEffect(getThingPos(cid), 32)
doSendAnimatedText(getPlayerPosition(cid),"+"..hp_add.."", TEXTCOLOR_GREEN) 
return true
end
Editado por 77mateus77 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo