julhinhuu 26 Postado Fevereiro 10, 2016 Share Postado Fevereiro 10, 2016 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 Link para o comentário https://xtibia.com/forum/topic/239386-spell-drenar-mana-e-ganhar-health/ Compartilhar em outros sites More sharing options...
0 Lucas CP 21 Postado Fevereiro 17, 2016 Share Postado Fevereiro 17, 2016 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 Link para o comentário https://xtibia.com/forum/topic/239386-spell-drenar-mana-e-ganhar-health/#findComment-1686245 Compartilhar em outros sites More sharing options...
0 julhinhuu 26 Postado Fevereiro 14, 2016 Autor Share Postado Fevereiro 14, 2016 UP! Link para o comentário https://xtibia.com/forum/topic/239386-spell-drenar-mana-e-ganhar-health/#findComment-1685853 Compartilhar em outros sites More sharing options...
0 Skulls 331 Postado Fevereiro 14, 2016 Share Postado Fevereiro 14, 2016 Posso fazer, mas 0.4. Link para o comentário https://xtibia.com/forum/topic/239386-spell-drenar-mana-e-ganhar-health/#findComment-1685854 Compartilhar em outros sites More sharing options...
0 julhinhuu 26 Postado Fevereiro 14, 2016 Autor Share Postado Fevereiro 14, 2016 Faça ai se funcionar hehe. Link para o comentário https://xtibia.com/forum/topic/239386-spell-drenar-mana-e-ganhar-health/#findComment-1685855 Compartilhar em outros sites More sharing options...
0 gabriel28 60 Postado Fevereiro 14, 2016 Share Postado Fevereiro 14, 2016 Posso fazer, mas 0.4. Faz! hahahaha Link para o comentário https://xtibia.com/forum/topic/239386-spell-drenar-mana-e-ganhar-health/#findComment-1685858 Compartilhar em outros sites More sharing options...
0 Lucas CP 21 Postado Fevereiro 16, 2016 Share Postado Fevereiro 16, 2016 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 Link para o comentário https://xtibia.com/forum/topic/239386-spell-drenar-mana-e-ganhar-health/#findComment-1686111 Compartilhar em outros sites More sharing options...
0 julhinhuu 26 Postado Fevereiro 16, 2016 Autor Share Postado Fevereiro 16, 2016 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 ^^' Link para o comentário https://xtibia.com/forum/topic/239386-spell-drenar-mana-e-ganhar-health/#findComment-1686134 Compartilhar em outros sites More sharing options...
0 Lucas CP 21 Postado Fevereiro 17, 2016 Share Postado Fevereiro 17, 2016 Deu esse erro: 1212.png 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? Link para o comentário https://xtibia.com/forum/topic/239386-spell-drenar-mana-e-ganhar-health/#findComment-1686227 Compartilhar em outros sites More sharing options...
0 julhinhuu 26 Postado Fevereiro 17, 2016 Autor Share Postado Fevereiro 17, 2016 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. Link para o comentário https://xtibia.com/forum/topic/239386-spell-drenar-mana-e-ganhar-health/#findComment-1686240 Compartilhar em outros sites More sharing options...
0 Lucas CP 21 Postado Fevereiro 17, 2016 Share Postado Fevereiro 17, 2016 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? Link para o comentário https://xtibia.com/forum/topic/239386-spell-drenar-mana-e-ganhar-health/#findComment-1686241 Compartilhar em outros sites More sharing options...
0 julhinhuu 26 Postado Fevereiro 17, 2016 Autor Share Postado Fevereiro 17, 2016 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. Link para o comentário https://xtibia.com/forum/topic/239386-spell-drenar-mana-e-ganhar-health/#findComment-1686242 Compartilhar em outros sites More sharing options...
0 othereality 46 Postado Fevereiro 20, 2016 Share Postado Fevereiro 20, 2016 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" Link para o comentário https://xtibia.com/forum/topic/239386-spell-drenar-mana-e-ganhar-health/#findComment-1686498 Compartilhar em outros sites More sharing options...
0 julhinhuu 26 Postado Fevereiro 22, 2016 Autor Share Postado Fevereiro 22, 2016 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. 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" @@othereality Funcionou porém, se o player soltar magia mesmo sem target ele aumenta sua vida. Link para o comentário https://xtibia.com/forum/topic/239386-spell-drenar-mana-e-ganhar-health/#findComment-1686677 Compartilhar em outros sites More sharing options...
0 gabriel28 60 Postado Fevereiro 22, 2016 Share Postado Fevereiro 22, 2016 Poem isso, needtarget="1", na tag da spell, creio que eliminará o problema. Link para o comentário https://xtibia.com/forum/topic/239386-spell-drenar-mana-e-ganhar-health/#findComment-1686678 Compartilhar em outros sites More sharing options...
0 Lucas CP 21 Postado Fevereiro 22, 2016 Share Postado Fevereiro 22, 2016 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. Só mudar essa linha: local min = (level + 2) + (magic * 3) / 2 local max = (level + 2) + (magic * 6) / 2 pode colocar assim tambem, exemplo: local min = (level + 2) + (magic * 13) / 2 local max = (level + 2) + (magic * 16) / 2 Link para o comentário https://xtibia.com/forum/topic/239386-spell-drenar-mana-e-ganhar-health/#findComment-1686680 Compartilhar em outros sites More sharing options...
Pergunta
julhinhuu 26
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
Link para o comentário
https://xtibia.com/forum/topic/239386-spell-drenar-mana-e-ganhar-health/Compartilhar em outros sites
17 respostass a esta questão
Posts Recomendados