Introdução ao Comando WALKTO.

Discussão em 'Tutoriais macro' iniciado por Messyeater, 18 Dezembro 2015.

Status do Tópico:
Não esta aberto para novas mensagens.
  1. Messyeater

    Messyeater Craftlandiano

    Afiliado:
    13 Janeiro 2014
    Mensagens:
    6,632
    Curtidas Recebidas:
    1,781
    Curtiu:
    428
    Sexo:
    Masculino
    Localização:
    Steam
    Cubos:
    996.00
    Nick:
    Ryjo
    Clan:
    T0wElHeAdSl4yeRs
    ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
    Prezados, após meses de espera e testes venho aqui dar um "presentinho" de Natal aos Programadores e usuários de Macros, o presentinho é um novo comando relacionada a Movimentação. Antes da Explicação do comando, seus Bugs e Limitações venho dizer o por quê de não ter o postado antes. Eu descobri o comando a 6 meses quando estava traduzindo o Mod Macro da 1.5.2, já que não Havia a linguagem português, encontrei o comando dentre os arquivos do Mod e logo percebi que nunca havia visto o mesmo, fui pesquisar para ver sua utilidade e aplicação e também percebi que o mesmo nem se quer era Público na Internet. Então sem mais Delongas vai a Explicação do mesmo:
    WALKTO
    WALKTO(X,Y,Z,Velocidade,Raio);
    (Andar Para)
    O Comando WALKTO é um comando para andar, basta colocar as coordenadas (X,Y,Z) e o comando irá partir de sua posição atual para a posição indicada. o "Raio" é a distância em que ele pode terminar referente ao seu destino (X,Y,Z) ou seja, se você colocar um raio de 10 blocos ele poderá parar a 10 blocos de distância de seu destino já que num raio de 10 blocos está seu destino. E Velocidade não precisa de explicação né...
    "Tá mais da pra fazer isso com comandos para andar junto como keydown."
    A diferença de Walkto para outros comandos é a forma como ele foi feito, ele usa uma espécie de I.A (inteligência artificial) para andar até o local desejado. "Como assim uma Inteligência Artificial?" Um exemplo básico, se você fosse colocar a Macro para andar em uma linha reta com Keydown(forward) ela andará reto mas se tiver um obstáculo como um bloco na frente ela parará no bloco e ficará ali, já Se usarmos o comando Walkto ela desviará do bloco sozinha sem nenhum outro comando, pois sua I.A identificou um obstáculo e desviou do mesmo.
    Ou seja, basicamente o comando anda para a coordenada definida desviando de obstáculos, se tiver um bloco na frente ele desviará ou ira passar por cima. Se tiver uma parede na frente a macro fará a volta na parede para onde ela acha que têm uma entrada. O comando pode parecer simples, mais vai facilitar muito a vida dos programadores em Macros que usam este tipo de movimentação. É claro que como dito no início do Tópico o comando contém bugs e limitações mais em muitos casos ainda será útil. Abaixo os Bugs e Limitações do mesmo:
    Nos testes o Comando só funciona se seu Destino for menor que 90 Blocos:
    Ex: Seu X é 0, e seu destino é X 100, a macro ficará parada.
    Ou seja, seu destino só pode estar a no Máximo a 90 blocos (média de 70 em diagonal).
    A I.A do comando apresentou algumas falhas nos testes, como tentar pular cercas de Madeira, o que é impossível. Portanto os programadores devem fazer testes antes de postar qualquer macro com o mesmo.
    Outra falha na I.A faz com é que, se têm uma parede na sua frente, mais a "porta" dela está muito longe de você o comando tenta atravessar a parede então testes devem ser feitos antes do uso.
    A I.A do comando até é boa, mais não a sobrecarregue fazendo ela passar em lugares onde ela deverá virar muitas vezes, como labirintos ou lugares com várias vias. Obs: Eu a testei em um Labirinto e não deu muito certo...
    A I.A do comando não reage bem com escadas de Parede, portanto não é aconselhável usar para tal.
    Esses são os Bugs que consegui perceber nos testes, se alguém descobrir mais algum me envie uma MP e estarei atualizando o Tópico. Se alguém tiver dúvida sobre o comando me envie uma MP ou pergunte aqui nos comentários.
    Att. zRyjo
    ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
    CHANGLOG
    -18/12/2015 ► Criação do Tópico.
    ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
     
  2. GoodManLP

    GoodManLP Razoavel
    Banido

    Afiliado:
    8 Abril 2013
    Mensagens:
    965
    Curtidas Recebidas:
    73
    Curtiu:
    0
    Sexo:
    Masculino
    Localização:
    Teto
    Cubos:
    1,061.00
    Nick:
    ydert
    Clan:
    Nenhum
    acho q esse comando vai ajudar mto em muitas coisas, boaa
     
  3. dame

    dame Craftlandiano
    VIP

    Afiliado:
    12 Maio 2013
    Mensagens:
    6,232
    Curtidas Recebidas:
    522
    Curtiu:
    203
    Localização:
    no Trem
    Cubos:
    36.00
    Nick:
    TrollDame / yDame
    Clan:
    ☯ YnY ☯
    Boa jão , queria saber fazer esses bagui de programação
     
  4. Messyeater

    Messyeater Craftlandiano

    Afiliado:
    13 Janeiro 2014
    Mensagens:
    6,632
    Curtidas Recebidas:
    1,781
    Curtiu:
    428
    Sexo:
    Masculino
    Localização:
    Steam
    Cubos:
    996.00
    Nick:
    Ryjo
    Clan:
    T0wElHeAdSl4yeRs
    Vai facilitar 50% a vida dos programadores, nas macros que se movimentam é claro :p
    rsrs Tem que ter paciência, ler re-ler, testar várias vezes...
     
  5. Mtycon

    Mtycon Razoavel
    Banido

    Afiliado:
    8 Junho 2012
    Mensagens:
    1,066
    Curtidas Recebidas:
    96
    Curtiu:
    0
    Sexo:
    Masculino
    Cubos:
    981.00
    Nick:
    Xtycon
    acho q é só pra 1.5.2 em, e tambem eu vi aq que o comando é


    WALKTO(<X>,<Y>,<Z>,<VELOCIDADE>,<RAIO>);
    nao

    WALKTO(<X>,<Y>,<Z>,<RAIO>,<VELOCIDADE>);

    se quiser, pode verificar o codigo fonte da classe do comando aqui em baixo
    package net.eq2online.macros.scripting.actions.game;

    import bdv;
    import bfh;
    import bfi;
    import kx;
    import net.eq2online.macros.MovementInputFromAI;
    import net.eq2online.macros.compatibility.PrivateFields;
    import net.eq2online.macros.scripting.ScriptAction;
    import net.eq2online.macros.scripting.ScriptCore;
    import net.eq2online.macros.scripting.api.IMacro;
    import net.eq2online.macros.scripting.api.IMacroAction;
    import net.eq2online.macros.scripting.api.IReturnValue;
    import net.eq2online.macros.scripting.api.IScriptActionProvider;
    import net.minecraft.client.Minecraft;
    import nx;
    import ny;
    import nz;
    import oj;
    import px;

    public class ScriptActionWalkTo
    extends ScriptAction
    {
    private oj swimmingAI;
    private int lastPosX;
    private int lastPosY;
    private int lastPosZ;
    private int stuckCounter;

    public ScriptActionWalkTo()
    {
    super("walkto");
    }

    public boolean isPermissable()
    {
    return true;
    }

    public String getPermissionGroup()
    {
    return "input";
    }

    public void onStopped(IScriptActionProvider provider, IMacro macro, IMacroAction instance)
    {
    bdv thePlayer = Minecraft.x().g;
    bfh oldMovementInput = (bfh)instance.getState();
    if ((thePlayer != null) && (oldMovementInput != null)) {
    thePlayer.b = oldMovementInput;
    }
    }

    public boolean canExecuteNow(IScriptActionProvider provider, IMacro macro, IMacroAction instance, String rawParams, String[] params)
    {
    bdv thePlayer = Minecraft.x().g;
    bfh oldMovementInput = (bfh)instance.getState();
    if (params.length > 2)
    {

    /*
    X, Y e Z em ordem
    ---------------------------------------------------------------*/
    float xPos = ScriptCore.tryParseFloat(ScriptCore.parseVars(provider, macro, params[0], false), 0.0F);
    float yPos = ScriptCore.tryParseFloat(ScriptCore.parseVars(provider, macro, params[1], false), 0.0F);
    float zPos = ScriptCore.tryParseFloat(ScriptCore.parseVars(provider, macro, params[2], false), 0.0F);
    /*-------------------------------------------------------------*/
    if (oldMovementInput != null)
    {
    if (this.swimmingAI.a()) {
    this.swimmingAI.e();
    }
    thePlayer.aC().e();
    if (thePlayer.aC().f())
    {
    if (this.stuckCounter > 200)
    {
    thePlayer.b = oldMovementInput;
    return true;
    }
    double remaining2D = thePlayer.f(xPos, thePlayer.v, zPos);
    if (remaining2D < 1.0D)
    {
    double deltaX = xPos - thePlayer.u;
    double deltaZ = zPos - thePlayer.w;
    thePlayer.d(deltaX, 0.0D, deltaZ);

    thePlayer.b = oldMovementInput;
    return true;
    }
    if (remaining2D < 5.0D) {
    thePlayer.aA().a(xPos, thePlayer.v + 1.0D, zPos, 1.0F);
    }
    }
    int newPosX = kx.c(thePlayer.u);
    int newPosY = kx.c(thePlayer.v);
    int newPosZ = kx.c(thePlayer.w);
    if ((newPosX == this.lastPosX) && (Math.abs(newPosY = this.lastPosY) < 2) && (newPosZ == this.lastPosZ)) {
    this.stuckCounter += 1;
    } else {
    this.stuckCounter = 0;
    }
    this.lastPosX = newPosX;
    this.lastPosY = newPosY;
    this.lastPosZ = newPosZ;

    thePlayer.aA().c();
    thePlayer.az().a();
    thePlayer.aB().b();
    ((MovementInputFromAI)thePlayer. B).assignValuesFromPlayer(thePlayer);

    return false;
    }
    if (thePlayer != null)
    {
    /*
    VELOCIDADE e RAIO em ordem
    ---------------------------------------------------------------*/
    float speed = params.length > 3 ? Math.min(Math.max(ScriptCore.tryParseFloat(ScriptCore.parseVars(provider, macro, params[3], false), 1.0F), 0.1F), 1.0F) : 1.0F;
    float radius = params.length > 4 ? Math.min(Math.max(ScriptCore.tryParseFloat(ScriptCore.parseVars(provider, macro, params[4], false), 64.0F), 16.0F), 512.0F) : 64.0F;
    /*-------------------------------------------------------------*/

    PrivateFields.navigatorPathSearchRange.set(thePlayer.aC(), Float.valueOf(radius));

    double distance2D = thePlayer.f(xPos, thePlayer.v, zPos);
    if (((thePlayer.b instanceof bfi)) && ((thePlayer.aC().a(xPos, yPos, zPos, speed)) || (distance2D < 5.0D)))
    {
    this.stuckCounter = 0;
    this.swimmingAI = new oj(thePlayer);

    oldMovementInput = thePlayer.b;
    instance.setState(oldMovementInput);

    thePlayer.b = new MovementInputFromAI();
    return false;
    }
    }
    }
    return true;
    }

    public boolean isClocked()
    {
    return false;
    }

    public IReturnValue execute(IScriptActionProvider provider, IMacro macro, IMacroAction instance, String rawParams, String[] params)
    {
    return null;
    }
    }
     
    Malaka81 curtiu isso.
  6. Messyeater

    Messyeater Craftlandiano

    Afiliado:
    13 Janeiro 2014
    Mensagens:
    6,632
    Curtidas Recebidas:
    1,781
    Curtiu:
    428
    Sexo:
    Masculino
    Localização:
    Steam
    Cubos:
    996.00
    Nick:
    Ryjo
    Clan:
    T0wElHeAdSl4yeRs
    kkkkkk sim o comando é da maneira como você disse, foi um simples erro na edição do tópico, muito ctrl+c e v me perdi, desculpas e obrigado por lembrar.
     
  7. SLEEPP

    SLEEPP Mito
    VIP

    Afiliado:
    3 Janeiro 2014
    Mensagens:
    10,481
    Curtidas Recebidas:
    6,084
    Curtiu:
    433
    Sexo:
    Masculino
    Cubos:
    1,515.00
    Nick:
    SLEEP
    YouTube:
    www.youtube.com/SleepGP
    :) Já esta quase pronta uma macro que estou programando com este comando.
    Boa intro.

    Bjos.
     
  8. Mtycon

    Mtycon Razoavel
    Banido

    Afiliado:
    8 Junho 2012
    Mensagens:
    1,066
    Curtidas Recebidas:
    96
    Curtiu:
    0
    Sexo:
    Masculino
    Cubos:
    981.00
    Nick:
    Xtycon
    de boua kkkk
     
  9. zWilliam

    zWilliam Excelente
    Banido

    Afiliado:
    19 Março 2015
    Mensagens:
    4,466
    Curtidas Recebidas:
    276
    Curtiu:
    0
    Sexo:
    Masculino
    Cubos:
    368.00
    Nick:
    zWilliam
    Clan:
    RTk
    Skype:
    zwilliamr
    Tá inovando em ryjo
     
  10. Messyeater

    Messyeater Craftlandiano

    Afiliado:
    13 Janeiro 2014
    Mensagens:
    6,632
    Curtidas Recebidas:
    1,781
    Curtiu:
    428
    Sexo:
    Masculino
    Localização:
    Steam
    Cubos:
    996.00
    Nick:
    Ryjo
    Clan:
    T0wElHeAdSl4yeRs
    Muito tópico ta ligado, ai quando fui fazer esse os dedo tava com parkinson kkkkk
     
  11. Mtycon

    Mtycon Razoavel
    Banido

    Afiliado:
    8 Junho 2012
    Mensagens:
    1,066
    Curtidas Recebidas:
    96
    Curtiu:
    0
    Sexo:
    Masculino
    Cubos:
    981.00
    Nick:
    Xtycon
    é a emoçaum de ter escrito o primeiro topico explicando o comando kkk
     
  12. iTubot

    iTubot Bom
    VIP

    Afiliado:
    9 Setembro 2015
    Mensagens:
    2,084
    Curtidas Recebidas:
    110
    Curtiu:
    0
    Sexo:
    Masculino
    Cubos:
    2,279.00
    Nick:
    eowkeopwkeoekq
    Clan:
    SoP
    Parabens pelo esforço :)
     
  13. HeeySooul

    HeeySooul Craftlandiano

    Afiliado:
    3 Agosto 2014
    Mensagens:
    6,415
    Curtidas Recebidas:
    931
    Curtiu:
    984
    Sexo:
    Masculino
    Localização:
    Canada
    Cubos:
    505.07
    Nick:
    HeySoul
    Clan:
    Avaí FC -q
    Ah muleke, boa, macroeiros darão UP nesse tópico klkkkk
     
  14. iKewaii

    iKewaii Bom
    VIP

    Afiliado:
    3 Abril 2014
    Mensagens:
    1,943
    Curtidas Recebidas:
    173
    Curtiu:
    116
    Sexo:
    Masculino
    Cubos:
    673.00
    Nick:
    iKewaii
  15. Messyeater

    Messyeater Craftlandiano

    Afiliado:
    13 Janeiro 2014
    Mensagens:
    6,632
    Curtidas Recebidas:
    1,781
    Curtiu:
    428
    Sexo:
    Masculino
    Localização:
    Steam
    Cubos:
    996.00
    Nick:
    Ryjo
    Clan:
    T0wElHeAdSl4yeRs
    Haha valeu, também tenho planos para ele, mas estou meio ocupado con outras coisas, boa sorte ai e se você acharem algum bugme avisem para que eu possa atualizar o tópico.
    Kkk primeiro tópico a deixa ele público ;)
    Rsrs /o/
    Valeu [emoji14]
     
  16. BigMikeGR

    BigMikeGR Craftlandiano
    VIP

    Afiliado:
    7 Novembro 2014
    Mensagens:
    23,096
    Curtidas Recebidas:
    1,695
    Curtiu:
    872
    Sexo:
    Masculino
    Cubos:
    1,146.33
    Nick:
    BigMike_GR
    Finalmente tu diz o nome da macro -_-

    Enviado de meu LG-E435f usando Tapatalk
     
  17. Messyeater

    Messyeater Craftlandiano

    Afiliado:
    13 Janeiro 2014
    Mensagens:
    6,632
    Curtidas Recebidas:
    1,781
    Curtiu:
    428
    Sexo:
    Masculino
    Localização:
    Steam
    Cubos:
    996.00
    Nick:
    Ryjo
    Clan:
    T0wElHeAdSl4yeRs
    É o jeito né :p
    Haha estavam anciosos né
     
  18. XablauXablante

    XablauXablante Excelente
    VIP

    Afiliado:
    22 Julho 2014
    Mensagens:
    3,953
    Curtidas Recebidas:
    328
    Curtiu:
    459
    Sexo:
    Masculino
    Localização:
    log(%XPOS%,%...
    Cubos:
    1,060.00
    Nick:
    Nickloko
    Clan:
    EMP
    Skype:
    Digo não '-'
    Salvei os tópicos nos favoritos,vou testar na 1.7,ver se consigo fazer umas gambiarras...
     
  19. Messyeater

    Messyeater Craftlandiano

    Afiliado:
    13 Janeiro 2014
    Mensagens:
    6,632
    Curtidas Recebidas:
    1,781
    Curtiu:
    428
    Sexo:
    Masculino
    Localização:
    Steam
    Cubos:
    996.00
    Nick:
    Ryjo
    Clan:
    T0wElHeAdSl4yeRs
    Boa sorte amigo, infelizmente não sei te dizer se o mesmo se aplica a 1.7/1.8 creio eu que não, mas não tenho certeza, uma pena pois o comando é muito legal :)
     
  20. Gavstriky

    Gavstriky Hardcore
    VIP

    Afiliado:
    26 Março 2015
    Mensagens:
    17,437
    Curtidas Recebidas:
    2,206
    Curtiu:
    744
    Sexo:
    Masculino
    Cubos:
    1,610.75
    Nick:
    RiowZ
    Ryjo mitando nas macros.
    Boa ..
     
Status do Tópico:
Não esta aberto para novas mensagens.