Postado Dezembro 1, 2021 3 anos 31 minutos atrás, Vodkart disse: local storage = 789456 local from, to = {x = 1739, y = 358, z = 7}, {x = 1844, y = 453, z = 7} local pos = {x = 1005, y = 905, z = 5} function onThink(interval, lastExecution) local on = getPlayersOnline() if #on > 0 then for _, pid in pairs(on) do if isInRange(getPlayerPosition(pid), from, to) and getPlayerStorageValue(pid, storage) - os.time() <= 0 then doTeleportThing(pid, config.pos) doPlayerSendTextMessage(pid, 19, "tempo esgotado.") setPlayerStorageValue(pid, 123456, 0) -- know storage end end end return true end TAG <globalevent name="ExitHunt" interval="30" script="nome do seu script.lua" /> obs: se o seu servidor for em milesegundos trocar o "30" por "30000" obs: pode remover o creaturescript aproveita e me tira 1 dúvida sobre isso se puder por favor, vodkart esses dias eu fiz a exata mesma solução que você enviou aqui, porém fiquei com um pé atrás de enviar para produção já que vai estar verificando uma área de tiles toda hora com o onthink, isso causaria lag ou é só uma superstição minha? sobre o tópico: se ainda quiser uma solução diferente da do vodkart, vou tentar refazer e você verifica se funcionou Spoiler local config = { toKnow = 123456, storage = 789456, pos = {x = 1005, y = 905, z = 5}, -- para onde o jogador será teleportado caso o tempo tenha acabado. } function onKill(cid, target, lastHit) if (getPlayerStorageValue(cid, config.toKnow) == 1) then local time = getPlayerStorageValue(cid, config.storage) - os.time() if (time <= 0) then doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT) doTeleportThing (cid, config.pos) setPlayerStorageValue (cid, config.toKnow, 0) return true end end return true end se funcionar, você pode retirar o evento de login
Postado Dezembro 1, 2021 3 anos Autor 8 minutos atrás, So volto tarde disse: aproveita e me tira 1 dúvida sobre isso se puder por favor, vodkart esses dias eu fiz a exata mesma solução que você enviou aqui, porém fiquei com um pé atrás de enviar para produção já que vai estar verificando uma área de tiles toda hora com o onthink, isso causaria lag ou é só uma superstição minha? sobre o tópico: se ainda quiser uma solução diferente da do vodkart, vou tentar refazer e você verifica se funcionou Ocultar conteúdo local config = { toKnow = 123456, storage = 789456, pos = {x = 1005, y = 905, z = 5}, -- para onde o jogador será teleportado caso o tempo tenha acabado. } function onKill(cid, target, lastHit) if (getPlayerStorageValue(cid, config.toKnow) == 1) then local time = getPlayerStorageValue(cid, config.storage) - os.time() if (time <= 0) then doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT) doTeleportThing (cid, config.pos) setPlayerStorageValue (cid, config.toKnow, 0) return true end end return true end se funcionar, você pode retirar o evento de login Nada ainda vey
Postado Dezembro 1, 2021 3 anos 2 minutos atrás, leozincorsair disse: Nada ainda vey tem que funcionar viado, ta td certo... me chama discord to on @So volto tarde nesse caso não... pois só está pegando a pos númerica dos jogadores... agr se for td hr checar varios tiles(num mapa grande), ai sim da um lag absurdo [*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*] DISCORD: vodkart#6090
Postado Dezembro 1, 2021 3 anos Autor 13 minutos atrás, Vodkart disse: tem que funcionar viado, ta td certo... me chama discord to on @So volto tarde nesse caso não... pois só está pegando a pos númerica dos jogadores... agr se for td hr checar varios tiles(num mapa grande), ai sim da um lag absurdo e somente de uma unica hunt, queria fazer isso com 6. tudo individual Citar function onUse(cid, item, frompos, item2, topos) local config = { timeExhausted = 12, -- tempo em horas para poder usar o item novamente. timeForUse = 1, -- tempo em horas que o player poderá entrar na cave. exhausted = 456789, storage = 789456, toKnow = 123456, effect = 27, -- efeito que dará ao usar o item. } if getPlayerStorageValue(cid, config.exhausted) < os.time() then setPlayerStorageValue (cid, config.storage, config.timeForUse * 60 * 60 + os.time()) setPlayerStorageValue (cid, config.exhausted, config.timeExhausted * 60 * 60 + os.time()) setPlayerStorageValue (cid, config.toKnow, 1) doSendMagicEffect (getThingPos(cid), config.effect) doPlayerSendTextMessage (cid, 19, "Parabéns voce tem o acesso a hunt exclusiva N-2 por 1 horas.") doRemoveItem(item.uid) else doPlayerSendTextMessage (cid, 19, "Aguarde 12 horas para usar esse item novamente.") end return true end poderia arrumar esse action para por em minutos, pq em horas demora pra testar
Postado Dezembro 1, 2021 3 anos refiz o sistema: -- LIB hunt_config = { storage = 789456, from = {x = 1739, y = 358, z = 7}, -- coordenada do canto superior esquerdo da área. to = {x = 1844, y = 453, z = 7}, -- coordenada do canto inferior direito da área. maxPlayers = 2, -- quantos jogadores poderão entrar na área ao mesmo tempo. pos = {x = 1739, y = 397, z = 7}, -- para onde o jogador será teleportado. exit = {x = 1005, y = 905, z = 5} } -- MOVEMENTS function onStepIn(cid, item, position, fromPosition) local t = {} if not isPlayer(cid) then return true end for _, pid in pairs(getPlayersOnline()) do if isInRange(getPlayerPosition(pid), hunt_config.from, hunt_config.to) then t[#t+1] = pid end end if #t >= hunt_config.maxPlayers then doPlayerSendTextMessage (cid, 19, "Essa hunt ja atingiu o numero maximo de jogadores, aguarde um pouco.") doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT) doTeleportThing(cid, fromPosition, true) elseif getPlayerStorageValue(cid, hunt_config.storage) - os.time() <= 0 then doPlayerSendTextMessage(cid, 19, "Voce nao tem acesso a essa hunt, fale com o npc no segundo andar para adquirir uma.") doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT) doTeleportThing(cid, fromPosition, true) else doTeleportThing(cid, hunt_config.pos) doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT) end return true end -- ACTION function onUse(cid, item, frompos, item2, topos) local config = { timeExhausted = 12, -- tempo em horas para poder usar o item novamente. timeForUse = 1, -- tempo em horas que o player poderá entrar na cave. exhausted = 456789, } if getPlayerStorageValue(cid, config.exhausted) - os.time() > 0 then doPlayerSendTextMessage(cid, 19, "Aguarde 12 horas para usar esse item novamente.") return true end setPlayerStorageValue(cid, hunt_config.storage, os.time()+config.timeForUse*3600) setPlayerStorageValue(cid, config.exhausted, os.time()+config.timeExhausted*3600) doSendMagicEffect(getThingPos(cid), 27) doPlayerSendTextMessage(cid, 19, "Parabéns voce tem o acesso a hunt exclusiva N-2 por 1 horas.") doRemoveItem(item.uid) return true end --GLOBAL function onThink(interval, lastExecution) local on = getPlayersOnline() if #on > 0 then for _, pid in pairs(on) do if isInRange(getPlayerPosition(pid), hunt_config.from, hunt_config.to) and getPlayerStorageValue(pid, hunt_config.storage) - os.time() <= 0 then doTeleportThing(pid, hunt_config.exit) doPlayerSendTextMessage(pid, 19, "tempo esgotado.") end end end return true end para testar mais rapido usa assim no actions nessa linha: setPlayerStorageValue(cid, hunt_config.storage, os.time()+90) -- 90 segundos de sistema [*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*] DISCORD: vodkart#6090
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.