Duvida, como fazer 2 ações na macro de uma vez

Bem-vindo!

Ao se registrar conosco, você poderá discutir, compartilhar e enviar mensagens privadas com outros membros da nossa comunidade.

Inscreva-se agora!
Status
Não está aberto para novas respostas.

zMatheus22

Craftlandiano
VIP
Entrou
Abr 26, 2013
Mensagens
2,269
Cubos
0
Bom, estou aprendendo a criar macros, e estou fazendo uma de escavação.
porem tenho 1 problema.

o que ela faz e olhar para os blocos do lado, e ficar colocando e quebrando a grama com a pá,
pelo menos e esse o objetivo, porem eu nao consigo fazer com que faça as 2 coisas de 1 vez;
se eu aperto o botao 1 vez, ela apenas fica olhando pros lados, mas nao escava. se eu apertar denovo, ai ela funciona completa. as 2 funcoes, queria juntar tudo pra apetar so 1 vez, eu ia fazer o sistema de reparação automatica tambem,
mas preciso muito saber como fazer varias funcoes em 1 macro só.

o codigo é esse:

$${
toggle(esc)
if(esc)
LOG("&6[zESC]&bLIGADA")
SET(#pa,277)
SET(#durab,75)
SET(#delay,10ms)
SET(#bloco,2)

do;
pick(277);
key(attack);
wait(115ms);
pick(2);
key(use);
loop;
endif;

do
look(60,40)
wait(500ms)
look(90,40)
wait(500ms)
look(110,40)
wait(500ms)
look(90,40)
wait(500ms)
look(60,40)
loop
endif

else
LOG("&6[zESC]&cDESLIGADA")
stop()
endif
}$$
 
Assim, seu objetivo é olhar para os blocos, ir colocando blocos e atacando?
 
Assim, seu objetivo é olhar para os blocos, ir colocando blocos e atacando?
OLHA QUEM TA AQUI JESUS, ME SALVA KKK, entao, queria fazer as 2 coisas tipo funcionarem juntas sabe. e isso ai
ela fica olhando e ao msm tempo quebra e poe bloco, ja consegui fazer o codigo das 2 coisas, mas so funciona 1 delas de todas as maneiras q eu tento

codigo de ficar olhando:
do
look(60,40)
wait(500ms)
look(90,40)
wait(500ms)
look(110,40)
wait(500ms)
look(90,40)
wait(500ms)
look(60,40)
loop

codigo de quebrar e por bloco

do
pick(277)
key(attack)
wait(115ms)
pick(2)
key(use)
loop

mas nao consigo juntar os 2, sabe funcionar ao mesmo tempo
 
A função DO é um loop, ela faz ou infinitamente ou até atender um critério. No caso da macro que voce colou você está preso em um loop infinito mas precisa fazer os 2, marcado em laranja.
Não sei se esse é só uma parte do código mas tem uns endif fora de lugar, marcado em vermelho.
Estaõ faltando tambem alguns semicolons (ponto e virgula) no final de certas linhas.

$${
toggle(esc)
if(esc)
LOG("&6[zESC]&bLIGADA")
SET(#pa,277)
SET(#durab,75)
SET(#delay,10ms)
SET(#bloco,2)

do;
pick(277);
key(attack);
wait(115ms);
pick(2);
key(use);
loop;

endif;

do
look(60,40)
wait(500ms)
look(90,40)
wait(500ms)
look(110,40)
wait(500ms)
look(90,40)
wait(500ms)
look(60,40)
loop

endif

else
LOG("&6[zESC]&cDESLIGADA")
stop()
endif
}$$

A maneira como eu faria partindo desse código ai seria assim:
Código:
$${
    toggle(esc);
    if(esc);
        LOG("&6[zESC]&bLIGADA");
        SET(#pa,277);
        SET(#durab,75);
        SET(#bloco,2);
        SET(#dir,1);
        do;
            if(%#dir%=1);
                look(60,40);
                #dir=2;
            elseif(%#dir%=2);
                look(90,40);
                #dir=3;
            elseif(%#dir%=3);
                look(110,40);
                #dir=4;
            elseif(%#dir%=4);
                look(90,40);
                #dir=5;
            elseif(%#dir%=5);
                look(60,40);
                #dir=1;
            endif;
     
            pick(277);
            key(attack);
            wait(115ms);
            pick(%#bloco%);
            key(use);
        loop;
    else;
        LOG("&6[zESC]&cDESLIGADA");
        stop();
    endif;
}$$
 
Última edição:
O do() e o for(), que são os comandos utilizados para repetição, atuam sempre individualmente e nada ocorre até que eles terminem, então talvez fosse melhor você intercalar, tipo

&delay = "50ms";
#etapa = 1;

do();
if(#etapa == 1); look(60,40); endif;
if(#etapa == 2); look(90,40); endif;
if(#etapa == 3); look(120,40); endif;
if(#etapa == 4); look(90,40); endif;

pick(277); wait(%&delay%); key(attack); wait(%&delay%);
pick(2); wait(%&delay%); key(use); wait(%&delay%);

inc(#etapa,1);
if(#etapa == 5); #etapa = 1; endif;
loop;


ou você pode fazer em dois arquivos diferentes, cada um com um do(), e quando inicia um você coloca
exec<arquivo2la.txt>
 
A função DO é um loop, ela faz ou infinitamente ou até atender um critério. No caso da macro que voce colou você está preso em um loop infinito mas precisa fazer os 2, marcado em laranja.
Não sei se esse é só uma parte do código mas tem uns endif fora de lugar, marcado em vermelho.
Estaõ faltando tambem alguns semicolons (ponto e virgula) no final de certas linhas.

$${
toggle(esc)
if(esc)
LOG("&6[zESC]&bLIGADA")
SET(#pa,277)
SET(#durab,75)
SET(#delay,10ms)
SET(#bloco,2)

do;
pick(277);
key(attack);
wait(115ms);
pick(2);
key(use);
loop;

endif;

do
look(60,40)
wait(500ms)
look(90,40)
wait(500ms)
look(110,40)
wait(500ms)
look(90,40)
wait(500ms)
look(60,40)
loop

endif

else
LOG("&6[zESC]&cDESLIGADA")
stop()
endif
}$$

A maneira como eu faria partindo desse código ai seria assim:
Código:
$${
    toggle(esc);
    if(esc);
        LOG("&6[zESC]&bLIGADA");
        SET(#pa,277);
        SET(#durab,75);
        SET(#delay,10ms);
        SET(#bloco,2);
        SET(#dir,1);
        do;
            if(%#dir%=1);
                look(60,40);
                #dir=2;
            elseif(%#dir%=2);
                look(90,40);
                #dir=3;
            elseif(%#dir%=3);
                look(110,40);
                #dir=4;
            elseif(%#dir%=4);
                look(90,40);
                #dir=5;
            elseif(%#dir%=5);
                look(60,40);
                #dir=1;
            endif;
    
            pick(277);
            key(attack);
            wait(115ms);
            pick(%#bloco%);
            key(use);
        loop;
    else;
        LOG("&6[zESC]&cDESLIGADA");
        stop();
    endif;
}$$
Pois é, eu faria algo semelhante a isso também. Só tem que cuidar que o #delay que você setou não pode ir acompanhado do 'ms'
 
@Xylic muito dahora, mano como praticamente vc fez a macro toda seguir o delay ali do 115ms, tipo, ela em vez de so aumentar o delay do auto click, aumenta tbm da visao, sensasional mas como kk
@lomexicano agora tudo faz sentido, o do/loop nao pode ser usado mais de 1 vez?
 
@Xylic muito dahora, mano como praticamente vc fez a macro toda seguir o delay ali do 115ms, tipo, ela em vez de so aumentar o delay do auto click, aumenta tbm da visao, sensasional mas como kk
@lomexicano agora tudo faz sentido, o do/loop nao pode ser usado mais de 1 vez?

O do() vai ficar sendo repetido até que algo faça ele parar. Você pode parar ele com um comando break;, por exemplo. Mas enquanto ele está sendo reproduzido, naquele código, nada além do que está dentro dos seus parâmetros (antes do loop; ) vai acontecer.
 
@lomexicano agora tudo faz sentido, o do/loop nao pode ser usado mais de 1 vez?
Você pode usar ele quantas vezes quiser, inclusive um dentro do outro. Nada impede. Lembre-se que o macro vai lendo o código de cima para baixo.
do();
fazer algo
loop; --> o macro vai ler isso aqui como um comando para voltar para a linha do do().
 
Última edição:
Status
Não está aberto para novas respostas.

Users who are viewing this thread

Voltar
Topo