Função?
- Fórum
- OTServ
- Recursos
- Scripting
- Actions e Talkactions
- Evil Spirit v2.0
Evil Spirit v2.0
Por meubk, 12 de nov. de 2013 em Actions e Talkactions
info
Grupo: Infante
Registrado: 27/01/13
Posts: 1.7k
Reputação: +104
Gênero: Masculino

info
Grupo: Visconde
Registrado: 27/10/12
Posts: 323
Reputação: +46
Char no Tibia: Schznister Equilibriun

só poderia dizer oq ela faiz? onde irá acertar? oque irá acontecer?
info
Grupo: Conde
Registrado: 16/09/07
Posts: 600
Reputação: +151
Gênero: Masculino
Char no Tibia: NãoJogoMais

Creio que seja igual/parecido com o Evil Spirit de Mu Online.
Como o do vídeo abaixo:
info
Grupo: Visconde
Registrado: 27/10/12
Posts: 323
Reputação: +46
Char no Tibia: Schznister Equilibriun

se for isso, a pessoa tem que criar a sprite do fantasma indo de todos os lados.
também, será que essa spell ordena o efeito em ficar indo em cada lugar?
Ex: de cima para baixo, de baixo para o lado esquerdo, do lado esquerdo para cima, etc...
é assim que funciona a Evil Spirit do Mu Online.
@edit
pode se até usar um efeito que se parece mt com a Evil Spirit é o efeito de distancia da Sudden Death Rune!
Editado Novembro 18 por markindoot
info
Grupo: Conde
Registrado: 16/09/07
Posts: 600
Reputação: +151
Gênero: Masculino
Char no Tibia: NãoJogoMais

se for isso, a pessoa tem que criar a sprite do fantasma indo de todos os lados.
também, será que essa spell ordena o efeito em ficar indo em cada lugar?
Ex: de cima para baixo, de baixo para o lado esquerdo, do lado esquerdo para cima, etc...
é assim que funciona a Evil Spirit do Mu Online.
@edit
pode se até usar um efeito que se parece mt com a Evil Spirit é o efeito de distancia da Sudden Death Rune!
Sim, este se parece mesmo.
Deve-se testá-lo e talvez até fazer um vídeo pra gente saber como realmente é.
Seria interessante.
Estou sem tempo agora, se não fazia.
ta ae o video ![]()
Editado Novembro 25 por xotservx
info
Grupo: Conde
Registrado: 16/09/07
Posts: 600
Reputação: +151
Gênero: Masculino
Char no Tibia: NãoJogoMais

Ah sim, muuuito excelente este script.
Com certeza irei adaptá-lo e usarei em meu Projeto.
Obrigado mesmo por compartilhar.
info
Grupo: Visconde
Registrado: 27/10/12
Posts: 323
Reputação: +46
Char no Tibia: Schznister Equilibriun

puts esqueci de ver esse video uhashuasuha, chegando em casa eu vejo!! REPUTADO.




info
Grupo: Visconde
Registrado: 21/04/08
Posts: 311
Reputação: +257
- versão sem bugs e você pode configurar do teu jeito
local configSpell = { exaust = 40, -- tempo de exaustão st = 19020, -- não mexe level = 150, -- level para usar min = 1000, -- ataque minimo max = 2000, -- ataque maximo voc = {1, 5}, -- vocações mana = 800, -- mana } -- SPELL EVIL SPIRIT BY: XOTSERVX -- function isWalkable(pos, creature, proj, pz)-- by 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 pz then return false, true 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 false end end end return true end function getPosDirs(p, dir) 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 posIgual(pos1, pos2) return pos1.x == pos2.x and pos1.y == pos2.y and pos1.z == pos2.z and true or false end effect = 34 distance = 31 damage = COMBAT_DEATHDAMAGE evilspirit = { walk = function (cid, min, max, pos, rounds, ultimapos) if rounds == 0 then return true end if not isCreature(cid) then return true end posdisp = {} for _, dir in pairs({1, 5, 7, 3}) do if isWalkable(getPosDirs(pos, dir)) and not posIgual(getPosDirs(pos, dir), getThingPos(cid)) and not posIgual(getPosDirs(pos, dir), ultimapos) then table.insert(posdisp, getPosDirs(pos, dir)) end end if #posdisp < 1 then return true end posesc = posdisp[math.random(1, #posdisp)] ultimapos = pos doSendDistanceShoot(pos, posesc, distance) if min > 0 then min = -min max = -max end doAreaCombatHealth(cid, damage, posesc, 0, min, max, effect) addEvent(evilspirit.walk, 140, cid, min, max, posesc, rounds - 1, ultimapos) end } function onSay(cid, word) if getPlayerAccess(cid) < 3 then if getPlayerLevel(cid) < configSpell.level then return doPlayerSendCancel(cid, "You need level " .. configSpell.level .. " to use this spell.") end if not isInArray(configSpell.voc, getPlayerVocation(cid)) then return doPlayerSendCancel(cid, "Your vocation dont use this spell.") end if exhaustion.check(cid, configSpell.st) then return doPlayerSendCancel(cid, "You is exhausted.") end if getCreatureMana(cid) < configSpell.mana then return doPlayerSendCancel(cid, "You dont have mana.") end doCreatureAddMana(cid, -configSpell.mana) exhaustion.set(cid, configSpell.st, configSpell.exaust) end evilspirit.walk(cid, configSpell.min, configSpell.max, getThingPos(cid), 40, {x=1, y=1, z=1}) for i = 1, 13 do addEvent(evilspirit.walk, i * math.random(300, 500), cid, configSpell.min, configSpell.max, getThingPos(cid), 40, {x=1, y=1, z=1}) end return true endtalkaction: