Ir para conteúdo

[Encerrado] Alavanca quest


Allangod

Posts Recomendados

Boa tarde galera.
Eu tenho uma alavanca de quest tipo a anihilator mas ela tem um pequeno problema....
Se 4 players entrarem na alavanca a quest irá começar td blz... Porém se outros 4 players que estiverem do lado de fora também puxarem a alavanca, irão sumonar mais monstros e terão 8 players na quest.
O que eu quero?
Eu gostaria que se tivesse algum desses 4 players vivo na quest, ninguém pudesse entrar por cima (Talvez via globalstorage).

Segue minha action da alavanca

 

  Ocultar conteúdo

  

local t = {
lvl = 1,
entrada =
{
{x = 1791, y = 1413, z = 8}, -- pos players
{x = 1790, y = 1414, z = 8},
{x = 1791, y = 1414, z = 8},
{x = 1792, y = 1414, z = 8},
{x = 1790, y = 1415, z = 8},
{x = 1791, y = 1415, z = 8},
{x = 1792, y = 1415, z = 8},
{x = 1790, y = 1416, z = 8},
{x = 1791, y = 1416, z = 8},
{x = 1792, y = 1416, z = 8},
{x = 1790, y = 1417, z = 8},
{x = 1791, y = 1417, z = 8},
{x = 1792, y = 1417, z = 8}
},
saida =
{
{x = 1811, y = 1443, z = 9}, -- pos para onde eles irão
{x = 1810, y = 1444, z = 9},
{x = 1811, y = 1444, z = 9},
{x = 1812, y = 1444, z = 9},
{x = 1810, y = 1445, z = 9},
{x = 1811, y = 1445, z = 9},
{x = 1812, y = 1445, z = 9},
{x = 1810, y = 1446, z = 9},
{x = 1811, y = 1446, z = 9},
{x = 1812, y = 1446, z = 9},
{x = 1810, y = 1447, z = 9},
{x = 1811, y = 1447, z = 9},
{x = 1812, y = 1447, z = 9}
},
monstros =
{
{{x = 1737, y = 1420, z = 9}, "rata"}, -- defina pos dos montros e nomes
{{x = 1737, y = 1421, z = 9}, "rata"},

}
function onUse(cid, item, fromPosition, itemEx, toPosition)
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
doPlayerSendCancel(cid, 'Está faltando player ou alguém não possui level '..t.lvl..' ou mais.')
return true
end
table.insert(check, x)
end
for _, summon in pairs(t.monstros) do
local creature = getTopCreature(summon[1]).uid
if(creature > 0 and not isPlayer(creature)) then
doRemoveCreature(creature)
end
doCleanTile(summon[1])
doCreateMonster(summon[2], summon[1])
end
for i, tid in ipairs(check) do
doSendMagicEffect(t.entrada, CONST_ME_POFF)
doTeleportThing(tid, t.saida, false)
doSendMagicEffect(t.saida, CONST_ME_ENERGYAREA)
end
doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)
return true
end

 


Valeu e REP+ pra quem ajudar.

Link para o comentário
Compartilhar em outros sites

Adiciona essa função em alguma lib.

 



function getPlayersInArea(area)

local players = {}

    for x = area.fromx,area.tox do
        for y = area.fromy,area.toy do
            for z = area.fromz,area.toz do

    local m = getTopCreature({x=x, y=y, z=z}).uid

        if m ~= 0 and isPlayer(m) then
            table.insert(players, m)
        end
    end
end
end

return players
end
 

 

Seu codigo:



local t = {
lvl = 1,
entrada =
{
{x = 1791, y = 1413, z = 8}, -- pos players
{x = 1790, y = 1414, z = 8},
{x = 1791, y = 1414, z = 8},
{x = 1792, y = 1414, z = 8},
{x = 1790, y = 1415, z = 8},
{x = 1791, y = 1415, z = 8},
{x = 1792, y = 1415, z = 8},
{x = 1790, y = 1416, z = 8},
{x = 1791, y = 1416, z = 8},
{x = 1792, y = 1416, z = 8},
{x = 1790, y = 1417, z = 8},
{x = 1791, y = 1417, z = 8},
{x = 1792, y = 1417, z = 8}
},
saida =
{
{x = 1811, y = 1443, z = 9}, -- pos para onde eles irão
{x = 1810, y = 1444, z = 9},
{x = 1811, y = 1444, z = 9},
{x = 1812, y = 1444, z = 9},
{x = 1810, y = 1445, z = 9},
{x = 1811, y = 1445, z = 9},
{x = 1812, y = 1445, z = 9},
{x = 1810, y = 1446, z = 9},
{x = 1811, y = 1446, z = 9},
{x = 1812, y = 1446, z = 9},
{x = 1810, y = 1447, z = 9},
{x = 1811, y = 1447, z = 9},
{x = 1812, y = 1447, z = 9}
},
monstros =
{
{{x = 1737, y = 1420, z = 9}, "rata"}, -- defina pos dos montros e nomes
{{x = 1737, y = 1421, z = 9}, "rata"},

}

area = {fromx = 1937, fromy = 52, fromz = 14, tox = 2152, toy = 270, toz= 14}            

function onUse(cid, item, fromPosition, itemEx, toPosition)

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
        doPlayerSendCancel(cid, 'Está faltando player ou alguém não possui level '..t.lvl..' ou mais.')
        return true
    end

    table.insert(check, x)

end

for _, summon in pairs(t.monstros) do

local creature = getTopCreature(summon[1]).uid

    if(creature > 0 and not isPlayer(creature)) then
        doRemoveCreature(creature)
    end

    doCleanTile(summon[1])
    doCreateMonster(summon[2], summon[1])
end

for i, tid in ipairs(check) do
    if #getPlayerInArea(area) < 1 then
        doSendMagicEffect(t.entrada, CONST_ME_POFF)
        doTeleportThing(tid, t.saida, false)
        doSendMagicEffect(t.saida, CONST_ME_ENERGYAREA)
    else
        doPlayerSendCancel(cid, "Já tem player nessa área!")
    end
end    

doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)

    return true
end

 

Editando a área:

Onde fromx, fromy, fromz é a </\ e tox, toy, toz é \/> dá área tipo para fazer um quadrado.



                area = {fromx = 1937, fromy = 52, fromz = 14, tox = 2152, toy = 270, toz= 14}, tele = {x = 2041, y = 196, z = 14}, 

 

Link para o comentário
Compartilhar em outros sites

Puts irmão, me desculpa.

Eu te passei o script errado.

O correto seria esse:



local lvl = 1 
local t = { 
{vocations = {1, 5, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 28, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105},Pos = {{x=1808, y=1416, z=9},{x=1995, y=1486, z=10}},item= {5922,{x=1808, y=1413, z=9}}},
{vocations = {1, 5, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 28, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105},Pos = {{x=1809, y=1416, z=9},{x=1996, y=1486, z=10}},item= {5922,{x=1809, y=1413, z=9}}},
{vocations = {1, 5, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 28, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105},Pos = {{x=1808, y=1417, z=9},{x=1995, y=1487, z=10}},item= {5922,{x=1808, y=1414, z=9}}},
{vocations = {1, 5, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 28, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105},Pos = {{x=1809, y=1417, z=9},{x=1996, y=1487, z=10}},item= {5922,{x=1809, y=1414, z=9}}} 
}

     
function onUse(cid, item, fromPosition, itemEx, toPosition)
          local check = {} 
           local items = {}
               for _, k in ipairs(t) do 
local x = getTopCreature(k.Pos[1]).uid 
                          local v = getTileItemById(k.item[2], k.item[1]) 
 if(x == 0 or not isPlayer(x) or getPlayerLevel(x) < lvl or isInArray(k.vocations, getPlayerVocation(x)) == FALSE) then 
doPlayerSendCancel(cid, 'Está faltando player ou alguém não possui level '..lvl..' ou mais ou não tem a vocação.') return true 
elseif v.uid == 0 then 
                       doPlayerSendCancel(cid, "Todos os itens precisão estar na posição.") return true end
table.insert(check, x) 
table.insert(items, v)
                      end 
                 for k, tid in ipairs(check) do 
                 doSendMagicEffect(getCreaturePosition(tid), CONST_ME_POFF)
                 doTeleportThing(tid, t[k].Pos[2]) 
                 doSendMagicEffect(getCreaturePosition(tid), CONST_ME_TELEPORT)
                  end
                          for _, remove in ipairs(items) do
                          doRemoveItem(remove.uid)
                   end
          doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)
return true 
end

               




Editado por Allangod
Link para o comentário
Compartilhar em outros sites

22 horas atrás, Allangod disse:

                 for k, tid in ipairs(check) do 
                 doSendMagicEffect(getCreaturePosition(tid), CONST_ME_POFF)
                 doTeleportThing(tid, t[k].Pos[2]) 
                 doSendMagicEffect(getCreaturePosition(tid), CONST_ME_TELEPORT)
                  end

Troca isso por isso

 


for k, tid in ipairs(check do

  if #getPlayerInArea(area) < 4 then

                 doSendMagicEffect(getCreaturePosition(tid), CONST_ME_POFF)
                 doTeleportThing(tid, t[k].Pos[2]) 
                 doSendMagicEffect(getCreaturePosition(tid), CONST_ME_TELEPORT)

  else

                 doPlayerSendCancel(cid, "Já tem players na área")

      end

end

Link para o comentário
Compartilhar em outros sites

1 hora atrás, kttallan disse:

Troca isso por isso

 

 


for k, tid in ipairs(check do

  if #getPlayerInArea(area) < 4 then

                 doSendMagicEffect(getCreaturePosition(tid), CONST_ME_POFF)
                 doTeleportThing(tid, t[k].Pos[2]) 
                 doSendMagicEffect(getCreaturePosition(tid), CONST_ME_TELEPORT)

  else

                 doPlayerSendCancel(cid, "Já tem players na área")

      end

end

Então mano, deu esse erro abaixo:

 

[Error - LuaScriptInterface::loadFile] data/actions/scripts/partegrama.lua:10: u
nexpected symbol near '='
[Warning - Event::loadScript] Cannot load script (data/actions/scripts/partegram
a.lua)
data/actions/scripts/partegrama.lua:10: unexpected symbol near '='

 

Meu script ficou assim:

 


 

 

local lvl = 1 
local t = { 
{vocations = {1, 5, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 28, 30, 31, 32, 33, 34, 35, 36, 37,
38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105},Pos = {{x=1808, y=1416,
z=9},{x=1995, y=1486, z=10}},item= {5922,{x=1808, y=1413, z=9}}},
{vocations = {1, 5, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 28, 30, 31, 32, 33, 34, 35, 36, 37,
38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105},Pos = {{x=1809, y=1416,
z=9},{x=1996, y=1486, z=10}},item= {5922,{x=1809, y=1413, z=9}}},
{vocations = {1, 5, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 28, 30, 31, 32, 33, 34, 35, 36, 37,
38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105},Pos = {{x=1808, y=1417,
z=9},{x=1995, y=1487, z=10}},item= {5922,{x=1808, y=1414, z=9}}},
{vocations = {1, 5, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 28, 30, 31, 32, 33, 34, 35, 36, 37,
38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105},Pos = {{x=1809, y=1417,
z=9},{x=1996, y=1487, z=10}},item= {5922,{x=1809, y=1414, z=9}}} 


area = {fromx = 1963, fromy = 1456, fromz = 10, tox = 2002, toy = 1490, toz =
10}, tele = {x = 2002, y = 1490, z = 10},  
 

     
function onUse(cid, item, fromPosition, itemEx, toPosition)
          local check = {} 
           local items = {}
               for _, k in ipairs(t) do 
local x = getTopCreature(k.Pos[1]).uid 
                          local v = getTileItemById(k.item[2], k.item[1]) 
 if(x == 0 or not isPlayer(x) or getPlayerLevel(x) < lvl or
isInArray(k.vocations, getPlayerVocation(x)) == FALSE) then 
doPlayerSendCancel(cid, 'Está faltando player ou alguém não possui level
'..lvl..' ou mais ou não tem a vocação.') return true 
elseif v.uid == 0 then 
                       doPlayerSendCancel(cid, "Todos os itens precisão estar
na posição.") return true end
table.insert(check, x) 
table.insert(items, v)
                      end 
                 for k, tid in ipairs(check) do

  if #getPlayerInArea(area) < 4 then

                 doSendMagicEffect(getCreaturePosition(tid), CONST_ME_POFF)
                 doTeleportThing(tid, t[k].Pos[2]) 
                 doSendMagicEffect(getCreaturePosition(tid),
CONST_ME_TELEPORT)

  else

                 doPlayerSendCancel(cid, "Já tem players na área")

      end

end
                          for _, remove in ipairs(items) do
                          doRemoveItem(remove.uid)
                   end
          doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)
return true 
end 

 

Editado por Allangod
Link para o comentário
Compartilhar em outros sites

Estranho porque sem essas alterações o script funciona.
O problema é que podem entrar um por cima do outro.

Queria saber tirar esse negocio de vocação, pra todas as vocações puderem entrar lá...
Esse script limita somente as vocações citadas ali, e como tinha isso, tive que citar todas as minhas.

Editado por Allangod
Link para o comentário
Compartilhar em outros sites

  • 4 months later...
Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...