UP!
Spell Drenar mana e Ganhar Health
Por julhinhuu, 10 de fev. de 2016 em Scripts
info
Grupo: Visconde
Registrado: 28/06/11
Posts: 356
Reputação: +26
Char no Tibia: Akor Rysea

info
Grupo: Herói
Registrado: 25/02/07
Posts: 859
Reputação: +331
Gênero: Masculino

Posso fazer, mas 0.4.
info
Grupo: Visconde
Registrado: 28/06/11
Posts: 356
Reputação: +26
Char no Tibia: Akor Rysea

Faça ai se funcionar hehe.
info
Grupo: Visconde
Registrado: 26/08/10
Posts: 431
Reputação: +60
Gênero: Masculino
Char no Tibia: Gabriel Rookgaardian

Posso fazer, mas 0.4.
Faz! hahahaha
Tenta essa: Versão 1.x
local function verDano(level, magic)
local min = (level + 2) + (magic * 3) / 2
local max = (level + 2) + (magic * 6) / 2
return min, max
end
local function executar(player,target)
if target:getGroup():getId() > 1 then
return true
end
if target:getLevel() <= configManager.getNumber(configKeys.PROTECTION_LEVEL) then
return true
end
local level = player:getLevel()
local magic = player:getMagicLevel()
local healtPlayer = player:getHealth()
local manaAlvo = target:getMana()
local dano = math.random(verDano(level, magic))
print(dano)
if manaAlvo >= dano then
target:addMana(-dano)
elseif dano > manaAlvo then
target:addMana(-manaAlvo)
end
if healtPlayer < dano then
player:addHealth(dano)
player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
end
end
local function encontrarAlvo(player, position)
if player:getTarget() == nil then
local c = Player(getTopCreature(position).uid)
if not c then
return true
end
target = c
else
if Player(player:getTarget()) then
target = player:getTarget()
else
return true
end
end
return target
end
function onCastSpell(cid, var)
local player = Player(cid)
local position = player:getPosition()
position:getNextPosition(player:getDirection(), 1)
local target = Player(encontrarAlvo(player, position))
if not target then
player:sendCancelMessage('Você só pode usar essa magia em jogadores.')
return true
end
position:sendMagicEffect(CONST_ME_PURPLEENERGY)
executar(player,target)
return true
end
info
Grupo: Visconde
Registrado: 28/06/11
Posts: 356
Reputação: +26
Char no Tibia: Akor Rysea

Tenta essa: Versão 1.x
local function verDano(level, magic) local min = (level + 2) + (magic * 3) / 2 local max = (level + 2) + (magic * 6) / 2 return min, max end local function executar(player,target) if target:getGroup():getId() > 1 then return true end if target:getLevel() <= configManager.getNumber(configKeys.PROTECTION_LEVEL) then return true end local level = player:getLevel() local magic = player:getMagicLevel() local healtPlayer = player:getHealth() local manaAlvo = target:getMana() local dano = math.random(verDano(level, magic)) print(dano) if manaAlvo >= dano then target:addMana(-dano) elseif dano > manaAlvo then target:addMana(-manaAlvo) end if healtPlayer < dano then player:addHealth(dano) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) end end local function encontrarAlvo(player, position) if player:getTarget() == nil then local c = Player(getTopCreature(position).uid) if not c then return true end target = c else if Player(player:getTarget()) then target = player:getTarget() else return true end end return target end function onCastSpell(cid, var) local player = Player(cid) local position = player:getPosition() position:getNextPosition(player:getDirection(), 1) local target = Player(encontrarAlvo(player, position)) if not target then player:sendCancelMessage('Você só pode usar essa magia em jogadores.') return true end position:sendMagicEffect(CONST_ME_PURPLEENERGY) executar(player,target) return true end
Deu esse erro:
e pelo que vi só é para atacar player, gostaria que atacassem monstros também se possível.
Obrigado ^^'
Deu esse erro:
e pelo que vi só é para atacar player, gostaria que atacassem monstros também se possível.
Obrigado ^^'
Vi o erro, chegando em casa eu arrumo
vou colocar para atacar só um sqm a frente e também os monstros. Pdc?
info
Grupo: Visconde
Registrado: 28/06/11
Posts: 356
Reputação: +26
Char no Tibia: Akor Rysea

Vi o erro, chegando em casa eu arrumo
vou colocar para atacar só um sqm a frente e também os monstros. Pdc?
com certeza, e é necessário marca o target.
com certeza, e é necessário marca o target.
O target tem que estar na sua frente ou não precisa?
Para atacar tem que ter target?
info
Grupo: Visconde
Registrado: 28/06/11
Posts: 356
Reputação: +26
Char no Tibia: Akor Rysea

O target tem que estar na sua frente ou não precisa?
Para atacar tem que ter target?
é igual uma magia de ataque (Exori vis por exemplo),mas irá atacar a mana do oponente e converter em vida para si mesmo.
Tenta assim:
local function verDano(level, magic)
local min = (level + 2) + (magic * 3) / 2
local max = (level + 2) + (magic * 6) / 2
return min, max
end
local function executar(player, uid)
local target = Creature(uid)
local level = player:getLevel()
local magic = player:getMagicLevel()
local manaAlvo = target:getMana()
local dano = math.floor(math.random(verDano(level, magic)))
doTargetCombatMana(player, target, 0, 0, CONST_ME_PURPLEENERGY)
if manaAlvo >= dano then
target:addMana(-dano, true)
elseif dano > manaAlvo then
target:addMana(-manaAlvo, true)
end
player:addHealth(dano, true)
player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
end
function onCastSpell(cid, var)
local player = Player(cid)
local uid = player:getTarget()
if uid == nil then
position = player:getPosition()
position:getNextPosition(player:getDirection(), 1)
uid = Creature(getTopCreature(position).uid)
else
position = uid:getPosition()
end
local pos = Tile(position)
if pos:hasFlag(TILESTATE_PROTECTIONZONE) then
player:sendCancelMessage('O alvo não pode estar em pz')
player:getPosition():sendMagicEffect(CONST_ME_POFF)
return false
end
if not uid then
player:sendCancelMessage('Você só pode usar essa magia em criaturas.')
player:getPosition():sendMagicEffect(CONST_ME_POFF)
return false
end
if uid:isPlayer() then
if uid:getGroup():getId() > 1 then
player:getPosition():sendMagicEffect(CONST_ME_POFF)
return false
end
if uid:getLevel() <= configManager.getNumber(configKeys.PROTECTION_LEVEL) then
player:getPosition():sendMagicEffect(CONST_ME_POFF)
return false
end
end
executar(player, uid)
return true
end
info
Grupo: Visconde
Registrado: 17/01/11
Posts: 343
Reputação: +46
Char no Tibia: Zodriac

Vou deixar a minha tb e.e
local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_MANADRAIN) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA) --ESCOLHE OS EFEITOS setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ARROW) --ESCOLHE OS EFEITOS function onCastSpell(cid, var) if(variantToNumber(var) == 0) then return doPlayerSendCancel(cid, "vc precisa de um target") end local target = getCreatureTarget(cid) local lv = getPlayerLevel(cid) local ml = getPlayerMagLevel(cid) local manaDrainMin = (lv+ml) * 2 local manaDrainMax = (lv+ml) * 3 local dmg = math.random(manaDrainMin, manaDrainMax) doCreatureAddMana(target, -dmg) doCreatereAddHealth(cid, dmg) return doCombat(cid, combat, var) end
Na tag em spells.xml precisa ter:
aggressive="1"
info
Grupo: Visconde
Registrado: 28/06/11
Posts: 356
Reputação: +26
Char no Tibia: Akor Rysea

Tenta assim:
local function verDano(level, magic) local min = (level + 2) + (magic * 3) / 2 local max = (level + 2) + (magic * 6) / 2 return min, max end local function executar(player, uid) local target = Creature(uid) local level = player:getLevel() local magic = player:getMagicLevel() local manaAlvo = target:getMana() local dano = math.floor(math.random(verDano(level, magic))) doTargetCombatMana(player, target, 0, 0, CONST_ME_PURPLEENERGY) if manaAlvo >= dano then target:addMana(-dano, true) elseif dano > manaAlvo then target:addMana(-manaAlvo, true) end player:addHealth(dano, true) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) end function onCastSpell(cid, var) local player = Player(cid) local uid = player:getTarget() if uid == nil then position = player:getPosition() position:getNextPosition(player:getDirection(), 1) uid = Creature(getTopCreature(position).uid) else position = uid:getPosition() end local pos = Tile(position) if pos:hasFlag(TILESTATE_PROTECTIONZONE) then player:sendCancelMessage('O alvo não pode estar em pz') player:getPosition():sendMagicEffect(CONST_ME_POFF) return false end if not uid then player:sendCancelMessage('Você só pode usar essa magia em criaturas.') player:getPosition():sendMagicEffect(CONST_ME_POFF) return false end if uid:isPlayer() then if uid:getGroup():getId() > 1 then player:getPosition():sendMagicEffect(CONST_ME_POFF) return false end if uid:getLevel() <= configManager.getNumber(configKeys.PROTECTION_LEVEL) then player:getPosition():sendMagicEffect(CONST_ME_POFF) return false end end executar(player, uid) return true end
Funcionou @@Lucas CP, só tenho uma duvida gostaria que ele retirasse mais mana do player e transformasse mais vida para si, já tentei alterar mais continua mesma base.
@@othereality Funcionou porém, se o player soltar magia mesmo sem target ele aumenta sua vida.Vou deixar a minha tb e.e
local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_MANADRAIN) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA) --ESCOLHE OS EFEITOS setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ARROW) --ESCOLHE OS EFEITOS function onCastSpell(cid, var) if(variantToNumber(var) == 0) then return doPlayerSendCancel(cid, "vc precisa de um target") end local target = getCreatureTarget(cid) local lv = getPlayerLevel(cid) local ml = getPlayerMagLevel(cid) local manaDrainMin = (lv+ml) * 2 local manaDrainMax = (lv+ml) * 3 local dmg = math.random(manaDrainMin, manaDrainMax) doCreatureAddMana(target, -dmg) doCreatereAddHealth(cid, dmg) return doCombat(cid, combat, var) endNa tag em spells.xml precisa ter:
aggressive="1"




info
Grupo: Visconde
Registrado: 28/06/11
Posts: 356
Reputação: +26
Char no Tibia: Akor Rysea
Olá galera boa noite;
Gostaria de pedir mais uma spell para vocês.
Detalhes:
*A spell vai drenar a mana do oponente e o jogador que lançou a magia irá ganhar vida;
*A spell irá drenar a mana do oponente aleatório e ganhar vida, a mesma quantidade que retirou de mana do player.
-Não tem muitos detalhes é so isso mesmo.
Então é isso, espero que vocês me ajudem novamente.
Versão: 10.90
TFS: 1x