[Actions] -Sistema de boss exclusivo em área - paulim78 - 17-08-2025
O que o script faz:
- É um sistema de boss room exclusiva.
- O player usa um item/lever e acontece o seguinte:
- Verificação de cooldown
- Se o boss já foi invocado recentemente (dentro de cooldownSeconds, que está em 15 minutos), o player recebe a mensagem: "Já tem alguém lutando contra o Gonka, espere ele sair."
- Se ainda há players dentro da área configurada (areaFrom até areaTo), também bloqueia a entrada.
- Teleporte do player
- O player é teleportado para a posição teleportToPos.
- Um efeito de teleporte é mostrado.
- Invocação do Boss
- O boss configurado (bossName = "Boss Apocalypse") nasce na posição monsterSpawnPos.
- Cooldown global
- O storage global (globalStorage) recebe o tempo atual + 15 minutos, impedindo que outro jogador inicie a luta antes do tempo.
Codigo:
Show Content
Spoiler
local teleportToPos = Position(2017, 3262, 5)
local monsterSpawnPos = Position(2017, 3249, 5)
local areaFrom = Position(2009, 3246, 5)
local areaTo = Position(2025, 3262, 5)
local bossName = "Boss Apocalypse"
local globalStorage = 15421
local cooldownSeconds = 15 * 60 -- exemplo: 15 minutos (ajuste se quiser)
local function getPlayersInArea(fromPos, toPos)
local players = {}
for x = fromPos.x, toPos.x do
for y = fromPos.y, toPos.y do
local pos = Position(x, y, fromPos.z)
local tile = Tile(pos)
if tile then
local creature = tile:getTopCreature()
if creature and creature:isPlayer() then
table.insert(players, creature)
end
end
end
end
return players
end
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
local playersInArea = getPlayersInArea(areaFrom, areaTo)
if #playersInArea > 0 or (Game.getStorageValue(globalStorage) or 0) > os.time() then
player:sendCancelMessage("Já tem alguém lutando contra o Gonka, espere ele sair.")
return true
end
player:teleportTo(teleportToPos)
teleportToPos:sendMagicEffect(CONST_ME_TELEPORT)
Game.createMonster(bossName, monsterSpawnPos)
Game.setStorageValue(globalStorage, os.time() + cooldownSeconds)
return true
end
Como configurar.
1. Posições
Dentro do script, você tem várias Position(...) que definem onde o player vai, onde o boss vai spawnar e qual área vai ser checada. Troque pelos valores do seu mapa:
Citação:local teleportToPos = Position(2017, 3262, 5) -- onde o player vai ser teleportado
local monsterSpawnPos = Position(2017, 3249, 5) -- onde o boss vai nascer
local areaFrom = Position(2009, 3246, 5) -- canto superior/esquerdo da área de checagem
local areaTo = Position(2025, 3262, 5) -- canto inferior/direito da área de checagem
[*]teleportToPos → Onde o player é teleportado para lutar contra o boss.
[*]monsterSpawnPos → Posição exata onde o boss vai spawnar.
[*]areaFrom / areaTo → Definem um retângulo de checagem: se houver qualquer player dentro, não deixa iniciar outro boss.
2. Nome do boss
Citação:local bossName = "Boss Apocalypse"
[*]Troque pelo nome exato do boss que você criou no monster.xml.
[*]Tem que bater com o nome que o servidor reconhece.
3. Cooldown global
Citação:local globalStorage = 15421 -- storage usado para controlar cooldown
local cooldownSeconds = 15 * 60 -- tempo em segundos (ex: 15 minutos)
[*]globalStorage → qualquer número único, usado para armazenar o tempo do cooldown.
[*]cooldownSeconds → quanto tempo precisa esperar até poder spawnar outro boss.- Exemplo: 30 * 60para 30 minutos.
Creditos:
Achado em um OTSERV.
|