Ir para conteúdo
  • 0

[DUVIDA] Anihi bloqueada


GuuhMaster

Pergunta

Esse script funciona desta maneira, é uma anihi que precisam de 5 jogadores, ao entrar na quest, os jogadores tem 120 segundos para matarem os bixos, caso nao consigam serão levados ao templo, e ao puxar a alavanca fica uma contagem de 120 ao 0... porem ao terminar a contagem ninguem consegue mais entrar, fica bloqueada.

 

Citar

function isOnSameFloor(fromPos, toPos)
    return fromPos.z == toPos.z and true or false
end

function isEven(arg)
    return arg % 2 == 0 and true or false
end

function getMiddlePos(fromPos, toPos)
    if not isOnSameFloor(fromPos, toPos) then
        return false
    end
    
    local middle = {x = 0, y = 0, z = 0}    
        middle.x = isEven(fromPos.x + toPos.x) and (fromPos.x + toPos.x)/2 or math.floor((fromPos.x + toPos.x)/2) + 1
        middle.y = isEven(fromPos.y + toPos.y) and (fromPos.y + toPos.y)/2 or math.floor((fromPos.y + toPos.y)/2) + 1
        middle.z = fromPos.z or toPos.z
    return middle
end

function getDistanceRadius(fromPos, toPos)
    if not isOnSameFloor(fromPos, toPos) then
        return false
    end
    
    local distance = getDistanceBetween(fromPos, toPos)
    return isEven(distance) and (distance/2) or math.floor(distance/2) + 1
end

function clearArea(middlePos, rangex, rangey)
    local final = {x=1095, y=1062, z=7} -- Posição onde será teleportado quando acabar o tempo
    
    for i = -rangex, rangex do
        for j = -rangey, rangey do
            pos = {x = middlePos.x + i, y = middlePos.y + j, z = middlePos.z}
            creature = getTopCreature(pos).uid
            
            if isMonster(creature) then
                doSendMagicEffect(getThingPos(creature), 14)
                doRemoveCreature(creature)
            elseif isPlayer(creature) then
                doSendMagicEffect(getThingPos(creature), 10)
                doTeleportThing(creature, final)
            end
        end
    end
    
    setGlobalStorageValue(sto, -1)
    return true
end
    
local t = {
    lvl = 100,
    entrada = {
        {x = 1125, y = 1152, z = 7}, -- pos players
        {x = 1124, y = 1152, z = 7}, -- pos players
        {x = 1123, y = 1152, z = 7}, -- pos players
        {x = 1122, y = 1152, z = 7}, -- pos players
        {x = 1121, y = 1152, z = 7}, -- pos players
    },
    saida = {
        {x = 1127, y = 1153, z = 8}, -- pos para onde eles irão
        {x = 1126, y = 1153, z = 8}, -- pos para onde eles irão
        {x = 1125, y = 1153, z = 8}, -- pos para onde eles irão
        {x = 1124, y = 1153, z = 8}, -- pos para onde eles irão
        {x = 1123, y = 1153, z = 8}, -- pos para onde eles irão
    },
    monstros = {
        {{x = 1121, y = 1152, z = 8}, "Demon"}, -- defina pos dos montros e nomes
        {{x = 1121, y = 1153, z = 8}, "Demon"}, -- defina pos dos montros e nomes
        {{x = 1121, y = 1154, z = 8}, "Demon"}, -- defina pos dos montros e nomes
        {{x = 1129, y = 1152, z = 8}, "Demon"}, -- defina pos dos montros e nomes
        {{x = 1129, y = 1153, z = 8}, "Demon"}, -- defina pos dos montros e nomes
        {{x = 1129, y = 1154, z = 8}, "Demon"}, -- defina pos dos montros e nomes
    }
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
    local configure = {
        fromPos = {x=1121, y=1150, z=8}, -- posição superior esquerda do mapa, da area em que esta mapeado a area.
        toPos = {x=1129, y=1156, z=8}, -- posição inferior direita do mapa, da area em que esta mapeado a area.
        boss = "Demon" -- Aqui você bota o nome do monstro que você quer remover
    }
    
    local config = {
        position = {x=1126, y=1152, z=7}, -- Contagem
        position1 = {x=1121, y=1150, z=8}, -- Contagem
        position2 = {x=1121, y=1156, z=8}, -- Contagem
        position3 = {x=1129, y=1150, z=8}, -- Contagem
        position4 = {x=1129, y=1156, z=8}, -- Contagem
        fromPosition = {x=1121, y=1150, z=8},
        toPosition = {x=1129, y=1156, z=8},
        id = 1498,
        time = 1 -- tempo que o teleport ira sumir em minutos
    }

    local time = 60
    local sto = 5973
    local check = {}
    
    for _, k in ipairs(t.entrada) do
        local x = getTopCreature(k).uid
        if(x == 0 or not isPlayer(x) or getPlayerLevel(x) < t.lvl) then
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você precisa de 5 jogadores para entrar na quest.")
            return true
        end
        
            if getGlobalStorageValue(sto) == 1 then
                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Aguarde até que seja liberada.")
                return true
            end
            
        table.insert(check, X):
    end
    
                for _, summon in pairs(t.monstros) do
                    local creature = getTopCreature(summon[1]).uid
                    doCreateMonster(summon[2], summon[1])
                end
                
                    for i, tid in ipairs(check) do
                        doTeleportThing(tid, t.saida, false)
                        doSendMagicEffect(t.saida, 10)
                        doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)
                    end
                    
            for i = 1,time do
                formula = time - 1*i
                addEvent(doSendAnimatedText, i*1000, config.position, formula, TEXTCOLOR_RED)
                addEvent(doSendAnimatedText, i*1000, config.position1, formula, TEXTCOLOR_RED)
                addEvent(doSendAnimatedText, i*1000, config.position2, formula, TEXTCOLOR_RED)
                addEvent(doSendAnimatedText, i*1000, config.position3, formula, TEXTCOLOR_RED)
                addEvent(doSendAnimatedText, i*1000, config.position4, formula, TEXTCOLOR_RED)
            end
    
    setGlobalStorageValue(sto, 1)
    local rx = getDistanceRadius(configure.fromPos, configure.toPos)
    addEvent(clearArea, config.time * 60 * 1000, getMiddlePos(configure.fromPos, configure.toPos), rx, rx)
    return true
end

 

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

×
×
  • Criar Novo...