Postado Dezembro 31, 2017 7 anos 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 Dezembro 31, 2017 7 anos 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]
Postado Janeiro 1, 2018 7 anos 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.
Postado Janeiro 1, 2018 7 anos Autor @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 Janeiro 1, 2018 7 anos 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]
Postado Janeiro 1, 2018 7 anos 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 Janeiro 1, 2018 7 anos por marcot (veja o histórico de edições)
Postado Fevereiro 18, 2019 6 anos 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.
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.