Ir para conteúdo
  • 0

Teleport por vocação


gabriel28

Pergunta

Estou tentando montar um servidor RPG com base no mapa global do Tibia, estou modificando ele na medida dos meus conhecimentos, que são poucos.

 

Venho pedir uma ajuda com teleport que só passe determinada vocação (que possa ser alterada no script, para que possa ser usando em outros teleports).

 

A versão do Tibia é 8.60.

 

Se alguém puder ajudar, agradeço.

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

opa foi mal, tinha mudado para onUse tem querer(ja editei la)

Você tem que usar os dois em conjunto, tanto o globalevent(vai criar o teleport no dia marcado) e o movement(o que teleporta e impede que outras vocações teleport)

 

 

 

local config = {
        day = "Monday","Wednesday","Friday","Sunday",
        pos = {x=151, y=77, z=6},
        time = 5, -- tempo que o teleport ira sumir em minutos
        msg_open = "O Portal vai se abrir em 5 minutos.", 
        msg_close = "O Portal se fechou."
        action = 4568 -- aqui você coloca o action id
}

local function DelTp()
    local t = getTileItemById(config.pos, 1387)
    if t then
        doRemoveItem(t.uid, 1)
        doSendMagicEffect(config.pos, CONST_ME_POFF)
    end
end

function onTimer()
    if (os.date("%A") == config.day) then
        local item = doCreateItem(1387, 1, config.pos)
            doItemSetAttribute(item, "aid", config.action)
            doBroadcastMessage(config.msg_open)
            addEvent(DelTp, config.time*60*1000)
            addEvent(doBroadcastMessage, config.time*60*1000, config.msg_close)
    end
return true
end

 

 

 

 

 

 

local vocation = {1, 2} -- vocações que vai poder usar o teleport
local pos = {x = 129, y = 54, z = 6} -- local para onde sera teleportado

function onStepIn(cid, player, position, FromPosition)
    if isInArray(vocation, getPlayerVocation(cid)) then
        doTeleportThing(cid, pos)
    else
        doTeleportThing(cid,FromPosition)
        doPlayerSendCancel(cid,"Você não tem a vocação necessária para entrar aqui!")
    end
return true
end

 

 

 

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

  • 0

Isso é um movement

.lua

local vocation = {1, 2} -- vocações que vai poder usar o teleport
local pos = {x = 129, y = 54, z = 6} -- local para onde sera teleportado
function onStepIn(cid, player, position, FromPosition)
    if isInArray(vocation, getPlayerVocation(cid)) then
        doTeleportThing(cid, pos)
    else
        doTeleportThing(cid,FromPosition)
        doPlayerSendCancel(cid,"Você não tem a vocação necessária para entrar aqui!")
    end
return true
end

.Xml, tag

<movevent type="StepIn" actionid="XXXX" event="script" value="nome do arquivo.lua"/>

agora so basta abrir o editor de mapas e coloca o actionid no teleport.

Link para o comentário
Compartilhar em outros sites

  • 0

Muito obrigado, me ajudou bastante.

 

Há algo que me esqueci de acrescentar ao pedido, pensei no teleporte aparecendo no dia X na hora Y, tem como acrescentar isso ao script?

Tentei mesclar esse com outro script, que faz essa função de fazer o TP aparecer no dia X hora Y, e joguei no site lua.org pra ver se não havia erro, mas apareceu o seguinte erro: input:40: 'end' expected (to close 'function' at line 3) near <eof>

 

Aqui ta o script com a mesclagem:

 

local vocation = {1, 2} -- vocações que vai poder usar o teleport
local pos = {x = 129, y = 54, z = 6} -- local para onde sera teleportado
function onStepIn(cid, player, position, FromPosition)
if isInArray(vocation, getPlayerVocation(cid)) then
doTeleportThing(cid, pos)
else
doTeleportThing(cid,FromPosition)
doPlayerSendCancel(cid,"Você não tem a vocação necessária para entrar aqui!")
end
local config =
{
day = "Monday","Wednesday","Friday","Sunday",
pos = {x=151, y=77, z=6},
topos = {x=550, y=34, z=7},
time = 5, -- tempo que o teleport ira sumir em minutos
msg_open = "O Portal vai se abrir em 5 minutos.",
msg_close = "O Portal se fechou."
}
local function DelTp()
local t = getTileItemById(config.pos, 1387)
if t then
doRemoveItem(t.uid, 1)
doSendMagicEffect(config.pos, CONST_ME_POFF)
end
end
function onTimer()
if (os.date("%A") == config.day) then
doCreateTeleport(1387, config.topos, config.pos)
doBroadcastMessage(config.msg_open)
addEvent(DelTp, config.time*60*1000)
addEvent(doBroadcastMessage, config.time*60*1000, config.msg_close)
end
return true
end
OBS: Se for ajeitar esse script, eu gostaria dele sem o broadcast.
OBS2: Não sei adicionar a caixinha de spoiler nem recordo de quem é o script do TP por tempo, quando achar, eu edito e coloco aqui.
Editado por gabrielvs
Link para o comentário
Compartilhar em outros sites

  • 0

não precisa juntar os script so basta substituir o que cria o teleport no dia da semana por esse(não esqueça de configura) e deixa o movement.

local config = {
        day = "Monday","Wednesday","Friday","Sunday",
        pos = {x=1023, y=1023, z=7},
        time = 5, -- tempo que o teleport ira sumir em minutos
        msg_open = "O Portal vai se abrir em 5 minutos.", 
        msg_close = "O Portal se fechou."
action = XXXX -- aqui você coloca o action id
}
 
 
local function DelTp()
    local t = getTileItemById(config.pos, 1387)
    if t then
        doRemoveItem(t.uid, 1)
        doSendMagicEffect(config.pos, CONST_ME_POFF)
    end
end
 
 
function onTimer()
    if (os.date("%A") == config.day) then
        local item = doCreateItem(1387, 1, config.pos)
            doItemSetAttribute(item, "aid", config.action)
            doBroadcastMessage(config.msg_open)
            addEvent(DelTp, config.time*60*1000)
            addEvent(doBroadcastMessage, config.time*60*1000, config.msg_close)
    end
return true
end
Editado por RigBy
Link para o comentário
Compartilhar em outros sites

  • 0

Esse script que você mandou agora, tem a restrição de vocação nele também? Porque foi o que eu disse que me esqueci de acrescentar no pedido, que era um TP que tivesse a restrição de vocação e aparecesse no X dia às Y horas, e o script que mandei foi minha tentativa de fazer ele, juntando o que você me mandou com o que eu tinha.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...