Bem-vindos de volta, pessoal.
Neste vídeo, vamos nos divertir muito porque finalmente prepararemos nosso treinador para esse aplicativo de
pagamento de espaço.
Quero dizer, já fizemos o trabalho duro, que é descobrir esses métodos e preparar esses ganchos
gratuitos.
Portanto, a única coisa que estamos fazendo no momento é juntar todos eles em um único script e fornecer
uma arte ASCII sofisticada.
Ok, talvez não seja tão sofisticado, pelo menos para mim, mas acho que você fez um trabalho melhor
neste aqui.
Tudo bem.
Depois de terminar este, também lhe fornecerei um script final.
Portanto, o que eu gostaria de mostrar a vocês aqui é como podemos criar e treinar isso com liberdade.
E depois de quê?
Eu realmente o encorajo a tentar fazer isso por conta própria e brincar ainda mais com esse aplicativo.
Portanto, talvez haja outras funções interessantes que ainda não descobrimos,
e seria ótimo se você me enviasse algumas capturas de tela ou vídeos curtos da sua
versão final para que possamos ver o progresso que fizemos juntos neste curso.
Muito bem.
Está bem.
Portanto, vamos começar.
Vamos mudar para a VM do Ubuntu e descobrir como podemos escrever nosso próprio treinador.
Vamos lá.
Bem, aqui estamos de volta à VM do Ubuntu e agora vamos dar uma olhada no diretório em que todos os nossos scripts de
liberdade estão armazenados.
Então, para mim, é dentro de aplicativos e espaço ping sublinhado, digamos o x e depois a liberdade.
Aqui temos todos os nossos scripts gratuitos e eu já preparei uma espécie de plano, esse instrutor para
perseguir.
Quero dizer, inclui apenas uma coisa, mas essa é a parte mais importante em um treinador.
É a arte ASCII.
É claro que sim.
Refiro-me ao treinador.
Ele tem que ter uma aparência fabulosa.
Legal.
Caso contrário, você pode.
Você pode jogar isso fora.
Ele precisa ter uma arte ASCII sofisticada.
Sim, tentei fazer o melhor que pude e vamos ver qual é o resultado desse trabalho.
Então, vamos abrir isso com visitas ao código.
Muito bem, aqui está.
Quero dizer, na versão final, eu faço outra tentativa.
Estou tentando melhorar isso um pouco mais agora.
Mas para este vídeo, acho que não há problema.
Então, temos nossa nave espacial sofisticada aqui.
Temos todas essas coisas espaciais e temos nosso texto e instrutor para esse ping espacial, AB Udemy, laser
absoluto.
E é ainda mais elitizado.
Muito bem, esse é o nosso ponto de entrada para o nosso treinador.
Portanto, a única coisa que precisamos fazer agora é copiar e colar todos esses scripts gratuitos neste
aqui para tê-los em um único e, em seguida, vincular essas funções aqui.
Portanto, acho que a melhor ideia é simplesmente fazer isso agora mesmo.
Muito bem.
Portanto, a única coisa que precisamos fazer agora é copiar e colar todas as nossas funções nesse único script
aqui.
E então precisamos referenciá-los aqui para que o usuário saiba o que precisa digitar para chamar
essa função.
Talvez.
Vamos fazer um exemplo aqui e, primeiro, vamos imprimir essa função ASCII, esta aqui, porque esta é apenas uma
definição de função e aqui ela está sendo finalmente chamada.
Assim, quando começarmos a preencher esse script aqui, essa bela arte ASCII, espero que seja bonita,
será impressa em nosso terminal.
Talvez.
Vamos fazer este aqui primeiro e depois o faremos passo a passo.
Portanto, estamos usando a máquina virtual porque, infelizmente, no smartphone,
algumas bibliotecas causam problemas no Frida e, por isso, estamos usando a máquina virtual, pois agora
estamos conectados e vamos iniciar os dados do servidor Frida, temp local, servidor Frida e este agora está sendo executado em segundo
plano e vamos ver essa tela aqui e colocamos esta à direita e esta à esquerda.
Muito bem, vamos abrir nosso Space Panga.
Mas vamos ver.
Talvez tenhamos que liberar esse aplicativo porque já estamos no nível 11 e acho que nossa pontuação máxima é praticamente
imbatível no momento.
Então, fechamos esse aqui.
Em seguida, entramos nas configurações.
Então, EPS.
Esse ritmo está sendo pago.
Armazenamento.
Pressionamos o botão limpar armazenamento e podemos ver que esses dados aqui serão excluídos.
E agora temos uma nova versão.
Isso começou mais uma vez.
Tudo bem.
Aqui está.
Agora podemos ver a pontuação do nível cinco e a pontuação máxima, e vamos criar algum espaço.
Assim, posso continuar falando enquanto não estivermos sendo atingidos.
Tudo bem.
Então, agora vamos começar a Deb livre com o script à esquerda.
Quero dizer, ele não está fazendo nada além de imprimir essa incrível arte ASCII.
Mas, mesmo assim, vamos fazer isso.
Portanto, libere o painel e depois o nome do pacote.
Enquanto isso, eu sei disso.
Acho que sim.
Acho que é este aqui.
Se você pegar esta seta, não tenho certeza do que está acontecendo agora com o 3D.
Além disso, às vezes não é possível encontrar o nome do pacote, mas ele é aceito.
Esse nome de pacote.
O que podemos fazer em vez de usar o nome do pacote é usar a ID do processo.
Portanto, estamos usando o ADB Shell e, em seguida, vamos aumentar um pouco o tamanho.
Em seguida, estamos usando o traço A do PS para imprimir todos esses processos e, depois, estamos pegando esse painel de colar.
Aqui temos cinco, quatro, cinco, cinco e agora estamos usando o free dub com esse ID de
processo e isso deve funcionar, portanto, free to dash you e, em seguida, o ID de processo e, então, precisamos chamar nosso script, que está em
apps is paste paying x.
Frida e depois o trem.
Tudo bem.
Desculpe.
Eu gostaria de contar a história novamente.
Muito bem, vamos colocar isso à esquerda, chamá-lo de script e ver o que está acontecendo.
Vou lhe dar um esforço, mas a função não está sendo chamada.
Isso é interessante.
Vamos chamar isso de manualmente.
Tudo bem.
Aqui está.
Isso é o que devemos obter quando iniciarmos o script aqui.
Talvez eu não o tenha salvo agora.
Está bem.
Portanto, o que precisamos fazer é copiar e colar todos os nossos scripts neste aqui e, em seguida,
fazer referência a este.
E estou me referindo a este aqui.
Não se trata de ciência de foguetes.
Portanto, agora estamos apenas copiando e colando tudo junto.
Vamos abrir outro script e, por exemplo, a função invisível neste script.
Vamos copiar isso em nosso treinador e, em seguida, precisamos fornecer uma nova função para isso.
E também fazemos um comentário, tornamos o player invisível para que não estejamos fornecendo essa função e nomeamos essa
função como invisível.
Isso é o que o usuário deve inserir depois.
Tudo bem.
Depois de chamar essa função ou depois de chamá-la, imprimimos o ASCII mais uma vez,
pois assim podemos manter o controle de certas coisas.
Está bem.
Portanto, esta é a função invisível.
E temos que dizer ao usuário o que ele deve fazer.
Então, copiamos e colamos esse registro do console e o usamos de forma simples.
Eu também poderia ter reescrito isso, mas não importa.
Está bem.
Para tornar o jogador invisível, precisamos digitar invisible.
Tornar o jogador invisível.
E agora você vê o que está por trás desse treinador.
Ou seja, esse treinador é simplesmente um invólucro para todas essas funções.
Portanto, temos todas essas funções em um script e podemos simplesmente chamar essa função na linha de comando
free to.
Isso é estranho, mas é absolutamente incrível ter tudo isso em um único arquivo.
Vejamos, salvamos esse arquivo.
Agora voltamos ao nosso terminal freedom e podemos ver que temos essa versão atualizada, invisível.
Tornar o jogador invisível.
Tudo bem.
Portanto, vamos manter isso um pouco em primeiro plano.
Está bem.
Portanto, agora temos o Justin Foreground e vamos ver se você deseja tornar o player invisível.
Tudo o que precisamos fazer é simplesmente digitar invisible.
Vejamos.
Aqui está.
O jogador agora está invisível.
Tudo bem.
O bom do script é que também podemos registrar, sim, todas essas funções,
por exemplo.
E vamos ver.
Vou encerrar rapidamente.
Está bem?
Ou seja, não precisamos ter essa saída de depuração no momento.
Então, por exemplo, podemos dizer que podemos criar uma nova variável, talvez façamos isso aqui.
Então, por exemplo, aqui, vamos criar uma nova variável player invisible e o sinalizador de início está definido
como false.
Tudo bem.
E agora, se o jogador estiver sendo definido como invisível, podemos definir isso como verdadeiro.
E agora podemos dizer, por exemplo, que este aqui no player é e então podemos fornecer
essa variável player invisível.
Tudo bem.
Acho que temos que colocar isso em cima disso.
Caso contrário, pode ser que o estado não esteja claro.
E também podemos brincar ainda mais.
Por exemplo, vejamos, temos também a função set player visible.
E agora vamos ver.
Portanto, o que podemos fazer é o seguinte.
Eu limpo este.
Aqui clicamos.
Certo, se o jogador estiver invisível.
Em seguida, podemos chamar o método de instância set player visible.
Caso contrário.
Nós temos este aqui.
Está bem.
Vamos comentar isso rapidamente.
Se o jogador estiver invisível.
Faça isso, torne o jogador visível novamente.
E aqui definirei o jogador como invisível e para manter o controle do palco.
Acho que a maneira mais fácil é simplesmente inverter este aqui para que possamos invertê-lo, eu acho.
Dessa forma.
Sim.
O'Reilly.
Está bem.
Talvez devêssemos conversar sobre isso mais uma vez.
Portanto, se o jogador estiver no início e não estiver invisível, ele estará visível e, portanto, o jogador estará visível.
Se você estiver chamando essa função de invisível, o player será definido.
Essa é falsa.
Portanto, o jogador será definido como invisível.
E este aqui, este vai declarar que este mudaria o estado de falso para verdadeiro.
Na primeira vez, se você estiver digitando essa função mais uma vez e o jogador estiver invisível,
o que significa que entraremos nessa função que define o jogador como visível mais
uma vez, e essa função mudará de true para false, o que significa que o jogador agora está invisível.
Muito bem.
Vamos dar uma olhada rápida em como isso funciona aqui.
E depois, sim, falaremos sobre todas as outras funções.
Portanto, quero apenas fornecer algumas abordagens sobre o que você pode fazer nesse instrutor aqui.
Ou seja, é apenas um código JavaScript básico.
Mas, mesmo assim, eu gostaria de lhe dar algumas opções de opiniões sobre esse assunto.
Está bem.
Então, salvamos esse arquivo e agora vamos obter uma cópia da tela mais uma vez.
Portanto, aqui temos nosso aplicativo e precisamos anexá-lo a este.
Portanto, precisamos obter o ID do processo
aqui.
Ele deve iniciar esse aplicativo e, primeiro, criar algum espaço.
Muito bem.
Vamos colocar isso à direita.
Este à esquerda.
E agora estou livre para ajudá-lo nesse processo.
ID e, em seguida, nosso treinador.
Vejamos.
Talvez eu o tenha na história que temos.
Então, vamos fazer isso da seguinte maneira.
Tudo bem.
Agora, a arte ASCII deve ser impressa.
Este aqui, e também o estado do jogador, se ele está invisível ou visível.
Por um momento, pensei que o jogador estava invisível, mas agora ele ainda está aqui.
Muito bem, vamos fazer isso.
Quando pressionamos enter, temos nossa sofisticada arte ASCII e podemos ver que o jogador está na frente.
Portanto, esqueci um texto aqui.
O jogador é o jogador.
Talvez o comissário de bordo seja o jogador invisível.
Está bem.
Nós o salvamos.
Não, é o jogador.
Nota invisível, etc. para.
Tudo bem.
Se você digitar invisível, poderemos ver os jogadores invisíveis e veremos que o jogador está invisível,
definido como true.
É por isso que eu gostaria de manter essa arte ASCII aqui.
Desculpe, mas essa disfunção de arte ASCII aqui também é impressa depois que chamamos essa função para que
possamos acompanhar determinados eventos, como as vidas estão sendo alteradas, a pontuação máxima, coisas assim.
Porque se você estiver jogando muito com isso, não saberemos se determinados sinalizadores estão definidos ou não.
Tudo bem, perfeito.
Se o chamarmos agora, mais uma vez, de invisível, poderemos ver que o jogador está de volta e que a falha do
jogador é invisível?
Não, esse não é mais o caso.
Tudo bem.
Não o empresto agora.
Vou avançar rapidamente na cópia, colando todas as outras funções nesta e, em seguida, faremos
alguns pequenos ajustes para deixar o treinador ainda mais bonito.
Muito bem.
Vamos fazer isso.
Então, fecho essa aqui e agora copiamos todas as outras funções desse arquivo, e vamos lá.
Está bem.
Então, aqui estamos de volta.
Eu tenho.
Sim, copiei e colei toda essa função e fiz alguns pequenos ajustes.
Por exemplo, desabilitei todas essas saídas de depuração porque isso fará com que o nosso
instrutor receba muitas coisas desnecessárias e, no disparo rápido de, por exemplo, esta aqui, na pontuação máxima,
temos que fornecer uma nova pontuação máxima nessa função e a estamos passando diretamente para
esta aqui.
Então, sim, podemos chamar essa função com a nova pontuação máxima e podemos usar essa pontuação máxima
aqui.
Isso definiria uma nova pontuação máxima, mas com qualquer função de disparo rápido, acho que essa não é a melhor abordagem.
Se estivermos usando isso em um treinador e tivermos um loop amplo, como fizemos antes, isso bloquearia a ameaça e
o treinador poderia ficar inutilizável depois.
Portanto, estou usando-o apenas por um curto período de tempo.
E sim, talvez descubramos como podemos fazer isso melhor aqui.
Então, como podemos ter uma resposta rápida, mas sem bloquear muito tempo em nosso trem aqui.
Farei isso no exemplo final, mas sinta-se à vontade para procurar funções adicionais que atinjam esse
objetivo aqui.
Muito bem.
Perfeito.
Então, agora vamos salvar esse.
E vejamos, ainda não o testei, portanto, pode estar cheio de erros.
Vejamos com o botão salvar.
Está bem.
Na saída.
Ou seja, precisamos fazer um trabalho melhor.
Isso parece absolutamente bagunçado ao lado da nossa arte ASCII, mas parece que todas essas funções estão
agora lá.
Então vamos ver.
Vamos voltar à nossa cópia de tela e brincar um pouco com ela.
Então, mantemos isso em primeiro plano e vamos ver o que temos?
Temos o jogador ADD, por exemplo.
Sim, isso funciona perfeitamente.
Também temos moedas funcionando perfeitamente, uma pontuação alta e temos que fornecer um novo valor.
Vamos definir esse ano de 2000.
E isso parece não estar funcionando no momento.
Ou estou perdendo alguma coisa?
Temos que verificar o que há de errado com a escola de ensino médio.
E vamos ver.
Invincible.
É uma função.
Sim.
Vejamos.
Temos algo interessante.
São apenas atraentes.
E vamos ver.
Sim.
Portanto, o primeiro objeto aqui não tem mais detecção de colisão.
Mas o segundo objeto.
Tudo bem.
Isso está um pouco confuso no momento.
O que acontecerá se chamarmos isso várias vezes para que todos os objetos sejam definidos?
Mas vamos ver.
Não.
Está bem.
Portanto, ao adicionar um jogador nessa função, essa baquelite colide.
Neste momento, temos que observar tudo o que temos que fazer e cortar melhor neste caso.
Por último, mas não menos importante.
Desculpe.
Por último, mas não menos importante, vamos testar esse fogo rápido.
E vamos ver.
Não se trata de uma função.
Por isso, o nome que demos a ele.
Sim.
Agora encontrei este erro.
Desculpe-me por isso.
Usei essa versão descuidada, portanto, temos nossa própria correspondência, mas estamos perdendo o retorno de chamada incompleto.
Sinto muito por isso.
Tudo bem.
Acho que isso deve funcionar agora.
Vamos salvar isso.
E agora vamos chamá-lo de.
Sim, mas o loop for, este aqui, é muito menor, talvez devêssemos aumentá-lo para mais de 10.000, o que bloquearia grande
parte do nosso instrutor, então, sim, podemos ver que está funcionando e agora é bom, mas bloqueia grande parte dos nossos instrutores, de modo que
não podemos usar outras funções enquanto fazemos isso.
Portanto, acho que devemos encontrar uma maneira melhor.
Tudo bem.
O que está faltando no momento é a escola de ensino médio.
Então, vamos ver o que está acontecendo de errado lá dentro?
Valor de pontuação alto.
Essa variável não está sendo usada em nenhum lugar.
Está bem.
Então, em vez de chamar essa função para definir se há uma nova pontuação máxima, vamos simplesmente usar nossa primeira abordagem.
Este aqui.
Isso é o máximo.
Ops.
Desculpe.
Essa é a versão mais confiável.
Muito bem, então, travel, dot, perform, e vamos usar este aqui.
Muito bem.
E agora estamos usando esse valor de pontuação alta aqui.
Sim.
Portanto, isso deve funcionar agora mesmo.
Portanto, também poderíamos usar a pontuação mais alta aqui no nosso treinador agora mesmo.
Então, talvez seja melhor fecharmos esse aqui.
Isso é um pouco perturbador.
Tudo bem.
Assim, por exemplo, podemos criar uma nova variável, que pode.
Sim.
Que mantém o controle da pontuação máxima atual.
Talvez.
Vamos fazer isso rapidamente.
Portanto, estamos criando aqui uma nova variável.
O uso de uma pontuação alta pelo usuário é igual a zero.
Sim.
Portanto, temos que chamá-lo uma vez, porque no início ele é zero.
Mas, depois de obtermos uma nova pontuação máxima, também podemos manter o controle em nosso aplicativo.
Ou seja, também podemos usar uma função adicional.
Por exemplo, podemos fazer isso da seguinte maneira, talvez façamos aqui.
Então, copiamos e colamos essa função e depois nos livramos dela.
Sim.
Podemos usar e obter uma pontuação alta.
Tudo bem.
Agora, obtenho a pontuação máxima.
Estamos obtendo a pontuação máxima atual.
Não estamos estabelecendo um novo padrão.
Portanto, esse não é necessário.
Muito bem.
Sim.
E também desativamos este telefone aqui.
Está bem.
Então, vamos limpar um pouco essas lacunas.
Perfeito.
Portanto, agora, no início, podemos chamar essa função para obter a pontuação máxima.
Ou aqui, por exemplo, ou talvez ainda mais longe, por exemplo, aqui, e obtenha a pontuação máxima atual.
E isso atribuirá a esse usuário o valor de pontuação máxima e, em seguida, definirá uma nova pontuação máxima.
E então podemos dizer, por exemplo, que a corrente é algo assim.
Tudo bem.
Portanto, você está definindo um novo recorde, mas também podemos acompanhar a pontuação máxima atual.
Quero dizer, isso agora parece absolutamente bagunçado, mas é só isso.
Sim, é apenas o que é possível em nosso treinador e como alcançar certas coisas.
Muito bem.
Perfeito.
Ok, vamos salvar esse e ver se está funcionando.
Sim, aqui podemos ver que essa é uma nova pontuação máxima.
A corrente é 625.
Vamos abrir a cópia da tela.
Sou perfeito.
Está funcionando aqui.
Agora, vamos ver se também podemos definir um novo.
Pontuação máxima.
São mais de 9000.
Sim.
Perfeito.
Agora ele está funcionando exatamente como você gostaria.
E também podemos ver que, oh, não estamos ligando.
Eu me esqueci de algo em todas essas funções.
Não estamos chamando essa impressão.
Pergunte a você mais uma vez.
Portanto, isso é algo que precisamos adicionar no final de todas as funções.
Sim.
Ou seja, também podemos usar o método completo, mas, no final, isso também é perfeitamente aceitável.
Tudo bem.
Agora podemos ver a pontuação máxima atual.
Este é perfeito?
Está bem.
Então, isso é tudo para este vídeo.
Agora mesmo.
Já vimos como podemos criar um pequeno treinador.
Quero dizer, com relação à saída aqui, isso pode ser um pouco melhorado.
Sim.
Assim, podemos manter o controle de determinados estados e também aplicar nossos valores de busca do jogo existente, e podemos
nos divertir muito manipulando as outras funções.
Muito bem.
Como já foi mencionado, se você brincar com este e criar um treinador, fique à vontade para me escrever uma
mensagem com o resultado.
Seria absolutamente incrível para mim ver seu resultado nesse caso, e tenho certeza de que ficaria
muito impressionado com o que você criou aqui.
Isso é tudo para este vídeo no momento.
Essa é apenas a abordagem de alto nível.
Como já mencionado, você pode encontrar uma versão mais detalhada no anexo desta seção aqui.
Eu me diverti muito e espero que você se sinta à vontade para brincar com esse modelo.
Em caso de dúvidas, escreva-me uma mensagem.
Fico muito feliz em poder ajudá-lo a aprimorar seu próprio treinador aqui.
Muito bem.
Perfeito.
Ok, então isso é tudo por enquanto.
E sim, estou realmente ansioso para vê-lo no próximo vídeo.
Vejo você lá.