Postado Março 26, 2022 3 anos .Qual servidor ou website você utiliza como base? OTX 12.64 Qual o motivo deste tópico? Preciso adicionar um cooldown de 20 minutos para que o player possa entrar no boss novamente. O script cria o boss, limpa a sala e expulsa o player se passar de 2 minutos, porém preciso adicionar um cooldown de 20 minutos para uma nova tentativa. local setting = { centerRoom = {x = 1057, y = 1099, z = 8}, storage = 70852, bossPosition = {x = 1055, y = 1096, z = 8}, kickPosition = {x = 1055, y = 1109, z = 8}, playerTeleport = {x = 1055, y = 1101, z = 8} } local oberonLever = Action() -- Start Script function oberonLever.onUse(creature, item, fromPosition, target, toPosition, isHotkey) if item.itemid == 1945 and item.actionid == 58111 then local clearOberonRoom = Game.getSpectators(Position(setting.centerRoom), false, false, 3, 3, 3, 3) for index, spectatorcheckface in ipairs(clearOberonRoom) do if spectatorcheckface:isPlayer() then creature:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Someone is fighting against the boss! You need wait awhile.") return false end end for index, removeOberon in ipairs(clearOberonRoom) do if (removeOberon:isMonster()) then removeOberon:remove() end end Game.createMonster("Flameroth", setting.bossPosition, false, true) local players = {} for i = 0, 4 do local player1 = Tile({x = (Position(item:getPosition()).x - 2) + i, y = Position(item:getPosition()).y + 1, z = Position(item:getPosition()).z}):getTopCreature() players[#players+1] = player1 end for i, player in ipairs(players) do player:getPosition():sendMagicEffect(CONST_ME_POFF) player:teleportTo(Position(setting.playerTeleport), false) doSendMagicEffect(player:getPosition(), CONST_ME_TELEPORT) setPlayerStorageValue(player,setting.storage, os.time() + 2 * 60 * 60) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You have 2 minute(s) to defeat the boss.') addEvent(function() local spectatorsOberon = Game.getSpectators(Position(setting.centerRoom), false, false, 3, 3, 3, 3) for u = 1, #spectatorsOberon, 1 do if spectatorsOberon[u]:isPlayer() and (spectatorsOberon[u]:getName() == player:getName()) then player:teleportTo(Position(setting.kickPosition)) player:getPosition():sendMagicEffect(CONST_ME_TELEPORT) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Time is over. You need more power.') end end end, 2 * 60 * 1000) end end return true end oberonLever:aid(58111) oberonLever:register() Atenciosamente, Felipe Lotz.
Postado Abril 1, 2022 3 anos Em 26/03/2022 em 02:32, moskitinho disse: porém preciso adicionar um cooldown de 20 minutos para uma nova tentativa. pro player ou pra todos? se for pra um player só add uma storage nele setPlayerStorageValue(cid, setting.newTry, os.time() + 20 * 60) se for pra todos do OT ter que esperar 20 mins só add em global storage setGlobalStorageValue(setting.newTry, os.time() + 20 * 60) Em 26/03/2022 em 02:32, moskitinho disse: local setting = { centerRoom = {x = 1057, y = 1099, z = 8}, storage = 70852, bossPosition = {x = 1055, y = 1096, z = 8}, kickPosition = {x = 1055, y = 1109, z = 8}, playerTeleport = {x = 1055, y = 1101, z = 8} } no local setting vai ficar: local setting = { centerRoom = {x = 1057, y = 1099, z = 8}, storage = 70852, bossPosition = {x = 1055, y = 1096, z = 8}, kickPosition = {x = 1055, y = 1109, z = 8}, playerTeleport = {x = 1055, y = 1101, z = 8} newTry = 70853 --storage de checkar tempo de 20 minutos, pode por o numero q quiser } ai no começo do script vc coloca o check da storage que vc quer -- Start Script function oberonLever.onUse(creature, item, fromPosition, target, toPosition, isHotkey) if item.itemid == 1945 and item.actionid == 58111 then if getGlobalStorageValue(setting.newTry) - os.time() <= 0 then ...código todo... setGlobalStorageValue(setting.newTry, os.time() + 20 * 60) --creio q esse set vai ter que estar no começo ou dentro da função que joga o player pra dentro da sala else doPlayerSendTextMessage(cid, 27, "Você precisa esperar ", ..getGlobalStorageValue(setting.newTry)-os.time().. " Minutos pra entrar") end creio que vc vai precisar fazer algumas mudanças minimas, mas é basicamente isso. se for só pro player vc precisar trocar o "GlobalStorage" por "PlayerStorage" Em 26/03/2022 em 02:32, moskitinho disse: if item.itemid == 1945 and item.actionid == 58111 then local clearOberonRoom = Game.getSpectators(Position(setting.centerRoom), false, false, 3, 3, 3, 3) ou até de uma maneira mais facil, você pode colocar a storage de os.time pra checar ai no meio oq ocuparia menos espaço -- Start Script function oberonLever.onUse(creature, item, fromPosition, target, toPosition, isHotkey) if getGlobalStorageValue(setting.newTry) - os.time() > 1 then --se ainda restar segundo a mais na storage return true --só retorna end if item.itemid == 1945 and item.actionid == 58111 then ai você só precisa achar o lugar certo pra setar a storage
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.