[Ajuda] Dúvida em um código Macro.

Discussão em 'Informática/Tecnologia' iniciado por Kardouzo, 18 Novembro 2017.

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

    Kardouzo Craftlandiano
    VIP

    Afiliado:
    11 Setembro 2012
    Mensagens:
    6,603
    Curtidas Recebidas:
    1,182
    Curtiu:
    1,591
    Sexo:
    Masculino
    Ocupação:
    Engenheiro...
    Cubos:
    47.00
    Nick:
    xReTTurnS
    Clan:
    -
    ATENÇÃO
    SE VOCÊ É UMA PESSOA QUE VEIO SIMPLESMENTE COMENTAR ''NÃO SEI RESOLVER, MANDA MP PRA TAL PESSOA'', OU ''BOA SORTE AÍ PRA ACHAR ALGUÉM'', OU PIOR AINDA, VIER DIZER QUE A CL NÃO DA SUPORTE PRA MACRO, EU PREFIRO QUE NEM COMENTE. É POR ISSO QUE ESTOU POSTANDO AQUI E NÃO EM ''DÚVIDAS GERAIS''.
    NÃO POLUA O TÓPICO!
    OBRIGADO!
    [hr]
    Boa noite,
    Recentemente um amigo meu resolveu entrar no ramo de programação e decidiu criar um código de Macro. No entanto, ele está tendo um problema com o código. Do jeito que o código abaixo está, tudo funciona perfeitamente. Porém, quando meu amigo deseja alterar o local de venda de lápis-lazuli, do mesmo jeito que fez com o teletransporte inicial da mina, começam a ocorrer problemas. O que acontece é o seguinte: Ao invés do macro minerar, ele começa a simplesmente funcionar como um ''auto-click'', e fica apenas batendo no minério, sem quebrá-lo. Alguém sabe como resolver esse problema? Deixarei o código abaixo caso alguém saiba como arrumar o problema. Caso contrário, por favor, não comente no tópico. Obrigado!

    $${
    if(mminerar);
    unset(mminerar);log( );
    log(&9&lMacro Mineracao);
    log(&6&l1.0);
    log(&6&l&4&lDesligado);
    log(&9&l---------------);log( );
    #ciclo=0;#lucro=0;
    keyup(forward);keyup(back);
    stop;
    else;
    set(mminerar);log( );
    log(&9&lMacro Mineracao);
    log(&6&l1.0);
    log(&6&l&2&lLigado);
    log(&9&l---------------);log( );
    achievementget(Hora de minerar,278);
    #ciclo=0;#volta=0;#inv=95;
    wait(250ms);#delay=%#delay%*1000;#delay=%#delay%+1000;
    echo(/warp mina);wait(6);keydown(forward); wait(12); keyup(forward);keydown(right); wait(300ms); keyup(right);keydown(jump); wait(1ms); keyup(jump); keydown(forward); wait(2100ms); keyup(forward);
    do;ifmatches(%GUI%,chat);keyup(forward);else;slot(1);
    if(%HITID%=21);key(attack);unsprint;keydown(forward);look(%#look%,40);inc(#inv);
    else;wait(115ms);keyup(forward);wait(350ms);look(+90,40);wait(350ms);inc(#volta,1);endif;
    &look=%DIRECTION%;
    if(%&look%="N");look(0,40);#look=0;
    elseif(%&look%="S");look(180,40);#look=180;
    elseif(%&look%="E");look(90,40);#look=90;
    elseif(%&look%="W");look(270,40);#look=270;endif;
    if(#volta>4);getidrel(0,-1,0,#bloco);
    if(#bloco=21);#volta=0;#altura=%YPOS%;
    do;look(+0,90);key(attack);until(%YPOS%!=%#altura%);
    wait(500ms);look(+0,40);wait(500ms);
    else;echo(/warp mina);#volta=0;wait(5);look(%#look%,40);endif;
    endif;
    if(%#inv%>100);#inv=0;gui(inventory);getslotitem(35,#id);gui;
    if(#id>0);inc(#ciclo,1);#lucro=%#preco%*%#ciclo%;
    log( );log(&9&lMacro Mineracao);
    log(&6&l1.0);
    log(&6&l&e&lVendendo);
    log(&9&l----------------------);log( );
    echo(/warp mina);wait(5);do(4);key(attack);wait(250ms);loop;wait(500ms);
    look(-90,0);
    gui(inventory);
    for(#limpar,9,44);
    getslotitem(%#limpar%,#id);
    if(#id=278);elseif(#id=257);elseif(#id=351);elseif(#id=19);else;
    slotclick(%#limpar%);wait(110ms);slotclick(-999);endif;
    next;gui;echo(/g Macro Mineracao 1.0 de RedEdition);
    echo(/warp mina);wait(5);endif;endif;
    if(%DURABILITY%<1000);echo(/reparar);wait(1250ms);endif;
    endif;
    loop;
    endif;
    }$$


    @EDIT: Meu amigo achou a linha defeituosa, mas não sabe qual é o erro presente nela. Alguém sabe resolver? Grato! :


    else;echo(/warp mina);#volta=0;wait(5);look(%#look%,40);keydown(forward); wait(12); keyup(forward);keydown(right); wait(300ms); keyup(right);keydown(jump); wait(1ms); keyup(jump); keydown(forward); wait(2100ms); keyup(forward);endif;
    endif;
     
  2. Kardouzo

    Kardouzo Craftlandiano
    VIP

    Afiliado:
    11 Setembro 2012
    Mensagens:
    6,603
    Curtidas Recebidas:
    1,182
    Curtiu:
    1,591
    Sexo:
    Masculino
    Ocupação:
    Engenheiro...
    Cubos:
    47.00
    Nick:
    xReTTurnS
    Clan:
    -
    Alguem? Revivendo...
     
  3. netin

    netin Hardcore
    VIP

    Afiliado:
    17 Fevereiro 2014
    Mensagens:
    9,756
    Curtidas Recebidas:
    2,798
    Curtiu:
    685
    Sexo:
    Masculino
    Localização:
    /Gladiador
    Cubos:
    455.38
    Nick:
    iNetinBR
    Clan:
    Bkillers
    isso quando ele está em segundo plano?
     
  4. Kardouzo

    Kardouzo Craftlandiano
    VIP

    Afiliado:
    11 Setembro 2012
    Mensagens:
    6,603
    Curtidas Recebidas:
    1,182
    Curtiu:
    1,591
    Sexo:
    Masculino
    Ocupação:
    Engenheiro...
    Cubos:
    47.00
    Nick:
    xReTTurnS
    Clan:
    -
    Não, o erro acontece também quando o jogo está em primeiro plano.
     
  5. netin

    netin Hardcore
    VIP

    Afiliado:
    17 Fevereiro 2014
    Mensagens:
    9,756
    Curtidas Recebidas:
    2,798
    Curtiu:
    685
    Sexo:
    Masculino
    Localização:
    /Gladiador
    Cubos:
    455.38
    Nick:
    iNetinBR
    Clan:
    Bkillers
    tenta arrumar algumas vareáveis que estão de maneira errada no código, elas são colocadas dentro de %% quando são usadas, mas não quando são declaradas.
    exemplo.
    if(#volta>4);getidrel(0,-1,0,#bloco);
    if(#bloco=21);#volta=0;#altura=%YPOS%;
    ficaria

    if(%#volta%>4);getidrel(0,-1,0,#bloco);
    if(%#bloco%=21);#volta=0;#altura=%YPOS%;


    elas devem ser postadas desse jeito.

    #dima=0;
    for(#SLOTVOCÊDECLARA,9,44);
    getslotitem(%#SLOTVOCÊUSA%,#IDVOCÊDECLARA,#STACKVOCÊDECLARA);
    ifmatches(%#IDVOCÊUSA%,"diamond");inc(%#dima%,1);endif;
    next;
    log(Você tem %#dima% Slots com diamantes.);

    fora isso não posso ajudar muito já que não estou no servidor em questão, mas você pode ir botando logs em cada linha da macro para ajudar a achar a linha defeituosa e testa-la separadamente.

    pelo menos é assim que eu faço.

    tenta arrumar algumas vareáveis que estão de maneira errada no código, elas são colocadas dentro de %% quando são usadas, mas não quando são declaradas.
    exemplo.
    if(#volta>4);getidrel(0,-1,0,#bloco);
    if(#bloco=21);#volta=0;#altura=%YPOS%;
    ficaria

    if(%#volta%>4);getidrel(0,-1,0,#bloco);
    if(%#bloco%=21);#volta=0;#altura=%YPOS%;


    elas devem ser postadas desse jeito.

    #dima=0;
    for(#SLOTVOCÊDECLARA,9,44);
    getslotitem(%#SLOTVOCÊUSA%,#IDVOCÊDECLARA,#STACKVOCÊDECLARA);
    ifmatches(%#IDVOCÊUSA%,"diamond");inc(%#dima%,1);endif;
    next;
    log(Você tem %#dima% Slots com diamantes.);

    fora isso não posso ajudar muito já que não estou no servidor em questão, mas você pode ir botando logs em cada linha da macro para ajudar a achar a linha defeituosa e testa-la separadamente.

    pelo menos é assim que eu faço.
    tenta arrumar essas vareáveis, elas são colocadas dentro de %% quando são usadas, mas não quando são declaradas.
    exemplo.
    #dima=0;
    for(#SLOTVOCÊDECLARA,9,44);
    getslotitem(%#SLOTVOCÊUSA%,#IDVOCÊDECLARA,#STACKVOCÊDECLARA);
    ifmatches(%#IDVOCÊUSA%,"diamond");inc(%#dima%,1);endif;
    next;
    log(Você tem %#dima% Slots com diamantes.);

    fora isso não posso ajudar muito já que não estou no servidor em questão, mas você pode ir botando logs em cada linha da macro para ajudar a achar a linha defeituosa e testa-la separadamente.

    pelo menos é assim que eu faço.
     
    MAAAXZZ e Kardouzo curtiram isso.
  6. Kardouzo

    Kardouzo Craftlandiano
    VIP

    Afiliado:
    11 Setembro 2012
    Mensagens:
    6,603
    Curtidas Recebidas:
    1,182
    Curtiu:
    1,591
    Sexo:
    Masculino
    Ocupação:
    Engenheiro...
    Cubos:
    47.00
    Nick:
    xReTTurnS
    Clan:
    -
    Vou dar uma olhada aqui e testar. Obrigado pela ajuda :D
     
  7. Kardouzo

    Kardouzo Craftlandiano
    VIP

    Afiliado:
    11 Setembro 2012
    Mensagens:
    6,603
    Curtidas Recebidas:
    1,182
    Curtiu:
    1,591
    Sexo:
    Masculino
    Ocupação:
    Engenheiro...
    Cubos:
    47.00
    Nick:
    xReTTurnS
    Clan:
    -
    Tópico atualizado.
     
  8. Kardouzo

    Kardouzo Craftlandiano
    VIP

    Afiliado:
    11 Setembro 2012
    Mensagens:
    6,603
    Curtidas Recebidas:
    1,182
    Curtiu:
    1,591
    Sexo:
    Masculino
    Ocupação:
    Engenheiro...
    Cubos:
    47.00
    Nick:
    xReTTurnS
    Clan:
    -
    Alguém??? É urgente
     
  9. Nah

    Nah Razoavel
    VIP Banido

    Afiliado:
    1 Agosto 2017
    Mensagens:
    270
    Curtidas Recebidas:
    64
    Curtiu:
    123
    Sexo:
    Feminino
    Localização:
    n sei
    Cubos:
    318.00
    Nick:
    sei la po
    Eae, boa sorte pra teu amigo ae, macro é muito fácil cara, depois que você pega o raciocino geral, você embala

    Analisei o código, e o problema é o seguinte:

    Conforme macro existe um delay entre a realização de um código para o outro (que, posso dizer até onde sei é quase que 1T), o processo aonde a macro tem que bater no bloco (quebrar) contem muitas linhas de código junto com ela dentro do do(); (é um problema pra códigos grandes)

    Exemplo, imaginamos que você cria um do(); e informa o loop; 100 linhas abaixo, ou seja (esses números são as linhas)

    1. do();
    2.
    3.
    4-95.
    96.
    97.
    98.
    99.
    100. loop;

    dentro desses espaços fingimos ter cada linha um comando de macro, porem, a partir que entra do do() até chegar no loop; para repetir o processo a macro iria, demorar, em cerca quase de 12T de atraso (não corretamente, apenas um exemplo), e conforme isso, se o key(attack); estivesse no meio dessas linhas, até a macro chegar no ponto loop; diríamos que o processo pra bater no bloco novamente pra poder quebrar reseta, e assim fazendo como um hit normal (todo mundo sabe que para quebrar um bloco não pode haver tempo entre um hit ao outro)

    Um comando bom que acaba totalmente com o delay de quase 1T é o unsafe(); e endunsafe,

    unsafe();
    do();
    log("Eae");
    loop;
    endunsafe;

    Tudo que estiver dentro do unsafe() e endunsafe, ira realizar rapidamente sem delay nem um (muito, mais muito mais rápido que o normal de uma macro), porem, não recomendo usar isso já que a sua macro está totalmente completa (pode causar danos como os ifs e gui() )

    Uma outra dica boa e relevante que dou, é você usar outro do();loop; no key(attack), analisando o tempo necessario pra quebrar o bloco, exemplo, pra você atirar uma flecha, basta usar:

    do(40);
    key(use);
    loop;

    Percebe que usei dentro dos parâmetros do do() "40", isso será quantas vezes que o do() repetira, e, conforme nisso, é o tempo aonde o minecraft exato pra atirar uma flecha (pode testar ;)

    Mesma coisa para quebrar um minério, porem analise quanto tempo leva pra quebrar o bloco com a picareta desejada, depois, coloque o key(attack); dentro de um do(); especifico, tipo:

    do(12);
    key(attack);
    loop;

    (Foi um exemplo)

    Outra dica, recomendo usar notepad++ programado na linguagem java, vem ja com alguns conceitos para macro (também o TAB [para deixar légivel qual código está dentro de um conceito], que é muito legível entender se você começar a usar nas macros exemplo:)
    Código:
    $${
    if(macro_exemplo);
        unset(macro_exemplo);
        log("&cDesabilitando");
    else;
        set(macro_exemplo);
        log("&aHabilitando");
        do();
            key(attack);
            wait(5ms);
        loop;
    endif;
    }$$
    
     
    Kardouzo curtiu isso.
  10. ObeyCronOs_

    ObeyCronOs_ Neutro

    Afiliado:
    26 Dezembro 2014
    Mensagens:
    316
    Curtidas Recebidas:
    23
    Curtiu:
    43
    Sexo:
    Masculino
    Cubos:
    334.45
    Nick:
    VingadorOficce
    Clan:
    SOl
    estou no meu serviço quando chegar em cs vou analisar sua macro, tentarei resolver seu problema

    Enviado de meu SM-G530H usando Tapatalk
     
  11. Kardouzo

    Kardouzo Craftlandiano
    VIP

    Afiliado:
    11 Setembro 2012
    Mensagens:
    6,603
    Curtidas Recebidas:
    1,182
    Curtiu:
    1,591
    Sexo:
    Masculino
    Ocupação:
    Engenheiro...
    Cubos:
    47.00
    Nick:
    xReTTurnS
    Clan:
    -
    Pode deixar mano, ja conseguimos resolver. Valeu pela atenção.
     
  12. EscGUs

    EscGUs Excelente
    VIP

    Afiliado:
    28 Março 2015
    Mensagens:
    1,219
    Curtidas Recebidas:
    296
    Curtiu:
    315
    Sexo:
    Masculino
    Localização:
    Tangamandápio
    Cubos:
    644.00
    Nick:
    Nightmare2mil
    Clan:
    SoS
    Discord:
    MrGUs#3334
    Bom tópico!
     
Status do Tópico:
Não esta aberto para novas mensagens.