Ir para conteúdo
  • Cadastre-se

(Resolvido)Portal por horário + reset de estorage


Ir para solução Resolvido por Adriano SwaTT,

Posts Recomendados

Antes de qualquer coisa, testei TODOS scripts que encontrei no forum e nenhum funcionou.

Então vamos la...
Preciso de uma ajuda basica pra meu servidor, 2 escripts.

o 1° é um escript que abra um portal no local X que vá para o destino X no horário marcado X e suma após X minutos
Como eu disse já testei os que achei no forum e eles n funcionaram.

Preciso de outro script que zere os estorage determinados sempre a meia noite. 

Resumo:
Quero fazer uma quest, que o portal pra entrar nela abra sempre as 2h da tarde e fique aberto por 5 minutos, mas todo dia o pessoal vai poder ir nela e pegar o prêmio, por isso preciso de outro script pra zerar os storagens.

Bom seria se os scripts dessem pra adicionar varios portais para serem abertos e varios estoragens para serem resetados.

Deu pra entender mais ou menos?
Pretendo fazer umas 4 quest desse tipo, uma por dia.

Link para o post
Compartilhar em outros sites
  • Solução

Bom dia.

 

1º Script: Este é do teleport que se abre automaticamente.

A tag em globalevents.xml será esta:

<globalevent name="TpAuto" time="14:00" event="script" value="tpauto.lua"/>

 

E o script lua será este abaixo:

local tpid = 1387 -- ID do teleporte
local timeremove = 5 -- Em minutos, remove teleporte
local create_tp = {x=XXX, y=XXX, z=XXX}  -- Coordenada de onde será criado
local destine_tp = {x=XXX, y=XXX, z=XXX}  -- Coordenada de destino
local msg_create = "Mensagem de aviso sobre ativação do evento."
local msg_final = "Evento finalizado e teleport removido com sucesso."

function onTime(interval)
    doBroadcastMessage(msg_create)
    doCreateTeleport(tpid, destine_tp, create_tp)
    addEvent(RemoveTPEvent, timeremove * 60 * 1000)
return true
end

function RemoveTPEvent()
    if getTileItemById(create_tp, tpid) > 0 then
        doRemoveItem(getTileItemById(create_tp, tpid).uid, 1)
        doBroadcastMessage(msg_final)
    else
        Print('Não há teleport para ser removido.')
    end
return true
end

 

____________________________________________________________________________________

 

2º Script: Já a de remover Storage, teste este script aqui:

 

local strg = 'XXXX' -- Mantenha as aspas Ex: '12321'

function onThink(interval, lastExecution, thinkInterval)
    db.executeQuery("DELETE FROM `player_storage` WHERE `key` = strg;")
return true
end

A tag no globalevents será parecida com a de cima, mudando, é claro, o nome do evento e do arquivo lua.

 

Boa sorte.

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

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

Link para o post
Compartilhar em outros sites

Vou testar agora, já posto um feedback!
Obrigado desde já por ter respondido, reputado!


[23/9/2014 2:40:1] [Error - Event::checkScript] Event onTime not found (data/globalevents/scripts/tpauto.lua)

Sabe como arrumar meu caro?

Editado por raelpsf (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Atualizei o script.

Teste agora, foi uma desatenção minha.

Caso não funcione, me diga qual sua distro para que eu adapte a função onTime.

 

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

Link para o post
Compartilhar em outros sites

Distro 0.4

Meu caro funciono certinho brother, só tem 1 problema, ele não esta removendo o portal depois do tempo determinado.
Sabe o motivo?


Segue o erro:

 

[23/9/2014 19:44:0] [Error - GlobalEvent Interface] 
[23/9/2014 19:44:0] In a timer event called from: 
[23/9/2014 19:44:0] data/globalevents/scripts/teleporte_automatico.lua:onTime
[23/9/2014 19:44:0] Description: 
[23/9/2014 19:44:0] data/globalevents/scripts/teleporte_automatico.lua:16: attempt to compare number with table
[23/9/2014 19:44:0] stack traceback:
[23/9/2014 19:44:0] data/globalevents/scripts/teleporte_automatico.lua:16: in function <data/globalevents/scripts/teleporte_automatico.lua:15>
Editado por raelpsf (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Teste assim:

local tpid = 1387 -- ID do teleporte
local timeremove = 5 -- Em minutos, remove teleporte
local create_tp = {x=XXX, y=XXX, z=XXX}  -- Coordenada de onde será criado
local destine_tp = {x=XXX, y=XXX, z=XXX}  -- Coordenada de destino
local msg_create = "Mensagem de aviso sobre ativação do evento."
local msg_final = "Evento finalizado e teleport removido com sucesso."

function onTime(interval)
    doBroadcastMessage(msg_create)
    doCreateTeleport(tpid, destine_tp, create_tp)
    addEvent(RemoveTPEvent, timeremove * 60 * 1000)
return true
end

function RemoveTPEvent()
    if getTileItemById(create_tp, tpid).uid > 0 then
        doRemoveItem(getTileItemById(create_tp, tpid).uid, 1)
        doBroadcastMessage(msg_final)
    else
        Print('Não há teleport para ser removido.')
    end
return true
end

ou assim:

 

local tpid = 1387 -- ID do teleporte
local timeremove = 5 -- Em minutos, remove teleporte
local create_tp = {x=XXX, y=XXX, z=XXX}  -- Coordenada de onde será criado
local destine_tp = {x=XXX, y=XXX, z=XXX}  -- Coordenada de destino
local msg_create = "Mensagem de aviso sobre ativação do evento."
local msg_final = "Evento finalizado e teleport removido com sucesso."

function onTime(interval)
    doBroadcastMessage(msg_create)
    doCreateTeleport(tpid, destine_tp, create_tp)
    addEvent(RemoveTPEvent, timeremove * 60 * 1000)
return true
end

function RemoveTPEvent()
        doRemoveItem(getTileItemById(create_tp, tpid).uid, 1)
        doBroadcastMessage(msg_final)
return true
end
Editado por Adriano SwaTT (veja o histórico de edições)

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

Link para o post
Compartilhar em outros sites

Tranquilo, que bom que funcionou.

Confesso que foi um dos primeiros scripts de edição direta na Database que crio.

 

:)

 

Faça bom aproveito.

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

Link para o post
Compartilhar em outros sites

Já esta rodando no meu servidor, encaixou perfeito com meus novos eventos.
Só fiquei com 1 dúvida aqui, a respeito do script de limpar o storage, no caso o player não pode estar online ne? pq se não ele não limpa o storage ne?
Teria que dar um server close pra deslogar todos os players e rodar o script correto?
Abraço meu caro!


Desculpe pela demora pra responder, mas estou sem internet em casa então esta complicado entrar no tibia king ultimamente.

Link para o post
Compartilhar em outros sites

Nossa, realmente o player Online bloqueia a remoção direta na database com comandos do tipo.

Porém, com ele Online daria pra fazer com a função normal "setPlayerStorageValue".

 

Ficaria tipo assim, ex:

local strg = XXXX -- valor da storage
local plstr = getPlayersOnline()

setPlayerStorageValue(plstr, strg, -1)

Ou talvez precisaria fazer uma tabela usando um for, acho que consigo criar este script para executar na database para os que não estiverem Online e por comando tradicional para os que estiverem.

 

Será mesmo necessário?

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

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

Link para o post
Compartilhar em outros sites
  • 1 month later...

Acabei viajando e não tive como te responder, me desculpa!

Eu consegui resolver este problema usando base do seu script, agradeço muito se não fosse por ti não teria conseguido!

Link para o post
Compartilhar em outros sites

Acabei viajando e não tive como te responder, me desculpa!

Eu consegui resolver este problema usando base do seu script, agradeço muito se não fosse por ti não teria conseguido!

Que bom que resolveu. :)

 

Faça bom aproveito.

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

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo