Allangod 2 Postado Novembro 28, 2017 Share Postado Novembro 28, 2017 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)enddoTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)return trueend Valeu e REP+ pra quem ajudar. Link para o comentário Compartilhar em outros sites More sharing options...
kttallan 318 Postado Novembro 28, 2017 Share Postado Novembro 28, 2017 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 More sharing options...
Allangod 2 Postado Novembro 28, 2017 Autor Share Postado Novembro 28, 2017 (editado) 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 Novembro 28, 2017 por Allangod Link para o comentário Compartilhar em outros sites More sharing options...
kttallan 318 Postado Novembro 29, 2017 Share Postado Novembro 29, 2017 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 More sharing options...
Allangod 2 Postado Novembro 29, 2017 Autor Share Postado Novembro 29, 2017 (editado) 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 Novembro 29, 2017 por Allangod Link para o comentário Compartilhar em outros sites More sharing options...
kttallan 318 Postado Novembro 29, 2017 Share Postado Novembro 29, 2017 Esse bug não tem haver com o que te passei, como não tou em casa não tem como eu checar já que esse script tá uma bagunça. É na linha 10. Link para o comentário Compartilhar em outros sites More sharing options...
Allangod 2 Postado Novembro 29, 2017 Autor Share Postado Novembro 29, 2017 (editado) 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 Novembro 29, 2017 por Allangod Link para o comentário Compartilhar em outros sites More sharing options...
Stigal 584 Postado Abril 19, 2018 Share Postado Abril 19, 2018 A questão neste tópico de suporte foi encerrada por falta de resposta. Este tópico está fechado e foi movido para Suporte - Tópicos Sem Resposta. Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados