Postado Setembro 6, 2019 5 anos A ideia é a seguinte: Preciso que, por exemplo, a alavanca que possui o unique id 1200 seja verificada com um global event onTime. Se ela tiver o id 1946 (alavanca para direita), o global event vai transformar ela em id 1945 (alavanca para a esquerda), com o mesmo uid. Se for possivel criar um array com todas as unique ids que quero verificadas, e o script ir checando todas elas e fazendo as que estão como 1946 virarem 1945, seria perfeito. Segue o que consegui fazer até agora: Obs: O script também pega players com a storage 333333 == -1 (players que estão dentro da quest quando o global event é ativado) e enviam para a posição do templo. Mas essa parte já está funcionando ok. Só preciso mesmo corrigir a parte de transformar as alavancas com aqueles uids que estão no array. local function resetquests() local players = Game.getPlayers() if #players == 0 then return true end for _, player in ipairs(players) do if player:getStorageValue(333333) == -1 then local destination = {x=1070, y=1037, z=1} player:teleportTo(destination) return true end end local alavancas = { 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1250, 1251, 1252, 1253, 1254, 1255, 1256 } for _, item.uid in ipairs(alavancas) do if item.id == 1946 then doTransformItem(item.uid,1945) return true end end cleanMap() broadcastMessage("City quests resetadas e chao limpo.", MESSAGE_STATUS_DEFAULT) end function onTime() broadcastMessage("City quests serao resetadas e chao sera limpo em 1 minuto. Cuidado para nao perder itens.", MESSAGE_STATUS_WARNING) addEvent(resetquests, 1 * 60 * 1000) return true end
Postado Setembro 6, 2019 5 anos Pelo que me parece a ideia principal seria a alavanca voltar automaticamente depois de X tempo ... Você teria duas alternativas ... 1 - Usar um addEvent no próprio script da alavanca. (não aconselho) 2 - Achar as alavancas pela posição delas ... Mais ou menos assim: local tabela = { [1000] = Position(1184, 1011, 13), [1001] = Position(1184, 1011, 13), } for _, itemUid in ipairs(tabela) do local posicao = tabela[itemUid] if posicao then local tile = posicao:getTile() if tile then local alavanca = tile:getItemById(1945) if alavanca then alavanca:transform(1946) end end end end STYLLER OT 2022
Postado Setembro 6, 2019 5 anos Autor Cara, como sempre você salvando a minha vida! É exatamente isso que preciso, pegar a alavanca pela posição. Só tenho que alterar no teu código uma coisa, que é pra ele pegar a alavanca de ID 1946 e transformar pra ID 1945. Vou testar agora mesmo e te digo se funcionou. Outra coisa, preciso que a alavanca tenha um unique ID. Então se eu colocar alavanca:transform(1200, 1945) Sendo 1200 o unique ID que quero q ela tenha, funciona? Editado Setembro 6, 2019 5 anos por MatCollier (veja o histórico de edições)
Postado Setembro 7, 2019 5 anos 2 horas atrás, luanluciano93 disse: local alavanca = tile:getItemById(1945) Aqui ele verifica se na posição existe um item desse ID ... 2 horas atrás, luanluciano93 disse: alavanca:transform(1946) E aqui ele muda o item para este ID. Creio que não seja preciso mexer com UID, pois naquela posição só vai existir aquela alavanca ... STYLLER OT 2022
Postado Setembro 7, 2019 5 anos Autor Então, testei com o que tu mandou, e nada aconteceu. Não deu nenhume erro na distro mas a alavanca n foi modificada. Preciso do UID porque pra entrar na quest é necessário que a alavanca tenha aquele UID (pro script que está em actions funcionar). E a ideia é ele verificar se o ID é 1946 (alavanca já usada) e transformar em 1945 (alavanca não usada), o contrário do que tá ai. Por isso troquei. Editado Setembro 7, 2019 5 anos por MatCollier (veja o histórico de edições)
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.