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

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.

Kardouzo

Craftlandiano
VIP
Entrou
Set 11, 2012
Mensagens
6,603
Cubos
0
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!





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;
 
TequillaZ disse:
Não, o erro acontece também quando o jogo está em primeiro plano.

TequillaZ disse:
Alguem? Revivendo...
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.
TequillaZ disse:
Alguem? Revivendo...
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.
 
NetinGUINCHEIRO disse:
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.
Vou dar uma olhada aqui e testar. Obrigado pela ajuda :D
 
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;
}$$
 
TequillaZ disse:
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!





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;

estou no meu serviço quando chegar em cs vou analisar sua macro, tentarei resolver seu problema

Enviado de meu SM-G530H usando Tapatalk
 
witer disse:
estou no meu serviço quando chegar em cs vou analisar sua macro, tentarei resolver seu problema

Enviado de meu SM-G530H usando Tapatalk
Pode deixar mano, ja conseguimos resolver. Valeu pela atenção.
 
Status
Não está aberto para novas respostas.

Users who are viewing this thread

Voltar
Topo