Ir para conteúdo

Featured Replies

Postado

Bom pessoal estou precisando de uma script no qual 3 jogadores ficam em determinados Sqms e um puxa a alavanca e eles vão para um lugar

 também se for possível nesse mesmo script queria cooldown para poder outros jogadores esperarem um tempo pra puxar a alavanca novamente !! 

Deste já Obrigado . + REP

  • Respostas 7
  • Visualizações 2k
  • Created
  • Última resposta

Top Posters In This Topic

Postado

procura script de anihilator, que é bem o que você pede (pelo menos a parte do teleport) existem vários no forum

Scriptszinhos:

 

Não abandone seu tópico, quando você tiver a dúvida resolvida sozinho tente ensinar aos outros como resolve-la (você pode não ser o único com o problema) e quando ela for resolvida por outra pessoa não se esqueça de marcar como melhor resposta e deixar o gostei.

Postado

@leozincorsair

Tenta esse...

Spoiler

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=1072, y=1164, z=6} -- 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 = 0, 
    entrada = {
        {x = 0000, y = 0000, z = 0}, -- pos players
        {x = 0000, y = 0000, z = 0}, -- pos players
        {x = 0000, y = 0000, z = 0}, -- pos players
    },
    saida = {
        {x = 0000, y = 0000, z = 0}, -- pos para onde eles irão
        {x = 0000, y = 0000, z = 0}, -- pos para onde eles irão
        {x = 0000, y = 0000, z = 0}, -- pos para onde eles irão
    },
    monstros = {
        {{x = 1122, y = 1153, z = 8}, "Annihilion"}, -- defina pos dos montros e nomes
        {{x = 1121, y = 1151, z = 8}, "Annihilion"}, -- defina pos dos montros e nomes
        {{x = 1121, y = 1155, z = 8}, "Annihilion"}, -- defina pos dos montros e nomes
        {{x = 1128, y = 1153, z = 8}, "Annihilion"}, -- defina pos dos montros e nomes
        {{x = 1129, y = 1151, z = 8}, "Annihilion"}, -- defina pos dos montros e nomes
        {{x = 1129, y = 1155, z = 8}, "Annihilion"}, -- 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 = "Annihilion" -- 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
    }

    local time = 120
    local check = {}
    
    for _, k in ipairs(t.entrada) do
         local x = getTopCreature(k).uid  
            if(x == 0 or not isCreature(x) or (isPlayer(x) and 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 a quest 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 == ID DA ALAVANCA and ID DA ALAVANCA or ID DA ALAVANCA)
                    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 * 120 * 1000, getMiddlePos(configure.fromPos, configure.toPos), rx, rx)
    return true
end

 

Esta com 2 minutos Para usar a alavanca novamente... não sei pra qual situação vc vai usar mais pode ser configurado. 

 

data/actions.xml

Spoiler

<action actionid="ID DA ALAVANCA" event="script" value="teste.lua"/>

 

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

Postado
  • Autor
4 horas atrás, Tchuka disse:

@leozincorsair

Tenta esse...

  Ocultar conteúdo

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=1072, y=1164, z=6} -- 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 = 0, 
    entrada = {
        {x = 0000, y = 0000, z = 0}, -- pos players
        {x = 0000, y = 0000, z = 0}, -- pos players
        {x = 0000, y = 0000, z = 0}, -- pos players
    },
    saida = {
        {x = 0000, y = 0000, z = 0}, -- pos para onde eles irão
        {x = 0000, y = 0000, z = 0}, -- pos para onde eles irão
        {x = 0000, y = 0000, z = 0}, -- pos para onde eles irão
    },
    monstros = {
        {{x = 1122, y = 1153, z = 8}, "Annihilion"}, -- defina pos dos montros e nomes
        {{x = 1121, y = 1151, z = 8}, "Annihilion"}, -- defina pos dos montros e nomes
        {{x = 1121, y = 1155, z = 8}, "Annihilion"}, -- defina pos dos montros e nomes
        {{x = 1128, y = 1153, z = 8}, "Annihilion"}, -- defina pos dos montros e nomes
        {{x = 1129, y = 1151, z = 8}, "Annihilion"}, -- defina pos dos montros e nomes
        {{x = 1129, y = 1155, z = 8}, "Annihilion"}, -- 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 = "Annihilion" -- 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
    }

    local time = 120
    local check = {}
    
    for _, k in ipairs(t.entrada) do
         local x = getTopCreature(k).uid  
            if(x == 0 or not isCreature(x) or (isPlayer(x) and 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 a quest 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 == ID DA ALAVANCA and ID DA ALAVANCA or ID DA ALAVANCA)
                    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 * 120 * 1000, getMiddlePos(configure.fromPos, configure.toPos), rx, rx)
    return true
end

 

Esta com 2 minutos Para usar a alavanca novamente... não sei pra qual situação vc vai usar mais pode ser configurado. 

 

data/actions.xml

  Ocultar conteúdo

<action actionid="ID DA ALAVANCA" event="script" value="teste.lua"/>

 

Amigo na parte da contagem eu não intendi pode explicar como funciona ?

Postado

O tempo é configurado nessas parte

 

addEvent(clearArea, config.time * 120 * 1000, getMiddlePos(configure.fromPos, configure.toPos), rx, rx)

 

O time multiplicando nessa formula = 1*120*1000 = 2 minutos... para alterar é so mudar o 120 para os segundos que corresponde ao tempo que vc quer.

 

No caso desse script o tempo vale pra contagem dos players depois que teleportados dentro de uma sala, e também para o cooldown, ou seja os player teleportados tem um tempo para completar o que esta por vir na sala em 2 minutos vencendo o tempo são teleportados para este lugar...

 

function clearArea(middlePos, rangex, rangey)
    local final = {x=0000, y=0000, z=0} -- Posição onde será teleportado quando acabar o tempo

 

O mesmo para a ALAVANCA quando vencer o mesmo tempo.

 

 

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 520.1k

Informação Importante

Confirmação de Termo