Postado Maio 12, 2018 7 anos Base: 0.4 Boa Tarde galera, eu tive uma ideiazinha pra uma spell, é muito simples (eu acho), mas preciso de ajuda. É o seguinte, a magia seria um exori hur, mas com martelo só. Quando a spell fosse usada, faria um efeito igual o exori hur, mas só como club. A magia atingiria o alvo e logo em seguida ele voltasse pro player (sem dar dano nele, claro) como se fosse o martelo do Thor. Eu tenho o código do exori hur aqui se precisar como base: Citar local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, true) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_WHIRLWINDCLUB) setCombatParam(combat, COMBAT_PARAM_USECHARGES, true) function onGetFormulaValues(cid, level, skill, attack, factor) local skillTotal, levelTotal = skill + attack, level / 5 return -(skillTotal / 3 + levelTotal), -(skillTotal + levelTotal) end setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") function onCastSpell(cid, var) if isMonster(cid) then doCreatureSay(cid, "exori hur", TALKTYPE_MONSTER) end return doCombat(cid, combat, var) end Desde já agradeço Editado Maio 12, 2018 7 anos por Zazeros (veja o histórico de edições)
Postado Maio 19, 2018 7 anos Bom tem uma aqui que eu não me lembro onde peguei mas acho que é o que você esta pedindo... Como funciona: A skil vai em uma quantidade de sqm configurável e volta até o player. local config = { distance = 6, --Distância do "bumerangue". distEffect = 25, --Distance effect. minDamage = 1, --Dano mínimo. maxDamage = 150, --Dano máximo. interval = 350 --Tempo para o bumerangue voltar, em milésimos de segundo. } function getPosisBetween(fromPos, toPos) local posis = {} for i = 1, getDistanceBetween(fromPos, toPos) do local choices = {fromPos.x, fromPos.x + 1, fromPos.x - 1} if fromPos.x ~= toPos.x then table.sort(choices, function(a, b) if fromPos.x - toPos.x < 0 then return a > b else return a < b end end) fromPos.x = choices[1] end if fromPos.y ~= toPos.y then choices = {fromPos.y, fromPos.y + 1, fromPos.y - 1} table.sort(choices, function(a, b) if fromPos.y - toPos.y < 0 then return a > b else return a < b end end) fromPos.y = choices[1] end table.insert(posis, {x = fromPos.x, y = fromPos.y, z = fromPos.z}) end return posis end function onCastSpell(cid) local playerPos = getThingPos(cid) local toPos = { [0] = {x = playerPos.x, y = playerPos.y - config.distance, z = playerPos.z}, [1] = {x = playerPos.x + config.distance, y = playerPos.y, z = playerPos.z}, [2] = {x = playerPos.x, y = playerPos.y + config.distance, z = playerPos.z}, [3] = {x = playerPos.x - config.distance, y = playerPos.y, z = playerPos.z} } local spellToPos = toPos[getCreatureLookDirection(cid)] local posis = getPosisBetween(getThingPos(cid), spellToPos) doSendDistanceShoot(getThingPos(cid), spellToPos, config.distEffect) for i = 1, #posis do if not getTileInfo(posis[i]).protection then local pid = getTopCreature(posis[i]).uid if isMonster(pid) or isPlayer(pid) then doTargetCombatHealth(cid, pid, COMBAT_PHYSICALDAMAGE, -config.minDamage, -config.maxDamage, -1) end end end addEvent(function() if not isPlayer(cid) then return true end doSendDistanceShoot(spellToPos, getThingPos(cid), config.distEffect) posis = getPosisBetween(spellToPos, getThingPos(cid)) for i = 1, #posis do if not getTileInfo(posis[i]).protection then local pid = getTopCreature(posis[i]).uid if isMonster(pid) or isPlayer(pid) then doTargetCombatHealth(cid, pid, COMBAT_PHYSICALDAMAGE, -config.minDamage, -config.maxDamage, -1) end end end end, config.interval) return true end Obs: Não sou script logo talvez não conseguirei lhe dar suporte para dúvidas.
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.