Ir para conteúdo
  • Cadastre-se

Posts Recomendados

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

Link para o post
Compartilhar em outros sites

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.

Link para o post
Compartilhar em outros sites

@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)
Link para o post
Compartilhar em outros sites
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 ?

Link para o post
Compartilhar em outros sites

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.

 

 

Link para o post
Compartilhar em outros sites
1 hora atrás, Tchuka disse:

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.

 

 

Mais é essa parte no qual nao estou entendendo :

    local config = {
        position = {x=1127, 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

Link para o post
Compartilhar em outros sites

Ahh essas são as possições que sai o efeito da contagem... a primeira position no caso aqui é em cima da alavanca... começa do 120 e vai descendo ate 0 

Aqui é o efeito:

addEvent(doSendAnimatedText, i*1000, config.position, formula, TEXTCOLOR_RED)

Link para o post
Compartilhar em outros sites
  • 1 year later...
Em 15/05/2017 em 14:58, Tchuka disse:

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

Esta parte, eu configuro como? Estou testando aqui, no meu caso quero fazer uma alavanca que teletransporta os 5 players para a sala do boss, mas preciso de tempo na alavanca e que o boss suma se não matarem.

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.


  • Conteúdo Similar

    • Por LeoTK
      Salve galera neste tópico irei postar algumas prints do mapa do servidor para quem queira acompanhar e quem sabe até utilizar de inspiração para mapear o seu NTO.
       
      #Att 11/08/2022

       
       
       
       
      Konoha (Em Desenvolvimento)
       
       
       
       
    • Por DiigooMix
      Como o título já diz, será que alguém possui sprite do hitto e se possível as transformações dele?
    • Por OmegaZero
      Olá gostaria que alguém me ajudasse com uma "scripting" não sei se é pela mesma, seria o seguinte uma determinada arma teria a chance de dar double hit e não sei oque fazer alguem poderia ajudar?

      OBS:não sei se é o local correto se não for mova, desculpe
    • Por Madarasenju
      Olá galera do Tibia King, queria por uns npc's no meu server que não tem função de trade nem nada do tipo, queria que eles só andassem como enfeite, Rep+ Pra quem me ajudar... grato desde já.
    • Por SilenceRoot
      A magia é assim o você usa a a magia e ela ficará ativado por 10 segundos, até que o inimigo lance a primeira magia ou todos de uma vez, quando ele lançar a primeira magia, ele não lhe acertará ou seja esquivando dela, e logo em seguida será teletransportado aleatoriamente ao redor do inimigo que usou.
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo