Ir para conteúdo
  • Cadastre-se

Normal Tile com tempo pra passar


Posts Recomendados

Olá pessoal, eu estou tentando criar um script de um Tile que só de pra passar em um horário certo e caso contrario ele te manda uma mensagem, só que está um pouco complicado pra fazer pois não entendi bem esse negocio de por tempo em storage...

 

O que eu preciso

Basicamente eu preciso de 3 scripts (creio eu que não de pra fazer em um só kk) para definir o Tile, de quanto em quanto tempo se pode passar e por quanto tempo fica "passavel" .

#1: Gostaria muito que esse Tile permitisse os players a passar todos os dias (permite hoje, permite amanha, permite sempre) das 18:30 até as 19:30.

#2: Este segundo Tile, deve permitir que os players passem a dia sim, dia não (permite hoje e não permite amanha) das 19:30 as 21:00.

#3: O terceiro e ultimo Tile, deve permitir que os players passem a cada três dias (permite hoje, amanha e depois de amanha não permite) das 21:00 as 22:30.

 

Um detalhe que esqueci!!

Em todos eles quando dar o horario final, os players na area do ponto A ao ponto B teriam que ser teleportados pro ponto C (Isso deve ser muito dificil de fazer, entao se nao for possivel não tem problema).

 

Observação final

Eu queria por uma mensagem pra quando o player pudesse passar e outra pra quando ele não pudesse mas isso eu mesmo posso arrumar depois...

Pessoal, agradeço pela ajuda e desculpe-me pela ignorância. Tenho o doc de lua functions mas não faço a mínima ideia de como usar storage pra mexer com tempo...

Editado por Davi R. (veja o histórico de edições)

"Feliz ou não a lei da vida é sempre seguir em frente com a cabeça erguida."

contato: [email protected]

Link para o post
Compartilhar em outros sites

Os scripts 2 e 3 ficaram um pouco gambiarrados e não estou com meu desktop aqui pra fazer os devidos testes, mas a lógica creio eu que funcione:

function onStepIn(cid, item, pos)
	-- Configuracoes globais
	teleportTo = {script1Pos = {x = , y = , z = }, script2Pos = {x = , y = , z = }, script3Pos = {x = , y = , z = }}
	actionIDs = {script1 = 13000, script2 = 13001, script3 = 13002}
	-- Fim das configuracoes globais
	if isPlayer(cid) then
		
		if item.actionid == actionIDs.script1 then
			executeScript1 (teleportTo)
		elseif item.actionid == actionIDs.script2 then
			executeScript2 (teleportTo)
		elseif item.actionid == actionIDs.script3 then
			executeScript3 (teleportTo)
		end
	end
end

function executeScript1 (teleportTo)
	-- Configuracoes Script 1
	horMin = {horas = 18, minutos = 30}
	horMax = {horas = 19, minutos = 30}
	-- Fim das configuracoes Script 1
	hor = {horas = os.date('%H'), minutos = os.date('%M')}
	
	if not isInInterval (hor, horMin, horMax) then
		doTeleportThing(cid, teleportTo.script1Pos)
		doPlayerSendCancel(cid,"Closed.")
	end
end

function executeScript2 (teleportTo)
	-- Configuracoes do Script 2
	horMin = {horas = 19, minutos = 30}
	horMax = {horas = 21, minutos = 00}
	-- Fim das configuracoes do Script 2
	hor = {horas = os.date('%H'), minutos = os.date('%M')}

	if not isInInterval (hor, horMin, horMax) then
		if not isTheDay ()
			doTeleportThing(cid, teleportTo.script2Pos)
			doPlayerSendCancel(cid,"Closed.")		
		end
	end	
end

function executeScript3 (teleportTo)
	-- Configuracoes do Script 3
	horMin = {horas = 21, minutos = 00}
	horMax = {horas = 22, minutos = 30}	
	diasDisponiveis = {1, 4, 7, 10, 13, 16, 19, 22, 25, 28, 31}
	-- Fim das configuracoes
	hor = {horas = os.date('%H'), minutos = os.date('%M')}
	if not isInInterval (hor, horMin, horMax) then
		if not isInArray(diasDisponiveis, os.date("%d")) then
			doTeleportThing(cid, teleportTo.script3Pos)
			doPlayerSendCancel(cid,"Closed.")			
		end
	end
end

function isInInterval(hor, horMin, horMax)
	if hor.horas == horMin.horas then
		if hor.minutos >= horMin.minutos then
			return TRUE
		end
	elseif hor.horas == horMax.horas then
		if hor.minutos <= horMax.minutos then
			return TRUE
		end
	elseif hor.horas > horMin.horas and hor.horas < horMax.horas then
		return TRUE
	end
	
	return FALSE
end

function isTheDay ( )
	day = os.date( "%d")
	if (day % 2) == 0 then
		return TRUE
	else
		return FALSE
	end
end

Note que tem umas partes pra você completar (como posições, actionsID e etc.), mas qualquer erro que der só dar o toque que eu tento corrigir, pois como disse acima, estou sem meu desktop pra testar.

Link para o post
Compartilhar em outros sites

@marcot Obrigado pela ajuda cara! Está praticamente perfeito, eu não entendo muito essa parte do .lua então tentei alterar e não funcionou, mas, no script 2 e no 3, não seria possível ao invés de colocar os dias exatos colocar pra ele pegar o dia atual e somar 3 dias pra saber o proximo dia pra abrir?

Tipo assim, entendi que tem esse

os.date( "%d")

Então pensei que seria possível pegar esse valor antes de fechar o evento e somar três dias pra abrir novamente. (digo antes de fechar o evento pra que dê o loop certinho, ele soma, fecha, depois do tempo ele abre... fica aberto, soma, fecha.. e fica dando esse loop)

-- tipo um

openday = os.date( "%d") + 3
setGlobalStorageValue(seila, openday)

-- e ai na hora de abrir ele da um get no value e confere se é o dia

if os.date( "%d") == getGlobalStorageValue(valor)  then
  doPlayerSendCancel(cid,"vai lá meu querido!")
  else
  doPlayerSendCancel(cid,"só lamento")
  doTeleportThing(cid, fromPosition)
end

deixo claro que não sei se isso está certo ou errado, eu mexo com php, ainda to aprendendo .lua kkk

Eu não sei se isso é complexo de se fazer, na real, não to entendendo muito do script pois nem sabia que existia esses parâmetros, mas se puder me ajudar ficarei muito grato.

Na realidade mesmo se não puder, obrigado parceiro!

Que esse primeiro dia do ano seja bom e os outros sejam melhores ainda.

 

NAAA VERDADE... ACABEI DE PERCEBER QUE ISSO NAO DARIA CERTO

Nem tinha pensado nisso, mas se for assim, se algum dia nenhum player entrar, vai bugar tudo... Fora isso, do jeito que eu falei, cada player que entrar vai aumentar +3 dias no tempo da próxima abertura, ridiculamente burro da minha parte kkkk

 

Uma outra opção eu acho que seria fazer esse script só checar o day e criar um globalevent script pra definir o dia de abertura +3, o que acha? Por que ai nesse caso não buga se ninguém entrar e nem se muita gente entrar kk talvez de certo

Editado por Davi R.
Percebi que cometi um erro bem bobo kk (veja o histórico de edições)

"Feliz ou não a lei da vida é sempre seguir em frente com a cabeça erguida."

contato: [email protected]

Link para o post
Compartilhar em outros sites

Script 1 consertado, com o bug especificado por PM com o doTeleportThing.

local config = {
	horMin = {horas = 18, minutos = 30}, -- Horario de abrir
	horMax = {horas = 19, minutos = 30}, -- Horario de fechar
	successText = "Lets go there, little boy.", -- Texto enviado quando o player passa com sucesso
	failText = "Open at 18:30 and close at 19:30, come back later." -- Texto enviado quando o player nao consegue passar
}

function onStepIn(cid, fromPosition, item, pos)
	hor = {horas = tonumber(os.date('%H')), minutos = tonumber(os.date('%M'))}

	if isInInterval (cid, hor, config.horMin, config.horMax) == FALSE then
		doTeleportThing(cid, fromPosition)
		doPlayerSendCancel(cid, config.failText)
	else
		doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, config.successText)
	end

	return 1
end

function isInInterval(cid, hor, horMin, horMax)
	if hor.horas == horMin.horas then
		if hor.minutos >= horMin.minutos then
			return TRUE
		end
	elseif hor.horas == horMax.horas then
		if hor.minutos <= horMax.minutos then
			return TRUE
		end
	elseif hor.horas > horMin.horas and hor.horas < horMax.horas then
		return TRUE
	end
	
	return FALSE
end

 

Agora, para os outros 2 scripts, do jeito que montei, precisaria salvar num arquivo a data em que o evento abriu pela ultima vez, mas mexer com arquivo pesa muito.

Editado por marcot (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • 1 year later...

dá pra configurar mais de uma hora de abrir e fechar ??

 

 

Em 01/01/2018 em 15:06, marcot disse:

Script 1 consertado, com o bug especificado por PM com o doTeleportThing.


local config = {
	horMin = {horas = 18, minutos = 30}, -- Horario de abrir
	horMax = {horas = 19, minutos = 30}, -- Horario de fechar
	successText = "Lets go there, little boy.", -- Texto enviado quando o player passa com sucesso
	failText = "Open at 18:30 and close at 19:30, come back later." -- Texto enviado quando o player nao consegue passar
}

function onStepIn(cid, fromPosition, item, pos)
	hor = {horas = tonumber(os.date('%H')), minutos = tonumber(os.date('%M'))}

	if isInInterval (cid, hor, config.horMin, config.horMax) == FALSE then
		doTeleportThing(cid, fromPosition)
		doPlayerSendCancel(cid, config.failText)
	else
		doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, config.successText)
	end

	return 1
end

function isInInterval(cid, hor, horMin, horMax)
	if hor.horas == horMin.horas then
		if hor.minutos >= horMin.minutos then
			return TRUE
		end
	elseif hor.horas == horMax.horas then
		if hor.minutos <= horMax.minutos then
			return TRUE
		end
	elseif hor.horas > horMin.horas and hor.horas < horMax.horas then
		return TRUE
	end
	
	return FALSE
end

 

Agora, para os outros 2 scripts, do jeito que montei, precisaria salvar num arquivo a data em que o evento abriu pela ultima vez, mas mexer com arquivo pesa muito.

 

 

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.


  • Conteúdo Similar

    • Por Jaurez
      .
    • Por Cat
      Em alguns casos, o tibia 8.60 comum não abre de jeito nenhum no map editor, mesmo desmarcando check file signatures e configurando o path corretamente.
       
      Este é o client 8.60 adaptado para o Remere's Map Editor. Resolvi postar já que ele foi removido do site oficial do RME. (ficou apenas a versão para linux lá)
      Se estiver tendo problemas para abrir a versão 8.60, tente utilizar este.
                                                                                                                     
      Baixar o Tibia Client 8.60 que funciona no Remere’s Map Editor
      Essa versão do Tibia 8.60 client resolve o erro unsupported client version ou Could not locate tibia.dat and/or tibia.spr, please navigate to your tibia 8.60 installation folder.
       
      Downloads
      https://tibiaking.com/applications/core/interface/file/attachment.php?id=47333

      Scan: https://www.virustotal.com/gui/file/333e172ac49ba2028db9eb5889994509e7d2de28ebccfa428c04e86defbe15cc
       
    • Por danilo belato
      Fala Galera To Com um problema aki 
       
      quero exporta umas sprites de um server para colocar em outro 
       
      eu clico na sprites ai aparece tds a forma delas do lado de la >>
       
      ai eu clico nela e ponho a opiçao de export mais quando salvo a sprite ela n abri 
       
      aparece isso quando tento vê-la 
       
      visualização não disponível ( no formatos png e bitmap)
       
      Agora no formato idc fala que o paint n pode ler 
       
      me ajudem ae...
    • Por Vitor Bicaleto
      Galera to com o script do addon doll aqui, quando eu digito apenas "!addon" ele aparece assim: Digite novamente, algo está errado!"
      quando digito por exemplo: "!addon citizen" ele não funciona e não da nenhum erro
       
      mesma coisa acontece com o mount doll.. 
    • Por Ayron5
      Substitui uma stone no serve, deu tudo certo fora  esse  erro ajudem  Valendo  Rep+  Grato  

      Erro: data/actions/scripts/boost.lua:557: table index is nil
       [Warning - Event::loadScript] Cannot load script (data/actions/scripts/boost.lua)

      Script:
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo