Ir para conteúdo

Featured Replies

Postado

Bom galera, o sisteminha é um pouquim complexo, mas vamos lá...

 

Gostaria que todo dia 1°, às 12:00, abram 6 TPs no mapa.

Esses tps devem ficar abertos por 12 horas, após esse horários eles desapareçam.

 

Porém, há dois problemas:

Um dos TPs só poderá ser acessado contendo 5 diferentes storages (o player tem que ter os 5).

O player após entrar 1 vez em qualquer um dos TPs, ele só poderá entrar novamente em qualquer um dos tps na próxima vez que o evento iniciar, ou seja, no próximo dia 1.

 

PS.: incluir mensagens informando que o evento inciou e os Tps abriram, quando os tps fecharem, que o player não pode entrar novamente no tp (caso já tenha entrado)

 

Desde já agreço!

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

Resolvido por Adriano SwaTT

Ir para solução
  • Respostas 16
  • Visualizações 1.2k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Adriano SwaTT
    Adriano SwaTT

    Boa noite. Criei e testei o script, as funções básicas que precisa consegui executar com sucesso.   1. Ele cria os teleportes, cada um com uma ActionID diferente para que você possa criar um script

  • Muda: function onTimer() para: function onTime() E vê se o erro continua.

Postado
  • Solução

Boa noite.

Criei e testei o script, as funções básicas que precisa consegui executar com sucesso.

 

1. Ele cria os teleportes, cada um com uma ActionID diferente para que você possa criar um script para cada teleporte e assim configurar os requisitos para poder entrar.

2. Ele cria os teleportes no horário programado no GlobalEvents.xml, e a data fica configurada dentro do próprio script.

3. Ele remove os teleportes depois do tempo programado.

4. Ele bloqueia players que já acessaram um dos teleportes, já configurado para liberar a cada evento.

 

Vamos em GlobalEvents.xml e adicionar a tag abaixo:

<globalevent name="Teleports" time="12:00" event="script" value="teleports_progs.lua"/>

 

Agora na pasta scripts da referida, criaremos o arquivo "teleports_progs.lua" e adicionaremos o script abaixo:

--------- Script by: Adriano Swatt' ------
local dia = '1' -- qual dia do mês
local horas = 12 -- hora do evento & horas para remover os tps
local tp_id = 5023 -- ID do Teleport (Pode ser outro item, se desejar)
local gstrg_control = 12129 -- Não precisa mexer (Global Storage de Controle de Acesso)
local tp_pos = {{x=000, y=000, z=0}, {x=000, y=000, z=0}, {x=000, y=000, z=0}, {x=000, y=000, z=0}, {x=000, y=000, z=0}, {x=000, y=000, z=0}} -- Coordenada Onde Nascerá os TPs
local tp_acts = {11111, 22222, 33333, 44444, 55555, 66666} -- ActionID para Cada TP (Terá que registrar em movements.xml as memas que colocar aqui)
----------- FIM DAS CONFIGURAÇÕES ---------

function onTimer()
local checkday = os.date("%d")
    if checkday == dia then
        for x = 1, #tp_pos do
        doItemSetAttribute(doCreateItem(tp_id, 1, tp_pos[x]), "aid", tp_acts[x])
        end -- FOR
        addEvent(RemoveTps, horas * 60 * 60 * 1000)
        doBroadcastMessage("Hoje é dia "..checkday.." e são exatamente "..horas..":00 horas, os teleportes de bonus foram abertos e permanecerão por "..horas.." horas.")
        if getGlobalStorageValue(gstrg_control) <= 0 then
            setGlobalStorageValue(gstrg_control, 1)
        else
            setGlobalStorageValue(gstrg_control, (getGlobalStorageValue(gstrg_control) + 1))
        end
        return true
    else
        doBroadcastMessage("Lembrem-se: Todo dia "..checkday.." às "..horas.." horas terá o evento dos teleportes.")
    end
return true
end

function RemoveTps()
    for y = 1, #tp_pos do
    doRemoveItem(getTileItemById(tp_pos[y], tp_id).uid, 1)
    end -- FOR
    doBroadcastMessage("Os teleportes foram removidos, o evento abrirá novamente no próximo dia "..dia.." exatamente às "..horas..":00 horas.")
return true
end

 

Agora em Movements.xml adicionaremos a tag, como abaixo: (Substitua os números de acordo com que configurou o script anterior/acima)

<movevent type="StepIn" actionid="11111;22222;33333;44444;55555;66666" event="script" value="Teleports_Progs.lua"/>

 

E em scripts, criaremos o arquivo "Teleports_Progs.lua" e adicionaremos o código abaixo:

-------- Script by: Adriano Swatt' -------
local gstrg_control = 12129 -- Não precisa mexer (Global Storage de Controle de Acesso)
local tp_exe = 11111 -- ID da ActionID do Teleport Exclusivo (Necessita 5 storages)
local stors = {11111, 22222, 33333, 44444, 55555} -- Storages o player precisa para o teleport exclusivo
local tp_acts = {
    [11111] = {{x=000, y=000, z=0}}, -- ActionID de cada teleport e coordenada pra onde o player irá (Tem que ser a mesma do outro script)
    [22222] = {{x=000, y=000, z=0}}, -- teleport 2
    [33333] = {{x=000, y=000, z=0}}, -- teleport 3
    [44444] = {{x=000, y=000, z=0}}, -- teleport 4
    [55555] = {{x=000, y=000, z=0}}, -- teleport 5
    [66666] = {{x=000, y=000, z=0}}  -- teleport 6
}
local msgs = {
"Você não tem todas as quests necessárias.", -- Mensagem quando não tiver todas storages
"Você já entrou em um dos teleportes bônus hoje.", -- Mensagem quando já tiver acessado um dos teleportes
"Parabéns, você entrou no teleporte bônus." -- Mensagem ao entrar em algum teleporte
} -- Mensagens
----------- FIM DAS CONFIGURAÇÕES ---------

function onStepIn(cid, item, position, fromPosition)
local tp_check = tp_acts[item.actionid]
local gstrg = getGlobalStorageValue(gstrg_control)
local getSto = getPlayerStorageValue

    if item.actionid ~= tp_exe then
        if tp_check then
            if getSto(cid, gstrg_control) < (gstrg) then
                doPlayerSendCancel(cid, msgs[3])
                doTeleportThing(cid, tp_check[1])
                setPlayerStorageValue(cid, gstrg_control, (getGlobalStorageValue(gstrg_control)))
            else
                doPlayerSendCancel(cid, msgs[2])
                doTeleportThing(cid, fromPosition)
            end
        end
    else
        if getSto(cid, gstrg_control) < (gstrg) then
            if getSto(cid, stors[1]) >= 1 and getSto(cid, stors[2]) >= 1 and getSto(cid, stors[3]) >= 1 and getSto(cid, stors[4]) >= 1 and getSto(cid, stors[5]) >= 1 then
                doPlayerSendCancel(cid, msgs[3])
                doTeleportThing(cid, tp_check[1])
                setPlayerStorageValue(cid, gstrg_control, (getGlobalStorageValue(gstrg_control)))
            else
                doPlayerSendCancel(cid, msgs[1])
                doTeleportThing(cid, fromPosition)
            end
        else
            doPlayerSendCancel(cid, msgs[2])
            doTeleportThing(cid, fromPosition)
        end
    end
    return true
end
 

 

Testei e funcionou perfeitamente.

 

Boa sorte.

Caso ocorra algum erro, ou até mesmo para agradecer, dê um FeedBack. ;)

 

Abraços.

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Postado
  • Autor

Cara, eu cometi um erro e passei uma informação errônea.

 

onde se lê: "2°  O player após entrar 1 vez em qualquer um dos TPs, ele só poderá entrar novamente em qualquer um dos tps na próxima vez que o evento iniciar, ou seja, no próximo dia 1."

Seria na verdade: " O player após entrar 1 vez no TP que precisa dos storages, ele só poderá entrar novamente em qualquer um dos tps na próxima vez que o evento iniciar, ou seja, no próximo dia 1."

 

Teria como corrigir isso?  Peço-lhe desculpas, foi falta de atenção minha.  :D

Postado

Tente substituir o movements por este:

-------- Script by: Adriano Swatt' -------
local gstrg_control = 12129 -- Não precisa mexer (Global Storage de Controle de Acesso)
local tp_exe = 11111 -- ID da ActionID do Teleport Exclusivo (Necessita 5 storages)
local stors = {11111, 22222, 33333, 44444, 55555} -- Storages o player precisa para o teleport exclusivo
local tp_acts = {
    [11111] = {{x=000, y=000, z=0}}, -- ActionID de cada teleport e coordenada pra onde o player irá (Tem que ser a mesma do outro script)
    [22222] = {{x=000, y=000, z=0}}, -- teleport 2
    [33333] = {{x=000, y=000, z=0}}, -- teleport 3
    [44444] = {{x=000, y=000, z=0}}, -- teleport 4
    [55555] = {{x=000, y=000, z=0}}, -- teleport 5
    [66666] = {{x=000, y=000, z=0}}  -- teleport 6
}
local msgs = {
"Você não tem todas as quests necessárias.", -- Mensagem quando não tiver todas storages
"Você já entrou em um dos teleportes bônus hoje.", -- Mensagem quando já tiver acessado um dos teleportes
"Parabéns, você entrou no teleporte bônus." -- Mensagem ao entrar em algum teleporte
} -- Mensagens
----------- FIM DAS CONFIGURAÇÕES ---------

function onStepIn(cid, item, position, fromPosition)
local tp_check = tp_acts[item.actionid]
local gstrg = getGlobalStorageValue(gstrg_control)
local getSto = getPlayerStorageValue

    if item.actionid ~= tp_exe then
        if tp_check then
            doPlayerSendCancel(cid, msgs[3])
            doTeleportThing(cid, tp_check[1])
        end
    else
        if getSto(cid, gstrg_control) < (gstrg) then
            if getSto(cid, stors[1]) >= 1 and getSto(cid, stors[2]) >= 1 and getSto(cid, stors[3]) >= 1 and getSto(cid, stors[4]) >= 1 and getSto(cid, stors[5]) >= 1 then
                doPlayerSendCancel(cid, msgs[3])
                doTeleportThing(cid, tp_check[1])
                setPlayerStorageValue(cid, gstrg_control, (getGlobalStorageValue(gstrg_control)))
            else
                doPlayerSendCancel(cid, msgs[1])
                doTeleportThing(cid, fromPosition)
            end
        else
            doPlayerSendCancel(cid, msgs[2])
            doTeleportThing(cid, fromPosition)
        end
    end
    return true
end

 

Boa sorte.

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.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.6k

Informação Importante

Confirmação de Termo