Postado Outubro 10, 2019 5 anos Ola pessoal. Venho mais uma vez aqui no TibiaKing solicitar a ajuda dos amigos com o seguinte script. Seguinte, andei trabalhando em um script da anihi que tinha aqui e deixei ele quase 100% do jeito que queria. Com tempo para permanecer na sala e tals. Contudo, estou usando esse script da anihi como base para uma outra quest que envolve uma área maior. Até ai tudo bem, quando acaba o tempo dos jogadores que estavam a fazer a quest eles são teleportador para o templo normalmente. Mas ocorre que caso tais players tenham chegado até o final da quest e a feito em menos tempo do que o tempo necessário, (que no caso ai no script está definido para 2 minutos por conta de testes) ele pode estar em qualquer outro lugar do mapa depois que é mandado para o templo. Portanto estarei deixando o script aqui para quem puder me ajudar a modificá-lo para funcionar 100%. Até tentei usar outros como base aqui trabalhando com storages mas ainda não obtive sucesso. Se alguém pude me ajudar agradeço. Abraços! local config = { from = {x = 22987, y = 19805, z = 7}, -- coordenada do canto superior esquerdo da área. to = {x = 23024, y = 19992, z = 7}, -- coordenada do canto inferior direito da área. } local t = { lvl = 100, Time = 2, -- em minutos entrada = { {x = 23052, y = 19991, z = 7}, -- pos players {x = 23051, y = 19991, z = 7}, {x = 23050, y = 19991, z = 7}, {x = 23049, y = 19991, z = 7} }, saida = { {x = 23017, y = 19985, z = 7}, -- pos para onde eles irão {x = 23019, y = 19985, z = 7}, {x = 23017, y = 19987, z = 7}, {x = 23019, y = 19987, z = 7} }, monstros = { {{x = 23004, y = 19832, z = 7}, "Juggernaut"}, -- defina pos dos montros e nomes {{x = 23004, y = 19834, z = 7}, "Ghazbaran"} } } function getPlayersInArea(fromPos, toPos) local players = {} for _, pid in ipairs(getPlayersOnline()) do if isInRange(getPlayerPosition(pid), fromPos, toPos) then table.insert(players, pid) end end return players end function VarAnihiPlayer(cid) if not isCreature(cid) then return LUA_ERROR end if #getPlayersInArea(config.from, config.to) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end end function onUse(cid, item, fromPosition, itemEx, toPosition) local check = {} if #getPlayersInArea(config.from, config.to) > 0 then doPlayerSendCancel(cid, 'Aguarde, tem jogadores fazendo a quest.') return true end 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[i], CONST_ME_POFF) doTeleportThing(tid, t.saida[i], false) addEvent(VarAnihiPlayer, t.Time*60*1000, tid) doSendMagicEffect(t.saida[i], CONST_ME_ENERGYAREA) end doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945) return true end
Postado Outubro 10, 2019 5 anos O que você precisa é que o script teleport aqueles que terminaram(mesmo se for no tempo menor do que o defnidido? ao invés de aguardar todos terminarem?
Postado Outubro 10, 2019 5 anos Autor Não brother. Apenas uma forma de parar a contagem para quem terminou. Por exemplo: Os players puxam a alavanca e tem 30 minutos no máximo para concluir a quest, do contrário, caso acabe esse tempo todos são teleportador para o templo. O que já ocorre normalmente e está funcionando perfeitamente. No entanto, digamos que os players concluíram a quest em 20 minutos pegaram sua recompensa no bau e entraram no tp para ir pro templo. Então a vida continua e não importa onde ele esteja, os dez minutos restantes continuarão a correr e ele vai ser mandando para o templo mesmo já estando em uma outra quest ou em uma hunt ou fazendo qualquer outra coisa. Só preciso de uma forma para pausar, digamos assim, a contagem do tempo quando os players concluir a quest e passar pelo teleporte. O que acho que da para ser feito com storage. @Vodkart Você é o cara indicado para me ajudar nessa rsrsrs.
Postado Outubro 10, 2019 5 anos Coloque uma storage no teleport de saida setando ela como 0. Antes dessa linha: doSendMagicEffect(t.saida[i], CONST_ME_ENERGYAREA) Coloca setando esta storage como 1. E na verificação coloca uma condição de teleportar apenas quem tem a storage com valor 1. function VarAnihiPlayer(cid) if not isCreature(cid) then return LUA_ERROR end if #getPlayersInArea(config.from, config.to) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end end
Postado Outubro 10, 2019 5 anos Autor Mas tipo, isso dai vai fazer com que nao teleporte quem ainda não conseguiu concluir a quest no tempo estipulado. pelo menos foi o que entendi.
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.