Ir para conteúdo

Featured Replies

Postado

.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()

 

Angelina_Me_by_msklotz.png

 

Atenciosamente,

Felipe Lotz.

 

Postado
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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo