Ir para conteúdo

Featured Replies

Postado

Version: Otx 2 - v8.60 (0.3.7)

 

Olá! Gostaria de adicionar tempo para o jogador permanecer na sala do chefe. O script funciona, mas se o jogador permanecer na sala, outros não podem entrar. Seria bom depois de 5 minutos que o jogador estiver na sala, será expulso.

 

local teleports = {
    -- Tile UID = {storage of task, amount of monsters, monsters to spawn}
    [14001] = {monsters = {"Leviathan"}, telePos = {x = 31914, y = 31071, z = 10}, spawnPos = {x = 31905, y = 31071, z = 10}, from = {x = 31900, y = 31064, z = 10}, to = {x = 31918, y = 31081, z = 10}},
    [14002] = {monsters = {"The Noxious Spawn"}, telePos = {x = 32842, y = 32668, z = 11}, spawnPos = {x = 32842, y = 32673, z = 11}, from = {x = 32836, y = 32665, z = 11}, to = {x = 32849, y = 32677, z = 11}},
    [14003] = {monsters = {"Necropharus"}, telePos = {x = 33028, y = 32427, z = 12}, spawnPos = {x = 33028, y = 32421, z = 12}, from = {x = 33020, y = 32415, z = 12}, to = {x = 33035, y = 32430, z = 12}},
    [14004] = {monsters = {"The Horned Fox"}, telePos = {x = 32458, y = 31993, z = 9}, spawnPos = {x = 32458, y = 32004, z = 9}, from = {x = 32453, y = 31992, z = 9}, to = {x = 32464, y = 32008, z = 9}},
    [14005] = {monsters = {"Lethal Lissy", "Ron The Ripper", "Deadeye Devious", "Brutus Bloodbeard"}, telePos = {x = 31975, y = 32896, z = 0}, spawnPos = {x = 31982, y = 32896, z = 0}, from = {x = 31972, y = 32890, z = 0}, to = {x = 31988, y = 32904, z = 0}},
    [14007] = {monsters = {"The Snapper"}, telePos = {x = 244, y = 647, z = 8}, spawnPos = {x = 236, y = 643, z = 8}, from = {x = 232, y = 640, z = 8}, to = {x = 245, y = 651, z = 8}},
    [14008] = {monsters = {"Hide"}, telePos = {x = 32815, y = 32704, z = 8}, spawnPos = {x = 32816, y = 32708, z = 8}, from = {x = 32810, y = 32701, z = 8}, to = {x = 32824, y = 32713, z = 8}},
    [14012] = {monsters = {"Shardhead"}, telePos = {x = 32102, y = 31125, z = 2}, spawnPos = {x = 32101, y = 31130, z = 2}, from = {x = 32095, y = 31122, z = 2}, to = {x = 32108, y = 31136, z = 2}},
    [14019] = {monsters = {"Esmeralda"}, telePos = {x = 32759, y = 31253, z = 9}, spawnPos = {x = 32759, y = 31256, z = 9}, from = {x = 32755, y = 31250, z = 9}, to = {x = 32764, y = 31259, z = 9}},
    [14020] = {monsters = {"The Old Widow"}, telePos = {x = 32804, y = 32280, z = 8}, spawnPos = {x = 32800, y = 32280, z = 8}, from = {x = 32794, y = 32273, z = 8}, to = {x = 32807, y = 32288, z = 8}},
    [14021] = {monsters = {"The Many"}, telePos = {x = 32921, y = 32894, z = 8}, spawnPos = {x = 32921, y = 32899, z = 8}, from = {x = 32915, y = 32891, z = 8}, to = {x = 32927, y = 32904, z = 8}},
    [14506] = {monsters = {"Demodras"}, telePos = {x = 32748, y = 32287, z = 10}, spawnPos = {x = 32745, y = 32292, z = 10}, from = {x = 32738, y = 32283, z = 10}, to = {x = 32757, y = 32300, z = 10}},
    [14505] = {monsters = {"Tiquandas Revenge"}, telePos = {x = 32888, y = 32580, z = 4}, spawnPos = {x = 32883, y = 32580, z = 4}, from = {x = 32881, y = 32578, z = 4}, to = {x = 32892, y = 32588, z = 4}},
    [14022] = {monsters = {"Stonecracker"}, telePos = {x = 33259, y = 31695, z = 15}, spawnPos = {x = 33257, y = 31702, z = 15}, from = {x = 33252, y = 31691, z = 15}, to = {x = 33266, y = 31708, z = 15}},
}
 
local function getCreaturesInArea(fromPos, toPos, creatureType)
    local creatures = {}
    for x = fromPos.x, toPos.x do
        for y = fromPos.y, toPos.y do
            for z = fromPos.z, toPos.z do
                local creature = getTopCreature({x = x, y = y, z = z}).uid
                local cType  creatureType:lower()
                if (cType == "players" and isPlayer(creature)) then
                    table.insert(creatures, creature)
                elseif (cType == "monsters" and isMonster(creature)) then
                    table.insert(creatures, creature)
                elseif (cType == "npcs" and isNpc(creature)) then
                    table.insert(creatures, creature)
                elseif (cType == "all") then
                    table.insert(creatures, creature)
                end
            end
        end
    end
    return creatures
end
 
function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
local now = teleports[item.uid]
    if (#getCreaturesInArea(now.from, now.to, "players") > 0) then
        doTeleportThing(cid, fromPosition, true)
        doPlayerSendCancel(cid, "Someone else is in the room.")
    end
 
    if getPlayerStorageValue(cid, item.uid + (item.uid < 14500 and 100 or 0)) == 1 then
        for _, monster in ipairs(getCreaturesInArea(now.from, now.to, "monsters")) do
            doRemoveCreature(monster)
        end
 
        setPlayerStorageValue(cid, item.uid + (item.uid < 14500 and 100 or 0), 2)
        doTeleportThing(cid, now.telePos)
        doSendMagicEffect(now.telePos, CONST_ME_TELEPORT)
        doSummonCreature(now.monsters[math.random(#now.monsters)], now.spawnPos)
        doSendMagicEffect(now.spawnPos, CONST_ME_TELEPORT)
        return true
    end
 
    doTeleportThing(cid, fromPosition, true)
    return true
end
	 

 

Editado por iLLarious (veja o histórico de edições)

Resolvido por Dwarfer

Ir para solução
  • Respostas 12
  • Visualizações 838
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Adicione novas kickpos (posição para qual o player será teleportado) para os outros bosses, só fiz a primeira como exemplo e comentei o restante.    

  • Você deve ter testado em um uniqueid que não existe na tabela. O seu script inicial apresentava esse problema. Acho que agora não aparecerá mais o erro:    

  • @iLLarious   Sim, todo bugado, sei lá onde você achou isso rsrsrsr    

Postado

Você precisa desenvolver uma função que cheque a área de from e to da sua tabela, e juntamente com o playerId e monsterId e passar para essa função depois de um X tempo utilizando addEvent.

discord.pngDiscord: vankk #7765

Precisando de ajuda? Entre em contato comigo via Discord.

 

Muitos vêm seus muitos dias de glória, mas poucos vêm seus muitos dias de luta.

Postado

Adicione novas kickpos (posição para qual o player será teleportado) para os outros bosses, só fiz a primeira como exemplo e comentei o restante.

 

Spoiler

local timetokick = {5, "min"} -- tempo para ser kikado da sala do boss

local teleports = {
    -- Tile UID = {storage of task, amount of monsters, monsters to spawn}
    [14001] = {monsters = {"Leviathan"}, telePos = {x = 31914, y = 31071, z = 10}, spawnPos = {x = 31905, y = 31071, z = 10}, from = {x = 31900, y = 31064, z = 10}, to = {x = 31918, y = 31081, z = 10}, kickpos = {x = 1, y = 1, z = 1}},
    --[[
    [14002] = {monsters = {"The Noxious Spawn"}, telePos = {x = 32842, y = 32668, z = 11}, spawnPos = {x = 32842, y = 32673, z = 11}, from = {x = 32836, y = 32665, z = 11}, to = {x = 32849, y = 32677, z = 11}},
    [14003] = {monsters = {"Necropharus"}, telePos = {x = 33028, y = 32427, z = 12}, spawnPos = {x = 33028, y = 32421, z = 12}, from = {x = 33020, y = 32415, z = 12}, to = {x = 33035, y = 32430, z = 12}},
    [14004] = {monsters = {"The Horned Fox"}, telePos = {x = 32458, y = 31993, z = 9}, spawnPos = {x = 32458, y = 32004, z = 9}, from = {x = 32453, y = 31992, z = 9}, to = {x = 32464, y = 32008, z = 9}},
    [14005] = {monsters = {"Lethal Lissy", "Ron The Ripper", "Deadeye Devious", "Brutus Bloodbeard"}, telePos = {x = 31975, y = 32896, z = 0}, spawnPos = {x = 31982, y = 32896, z = 0}, from = {x = 31972, y = 32890, z = 0}, to = {x = 31988, y = 32904, z = 0}},
    [14007] = {monsters = {"The Snapper"}, telePos = {x = 244, y = 647, z = 8}, spawnPos = {x = 236, y = 643, z = 8}, from = {x = 232, y = 640, z = 8}, to = {x = 245, y = 651, z = 8}},
    [14008] = {monsters = {"Hide"}, telePos = {x = 32815, y = 32704, z = 8}, spawnPos = {x = 32816, y = 32708, z = 8}, from = {x = 32810, y = 32701, z = 8}, to = {x = 32824, y = 32713, z = 8}},
    [14012] = {monsters = {"Shardhead"}, telePos = {x = 32102, y = 31125, z = 2}, spawnPos = {x = 32101, y = 31130, z = 2}, from = {x = 32095, y = 31122, z = 2}, to = {x = 32108, y = 31136, z = 2}},
    [14019] = {monsters = {"Esmeralda"}, telePos = {x = 32759, y = 31253, z = 9}, spawnPos = {x = 32759, y = 31256, z = 9}, from = {x = 32755, y = 31250, z = 9}, to = {x = 32764, y = 31259, z = 9}},
    [14020] = {monsters = {"The Old Widow"}, telePos = {x = 32804, y = 32280, z = 8}, spawnPos = {x = 32800, y = 32280, z = 8}, from = {x = 32794, y = 32273, z = 8}, to = {x = 32807, y = 32288, z = 8}},
    [14021] = {monsters = {"The Many"}, telePos = {x = 32921, y = 32894, z = 8}, spawnPos = {x = 32921, y = 32899, z = 8}, from = {x = 32915, y = 32891, z = 8}, to = {x = 32927, y = 32904, z = 8}},
    [14506] = {monsters = {"Demodras"}, telePos = {x = 32748, y = 32287, z = 10}, spawnPos = {x = 32745, y = 32292, z = 10}, from = {x = 32738, y = 32283, z = 10}, to = {x = 32757, y = 32300, z = 10}},
    [14505] = {monsters = {"Tiquandas Revenge"}, telePos = {x = 32888, y = 32580, z = 4}, spawnPos = {x = 32883, y = 32580, z = 4}, from = {x = 32881, y = 32578, z = 4}, to = {x = 32892, y = 32588, z = 4}},
    [14022] = {monsters = {"Stonecracker"}, telePos = {x = 33259, y = 31695, z = 15}, spawnPos = {x = 33257, y = 31702, z = 15}, from = {x = 33252, y = 31691, z = 15}, to = {x = 33266, y = 31708, z = 15}},
]]--
    }
 
local function getCreaturesInArea(fromPos, toPos, creatureType)
    local creatures = {}
    for x = fromPos.x, toPos.x do
        for y = fromPos.y, toPos.y do
            for z = fromPos.z, toPos.z do
                local creature = getTopCreature({x = x, y = y, z = z}).uid
                local cType  creatureType:lower()
                if (cType == "players" and isPlayer(creature)) then
                    table.insert(creatures, creature)
                elseif (cType == "monsters" and isMonster(creature)) then
                    table.insert(creatures, creature)
                elseif (cType == "npcs" and isNpc(creature)) then
                    table.insert(creatures, creature)
                elseif (cType == "all") then
                    table.insert(creatures, creature)
                end
            end
        end
    end
    return creatures
end
 
function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
local now = teleports[item.uid]
    if (#getCreaturesInArea(now.from, now.to, "players") > 0) then
        doTeleportThing(cid, fromPosition, true)
        doPlayerSendCancel(cid, "Someone else is in the room.")
    end
 
    if getPlayerStorageValue(cid, item.uid + (item.uid < 14500 and 100 or 0)) == 1 then
        for _, monster in ipairs(getCreaturesInArea(now.from, now.to, "monsters")) do
            doRemoveCreature(monster)
        end
 
        setPlayerStorageValue(cid, item.uid + (item.uid < 14500 and 100 or 0), 2)
        doTeleportThing(cid, now.telePos)
        doSendMagicEffect(now.telePos, CONST_ME_TELEPORT)
        doSummonCreature(now.monsters[math.random(#now.monsters)], now.spawnPos)
        doSendMagicEffect(now.spawnPos, CONST_ME_TELEPORT)
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You will be kicked from boss room in " .. timetokick[1] .. " "..timetokick[2]..".")
        addEvent(kickPlayerFromArea, mathtime(timetokick) * 1000, cid, {now.from, now.to, now.kickpos})
        return true
    end
 
    doTeleportThing(cid, fromPosition, true)
    return true
end

function kickPlayerFromArea(cid, p)
if isPlayer(cid) and isInRange(getPlayerPosition(cid), p[1], p[2]) then
    doTeleportThing(cid, p[3])
    doSendMagicEffect(p[3], CONST_ME_TELEPORT)
end
end

function mathtime(table) -- by dwarfer
local unit = {"sec", "min", "hour", "day"}
for i, v in pairs(unit) do
if v == table[2] then
return table[1]*(60^(v == unit[4] and 2 or i-1))*(v == unit[4] and 24 or 1)
end
end
return error("Bad declaration in mathtime function.")
end

 

 

Contato:

 

Postado
  • Autor
Em 26/09/2017 em 15:37, Dwarfer disse:

Adicione novas kickpos (posição para qual o player será teleportado) para os outros bosses, só fiz a primeira como exemplo e comentei o restante.

 

  Mostrar conteúdo oculto


local timetokick = {5, "min"} -- tempo para ser kikado da sala do boss

local teleports = {
    -- Tile UID = {storage of task, amount of monsters, monsters to spawn}
    [14001] = {monsters = {"Leviathan"}, telePos = {x = 31914, y = 31071, z = 10}, spawnPos = {x = 31905, y = 31071, z = 10}, from = {x = 31900, y = 31064, z = 10}, to = {x = 31918, y = 31081, z = 10}, kickpos = {x = 1, y = 1, z = 1}},
    --[[
    [14002] = {monsters = {"The Noxious Spawn"}, telePos = {x = 32842, y = 32668, z = 11}, spawnPos = {x = 32842, y = 32673, z = 11}, from = {x = 32836, y = 32665, z = 11}, to = {x = 32849, y = 32677, z = 11}},
    [14003] = {monsters = {"Necropharus"}, telePos = {x = 33028, y = 32427, z = 12}, spawnPos = {x = 33028, y = 32421, z = 12}, from = {x = 33020, y = 32415, z = 12}, to = {x = 33035, y = 32430, z = 12}},
    [14004] = {monsters = {"The Horned Fox"}, telePos = {x = 32458, y = 31993, z = 9}, spawnPos = {x = 32458, y = 32004, z = 9}, from = {x = 32453, y = 31992, z = 9}, to = {x = 32464, y = 32008, z = 9}},
    [14005] = {monsters = {"Lethal Lissy", "Ron The Ripper", "Deadeye Devious", "Brutus Bloodbeard"}, telePos = {x = 31975, y = 32896, z = 0}, spawnPos = {x = 31982, y = 32896, z = 0}, from = {x = 31972, y = 32890, z = 0}, to = {x = 31988, y = 32904, z = 0}},
    [14007] = {monsters = {"The Snapper"}, telePos = {x = 244, y = 647, z = 8}, spawnPos = {x = 236, y = 643, z = 8}, from = {x = 232, y = 640, z = 8}, to = {x = 245, y = 651, z = 8}},
    [14008] = {monsters = {"Hide"}, telePos = {x = 32815, y = 32704, z = 8}, spawnPos = {x = 32816, y = 32708, z = 8}, from = {x = 32810, y = 32701, z = 8}, to = {x = 32824, y = 32713, z = 8}},
    [14012] = {monsters = {"Shardhead"}, telePos = {x = 32102, y = 31125, z = 2}, spawnPos = {x = 32101, y = 31130, z = 2}, from = {x = 32095, y = 31122, z = 2}, to = {x = 32108, y = 31136, z = 2}},
    [14019] = {monsters = {"Esmeralda"}, telePos = {x = 32759, y = 31253, z = 9}, spawnPos = {x = 32759, y = 31256, z = 9}, from = {x = 32755, y = 31250, z = 9}, to = {x = 32764, y = 31259, z = 9}},
    [14020] = {monsters = {"The Old Widow"}, telePos = {x = 32804, y = 32280, z = 8}, spawnPos = {x = 32800, y = 32280, z = 8}, from = {x = 32794, y = 32273, z = 8}, to = {x = 32807, y = 32288, z = 8}},
    [14021] = {monsters = {"The Many"}, telePos = {x = 32921, y = 32894, z = 8}, spawnPos = {x = 32921, y = 32899, z = 8}, from = {x = 32915, y = 32891, z = 8}, to = {x = 32927, y = 32904, z = 8}},
    [14506] = {monsters = {"Demodras"}, telePos = {x = 32748, y = 32287, z = 10}, spawnPos = {x = 32745, y = 32292, z = 10}, from = {x = 32738, y = 32283, z = 10}, to = {x = 32757, y = 32300, z = 10}},
    [14505] = {monsters = {"Tiquandas Revenge"}, telePos = {x = 32888, y = 32580, z = 4}, spawnPos = {x = 32883, y = 32580, z = 4}, from = {x = 32881, y = 32578, z = 4}, to = {x = 32892, y = 32588, z = 4}},
    [14022] = {monsters = {"Stonecracker"}, telePos = {x = 33259, y = 31695, z = 15}, spawnPos = {x = 33257, y = 31702, z = 15}, from = {x = 33252, y = 31691, z = 15}, to = {x = 33266, y = 31708, z = 15}},
]]--
    }
 
local function getCreaturesInArea(fromPos, toPos, creatureType)
    local creatures = {}
    for x = fromPos.x, toPos.x do
        for y = fromPos.y, toPos.y do
            for z = fromPos.z, toPos.z do
                local creature = getTopCreature({x = x, y = y, z = z}).uid
                local cType  creatureType:lower()
                if (cType == "players" and isPlayer(creature)) then
                    table.insert(creatures, creature)
                elseif (cType == "monsters" and isMonster(creature)) then
                    table.insert(creatures, creature)
                elseif (cType == "npcs" and isNpc(creature)) then
                    table.insert(creatures, creature)
                elseif (cType == "all") then
                    table.insert(creatures, creature)
                end
            end
        end
    end
    return creatures
end
 
function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
local now = teleports[item.uid]
    if (#getCreaturesInArea(now.from, now.to, "players") > 0) then
        doTeleportThing(cid, fromPosition, true)
        doPlayerSendCancel(cid, "Someone else is in the room.")
    end
 
    if getPlayerStorageValue(cid, item.uid + (item.uid < 14500 and 100 or 0)) == 1 then
        for _, monster in ipairs(getCreaturesInArea(now.from, now.to, "monsters")) do
            doRemoveCreature(monster)
        end
 
        setPlayerStorageValue(cid, item.uid + (item.uid < 14500 and 100 or 0), 2)
        doTeleportThing(cid, now.telePos)
        doSendMagicEffect(now.telePos, CONST_ME_TELEPORT)
        doSummonCreature(now.monsters[math.random(#now.monsters)], now.spawnPos)
        doSendMagicEffect(now.spawnPos, CONST_ME_TELEPORT)
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You will be kicked from boss room in " .. timetokick[1] .. " "..timetokick[2]..".")
        addEvent(kickPlayerFromArea, mathtime(timetokick) * 1000, cid, {now.from, now.to, now.kickpos})
        return true
    end
 
    doTeleportThing(cid, fromPosition, true)
    return true
end

function kickPlayerFromArea(cid, p)
if isPlayer(cid) and isInRange(getPlayerPosition(cid), p[1], p[2]) then
    doTeleportThing(cid, p[3])
    doSendMagicEffect(p[3], CONST_ME_TELEPORT)
end
end

function mathtime(table) -- by dwarfer
local unit = {"sec", "min", "hour", "day"}
for i, v in pairs(unit) do
if v == table[2] then
return table[1]*(60^(v == unit[4] and 2 or i-1))*(v == unit[4] and 24 or 1)
end
end
return error("Bad declaration in mathtime function.")
end

 

 

 

Desculpa a demora amigo.

Eu testei aqui e apareceu o seguinte erro:

 

[27/9/2017 16:55:26] [Error - MoveEvents Interface] 
[27/9/2017 16:55:26] data/movements/scripts/others/task_boss.lua:onStepIn
[27/9/2017 16:55:26] Description: 
[27/9/2017 16:55:26] data/movements/scripts/others/task_boss.lua:43: attempt to index local 'now' (a nil value)
[27/9/2017 16:55:26] stack traceback:
[27/9/2017 16:55:26] 	data/movements/scripts/others/task_boss.lua:43: in function <data/movements/scripts/others/task_boss.lua:41>

 

Postado

Você deve ter testado em um uniqueid que não existe na tabela. O seu script inicial apresentava esse problema. Acho que agora não aparecerá mais o erro:

 

Spoiler

local timetokick = {5, "min"} -- tempo para ser kikado da sala do boss

local teleports = {
    -- Tile UID = {storage of task, amount of monsters, monsters to spawn}
    [14001] = {monsters = {"Leviathan"}, telePos = {x = 31914, y = 31071, z = 10}, spawnPos = {x = 31905, y = 31071, z = 10}, from = {x = 31900, y = 31064, z = 10}, to = {x = 31918, y = 31081, z = 10}, kickpos = {x = 1, y = 1, z = 1}},
    --[[
    [14002] = {monsters = {"The Noxious Spawn"}, telePos = {x = 32842, y = 32668, z = 11}, spawnPos = {x = 32842, y = 32673, z = 11}, from = {x = 32836, y = 32665, z = 11}, to = {x = 32849, y = 32677, z = 11}},
    [14003] = {monsters = {"Necropharus"}, telePos = {x = 33028, y = 32427, z = 12}, spawnPos = {x = 33028, y = 32421, z = 12}, from = {x = 33020, y = 32415, z = 12}, to = {x = 33035, y = 32430, z = 12}},
    [14004] = {monsters = {"The Horned Fox"}, telePos = {x = 32458, y = 31993, z = 9}, spawnPos = {x = 32458, y = 32004, z = 9}, from = {x = 32453, y = 31992, z = 9}, to = {x = 32464, y = 32008, z = 9}},
    [14005] = {monsters = {"Lethal Lissy", "Ron The Ripper", "Deadeye Devious", "Brutus Bloodbeard"}, telePos = {x = 31975, y = 32896, z = 0}, spawnPos = {x = 31982, y = 32896, z = 0}, from = {x = 31972, y = 32890, z = 0}, to = {x = 31988, y = 32904, z = 0}},
    [14007] = {monsters = {"The Snapper"}, telePos = {x = 244, y = 647, z = 8}, spawnPos = {x = 236, y = 643, z = 8}, from = {x = 232, y = 640, z = 8}, to = {x = 245, y = 651, z = 8}},
    [14008] = {monsters = {"Hide"}, telePos = {x = 32815, y = 32704, z = 8}, spawnPos = {x = 32816, y = 32708, z = 8}, from = {x = 32810, y = 32701, z = 8}, to = {x = 32824, y = 32713, z = 8}},
    [14012] = {monsters = {"Shardhead"}, telePos = {x = 32102, y = 31125, z = 2}, spawnPos = {x = 32101, y = 31130, z = 2}, from = {x = 32095, y = 31122, z = 2}, to = {x = 32108, y = 31136, z = 2}},
    [14019] = {monsters = {"Esmeralda"}, telePos = {x = 32759, y = 31253, z = 9}, spawnPos = {x = 32759, y = 31256, z = 9}, from = {x = 32755, y = 31250, z = 9}, to = {x = 32764, y = 31259, z = 9}},
    [14020] = {monsters = {"The Old Widow"}, telePos = {x = 32804, y = 32280, z = 8}, spawnPos = {x = 32800, y = 32280, z = 8}, from = {x = 32794, y = 32273, z = 8}, to = {x = 32807, y = 32288, z = 8}},
    [14021] = {monsters = {"The Many"}, telePos = {x = 32921, y = 32894, z = 8}, spawnPos = {x = 32921, y = 32899, z = 8}, from = {x = 32915, y = 32891, z = 8}, to = {x = 32927, y = 32904, z = 8}},
    [14506] = {monsters = {"Demodras"}, telePos = {x = 32748, y = 32287, z = 10}, spawnPos = {x = 32745, y = 32292, z = 10}, from = {x = 32738, y = 32283, z = 10}, to = {x = 32757, y = 32300, z = 10}},
    [14505] = {monsters = {"Tiquandas Revenge"}, telePos = {x = 32888, y = 32580, z = 4}, spawnPos = {x = 32883, y = 32580, z = 4}, from = {x = 32881, y = 32578, z = 4}, to = {x = 32892, y = 32588, z = 4}},
    [14022] = {monsters = {"Stonecracker"}, telePos = {x = 33259, y = 31695, z = 15}, spawnPos = {x = 33257, y = 31702, z = 15}, from = {x = 33252, y = 31691, z = 15}, to = {x = 33266, y = 31708, z = 15}},
]]--
    }
 
local function getCreaturesInArea(fromPos, toPos, creatureType)
    local creatures = {}
    for x = fromPos.x, toPos.x do
        for y = fromPos.y, toPos.y do
            for z = fromPos.z, toPos.z do
                local creature = getTopCreature({x = x, y = y, z = z}).uid
                local cType  creatureType:lower()
                if (cType == "players" and isPlayer(creature)) then
                    table.insert(creatures, creature)
                elseif (cType == "monsters" and isMonster(creature)) then
                    table.insert(creatures, creature)
                elseif (cType == "npcs" and isNpc(creature)) then
                    table.insert(creatures, creature)
                elseif (cType == "all") then
                    table.insert(creatures, creature)
                end
            end
        end
    end
    return creatures
end
 
function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
    local now = teleports[item.uid]
    if now then
        if (#getCreaturesInArea(now.from, now.to, "players") > 0) then
            doTeleportThing(cid, fromPosition, true)
            doPlayerSendCancel(cid, "Someone else is in the room.")
        end
     
        if getPlayerStorageValue(cid, item.uid + (item.uid < 14500 and 100 or 0)) == 1 then
            for _, monster in ipairs(getCreaturesInArea(now.from, now.to, "monsters")) do
                doRemoveCreature(monster)
            end
     
            setPlayerStorageValue(cid, item.uid + (item.uid < 14500 and 100 or 0), 2)
            doTeleportThing(cid, now.telePos)
            doSendMagicEffect(now.telePos, CONST_ME_TELEPORT)
            doSummonCreature(now.monsters[math.random(#now.monsters)], now.spawnPos)
            doSendMagicEffect(now.spawnPos, CONST_ME_TELEPORT)
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You will be kicked from boss room in " .. timetokick[1] .. " "..timetokick[2]..".")
            addEvent(kickPlayerFromArea, mathtime(timetokick) * 1000, cid, {now.from, now.to, now.kickpos})
            return true
        end
     
        doTeleportThing(cid, fromPosition, true)
    end
    return true
end

function kickPlayerFromArea(cid, p)
if isPlayer(cid) and isInRange(getPlayerPosition(cid), p[1], p[2]) then
    doTeleportThing(cid, p[3])
    doSendMagicEffect(p[3], CONST_ME_TELEPORT)
end
end

function mathtime(table) -- by dwarfer
local unit = {"sec", "min", "hour", "day"}
for i, v in pairs(unit) do
if v == table[2] then
return table[1]*(60^(v == unit[4] and 2 or i-1))*(v == unit[4] and 24 or 1)
end
end
return error("Bad declaration in mathtime function.")
end

 

 

Contato:

 

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.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo