Postado Fevereiro 24, 2024 1 ano .Qual servidor ou website você utiliza como base? Qual o motivo deste tópico? ajuda com spell Está surgindo algum erro? Se sim coloque-o aqui. Citar alguém consegue fazer a Sprite do personagem desaparecer ao teleportar no alvo quando uso a skill? Você tem o código disponível? Se tiver publique-o aqui: local config = { efeitoTele = 3, -- efeito q ira aparacer a cada teleport. efeitoDamage = 134, -- efeito q ira aparecer ao hitar no alvo hits = 1, -- quantos hits vai dar delay = 500, -- intervalo de tempo a cada hit min = 2000, -- dano minimo max = 2400, -- dano maximo damage = COMBAT_PHYSICALDAMAGE -- tipo do dano } function isWalkable(pos, creature, pz, proj) -- nord if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end if getTopCreature(pos).uid > 0 and creature then return false end if getTileInfo(pos).protection and not pz then return false end local n = not proj and 3 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return true end end end return true end function getPosDirs(p, dir) -- mkalo return dir == 1 and {x=p.x-1, y=p.y, z=p.z} or dir == 2 and {x=p.x-1, y=p.y+1, z=p.z} or dir == 3 and {x=p.x, y=p.y+1, z=p.z} or dir == 4 and {x=p.x+1, y=p.y+1, z=p.z} or dir == 5 and {x=p.x+1, y=p.y, z=p.z} or dir == 6 and {x=p.x+1, y=p.y-1, z=p.z} or dir == 7 and {x=p.x, y=p.y-1, z=p.z} or dir == 8 and {x=p.x-1, y=p.y-1, z=p.z} end function validPos(pos) tb = {} for i = 1, 8 do newpos = getPosDirs(pos, i) if isWalkable(newpos) then table.insert(tb, newpos) end end table.insert(tb, pos) return tb end spell = { start = function (cid, target, markpos, hits) if not isCreature(cid) then return true end if not isCreature(target) or hits < 1 then doTeleportThing(cid, markpos) doSendMagicEffect(getThingPos(cid), config.efeitoTele) return true end posAv = validPos(getThingPos(target)) rand = #posAv == 1 and 1 or #posAv - 1 doSendMagicEffect(getThingPos(cid), config.efeitoTele) doTeleportThing(cid, posAv[math.random(1, rand)]) doAreaCombatHealth(cid, config.damage, getThingPos(target), 0, -config.min, -config.max, config.efeitoDamage) addEvent(spell.start, config.delay, cid, target, markpos, hits - 1) end } function onCastSpell(cid) local position1 = {x=getThingPosition(getCreatureTarget(cid)).x+1, y=getThingPosition(getCreatureTarget(cid)).y+1, z=getThingPosition(getCreatureTarget(cid)).z} target = getCreatureTarget(cid) if target then spell.start(cid, target, getThingPos(cid), config.hits) doSendMagicEffect(position1, 138) end return true end Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. chidori.luaUnavailable
Postado Fevereiro 24, 2024 1 ano dessa forma? local config = { efeitoTele = 3, -- efeito que irá aparecer a cada teleport. efeitoDamage = 134, -- efeito que irá aparecer ao acertar o alvo hits = 10, -- quantos hits serão dados delay = 500, -- intervalo de tempo entre cada hit min = 2000, -- dano mínimo max = 2400, -- dano máximo damage = COMBAT_PHYSICALDAMAGE, -- tipo de dano animation = 138 -- animação do feitiço } function isWalkable(pos, creature, pz, proj) -- nord / fixed: odranoels.s if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end if getTopCreature(pos).uid > 0 and creature then return false end if getTileInfo(pos).protection and not pz then return false end local n = not proj and 3 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return true end end end return true end function getPosDirs(p, dir) -- mkalo / fixed: odranoels.s return dir == 1 and {x=p.x-1, y=p.y, z=p.z} or dir == 2 and {x=p.x-1, y=p.y+1, z=p.z} or dir == 3 and {x=p.x, y=p.y+1, z=p.z} or dir == 4 and {x=p.x+1, y=p.y+1, z=p.z} or dir == 5 and {x=p.x+1, y=p.y, z=p.z} or dir == 6 and {x=p.x+1, y=p.y-1, z=p.z} or dir == 7 and {x=p.x, y=p.y-1, z=p.z} or dir == 8 and {x=p.x-1, y=p.y-1, z=p.z} end function validPos(pos) local tb = {} for i = 1, 8 do local newpos = getPosDirs(pos, i) if isWalkable(newpos) then table.insert(tb, newpos) end end table.insert(tb, pos) return tb end spell = { -- fixed: odranoels.s start = function (cid, target, markpos, hits) if not isCreature(cid) then return true end if not isCreature(target) or hits < 1 then doTeleportThing(cid, markpos) doSendMagicEffect(getThingPos(cid), config.efeitoTele) return true end local posAv = validPos(getThingPos(target)) local rand = #posAv == 1 and 1 or #posAv - 1 doSendMagicEffect(getThingPos(cid), config.efeitoTele) local playerOutfit = getCreatureOutfit(cid) setCreatureOutfit(cid, {lookType = 0}) local hitCount = 0 local originalPos = getThingPos(cid) local function doHit() hitCount = hitCount + 1 if hitCount <= config.hits then addEvent(function() doTeleportThing(cid, posAv[math.random(1, rand)]) addEvent(doAreaCombatHealth, config.delay, cid, config.damage, getThingPos(target), 0, -config.min, -config.max, config.efeitoDamage) addEvent(doHit, config.delay) end, config.delay) else addEvent(function() if isCreature(cid) then doTeleportThing(cid, originalPos) setCreatureOutfit(cid, playerOutfit) end end, config.delay) end end doHit() end } function onCastSpell(cid) local target = getCreatureTarget(cid) if target then local position1 = {x = getThingPosition(target).x + 1, y = getThingPosition(target).y + 1, z = getThingPosition(target).z} spell.start(cid, target, getThingPos(cid), config.hits) doSendMagicEffect(position1, config.animation) end return true end function setCreatureOutfit(cid, outfit) -- odranoels.s if outfit.lookType == nil then return end local lookType = outfit.lookType local lookHead = outfit.lookHead or 0 local lookBody = outfit.lookBody or 0 local lookLegs = outfit.lookLegs or 0 local lookFeet = outfit.lookFeet or 0 local addons = outfit.addons or 0 doCreatureChangeOutfit(cid, {lookType = lookType, lookHead = lookHead, lookBody = lookBody, lookLegs = lookLegs, lookFeet = lookFeet, addons = addons}) end
Postado Fevereiro 24, 2024 1 ano Autor Em 24/02/2024 em 15:32, Odranoel S.S disse: dessa forma? local config = { efeitoTele = 3, -- efeito que irá aparecer a cada teleport. efeitoDamage = 134, -- efeito que irá aparecer ao acertar o alvo hits = 10, -- quantos hits serão dados delay = 500, -- intervalo de tempo entre cada hit min = 2000, -- dano mínimo max = 2400, -- dano máximo damage = COMBAT_PHYSICALDAMAGE, -- tipo de dano animation = 138 -- animação do feitiço } function isWalkable(pos, creature, pz, proj) -- nord / fixed: odranoels.s if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end if getTopCreature(pos).uid > 0 and creature then return false end if getTileInfo(pos).protection and not pz then return false end local n = not proj and 3 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return true end end end return true end function getPosDirs(p, dir) -- mkalo / fixed: odranoels.s return dir == 1 and {x=p.x-1, y=p.y, z=p.z} or dir == 2 and {x=p.x-1, y=p.y+1, z=p.z} or dir == 3 and {x=p.x, y=p.y+1, z=p.z} or dir == 4 and {x=p.x+1, y=p.y+1, z=p.z} or dir == 5 and {x=p.x+1, y=p.y, z=p.z} or dir == 6 and {x=p.x+1, y=p.y-1, z=p.z} or dir == 7 and {x=p.x, y=p.y-1, z=p.z} or dir == 8 and {x=p.x-1, y=p.y-1, z=p.z} end function validPos(pos) local tb = {} for i = 1, 8 do local newpos = getPosDirs(pos, i) if isWalkable(newpos) then table.insert(tb, newpos) end end table.insert(tb, pos) return tb end spell = { -- fixed: odranoels.s start = function (cid, target, markpos, hits) if not isCreature(cid) then return true end if not isCreature(target) or hits < 1 then doTeleportThing(cid, markpos) doSendMagicEffect(getThingPos(cid), config.efeitoTele) return true end local posAv = validPos(getThingPos(target)) local rand = #posAv == 1 and 1 or #posAv - 1 doSendMagicEffect(getThingPos(cid), config.efeitoTele) local playerOutfit = getCreatureOutfit(cid) setCreatureOutfit(cid, {lookType = 0}) local hitCount = 0 local originalPos = getThingPos(cid) local function doHit() hitCount = hitCount + 1 if hitCount <= config.hits then addEvent(function() doTeleportThing(cid, posAv[math.random(1, rand)]) addEvent(doAreaCombatHealth, config.delay, cid, config.damage, getThingPos(target), 0, -config.min, -config.max, config.efeitoDamage) addEvent(doHit, config.delay) end, config.delay) else addEvent(function() if isCreature(cid) then doTeleportThing(cid, originalPos) setCreatureOutfit(cid, playerOutfit) end end, config.delay) end end doHit() end } function onCastSpell(cid) local target = getCreatureTarget(cid) if target then local position1 = {x = getThingPosition(target).x + 1, y = getThingPosition(target).y + 1, z = getThingPosition(target).z} spell.start(cid, target, getThingPos(cid), config.hits) doSendMagicEffect(position1, config.animation) end return true end function setCreatureOutfit(cid, outfit) -- odranoels.s if outfit.lookType == nil then return end local lookType = outfit.lookType local lookHead = outfit.lookHead or 0 local lookBody = outfit.lookBody or 0 local lookLegs = outfit.lookLegs or 0 local lookFeet = outfit.lookFeet or 0 local addons = outfit.addons or 0 doCreatureChangeOutfit(cid, {lookType = lookType, lookHead = lookHead, lookBody = lookBody, lookLegs = lookLegs, lookFeet = lookFeet, addons = addons}) end IRMAO FICOU PEREITO CONSEGUI ADPTAR QUASE QUE EXATAMENTE COMO EU QUERIA MUITO OBRIGADOOOOO EXISTE A POSSIBILIDADE DE FAZER ESSE COMANDO SE REPETIR ALGUMAS VEZES PARA ROLAR UMA ANIMAÇAO ANTES DE TELEPORTAR USANDO AS LOOKTYPE ???? local playerOutfit = getCreatureOutfit(cid) setCreatureOutfit(cid, {lookType = 704}) Editado Fevereiro 24, 2024 1 ano por sirmagna (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.