Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

Fala galera do TK, tirei essa madrugada pra trazer um conteúdo novo a pedido do membro @alanmtd1, trata-se da spell Kamui do Obito só que eu fiz ela um pouquinho diferente; 
Testado em TFS 0.3.6, cliente 8.54;

Descrição pra quem não conhece:
O player fala 'kamui in', se ele tiver com um target vai entrar e o target; do contrário entra ele e todos que estiverem à sua volta;
Feito isso eles serão teleportados para o Kamui, um lugar que você vai criar no seu mapa editor e colocar NO-PVP ZONE, spawn de monstro e NO Logout.
Preste bem atenção nisso porque se você esquecer quaisquer um desses vai dar bug.
Depois de X segundos todos os players/monstros que vc teleportou voltarão para onde estavam (a menos que eles morram no kamui).
Porque isso ocorre? Simples, eu só fui perceber como os caras do Naruto Online fizeram esse script depois de ter terminado a minha versão e eu to com preguiça demais de refazer tudo pra ficar igualzinho à versão deles hahauhauhauh então é importante que o kamui seja um local onde não haja mortes, justamente pra não haverem mensagens de erro tipo essa:

[26/07/2014 04:27:46] [Error - Spell Interface] 
[26/07/2014 04:27:46] In a timer event called from: 
[26/07/2014 04:27:46] data/spells/scripts/especiais/kamui.lua:onCastSpell
[26/07/2014 04:27:47] Description: 
[26/07/2014 04:27:47] (luaDoTeleportThing) Thing not found

Bom, vamos ao script:

local config = {
pos = {x=42, y=234, z=7}, -- posição que será teleportado
tempo = 15, -- tempo pra voltar
effect1 = 66, -- efeito ao ser teleportado
effect2 = 10, -- efeito ao voltar
storage = 19329, -- storage que fica guardado o cooldown
from = {x=35, y=228, z=7}, --- quina do kamui (pra impedir players de usarem o kamui dentro do kamui)
to = {x=49, y=240, z=7}, --- quina do kamui (pra impedir players de usarem o kamui dentro do kamui)
cooldown = 60, --- tempo entre um uso e outro (após usar a spell vc vai ficar X segundos sem poder usar ela novamente)
msg = "KAMUI OUT!" -- mensagem ao sair do kamui
}


local exceptions = {'trainer', 'aegis', 'god anderson'} --- nome das criaturas que não poderão ser levadas pro kamui (sempre em minúsculo e entre aspas)


function canEffect(pos, pz, proj) -- Night Wolf based on Nord
if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end
if getTilePzInfo(pos) 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 false
end
end
end
return true
end




function onCastSpell(cid, var)
local pos = getPlayerPosition(cid)


if isInRange(pos, config.from, config.to) then
doPlayerSendCancel(cid, "You cannot use Kamui spell inside the Kamui!")
return false
end


if os.time() - getPlayerStorageValue(cid, config.storage) >= config.cooldown then
doPlayerSetStorageValue(cid, config.storage, os.time())
if isCreature(getCreatureTarget(cid)) then
target = getCreatureTarget(cid)
for i = 1, #exceptions do
if getCreatureName(target):lower() == exceptions[i] then
doPlayerSendCancel(cid, "You can't take ".. getCreatureName(target) .." to Kamui.")
return false
end
end
--------------- PLAYER-----------
addEvent(doTeleportThing, 1000*config.tempo, cid, pos, true)
addEvent(doCreatureSay, 1000*config.tempo, cid, config.msg, 20, false)
addEvent(doSendMagicEffect, 1000*config.tempo, pos, config.effect2)
doSendMagicEffect(pos, config.effect1)
doTeleportThing(cid, config.pos)
-------------------- OPONENTE ----------------
addEvent(doTeleportThing, 1000*config.tempo, target, getThingPos(target), true)
addEvent(doSendMagicEffect, 1000*config.tempo, getThingPos(target), config.effect2)
doSendMagicEffect(getThingPos(target), config.effect1)
doTeleportThing(target, config.pos)
-------------------------------------
if isPlayer(target) and isCreature(cid) then
doPlayerSendTextMessage(target, 27, "You were teleported by ".. getCreatureName(cid) ..".")
end
if isPlayer(cid) and isCreature(target) then
doPlayerSendTextMessage(cid, 27, "You teleported ".. getCreatureName(target) .."!")
end
for i = 1,config.tempo  do
addEvent(function()
if isPlayer(target) then
doPlayerSendTextMessage(target,25,"You'll be back in " .. config.tempo -i +1 .. " second(s)")
end
if isPlayer(cid) then
doPlayerSendTextMessage(cid,25,"You'll be back in " .. config.tempo -i +1 .. " second(s)")
end
end, 1000*i)
end
else
---------- levar quem tá em volta do player ---------------
local teleportPosition = {
{x = pos.x, y = pos.y - 1, z = pos.z},
{x = pos.x, y = pos.y + 1, z = pos.z},
{x = pos.x - 1, y = pos.y, z = pos.z},
{x = pos.x + 1, y = pos.y, z = pos.z},
{x = pos.x - 1, y = pos.y + 1, z = pos.z},
{x = pos.x - 1, y = pos.y - 1, z = pos.z},
{x = pos.x + 1, y = pos.y - 1, z = pos.z},
{x = pos.x + 1, y = pos.y + 1, z = pos.z}
}


local mobas = {}
local checker = 0


 for _, tPos in ipairs(teleportPosition) do
doSendMagicEffect(tPos, config.effect2)
local mob = getTopCreature(tPos).uid
    if canEffect (tPos) and mob ~= 0 and (isMonster(mob) or isPlayer(mob)) then
for i = 1, #exceptions do
if getCreatureName(mob):lower() == exceptions[i] then
checker = 1
break
end
end
if checker ~= 1 then
table.insert(mobas, mob) 
end
end
end


if #mobas > 0 then
for _, pid in ipairs(mobas) do
addEvent(doTeleportThing, 1000*config.tempo, pid, getThingPos(pid), true)
addEvent(doSendMagicEffect, 1000*config.tempo, getThingPos(pid), config.effect2)
doSendMagicEffect(getThingPos(pid), config.effect1)
doTeleportThing(pid, config.pos)
if isPlayer(pid) and isCreature(cid) then
doPlayerSendTextMessage(pid, 27, "You were teleported by ".. getCreatureName(cid) ..".")
end
for i = 1,config.tempo  do
addEvent(function()
if isPlayer(pid) then
doPlayerSendTextMessage(pid,25,"You'll be back in " .. config.tempo -i +1 .. " second(s)")
end
end, 1000*i)
end
end
end
----------------------------
addEvent(doTeleportThing, 1000*config.tempo, cid, pos, true)
addEvent(doCreatureSay, 1000*config.tempo, cid, config.msg, 20, false)
addEvent(doSendMagicEffect, 1000*config.tempo, pos, config.effect2)
doSendMagicEffect(pos, config.effect1)
doTeleportThing(cid, config.pos)
if isPlayer(cid) then
doPlayerSendTextMessage(cid, 27, "You teleported yourself.")
end
for i = 1,config.tempo do
addEvent(function()
if isPlayer(cid) then
doPlayerSendTextMessage(cid,25,"You'll be back in " .. config.tempo -i +1 .. " second(s)")
end
end, 1000*i)
end
end
else
doPlayerSendCancel(cid, "Your skill is in cooldown, you must wait "..(config.cooldown - (os.time() - getPlayerStorageValue(cid, config.storage))).." seconds.")
end
return true
end

 
Agora em spells.xml:
<instant name="KAMUI" words="kamui in" lvl="120" mana="200" prem="1" blockwalls="1" exhaustion="1000" needlearn="0" event="script" value="especiais/kamui.lua">
<vocation id="5"/>
<vocation id="6"/>
<vocation id="7"/>
<vocation id="8"/>
</instant>

Bom, pra configurar vc mexe na parte inicial do script e ja tá tudo explicadinho... quem sabe um dia eu refaça esse script pra ficar igualzinho o deles auhuhea até lá usem essa versão aí que até que está bem caprichadinha. Toda vez que alguém morrer no kamui vai aparecer uma mensagem de erro mas ela não afeta em nada, podem ficar relaxados. O único jeito de remover isso é impedindo as mortes dentro do kamui oque tira toda a graça da coisa, espero que tenham gostado ;]

 

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

  • Respostas 43
  • Visualizações 6.5k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • então é só remover todos os addEvent... ficando assim:   local config = { pos = {x=42, y=234, z=7}, -- posição que será teleportado effect1 = 66, -- efeito ao ser teleportado effect2 = 10, -- efe

Postado

Esse negocio de addEvent quando a cid desloga, ou morre é extremamente chato não é? Na hora que tu postou as observações eu me liguei. Muito enfrentei este problema hahahaaha.

 

@Edit: Deve ter dado um trabalho chato pra caralho, é cheio de condição para poder funfa, e cheio de função dos grandoes de scripts hahaha.

Editado por Ka zuza (veja o histórico de edições)

z_WL63_Tt.png

Postado
  • Autor

sim, é uma bosta mas qnd vc faz addEvent usando function pra checar se eles tão vivos ainda a posição fica sendo a posição na hora que vai teleportar e não quando usou o script, então de nada adianta uhauhauha eu pensei em salvar as posições numa tabela, que deve ser exatamente como os caras do world of naruto online fizeram mas mó trampo ficar fazendo isso, até porque eu não tenho player no meu server pra testar se é possível acontecer um bug nessas de adicionar e remover gente da tabela e acabar teleportando um cara do kamui que antes tava do lado do dp pra alguma localização diferente (de outro player). Só fiz isso mesmo pros caras pararem de encher o saco pedindo o mesmo script

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Postado

Lindo fazendo lindisse, excelente gato!
Continue trazendo sistemas lindos como este :P

YDmXTU2.png

 

Entenda tudo sobre VPS, DEDICADOS & HOSPEDAGENS. => Clique aqui

Global Full Download 10.9x - TFS 1.2/FERUMBRAS/KRAILOS. => Clique aqui

 

Muitos querem aquilo que você tem, 
mas vão desistir quando souberem o preço que você pagou.

 

skype-favicon.png lu.lukinha

message-16.png [email protected]

Postado

Nossa ficou perfeito cara Rep+, você poderia fazer um moveements que quando o player passar por cima levar dano, iria botar alguns fogo dentro do Kamui pra quando os cara desesperados correr levar dano.

1516839_1.png

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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo