Postado Dezembro 6, 2016 8 anos Esqueci de postar o script que fiz. Bom, não é nada complexo ou bem-feito, mas é um começo. Se tiver algumas ideias de magia, eu posso fazer algo mais elaborado. Coloque essas duas funções no final do arquivo lib/050-function.lua. function getNextTiles(playerPos) local sx = {-1, -1, 0, 1, 1, 1, 0, -1} local sy = {0, 1, 1, 1, 0, -1, -1, -1} local positions = {} for i=1, #sx do local positiontable = {x=playerPos.x+sx[i], y=playerPos.y+sy[i], z=playerPos.z} table.insert(positions, positiontable) end return positions end function aroundEffect(time, mindmg, maxdmg, effect, const, i, cid) local table = getNextTiles(getCreaturePosition(cid)) local lastpos = (tonumber(i) == 1) and table[#table] or table[i-1] if (i<=8) then local thing = getThingfromPos({x=table[i].x, y=table[i].y, z=table[i].z, stackpos=253}) doSendDistanceShoot(lastpos, table[i], effect) doSendMagicEffect(table[i], const) if (thing.itemid > 0) then local dmg = math.abs(math.random(mindmg, maxdmg)) doCreatureAddHealth(thing.uid, -dmg) doSendAnimatedText(table[i], "-"..dmg, 180) end lastpos = table[i] return addEvent(aroundEffect, time, time, mindmg, maxdmg, effect, const, i+1, cid) else return false end end E no arquivo da spell ficaria basicamente assim: function onCastSpell(cid, var) aroundEffect(1, 100, 500, 3, CONST_ME_FIREATTACK, 1, cid) end Para configurar é só editar os parâmetros: aroundEffect(time, mindmg, maxdmg, effect, const, i, cid)time = tempo entre cada efeito da magia em milisegundos (1000 = 1 segundo) (esse tempo multiplicado por 8 vai ser o tempo de execução da magia)mindmg = dano mínimo maxdmg = dano máximo effect = o efeito missile que será usado const = o segundo efeito (pode encontrar uma lista deles em lib/000-constant.lua) i = coloca sempre 1 (coloquei isso antes para outra parte da ideia) cid = deixa cid também Ajudei? De nada \o/ Att Rusherzin
Postado Dezembro 7, 2016 8 anos Autor 22 horas atrás, Rusherzin disse: Esqueci de postar o script que fiz. Bom, não é nada complexo ou bem-feito, mas é um começo. Se tiver algumas ideias de magia, eu posso fazer algo mais elaborado. Coloque essas duas funções no final do arquivo lib/050-function.lua. function getNextTiles(playerPos) local sx = {-1, -1, 0, 1, 1, 1, 0, -1} local sy = {0, 1, 1, 1, 0, -1, -1, -1} local positions = {} for i=1, #sx do local positiontable = {x=playerPos.x+sx[i], y=playerPos.y+sy[i], z=playerPos.z} table.insert(positions, positiontable) end return positions end function aroundEffect(time, mindmg, maxdmg, effect, const, i, cid) local table = getNextTiles(getCreaturePosition(cid)) local lastpos = (tonumber(i) == 1) and table[#table] or table[i-1] if (i<=8) then local thing = getThingfromPos({x=table[i].x, y=table[i].y, z=table[i].z, stackpos=253}) doSendDistanceShoot(lastpos, table[i], effect) doSendMagicEffect(table[i], const) if (thing.itemid > 0) then local dmg = math.abs(math.random(mindmg, maxdmg)) doCreatureAddHealth(thing.uid, -dmg) doSendAnimatedText(table[i], "-"..dmg, 180) end lastpos = table[i] return addEvent(aroundEffect, time, time, mindmg, maxdmg, effect, const, i+1, cid) else return false end end E no arquivo da spell ficaria basicamente assim: function onCastSpell(cid, var) aroundEffect(1, 100, 500, 3, CONST_ME_FIREATTACK, 1, cid) end Para configurar é só editar os parâmetros: aroundEffect(time, mindmg, maxdmg, effect, const, i, cid)time = tempo entre cada efeito da magia em milisegundos (1000 = 1 segundo) (esse tempo multiplicado por 8 vai ser o tempo de execução da magia)mindmg = dano mínimo maxdmg = dano máximo effect = o efeito missile que será usado const = o segundo efeito (pode encontrar uma lista deles em lib/000-constant.lua) i = coloca sempre 1 (coloquei isso antes para outra parte da ideia) cid = deixa cid também Funcionou direitinho!! ficou muito bom!! muito obrigado mesmo! :D Editado Dezembro 7, 2016 8 anos por kinomoto (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.