NE
pedido

[Spell] Teleport Dimension And Return! [Spell] Summon Diferente

Por Newtonnotwen, 04 de ago. de 2012 em Scripts

teleport
dimension
spell
otserv
tibia
script
25
5.9k
LuckOakeL
04 de agosto de 2012 às 19:09

Pronto, arrumei a exhaust, porém está com um bug que sua correção vai além das minhas habilidades de scripter.

 

Substitua seu tp.lua por esse:

 

-- Script by Luck Oake

function onSay(cid, words, param)

local waittime = 10 -- Tempo de exhaustion

local storage = 5560

local tpId = 1387 -- ID do seu Teleport

local p = getCreaturePosition(cid)

local x = {

[0] = {x=p.x, y=p.y-1, z=p.z},

[1] = {x=p.x+1, y=p.y, z=p.z},

[2] = {x=p.x, y=p.y+1, z=p.z},

[3] = {x=p.x-1, y=p.y, z=p.z}

}

pos = x[getCreatureLookDirection(cid)]

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

to = {x = 1000, y = 1000, z = 7} -- Para onde o teleport levará

area1 = {x = 998, y = 998, z = 7} -- Ponta de cima na esquerda na area que o tp leva

area2 = {x = 1002, y = 1002, z = 7} -- Ponta de baixo na direita na area que o tp leva

 

function back(cid)

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

doTeleportThing(cid, from)

end

end

 

function removeTp(tp)

local tp = getTileItemById(from, tpId)

if tp then

doRemoveItem(tp.uid, 1)

doSendMagicEffect(from, CONST_ME_POFF)

end

end

 

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

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

addEvent(back, 20000, pid)

end

exhaustion.set(cid, storage, waittime)

doCreateTeleport(tpId, to, from)

addEvent(removeTp, 5000, tp)

else

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

end

return true

end

 

 

Agora não é criado outros teleports, porém se o player usar o comando /tp por uma segunda vez enquanto outro teleport estiver aberto, o aberto atualmente não fecha mais.

Editado Agosto 4 por LuckOake

NewtonnotwenN
04 de agosto de 2012 às 19:16

Vlws vou testar e ver se acho mais bugs.

 

Brilhante script obrigado!

 

Amanhã ti dou REP+!

Editado Agosto 4 por Newtonnotwen

LuckOakeL
04 de agosto de 2012 às 19:20

Valeus :)

 

É sempre bom ajudar os outros. Mas quaisquer outros bugs, só postar aqui.

NewtonnotwenN
04 de agosto de 2012 às 19:27

Achei alguns bugs como por exemplo:

 

-Quando o player usa na borda

-Quando outro player entra no teleporte

-Quando se desloga ao entrar no teleporte

 

Porem de fácil correção, você poderia modificar o seguinte pra mim por favor?

 

-Teleporte nascer embaixo do player

-Sumir automaticamente o teleporte

 

Isso ira corrigir quais quer bugs possiveis exceto o battle, porem isso eu corrijo, irei adicionar um monstro invisivel e imortal que ataque o player.

 

@LockOake

Editado Agosto 4 por Newtonnotwen

LuckOakeL
04 de agosto de 2012 às 19:32

Sobre deslogar dentro da area do TP: é só colocar No Logout Zone no Map Editor

Sobre outro player entrar também: qual o problema quanto à isso?

Sobre o TP aparecer em baixo do player:

 

Substitua seu tp.lua por isso:

 

-- Script by Luck Oake

function onSay(cid, words, param)

local waittime = 10 -- Tempo de exhaustion

local storage = 5560

local tpId = 1387 -- ID do seu Teleport

local pos = getCreaturePosition(cid)

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

to = {x = 1000, y = 1000, z = 7} -- Para onde o teleport levará

area1 = {x = 998, y = 998, z = 7} -- Ponta de cima na esquerda na area que o tp leva

area2 = {x = 1002, y = 1002, z = 7} -- Ponta de baixo na direita na area que o tp leva

 

function back(cid)

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

doTeleportThing(cid, from)

end

end

 

function removeTp(tp)

local tp = getTileItemById(from, tpId)

if tp then

doRemoveItem(tp.uid, 1)

doSendMagicEffect(from, CONST_ME_POFF)

end

end

 

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

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

addEvent(back, 20000, pid)

end

exhaustion.set(cid, storage, waittime)

doCreateTeleport(tpId, to, from)

addEvent(removeTp, 5000, tp)

else

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

end

return true

end

 

 

E o teleport já some automaticamente.

Editado Agosto 4 por LuckOake

NewtonnotwenN
04 de agosto de 2012 às 19:46

Boa ideia sobre o no logout zone não havia pensado nela.

 

@LuckOake vlws cara amanhã ti dou seu REP+

 

Primeira spell (talkaction) Resolvido por: LuckOake

LuckOakeL
04 de agosto de 2012 às 20:18

Seu segundo pedido:

 

Talkactions.xml:

 

<talkaction words="!orc;!dragon" event="script" value="monsters.lua"/>

 

monsters.lua:

 

-- Script by Luck Oake

function onSay(cid, words, param)

local p = getCreaturePosition(cid)

if words == "!orc" then

local x = {

[0] = 57,

[1] = 58,

[2] = 57,

[3] = 58

}

ef = x[getCreatureLookDirection(cid)]

doSummonMonster(cid, "Orc")

doSendMagicEffect(p, ef)

end

if words == "!dragon" then

doSummonMonster(cid, "Dragon")

doSendMagicEffect(p, 33)

end

return true

end

 

 

Comandos: !orc e !dragon.

Editado Agosto 4 por LuckOake

NewtonnotwenN
04 de agosto de 2012 às 20:53

Tem como fazer em spell?

LuckOakeL
04 de agosto de 2012 às 21:09

Realmente é necessário? Se quiser posso alterar a talk pra ficar igual uma spell.

 

Você precisa de alguma config? Tipo Vocations, mana gasta, etc.

NewtonnotwenN
04 de agosto de 2012 às 21:12

Pode ser pra todos mesmos.

 

Acho que vou ficar ti devendo 2 REP+ hehe!

 

Me ajudou muito

 

@LuckOake

 

 

Pedido atendido.

Podem mover o tópico.

 

Primeira spell: Resolvida por LuckOake (No tópico)

Segunda spell: Resolvida por LuckOake (Private)

Editado Agosto 4 por Newtonnotwen