Esse script define a dungeon na qual o jogador entrou e armazena essa informação na storage do player. Ele também teleporta o jogador para a posição inicial da dungeon.(Action 17003)
function onUse(player, item, fromPosition, target, toPosition)
local dungeonId = 1 -- ID da dungeon, altere conforme a dungeon específica
local dungeonEntryPosition = Position(100, 100, 7) -- Defina a posição da entrada da dungeon (x, y, z)
-- Armazena o ID da dungeon no storage do player
player:setStorageValue(12345, dungeonId) -- 12345 é o storage para a dungeon atual
-- Teleporta o player para a posição inicial da dungeon
player:teleportTo(dungeonEntryPosition)
player:getPosition():sendMagicEffect(CONST_ME_TELEPORT)
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você entrou na Dungeon " .. dungeonId .. ".")
return true
end
Esse script verifica qual dungeon o jogador entrou, e com base nisso, ele spawna o boss correspondente à dungeon naquela sala, se ela estiver disponível. (Action 14400)
function onUse(player, item, fromPosition, target, toPosition)
local dungeonId = player:getStorageValue(12345) -- Recupera o ID da dungeon do player
local bossPosition = Position(105, 105, 7) -- Posição onde o boss vai ser spawnado (x, y, z)
local playerBossRoomPosition = Position(110, 110, 7) -- Posição para onde o player será teleportado na sala do boss
local bossId
-- Verifica se o jogador tem um dungeonId válido
if dungeonId == -1 then
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você não entrou em nenhuma dungeon.")
return false
end
-- Define o boss de acordo com o ID da dungeon
if dungeonId == 1 then
bossId = "Boss1" -- Nome do Boss 1
elseif dungeonId == 2 then
bossId = "Boss2" -- Nome do Boss 2
elseif dungeonId == 3 then
bossId = "Boss3" -- Nome do Boss 3
else
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Dungeon inválida.")
return false
end
-- Checa se a sala do boss está disponível (sem criaturas)
if not Tile(bossPosition):getTopCreature() then
-- Spawna o boss na posição definida
Game.createMonster(bossId, bossPosition)
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, bossId .. " apareceu!")
-- Teleporta o player para a sala do boss
player:teleportTo(playerBossRoomPosition)
player:getPosition():sendMagicEffect(CONST_ME_TELEPORT)
else
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "A sala do boss já está ocupada.")
end
return true
end
Explicação dos Scripts:
-
Entrada na Dungeon (17003):
-
Armazena o ID da dungeon na storage
12345
do player.
-
Teleporta o player para a posição inicial da dungeon.
-
Exibe uma mensagem informando que ele entrou na dungeon.
-
Entrada na sala do Boss (14400):
-
Verifica qual dungeon o jogador entrou usando o valor armazenado na storage
12345
.
-
Com base no ID da dungeon, seleciona o boss correto e tenta spawná-lo na sala do boss.
-
Se a sala estiver disponível (sem criaturas), spawna o boss e teleporta o jogador para a sala.
-
Se a sala estiver ocupada, exibe uma mensagem de erro.
Modificações que você pode fazer:
-
IDs de Dungeon e Boss: Altere os IDs das dungeons e os nomes dos bosses de acordo com o que você quiser.
-
Posições: Ajuste as posições de entrada da dungeon, sala do boss, e local de teleporte para o que for necessário no seu mapa.
-
Cooldown ou reset: Se precisar de um cooldown para respawnar o boss ou resetar a sala, esse sistema pode ser facilmente estendido.