Postado Setembro 16, 2021 3 anos Estou com problemas com a sala dos boss por alavanca estou usando esse script e os problemas sao quando tem alguem dentro da sala matando o boss e outro jogador puxar a alavanca ele consegui entrar (resetando o boss ou fazendo com que apareça mais 1 na sala) no caso precisava de alguma alteraçao para travar a entrada enquanto estiver alguem matando o boss e uma outra para caso o jogador morrer dentro da sala,o boss ser removido ou resetado quando um novo jogador for entrar..para nao ter risco de entrar e encontrar 2 boss dentro da sala Spoiler local config = { cooldown = 60 * 60 * 20, -- in seconds - (Make it 'seconds * minutes * hours' - its will be '60 * 60 * 20' for 20 hours) (player cooldown) cooldown_storage = 808856, duration = 10, -- time till reset, in minutes (lever cooldown) level_req = 8, -- minimum level to do quest min_players = 1, -- minimum players to join quest lever_id = 1945, -- id of lever before pulled pulled_id = 1946, -- id of lever after pulled } local player_positions = { [1] = {fromPos = Position(33395, 32662, 6), toPos = Position(33395, 32658, 6)}, [2] = {fromPos = Position(33395, 32663, 6), toPos = Position(33395, 32658, 6)}, [3] = {fromPos = Position(33395, 32663, 6), toPos = Position(33395, 32658, 6)}, [4] = {fromPos = Position(33395, 32665, 6), toPos = Position(33395, 32658, 6)}, [5] = {fromPos = Position(33394, 32662, 6), toPos = Position(33395, 32658, 6)} } local monsters = { [1] = {pos = Position(33396, 32642, 6), name = "scarlett etzel"} } local quest_range = {fromPos = Position(33386, 32639, 6), toPos = Position(33405, 32659, 6)} -- see image in thread for explanation local exit_position = Position(33395, 32671, 6) -- Position completely outside the quest area function doResetTheBossDukeKrule(position, cid_array) local tile = Tile(position) local item = tile and tile:getItemById(config.pulled_id) if not item then return end local monster_names = {} for key, value in pairs(monsters) do if not isInArray(monster_names, value.name) then monster_names[#monster_names + 1] = value.name end end for i = 1, #monsters do local creatures = Tile(monsters[i].pos):getCreatures() for key, creature in pairs(creatures) do if isInArray(monster_names, creature:getName()) then creature:remove() end end end for i = 1, #player_positions do local creatures = Tile(player_positions[i].toPos):getCreatures() for key, creature in pairs(creatures) do if isInArray(monster_names, creature:getName()) then creature:remove() end end end for key, cid in pairs(cid_array) do local participant = Player(cid) if participant and isInRange(participant:getPosition(), quest_range.fromPos, quest_range.toPos) then participant:teleportTo(exit_position) exit_position:sendMagicEffect(CONST_ME_TELEPORT) end end item:transform(config.lever_id) end local function removeBoss() local specs, spec = Game.getSpectators(Position(33396, 32649, 6), false, false, 10, 10, 10, 10) for j = 1, #specs do spec = specs[j] if spec:getName():lower() == 'scarlett etzel' then spec:remove() end end end function onUse(player, item, fromPosition, target, toPosition, isHotkey) if player:getStorageValue(config.cooldown_storage) >= os.time() then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "try tomorrow") return true end local participants, pull_player = {}, false for i = 1, #player_positions do local fromPos = player_positions[i].fromPos local tile = Tile(fromPos) if not tile then print(">> ERROR: Annihilator tile does not exist for Position(" .. fromPos.x .. ", " .. fromPos.y .. ", " .. fromPos.z .. ").") return player:sendCancelMessage("There is an issue with this quest. Please contact an administrator.") end local creature = tile:getBottomCreature() if creature then local participant = creature:getPlayer() if not participant then return player:sendCancelMessage(participant:getName() .. " is not a valid participant.") end if participant:getLevel() < config.level_req then return player:sendCancelMessage(participant:getName() .. " is not the required level.") end if participant.uid == player.uid then pull_player = true end participants[#participants + 1] = {participant = participant, toPos = player_positions[i].toPos} end end if #participants < config.min_players then return player:sendCancelMessage("You do not have the required amount of participants.") end if not pull_player then return player:sendCancelMessage("You are in the wrong position.") end for i = 1, #monsters do local toPos = monsters[i].pos if not Tile(toPos) then print(">> ERROR: Annihilator tile does not exist for Position(" .. toPos.x .. ", " .. toPos.y .. ", " .. toPos.z .. ").") return player:sendCancelMessage("There is an issue with this quest. Please contact an administrator.") end removeBoss() Game.createMonster(monsters[i].name, monsters[i].pos, false, true) end local cid_array = {} for i = 1, #participants do participants[i].participant:teleportTo(participants[i].toPos) participants[i].toPos:sendMagicEffect(CONST_ME_TELEPORT) cid_array[#cid_array + 1] = participants[i].participant.uid player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have 10 minutes to kill and loot this boss. Otherwise you will lose that chance and will be kicked out.") end item:transform(config.pulled_id) player:setStorageValue(config.cooldown_storage, os.time() + config.cooldown) addEvent(doResetTheBossDukeKrule, config.duration * 60 * 1000, toPosition, cid_array) return true end
Postado Setembro 16, 2021 3 anos 3 horas atrás, leonardo gazim disse: Estou com problemas com a sala dos boss por alavanca estou usando esse script e os problemas sao quando tem alguem dentro da sala matando o boss e outro jogador puxar a alavanca ele consegui entrar (resetando o boss ou fazendo com que apareça mais 1 na sala) no caso precisava de alguma alteraçao para travar a entrada enquanto estiver alguem matando o boss e uma outra para caso o jogador morrer dentro da sala,o boss ser removido ou resetado quando um novo jogador for entrar..para nao ter risco de entrar e encontrar 2 boss dentro da sala Ocultar conteúdo local config = { cooldown = 60 * 60 * 20, -- in seconds - (Make it 'seconds * minutes * hours' - its will be '60 * 60 * 20' for 20 hours) (player cooldown) cooldown_storage = 808856, duration = 10, -- time till reset, in minutes (lever cooldown) level_req = 8, -- minimum level to do quest min_players = 1, -- minimum players to join quest lever_id = 1945, -- id of lever before pulled pulled_id = 1946, -- id of lever after pulled } local player_positions = { [1] = {fromPos = Position(33395, 32662, 6), toPos = Position(33395, 32658, 6)}, [2] = {fromPos = Position(33395, 32663, 6), toPos = Position(33395, 32658, 6)}, [3] = {fromPos = Position(33395, 32663, 6), toPos = Position(33395, 32658, 6)}, [4] = {fromPos = Position(33395, 32665, 6), toPos = Position(33395, 32658, 6)}, [5] = {fromPos = Position(33394, 32662, 6), toPos = Position(33395, 32658, 6)} } local monsters = { [1] = {pos = Position(33396, 32642, 6), name = "scarlett etzel"} } local quest_range = {fromPos = Position(33386, 32639, 6), toPos = Position(33405, 32659, 6)} -- see image in thread for explanation local exit_position = Position(33395, 32671, 6) -- Position completely outside the quest area function doResetTheBossDukeKrule(position, cid_array) local tile = Tile(position) local item = tile and tile:getItemById(config.pulled_id) if not item then return end local monster_names = {} for key, value in pairs(monsters) do if not isInArray(monster_names, value.name) then monster_names[#monster_names + 1] = value.name end end for i = 1, #monsters do local creatures = Tile(monsters[i].pos):getCreatures() for key, creature in pairs(creatures) do if isInArray(monster_names, creature:getName()) then creature:remove() end end end for i = 1, #player_positions do local creatures = Tile(player_positions[i].toPos):getCreatures() for key, creature in pairs(creatures) do if isInArray(monster_names, creature:getName()) then creature:remove() end end end for key, cid in pairs(cid_array) do local participant = Player(cid) if participant and isInRange(participant:getPosition(), quest_range.fromPos, quest_range.toPos) then participant:teleportTo(exit_position) exit_position:sendMagicEffect(CONST_ME_TELEPORT) end end item:transform(config.lever_id) end local function removeBoss() local specs, spec = Game.getSpectators(Position(33396, 32649, 6), false, false, 10, 10, 10, 10) for j = 1, #specs do spec = specs[j] if spec:getName():lower() == 'scarlett etzel' then spec:remove() end end end function onUse(player, item, fromPosition, target, toPosition, isHotkey) if player:getStorageValue(config.cooldown_storage) >= os.time() then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "try tomorrow") return true end local participants, pull_player = {}, false for i = 1, #player_positions do local fromPos = player_positions[i].fromPos local tile = Tile(fromPos) if not tile then print(">> ERROR: Annihilator tile does not exist for Position(" .. fromPos.x .. ", " .. fromPos.y .. ", " .. fromPos.z .. ").") return player:sendCancelMessage("There is an issue with this quest. Please contact an administrator.") end local creature = tile:getBottomCreature() if creature then local participant = creature:getPlayer() if not participant then return player:sendCancelMessage(participant:getName() .. " is not a valid participant.") end if participant:getLevel() < config.level_req then return player:sendCancelMessage(participant:getName() .. " is not the required level.") end if participant.uid == player.uid then pull_player = true end participants[#participants + 1] = {participant = participant, toPos = player_positions[i].toPos} end end if #participants < config.min_players then return player:sendCancelMessage("You do not have the required amount of participants.") end if not pull_player then return player:sendCancelMessage("You are in the wrong position.") end for i = 1, #monsters do local toPos = monsters[i].pos if not Tile(toPos) then print(">> ERROR: Annihilator tile does not exist for Position(" .. toPos.x .. ", " .. toPos.y .. ", " .. toPos.z .. ").") return player:sendCancelMessage("There is an issue with this quest. Please contact an administrator.") end removeBoss() Game.createMonster(monsters[i].name, monsters[i].pos, false, true) end local cid_array = {} for i = 1, #participants do participants[i].participant:teleportTo(participants[i].toPos) participants[i].toPos:sendMagicEffect(CONST_ME_TELEPORT) cid_array[#cid_array + 1] = participants[i].participant.uid player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have 10 minutes to kill and loot this boss. Otherwise you will lose that chance and will be kicked out.") end item:transform(config.pulled_id) player:setStorageValue(config.cooldown_storage, os.time() + config.cooldown) addEvent(doResetTheBossDukeKrule, config.duration * 60 * 1000, toPosition, cid_array) return true end -- <action actionid="4627" event="script" value="bosses/scarlet_boss.lua"/> adicionar no actions.xml local posInicio = {x = 33385, y = 32638, z = 6} --pos inicio da sala local posFim = {x = 33406, y = 32660, z = 6}--pos final inicio da sala local posExitTime = {x = 33393, y = 32671, z = 6}-- pos para onde o player vai sair local function verificaPlayers() for x = posInicio.x, posFim.x do for y = posInicio.y, posFim.y do if isPlayer(getThingFromPos({x = x, y = y, z = posInicio.z, stackpos = 253}).uid) then return 1 end end end end local function verificaBoss() for x = posInicio.x, posFim.x do for y = posInicio.y, posFim.y do if isMonster(getThingFromPos({x = x, y = y, z = posInicio.z, stackpos = 253}).uid) then doRemoveCreature(getThingFromPos({x = x, y = y, z = posInicio.z, stackpos = 253}).uid) end end end end local function removePlayersTime() for x = posInicio.x, posFim.x do for y = posInicio.y, posFim.y do local remove, clean = true, true local pos = {x = x, y = y, z = posInicio.z} local m = getTopCreature(pos).uid if m ~= 0 and isPlayer(m) then doTeleportThing(m, posExitTime) end end end doSendMagicEffect(posExitTime, 10) return true end function onUse(cid, item, frompos, item2, topos) -- Lever Boss if item.aid == 4627 then -- action id da alavanca local playerChecked = false local teleportToRoom = false local stoExhaust = 424148 -- staorage de segurança para exhaust local stoExhaustPlayer = getPlayerStorageValue(cid, stoExhaust) if stoExhaustPlayer > os.time() then doPlayerSendCancel(cid, "You have to wait " .. stoExhaustPlayer - os.time() .. " seconds to try again.") return true end if verificaPlayers() then doPlayerSendCancel(cid, "There are other players inside the room at the moment.") doSendMagicEffect(topos,2) setPlayerStorageValue(cid, stoExhaust, os.time()+5) return true end local config = { [1] = {pos = {x = 33395, y = 32661, z = 6}}, --posições dos pisos [2] = {pos = {x = 33394, y = 32662, z = 6}}, [3] = {pos = {x = 33395, y = 32662, z = 6}}, [4] = {pos = {x = 33396, y = 32662, z = 6}}, [5] = {pos = {x = 33395, y = 32663, z = 6}}, } local storageTime = 424149 -- storage de tempo do boss for i, v in pairs(config) do if isPlayer(getTopCreature(config[i].pos).uid) then player = getTopCreature(config[i].pos).uid if getPlayerStorageValue(player, storageTime) > os.time() then time = (getPlayerStorageValue(player, storageTime)-os.time())/60 str = "minutes" if time > 60 then time = time/60 str = "hours" end if player == cid then name = "You" else name = getCreatureName(player) end doPlayerSendCancel(cid, name .. " need to wait more " .. math.floor(time+0.5) .. " " .. str .. " to do again.") doSendMagicEffect(topos,2) return true end if player == cid then playerChecked = true end end end if playerChecked then for i, v in pairs(config) do if isPlayer(getTopCreature(config[i].pos).uid) then player = getTopCreature(config[i].pos).uid doSendMagicEffect(getCreaturePosition(player), 2) doTeleportThing(player, {x = 33396, y = 32656, z = 6}) -- posiçao que player vai cair setPlayerStorageValue(player, storageTime, os.time()+72000) -- tempo de 20 horas teleportToRoom = true end end if teleportToRoom then stopEvent(ResetArea) verificaBoss() doSendMagicEffect({x = 33396, y = 32642, z = 6}, 10) -- efeito que vai aparece no monstro quando ele nasce, mesma posiçao onde nasce o boss doCreateMonster("Scarlett Etzel", {x = 33396, y = 32642, z = 6}) -- onde o boss nasce e nome do boss ResetArea = addEvent(function() removePlayersTime() end, 10 * 60 * 1000) -- tempo dentro da sala para ser kikado tem tera 10 minutos para matar o boss ou sera teleportado de volta return false end else doPlayerSendCancel(cid, "Wouldn't you like to go too?") doSendMagicEffect(topos,2) end return true end end
Postado Setembro 16, 2021 3 anos Autor 5 horas atrás, Kenshiin disse: -- <action actionid="4627" event="script" value="bosses/scarlet_boss.lua"/> adicionar no actions.xml local posInicio = {x = 33385, y = 32638, z = 6} --pos inicio da sala local posFim = {x = 33406, y = 32660, z = 6}--pos final inicio da sala local posExitTime = {x = 33393, y = 32671, z = 6}-- pos para onde o player vai sair local function verificaPlayers() for x = posInicio.x, posFim.x do for y = posInicio.y, posFim.y do if isPlayer(getThingFromPos({x = x, y = y, z = posInicio.z, stackpos = 253}).uid) then return 1 end end end end local function verificaBoss() for x = posInicio.x, posFim.x do for y = posInicio.y, posFim.y do if isMonster(getThingFromPos({x = x, y = y, z = posInicio.z, stackpos = 253}).uid) then doRemoveCreature(getThingFromPos({x = x, y = y, z = posInicio.z, stackpos = 253}).uid) end end end end local function removePlayersTime() for x = posInicio.x, posFim.x do for y = posInicio.y, posFim.y do local remove, clean = true, true local pos = {x = x, y = y, z = posInicio.z} local m = getTopCreature(pos).uid if m ~= 0 and isPlayer(m) then doTeleportThing(m, posExitTime) end end end doSendMagicEffect(posExitTime, 10) return true end function onUse(cid, item, frompos, item2, topos) -- Lever Boss if item.aid == 4627 then -- action id da alavanca local playerChecked = false local teleportToRoom = false local stoExhaust = 424148 -- staorage de segurança para exhaust local stoExhaustPlayer = getPlayerStorageValue(cid, stoExhaust) if stoExhaustPlayer > os.time() then doPlayerSendCancel(cid, "You have to wait " .. stoExhaustPlayer - os.time() .. " seconds to try again.") return true end if verificaPlayers() then doPlayerSendCancel(cid, "There are other players inside the room at the moment.") doSendMagicEffect(topos,2) setPlayerStorageValue(cid, stoExhaust, os.time()+5) return true end local config = { [1] = {pos = {x = 33395, y = 32661, z = 6}}, --posições dos pisos [2] = {pos = {x = 33394, y = 32662, z = 6}}, [3] = {pos = {x = 33395, y = 32662, z = 6}}, [4] = {pos = {x = 33396, y = 32662, z = 6}}, [5] = {pos = {x = 33395, y = 32663, z = 6}}, } local storageTime = 424149 -- storage de tempo do boss for i, v in pairs(config) do if isPlayer(getTopCreature(config[i].pos).uid) then player = getTopCreature(config[i].pos).uid if getPlayerStorageValue(player, storageTime) > os.time() then time = (getPlayerStorageValue(player, storageTime)-os.time())/60 str = "minutes" if time > 60 then time = time/60 str = "hours" end if player == cid then name = "You" else name = getCreatureName(player) end doPlayerSendCancel(cid, name .. " need to wait more " .. math.floor(time+0.5) .. " " .. str .. " to do again.") doSendMagicEffect(topos,2) return true end if player == cid then playerChecked = true end end end if playerChecked then for i, v in pairs(config) do if isPlayer(getTopCreature(config[i].pos).uid) then player = getTopCreature(config[i].pos).uid doSendMagicEffect(getCreaturePosition(player), 2) doTeleportThing(player, {x = 33396, y = 32656, z = 6}) -- posiçao que player vai cair setPlayerStorageValue(player, storageTime, os.time()+72000) -- tempo de 20 horas teleportToRoom = true end end if teleportToRoom then stopEvent(ResetArea) verificaBoss() doSendMagicEffect({x = 33396, y = 32642, z = 6}, 10) -- efeito que vai aparece no monstro quando ele nasce, mesma posiçao onde nasce o boss doCreateMonster("Scarlett Etzel", {x = 33396, y = 32642, z = 6}) -- onde o boss nasce e nome do boss ResetArea = addEvent(function() removePlayersTime() end, 10 * 60 * 1000) -- tempo dentro da sala para ser kikado tem tera 10 minutos para matar o boss ou sera teleportado de volta return false end else doPlayerSendCancel(cid, "Wouldn't you like to go too?") doSendMagicEffect(topos,2) end return true end end Vlw, vou testar aqui
Postado Setembro 16, 2021 3 anos local config = { cooldown = 60 * 60 * 20, -- in seconds - (Make it 'seconds * minutes * hours' - its will be '60 * 60 * 20' for 20 hours) (player cooldown) cooldown_storage = 808856, duration = 10, -- time till reset, in minutes (lever cooldown) level_req = 8, -- minimum level to do quest min_players = 1, -- minimum players to join quest lever_id = 1945, -- id of lever before pulled pulled_id = 1946 -- id of lever after pulled } local player_positions = { [1] = {fromPos = Position(33395, 32662, 6), toPos = Position(33395, 32658, 6)}, [2] = {fromPos = Position(33395, 32663, 6), toPos = Position(33395, 32658, 6)}, [3] = {fromPos = Position(33395, 32663, 6), toPos = Position(33395, 32658, 6)}, [4] = {fromPos = Position(33395, 32665, 6), toPos = Position(33395, 32658, 6)}, [5] = {fromPos = Position(33394, 32662, 6), toPos = Position(33395, 32658, 6)} } local monsters = { [1] = {pos = Position(33396, 32642, 6), name = "scarlett etzel"} } local quest_range = {fromPos = Position(33386, 32639, 6), toPos = Position(33405, 32659, 6)} -- see image in thread for explanation local exit_position = Position(33395, 32671, 6) -- Position completely outside the quest area function doResetTheBossDukeKrule(position, cid_array) local tile = Tile(position) local item = tile and tile:getItemById(config.pulled_id) if not item then return end local monster_names = {} for key, value in pairs(monsters) do if not isInArray(monster_names, value.name) then monster_names[#monster_names + 1] = value.name end end for i = 1, #monsters do local creatures = Tile(monsters[i].pos):getCreatures() for key, creature in pairs(creatures) do if isInArray(monster_names, creature:getName()) then creature:remove() end end end for i = 1, #player_positions do local creatures = Tile(player_positions[i].toPos):getCreatures() for key, creature in pairs(creatures) do if isInArray(monster_names, creature:getName()) then creature:remove() end end end for key, cid in pairs(cid_array) do local participant = Player(cid) if participant and isInRange(participant:getPosition(), quest_range.fromPos, quest_range.toPos) then participant:teleportTo(exit_position) exit_position:sendMagicEffect(CONST_ME_TELEPORT) end end item:transform(config.lever_id) end local function removeBoss() local specs, spec = Game.getSpectators(Position(33396, 32649, 6), false, false, 10, 10, 10, 10) for j = 1, #specs do spec = specs[j] if spec:getName():lower() == 'scarlett etzel' then spec:remove() end end end function onUse(player, item, fromPosition, target, toPosition, isHotkey) if player:getStorageValue(config.cooldown_storage) >= os.time() then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "try tomorrow") return true end local spectators = Game.getSpectators(Position(33396, 32649, 6), false, false, 10, 10, 10, 10) for _, spectatorCreature in ipairs(spectators) do if spectatorCreature:isPlayer() then return player:sendCancelMessage("ja exitem jogadores dentro do evento.") end end local participants, pull_player = {}, false for i = 1, #player_positions do local fromPos = player_positions[i].fromPos local tile = Tile(fromPos) if not tile then print(">> ERROR: Annihilator tile does not exist for Position(" .. fromPos.x .. ", " .. fromPos.y .. ", " .. fromPos.z .. ").") return player:sendCancelMessage("There is an issue with this quest. Please contact an administrator.") end local creature = tile:getBottomCreature() if creature then local participant = creature:getPlayer() if not participant then return player:sendCancelMessage(participant:getName() .. " is not a valid participant.") end if participant:getLevel() < config.level_req then return player:sendCancelMessage(participant:getName() .. " is not the required level.") end if participant.uid == player.uid then pull_player = true end participants[#participants + 1] = {participant = participant, toPos = player_positions[i].toPos} end end if #participants < config.min_players then return player:sendCancelMessage("You do not have the required amount of participants.") end if not pull_player then return player:sendCancelMessage("You are in the wrong position.") end for i = 1, #monsters do local toPos = monsters[i].pos if not Tile(toPos) then print(">> ERROR: Annihilator tile does not exist for Position(" .. toPos.x .. ", " .. toPos.y .. ", " .. toPos.z .. ").") return player:sendCancelMessage("There is an issue with this quest. Please contact an administrator.") end removeBoss() Game.createMonster(monsters[i].name, monsters[i].pos, false, true) end local cid_array = {} for i = 1, #participants do participants[i].participant:teleportTo(participants[i].toPos) participants[i].toPos:sendMagicEffect(CONST_ME_TELEPORT) cid_array[#cid_array + 1] = participants[i].participant.uid player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have 10 minutes to kill and loot this boss. Otherwise you will lose that chance and will be kicked out.") end item:transform(config.pulled_id) player:setStorageValue(config.cooldown_storage, os.time() + config.cooldown) addEvent(doResetTheBossDukeKrule, config.duration * 60 * 1000, toPosition, cid_array) return true end [*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*] DISCORD: vodkart#6090
Postado Setembro 16, 2021 3 anos Autor 4 horas atrás, Vodkart disse: local config = { cooldown = 60 * 60 * 20, -- in seconds - (Make it 'seconds * minutes * hours' - its will be '60 * 60 * 20' for 20 hours) (player cooldown) cooldown_storage = 808856, duration = 10, -- time till reset, in minutes (lever cooldown) level_req = 8, -- minimum level to do quest min_players = 1, -- minimum players to join quest lever_id = 1945, -- id of lever before pulled pulled_id = 1946 -- id of lever after pulled } local player_positions = { [1] = {fromPos = Position(33395, 32662, 6), toPos = Position(33395, 32658, 6)}, [2] = {fromPos = Position(33395, 32663, 6), toPos = Position(33395, 32658, 6)}, [3] = {fromPos = Position(33395, 32663, 6), toPos = Position(33395, 32658, 6)}, [4] = {fromPos = Position(33395, 32665, 6), toPos = Position(33395, 32658, 6)}, [5] = {fromPos = Position(33394, 32662, 6), toPos = Position(33395, 32658, 6)} } local monsters = { [1] = {pos = Position(33396, 32642, 6), name = "scarlett etzel"} } local quest_range = {fromPos = Position(33386, 32639, 6), toPos = Position(33405, 32659, 6)} -- see image in thread for explanation local exit_position = Position(33395, 32671, 6) -- Position completely outside the quest area function doResetTheBossDukeKrule(position, cid_array) local tile = Tile(position) local item = tile and tile:getItemById(config.pulled_id) if not item then return end local monster_names = {} for key, value in pairs(monsters) do if not isInArray(monster_names, value.name) then monster_names[#monster_names + 1] = value.name end end for i = 1, #monsters do local creatures = Tile(monsters[i].pos):getCreatures() for key, creature in pairs(creatures) do if isInArray(monster_names, creature:getName()) then creature:remove() end end end for i = 1, #player_positions do local creatures = Tile(player_positions[i].toPos):getCreatures() for key, creature in pairs(creatures) do if isInArray(monster_names, creature:getName()) then creature:remove() end end end for key, cid in pairs(cid_array) do local participant = Player(cid) if participant and isInRange(participant:getPosition(), quest_range.fromPos, quest_range.toPos) then participant:teleportTo(exit_position) exit_position:sendMagicEffect(CONST_ME_TELEPORT) end end item:transform(config.lever_id) end local function removeBoss() local specs, spec = Game.getSpectators(Position(33396, 32649, 6), false, false, 10, 10, 10, 10) for j = 1, #specs do spec = specs[j] if spec:getName():lower() == 'scarlett etzel' then spec:remove() end end end function onUse(player, item, fromPosition, target, toPosition, isHotkey) if player:getStorageValue(config.cooldown_storage) >= os.time() then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "try tomorrow") return true end local spectators = Game.getSpectators(Position(33396, 32649, 6), false, false, 10, 10, 10, 10) for _, spectatorCreature in ipairs(spectators) do if spectatorCreature:isPlayer() then return player:sendCancelMessage("ja exitem jogadores dentro do evento.") end end local participants, pull_player = {}, false for i = 1, #player_positions do local fromPos = player_positions[i].fromPos local tile = Tile(fromPos) if not tile then print(">> ERROR: Annihilator tile does not exist for Position(" .. fromPos.x .. ", " .. fromPos.y .. ", " .. fromPos.z .. ").") return player:sendCancelMessage("There is an issue with this quest. Please contact an administrator.") end local creature = tile:getBottomCreature() if creature then local participant = creature:getPlayer() if not participant then return player:sendCancelMessage(participant:getName() .. " is not a valid participant.") end if participant:getLevel() < config.level_req then return player:sendCancelMessage(participant:getName() .. " is not the required level.") end if participant.uid == player.uid then pull_player = true end participants[#participants + 1] = {participant = participant, toPos = player_positions[i].toPos} end end if #participants < config.min_players then return player:sendCancelMessage("You do not have the required amount of participants.") end if not pull_player then return player:sendCancelMessage("You are in the wrong position.") end for i = 1, #monsters do local toPos = monsters[i].pos if not Tile(toPos) then print(">> ERROR: Annihilator tile does not exist for Position(" .. toPos.x .. ", " .. toPos.y .. ", " .. toPos.z .. ").") return player:sendCancelMessage("There is an issue with this quest. Please contact an administrator.") end removeBoss() Game.createMonster(monsters[i].name, monsters[i].pos, false, true) end local cid_array = {} for i = 1, #participants do participants[i].participant:teleportTo(participants[i].toPos) participants[i].toPos:sendMagicEffect(CONST_ME_TELEPORT) cid_array[#cid_array + 1] = participants[i].participant.uid player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have 10 minutes to kill and loot this boss. Otherwise you will lose that chance and will be kicked out.") end item:transform(config.pulled_id) player:setStorageValue(config.cooldown_storage, os.time() + config.cooldown) addEvent(doResetTheBossDukeKrule, config.duration * 60 * 1000, toPosition, cid_array) return true end vodka, testei esse seu aqui e funcionou o player nao consegui entrar quando tem alguem na sala..mais tbm n esta sendo chutado para fora depois dos 10 minutos
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.