Postado Janeiro 15, 2021 4 anos Qual servidor ou website você utiliza como base? TFS 1.3 Qual o motivo deste tópico? Será que alguem pode me ajudar com uma edição simples? Tenho uma spell de cura que fica aparecendo uns efeitos e manda distance efects pra quem lançou a magia. Gostaria de fazer ela tipo um exura sio, os efeitos iriram pro target do sio" Estava tentando utilizar o script do exura sio pra mesclar, acredito que tenha que mudar as funçoes de player: para creature: Exura sio Spoiler local combat = Combat() combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_HEALING) combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) combat:setParameter(COMBAT_PARAM_AGGRESSIVE, 0) combat:setParameter(COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) function onGetFormulaValues(player, level, maglevel) local min = (level / 5) + (maglevel * 10) local max = (level / 5) + (maglevel * 14) return min, max end combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") function onCastSpell(creature, var) if creature:isPlayer() and var:getNumber() == creature:getId() then creature:sendCancelMessage("You can't cast this spell to yourself.") creature:getPosition():sendMagicEffect(CONST_ME_POFF) return false else return combat:execute(creature, var) end end Está surgindo algum erro? Se sim coloque-o aqui. Citar Você tem o código disponível? Se tiver publique-o aqui: AREA1 = { {0, 0, 0}, {0, 3, 0}, {0, 0, 0} } local cbarea = createCombatArea(AREA1) local function sendHealingEffect(cid, position, loopCount) local player = Player(cid) if not player then return end position:sendDistanceEffect(player:getPosition(), CONST_ANI_SMALLHOLY) player:addHealth(math.max(100, 150)) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) if loopCount == 0 then player:getPosition():sendMagicEffect(CONST_ME_HOLYAREA) end end function onCastSpell(creature, var) local playerPos = creature:getPosition() local loopCount = 12 local combat = Combat() creature:say('Heal me my brothers!', TALKTYPE_MONSTER_SAY) for i = 1, loopCount do local position = Position(playerPos.x + math.random(-4, 3), playerPos.y + math.random(-3, 2), playerPos.z) addEvent(doAreaCombatHealth, i * 75, creature:getId(), COMBAT_PHYSICALDAMAGE, position, cbarea, 0, 0, CONST_ME_ASSASSIN) addEvent(sendHealingEffect, i * 75, creature:getId(), position, loopCount - i) end return false end Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. Editado Janeiro 15, 2021 4 anos por Lethal M (veja o histórico de edições)
Postado Janeiro 15, 2021 4 anos Solução Coloquei a fórmula da magia como no exura sio que você deixou. Qualquer coisa é só trocar a fórmula ali como você quiser. local spellConfig = { healCount = 12, -- número de vezes que vai curar healInterval = 75 -- intervalo da cura em milisegundos } local combat = Combat() combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_HEALING) combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) combat:setParameter(COMBAT_PARAM_AGGRESSIVE, 0) combat:setParameter(COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) function onGetFormulaValues(player, level, maglevel) local div = 1 / spellConfig.healCount local min = div * ((level / 5) + (maglevel * 10)) local max = div * ((level / 5) + (maglevel * 14)) return min, max end combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") local function sendHealingEffect(cid, var, target, healcounter) local player = Player(cid) if not player then return end local targetPlayer = Player(target) if not targetPlayer then return end combat:execute(player, var) local targetPos = targetPlayer:getPosition() local randPos = Position(targetPos.x + math.random(-4, 3), targetPos.y + math.random(-3, 2), targetPos.z) randPos:sendMagicEffect(CONST_ME_ASSASSIN) randPos:sendDistanceEffect(targetPos, CONST_ANI_SMALLHOLY) targetPos:sendMagicEffect(CONST_ME_MAGIC_BLUE) if healcounter == 0 then targetPos:sendMagicEffect(CONST_ME_HOLYAREA) end end function onCastSpell(creature, var) local target = Player(var:getNumber()) if not target then return end local healcounter, interval = spellConfig.healCount, spellConfig.healInterval local playerId = creature:getId() local targetId = target:getId() creature:say(string.format('Brothers, heal %s now!', target:getName()), TALKTYPE_MONSTER_SAY) for i = 1, healcounter do addEvent(sendHealingEffect, (i-1) * interval, playerId, var, targetId, healcounter - i) end return false end Pega a tag do exura sio no spells.xml e coloca para sua magia. Vai ficar assim: https://i.imgur.com/Uiha0uB.gif Editado Janeiro 15, 2021 4 anos por Dwarfer (veja o histórico de edições) Contato: Email: [email protected] Discord: Dwarfer#2715
Postado Janeiro 16, 2021 4 anos Autor Muito Obrigado @Dwarfer era exatamente o que eu queria !!!! \o/ Aproveitando o post seria possivel colocar pra magia ficar no chao curando em area usando o spoiler inicial do post? Ao inves de ter target ou ser selftarget, ficaria no chao na pos. que foi castada O player usaria e criaria uma area 6X6 de cura no local que se repete Seria uma mescla desta magia com Exura gran mas Res Cura Self com efeitos Spoiler AREA1 = { {0, 0, 0}, {0, 3, 0}, {0, 0, 0} } local cbarea = createCombatArea(AREA1) local function sendHealingEffect(cid, position, loopCount) local player = Player(cid) if not player then return end position:sendDistanceEffect(player:getPosition(), CONST_ANI_SMALLHOLY) player:addHealth(math.max(100, 150)) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) if loopCount == 0 then player:getPosition():sendMagicEffect(CONST_ME_HOLYAREA) end end function onCastSpell(creature, var) local playerPos = creature:getPosition() local loopCount = 12 local combat = Combat() creature:say('Heal me my brothers!', TALKTYPE_MONSTER_SAY) for i = 1, loopCount do local position = Position(playerPos.x + math.random(-4, 3), playerPos.y + math.random(-3, 2), playerPos.z) addEvent(doAreaCombatHealth, i * 75, creature:getId(), COMBAT_PHYSICALDAMAGE, position, cbarea, 0, 0, CONST_ME_ASSASSIN) addEvent(sendHealingEffect, i * 75, creature:getId(), position, loopCount - i) end return false end Exura gran mas Res Spoiler function onTargetCreature(creature, target) local player = creature:getPlayer() local min = ((player:getLevel() / 5) + (player:getMagicLevel() * 5.7) + 26) local max = ((player:getLevel() / 5) + (player:getMagicLevel() * 10.43) + 62) local bosses = {"leiden", "ravennous hunger", "dorokoll the mystic", "eshtaba the conjurer", "eliz the unyielding", "mezlon the defiler", "malkhar deathbringer", "containment crystal"} local master = target:getMaster() if target:isMonster() and not master or master and master:isMonster() then if (not isInArray(bosses, target:getName():lower())) then return true end end doTargetCombatHealth(0, target, COMBAT_HEALING, min, max, CONST_ME_NONE) return true end local combat = Combat() combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) combat:setParameter(COMBAT_PARAM_AGGRESSIVE, 0) combat:setParameter(COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) combat:setArea(createCombatArea(AREA_CIRCLE3X3)) combat:setCallback(CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature") function onCastSpell(creature, var) return combat:execute(creature, var) end Editado Janeiro 16, 2021 4 anos por Lethal M (veja o histórico de edições)
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.