Ir para conteúdo

[Spell] Tsukuyomi!


Newtonnotwen

Posts Recomendados

Aew galera, aqui está a magia Tsukuyomi, aquela mesmo do Naruto.

Tsukuyomi.jpg

Testado em TSF 8.6.

 

Primeiramente abra seu RME.

 

Faça uma areá mais ou menos igual a seguinte (os tiles podem mudar de acordo com seu gosto):

 

No caso estou usando um chão "invisível".

 

passo1f.png

Após criar essa areá adicione "NoPVPZone" (em toda areá).

passo2e.png

Depois adicione o "NoLogout" (em toda areá).

passo3f.png

 

Em data/movements/script crie um arquivo.lua nomeie para sharingan e adicione:

function onStepIn(cid, item, position, fromPosition)

function doHealthSecond(cid, quanty, delay) -- function by vodka

if not isCreature(cid) then return LUA_ERROR end

doCreatureAddHealth(cid, quanty)

doSendMagicEffect(getCreaturePosition(cid), 63)

doSendAnimatedText(getCreaturePosition(cid), -100, 180)

if delay ~= 1 then addEvent(doHealthSecond, 1000, cid, quanty, delay -1)

elseif delay == 1 then doCreatureSetNoMove(cid, false) end

end

doCreatureSetNoMove(cid, true)

doHealthSecond(cid, -100, 10)

return true

end

Editando:

 

-Verde: Numero do efeito (/z)

-Azul: Life que vai perder

-Laranja: Intervalo para tirar life (1000 = 1 segundo)

-Roxo: Quantidade de vezes que vai bater

 

Em movements.xml adicione:

<movevent type="StepIn" uniqueid="1645" event="script" value="sharingan.lua"/>

Em data/talkactions/scripts crie um arquivo.lua nomeie para tsukuyomi e adicione:

function onSay(cid, words, param)

local waittime = 20 -- Tempo de exhaustion

local storage = 5560

local pos = getCreaturePosition(cid)

from = {x=pos.x, y=pos.y, z=pos.z}

to = {x = 666, y = 1031, z = 15} -- Para onde o teleport levará (players)

to1 = {x = 664, y = 1031, z = 15} -- Para onde o teleport levará (caster)

area1 = {x = 661, y = 1026, z = 15} -- Ponta de cima na esquerda na area que o tp leva

area2 = {x = 671, y = 1036, z = 15} -- Ponta de baixo na direita na area que o tp leva

level = 100 -- Level necessário

ppos = getCreaturePosition(cid)

pl1 = {x=ppos.x-7, y=ppos.y-5, z=ppos.z}

pl2 = {x=ppos.x+7, y=ppos.y+5, z=ppos.z}

 

if getPlayerLevel(cid) < level then

doPlayerSendCancel(cid, "Você precisa de level "..level.." para usar essa magia.")

return true

end

 

 

function back(cid)

if isInArea(getCreaturePosition(cid), area1, area2) then

doTeleportThing(cid, from)

end

end

 

function go(cid)

if isInArea(getCreaturePosition(cid), pl1, pl2) then

doTeleportThing(cid, to)

end

end

 

function gos(cid)

if isInArea(getCreaturePosition(cid), from, from) then

doTeleportThing(cid, to1)

end

end

 

if exhaustion.check(cid, storage) == false then

for _, pid in ipairs(getPlayersOnline()) do

addEvent(back, 5000, pid) -- Tempo para retornar ao lugar que usou a magia

addEvent(go, 200, pid)

addEvent(gos, 1, pid)

doSendMagicEffect(getCreaturePosition(pid), 63)

doCreatureSay(pid, "ALGUEM USOU O TSUKUYOMI!", TALKTYPE_MONSTER) --- Mensagem

addEvent(setPlayerStorageValue, 10000, pid, 1634, -1)

end

 

exhaustion.set(cid, storage, waittime)

else

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Aguarde " .. exhaustion.get(cid, storage) .. " segundos para usar a spell novamente.")

end

return true

end

Editando:

 

​Script auto-explicativo, variáveis em verde.

 

Sobre as cordenadas:

 

Para onde o teleport levará (players):

 

Seria o tile em que os player atingidos pelo Tsukuyomi seria levados:

 

Areá circulada em azul.

passo4.png

 

Para onde o teleport levará (caster):

 

Seria o tile, onde quem usou a magia (o caster) irá teleportar.

 

Toda a areá em verde!

passo5e.pngObs: O tile com um x não pode ser escolhido.

 

Ponta de cima na esquerda na area que o tp leva (onde o tile está escuro):

passo6d.png

Ponta de baixo na direita na area que o tp leva (onde o tile está escuro):

passo7.png

Em talkactions.xml adicine:

<talkaction words="tsukuyomi" event="script" value="tsukuyomi.lua"/>

 

Após fazer isso adicione o tile de movements no tile em que os players irão teleportar ao serem atingidos.

passo8.png

Adicionando efeitos, nesse local:

passo11.png

Em data/globalevents/scripts crie um arquivo.lua nomeie para sharingan e adicione:

function onThink(interval, lastExecution)

pos = {x = 665, y = 1030, z = 15}

pos1 = {x = 668, y = 1028, z = 15}

pos2 = {x = 665, y = 1030, z = 15}

pos3 = {x = 664, y = 1033, z = 15}

pos4 = {x = 667, y = 1031, z = 15}

pos5 = {x = 666, y = 1033, z = 15}

pos6 = {x = 665, y = 1030, z = 15}

pos7 = {x = 665, y = 1030, z = 15}

pos8 = {x = 665, y = 1030, z = 15}

doSendAnimatedText(pos, 'Tsukuyomi!', math.random(01,255))

doSendAnimatedText(pos1, '1 segundo.', math.random(01,255))

doSendAnimatedText(pos2, '1 ano', math.random(01,255))

doSendAnimatedText(pos3, 'Baca.', math.random(01,255))

doSendAnimatedText(pos4, 'HURT?!', math.random(01,255))

doSendAnimatedText(pos5, 'Mangekyou!', math.random(01,255))

doSendAnimatedText(pos6, 'Sharingan!', math.random(01,255))

doSendAnimatedText(pos7, 'TOO WEAK!!!', math.random(01,255))

doSendAnimatedText(pos8, 'Trash.', math.random(01,255))

doSendMagicEffect(pos, 61)

doSendMagicEffect(pos1, 61)

doSendMagicEffect(pos2, 61)

doSendMagicEffect(pos4, 63)

doSendMagicEffect(pos5, 61)

doSendMagicEffect(pos6, 61)

doSendMagicEffect(pos7, 61)

doSendMagicEffect(pos8, 61)

return true

end

Editando:

 

- Verde: Posição

- Vermelho: Mensagem e cor

- Azul: efeito

 

Em globalevents.xml:

<globalevent name="sharingan" interval="1" script="sharingan.lua" />

Editando:

 

- Vermelho: Tempo para aparecer os efeitos (1 = 1 segundo), podendo deixar 0.1

 

Qualquer duvida, só postar.

 

Aqui vai um vídeo demonstrativo (o vídeo está mostrando a magia sem efeitos bons e com um lugar totalmente preto, isso depende de sua imaginação, só quis fazer o vídeo para verem como funciona):

 

 

Magia com efeitos diferentes e com mais tempo:

 

 

 

​Créditos:

 

Newtonnotwen, pelo script, pela ideia e pelo post.

LuckOake, pelo script inicial

Vodkart, pelo tile

Jhon992, pelo tile

 

Por favor comentem, se tiver mal explicado eu edito.

Editado por Newtonnotwen
Link para o comentário
Compartilhar em outros sites

Bom, Newtonnotwen, pelo que eu vi, esse script da Talk é aquele que eu fiz pra você, só que com algumas modificações suas, então por favor, coloque meus créditos. Não é que eu esteja exigindo, mas é que preciso que reconheçam meu trabalho também :S

 

Tirando isso, excelente ideia. Curti bastante. Vai um REP + pra você.

Link para o comentário
Compartilhar em outros sites

Eu tinha lembrado de botar seu nome, na verdade peguei seu script e transformei ele para teleportar mais de uma pessoa e adicionei a função de teleportar caster e players para lugares diferentes e dentro outras pequenas funções.

 

E implantei a ideia do lose life no tile.

 

Enfim, eu jurava que seu nome tava lá, acho que acabei esquecendo.

 

Malz ae.

 

 

Editado, créditos

 

Script inicial, by LuckOake.

Editado por Newtonnotwen
Link para o comentário
Compartilhar em outros sites

Simplesmente magnífico cara. Quando eu estava em um projeto de um OT Mortal Kombat eu pensei em uma spell parecida para ser usada como fatality de um personagem, que consistia em teletransportar o player para um local de lava, o player sumia e sobrava um esqueleto em vez de um corpse.

 

Muito bem feito. Parabéns.

Link para o comentário
Compartilhar em outros sites

E se duas pessoas usarem a magia ao mesmo tempo?

Acho melhor substituir a função de tirar hp por tempo por uma que faça o player causar o dano usando doTargetCombatHealth, no caso de usar em monstros, o player não iria ganhar a XP do monstro pelo dano que ele ia perder nessa magia

Link para o comentário
Compartilhar em outros sites

Primeiramente, acho que seria injusto usar em monstro e desnecessário, sobre o player usar duas magias ao mesmo tempo oque que tem? Primeiramente recomendei que bota-se pz e no logout, ou seja se outro player usar eles irão para o mesmo lugar, não poderão atacar um ao outro, quem tiver no tile obviamente perderá life e quem estiver fora vai ficar "assistindo".

Link para o comentário
Compartilhar em outros sites

Cara, não é o player usar duas magias ao mesmo tempo... São 2 players (ou mais) usarem a magia que você postou ao mesmo tempo. Vai todo mundo pro mesmo lugar, vai chover criaturas, animated texts e um monte de players no mesmo lugar... Só vai ficar esquisito, só isso que falei

Link para o comentário
Compartilhar em outros sites

Mas eu não entendo, qual seria o problema se dois usarem ao mesmo tempo?

 

 

Primeiramente, acho que seria injusto usar em monstro e desnecessário, sobre o player usar duas magias ao mesmo tempo oque que tem? Primeiramente recomendei que bota-se pz e no logout, ou seja se outro player usar eles irão para o mesmo lugar, não poderão atacar um ao outro, quem tiver no tile obviamente perderá life e quem estiver fora vai ficar "assistindo".

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...