[DÚVIDA] Como faço essa macro não ter erro?

Bem-vindo!

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

Inscreva-se agora!

Essa macro seria usada?

  • Sim

    Votos: 1 100.0%
  • Não

    Votos: 0 0.0%

  • Total de eleitores
    1
  • Poll closed .
Status
Não está aberto para novas respostas.

SHORT

Neutro
Entrou
Set 8, 2019
Mensagens
12
Cubos
0
Olá!
Atualmente estou tentando criar uma macro de pesca, que possa detectar o inv cheio, ir para /home lava e após isso drope os itens inúteis na lava, e volte a pescar.

Eu tentei fazer desta forma, mas não sei como arrumar, sempre dá erro no script D:

$${

unset(&id_inutil[]);
&id_inutil[] = 268; // Madeira
&id_inutil[] = 269; // Madeira
&id_inutil[] = 270; // Madeira
&id_inutil[] = 271; // Madeira
&id_inutil[] = 290; // Madeira

&id_inutil[] = 272; // Pedra
&id_inutil[] = 273; // Pedra
&id_inutil[] = 274; // Pedra
&id_inutil[] = 275; // Pedra
&id_inutil[] = 291; // Pedra

&id_inutil[] = 298; // Couro
&id_inutil[] = 299; // Couro
&id_inutil[] = 300; // Couro
&id_inutil[] = 301; // Couro

if(x);
log("&8[MACRO] O Macro foi &cDESLIGADO&8!");
log("&8Foram pescados &c%#peixe% &8peixes.");
log("&8A vara foi reparada &c%#rep% &8vezes.");
unset(x);
stop();
else;
log("&8[MACRO] O Macro acaba de ser ligado &c%PLAYER%&8.");
ifmatches(%DIRECTION%,N);&dir=NORTH;endif;
ifmatches(%DIRECTION%,S);&dir=SOUTH;endif;
ifmatches(%DIRECTION%,W);&dir=WEST;endif;
ifmatches(%DIRECTION%,E);&dir=EAST;endif;
do();
echo(/home lava)
gui(inventory);
until(%GUI% == "GUIINVENTORY");

wait(500ms);


#slot = -1;

foreach(&id_comidas[],#id_de_algo_inutil);
getslot(%#id_de_algo_inutil%,#slot);
if(#slot != -1); ///// caso #slot não seja -1:

#foodid = #id_de_algo_inutil;
break;
endif;

next;

if((#slot != -1)&&(#slot != 44));

slotclick(%#slot%,l,false);
wait(500ms);

keydown(ctrl);
keyup(Q);

wait(100ms);
slotclick(44,l,false);
wait(100ms);
slotclick(%#slot%,l,false);
endif;

wait(500ms);



do(100);
if(%DURABILITY%<15);
echo(/fix);
wait(100ms);
do;
endif;
loop;
endif;
}$$



 
Última edição:
Okay to vendo do celular então não testei no Mine exatamente mas vendo assim por cima dá pra ver uns erros,
Quando ele dá echo(/home lava) logo no começo faltou um " ; "
Perto do final tem um do(100); blá blá blá e um "do" antes do "endif;" tira ele pq ele n faz nada ali ( e vc n colocou um "loop"ou , " until" dps dele, tecnicamente esse "do" ainda está em aberto)
Isso deve fazer parar de dar a msg de erro do script.
Me parece que vc está tentando jogar o iten fora fazendo a macro apertar ctrl e q certo?
Isso é legal mais meio besta, faz a macro clicar primeiro no slot e dps clicar num slot q n existe ( tipo -99) que ela joga o item pra fora do inv (mais fácil!)
Exemplo:
slotclick(%#slot%,l,false);
wait(50ms);
slotclick(-99,l,false);

Espero ter ajudado
 
O erro de script que está sendo gerado está nesta última parte:

Código:
do(100);
if(%DURABILITY%<15);
echo(/fix);
wait(100ms);
do;
endif;
loop;

Você iniciou dois do(), que necessitam ser finalizados em um loop, um until ou um while (cada). Você também iniciou um If, que necessita um endif.

Esta última parte pode ficar assim:

Código:
Do(100);
if(%DURABILITY%<15);
echo(/fix);
wait(500ms);
endif;
Wait(500ms); // delay que será repetido 100 vezes;
loop;

Bom, minhas dicas:
Na parte do interruptor da macro, lá no começo, você esqueceu de setar x como true quando a macro é ligada "set(x)". Além disso, deixou o endif (vinculado à alavanca) lá no final do código, mas ele funcionaria já ali em cima :)

Código:
if(x);
    log("&8[MACRO] O Macro foi &cDESLIGADO&8!");
    log("&8Foram pescados &c%#peixe% &8peixes.");
    log("&8A vara foi reparada &c%#rep% &8vezes.");
    unset(x);
    stop();
else;
    log("&8[MACRO] O Macro acaba de ser ligado &c%PLAYER%&8.");
    Set(x);
Endif;

Outra coisa é que, para dropar um item fora, basta o comando slotclick(-999). Os comandos keydown e keyup não podem ser aplicados à teclas como Q e Ctrl ;)

Quando o esquema estiver funcionando, lembre-se de adicionar um do()+loop que percorra todo o código que você quer repetir, pois da forma como está ele será executado apenas uma vez.

Qualquer coisa estamos aí.
 
Última edição:
O macro simplesmente, está me levando para a /home lava com meu inv aberto, e nada mais.

$${

unset(&id_inutil[]);
&id_inutil[] = 268; // Madeira
&id_inutil[] = 269; // Madeira
&id_inutil[] = 270; // Madeira
&id_inutil[] = 271; // Madeira
&id_inutil[] = 290; // Madeira

&id_inutil[] = 272; // Pedra
&id_inutil[] = 273; // Pedra
&id_inutil[] = 274; // Pedra
&id_inutil[] = 275; // Pedra
&id_inutil[] = 291; // Pedra

&id_inutil[] = 298; // Couro
&id_inutil[] = 299; // Couro
&id_inutil[] = 300; // Couro
&id_inutil[] = 301; // Couro

if(x);
log("&8[MACRO] O Macro foi &cDESLIGADO&8!");
log("&8Foram pescados &c%#peixe% &8peixes.");
log("&8A vara foi reparada &c%#rep% &8vezes.");
unset(x);
stop();
else;
log("&8[MACRO] O Macro acaba de ser ligado &c%PLAYER%&8.");
Set(x);
Endif;
ifmatches(%DIRECTION%,N);&dir=NORTH;endif;
ifmatches(%DIRECTION%,S);&dir=SOUTH;endif;
ifmatches(%DIRECTION%,W);&dir=WEST;endif;
ifmatches(%DIRECTION%,E);&dir=EAST;endif;

do();
echo(/home lava);
gui(inventory);
until(%GUI% == "GUIINVENTORY");
wait(500ms);
#slot = -1;

foreach(&id_comidas[],#id_de_algo_inutil);
getslot(%#id_de_algo_inutil%,#slot);
if(#slot != -1); ///// caso #slot não seja -1:

#pescaid = #id_de_algo_inutil;
break;
endif;

next;

if((#slot != -1)&&(#slot != 44));

slotclick(%#slot%,l,false);
wait(500ms);
slotclick(-999,l,false)
wait(100ms);
endif;
wait(500ms);
Do(100);
if(%DURABILITY%<15);
echo(/fix);
wait(500ms);
endif;
Wait(500ms);
loop;

}$$
 
O macro simplesmente, está me levando para a /home lava com meu inv aberto, e nada mais.

$${

unset(&id_inutil[]);
&id_inutil[] = 268; // Madeira
&id_inutil[] = 269; // Madeira
&id_inutil[] = 270; // Madeira
&id_inutil[] = 271; // Madeira
&id_inutil[] = 290; // Madeira

&id_inutil[] = 272; // Pedra
&id_inutil[] = 273; // Pedra
&id_inutil[] = 274; // Pedra
&id_inutil[] = 275; // Pedra
&id_inutil[] = 291; // Pedra

&id_inutil[] = 298; // Couro
&id_inutil[] = 299; // Couro
&id_inutil[] = 300; // Couro
&id_inutil[] = 301; // Couro

if(x);
log("&8[MACRO] O Macro foi &cDESLIGADO&8!");
log("&8Foram pescados &c%#peixe% &8peixes.");
log("&8A vara foi reparada &c%#rep% &8vezes.");
unset(x);
stop();
else;
log("&8[MACRO] O Macro acaba de ser ligado &c%PLAYER%&8.");
Set(x);
Endif;
ifmatches(%DIRECTION%,N);&dir=NORTH;endif;
ifmatches(%DIRECTION%,S);&dir=SOUTH;endif;
ifmatches(%DIRECTION%,W);&dir=WEST;endif;
ifmatches(%DIRECTION%,E);&dir=EAST;endif;

do();
echo(/home lava);
gui(inventory);
until(%GUI% == "GUIINVENTORY");
wait(500ms);
#slot = -1;

foreach(&id_comidas[],#id_de_algo_inutil);
getslot(%#id_de_algo_inutil%,#slot);
if(#slot != -1); ///// caso #slot não seja -1:

#pescaid = #id_de_algo_inutil;
break;
endif;

next;

if((#slot != -1)&&(#slot != 44));

slotclick(%#slot%,l,false);
wait(500ms);
slotclick(-999,l,false)
wait(100ms);
endif;
wait(500ms);
Do(100);
if(%DURABILITY%<15);
echo(/fix);
wait(500ms);
endif;
Wait(500ms);
loop;

}$$
Acho que você fez o foreach com o array errado.
Não seria
foreach(&id_inutil[],#id_de_algo_inutil) ? Você não tem um array chamado &id_comidas[]
 
Ainda está fazendo a mesma coisa, eu tentei mudar pra vender e dps jogar fora. Mas não consegui, por isso, tentei recomeçar. Nessa minha alteração a macro simplesmente pesca, nada mais. Eu realmente preciso é de uma maneira para detectar que o inventário está cheio, após isso acho que irei saber terminar.

Código:
$${


unset(&id_inutil[]);
&id_inutil[] = 268; // Madeira
&id_inutil[] = 269; // Madeira
&id_inutil[] = 270; // Madeira
&id_inutil[] = 271; // Madeira
&id_inutil[] = 290; // Madeira

&id_inutil[] = 272; // Pedra
&id_inutil[] = 273; // Pedra
&id_inutil[] = 274; // Pedra
&id_inutil[] = 275; // Pedra
&id_inutil[] = 291; // Pedra

&id_inutil[] = 298; // Couro
&id_inutil[] = 299; // Couro
&id_inutil[] = 300; // Couro
&id_inutil[] = 301; // Couro

if(x);
log("&8[MACRO] O Macro foi &4DESLIGADO, &c%PLAYER%$8.");
unset(x);
stop();
else;
log("&8[MACRO] O Macro acaba de ser $2LIGADO &c%PLAYER%&8.");
Set(x);
Endif;
ifmatches(%DIRECTION%,N);&dir=NORTH;endif;
ifmatches(%DIRECTION%,S);&dir=SOUTH;endif;
ifmatches(%DIRECTION%,W);&dir=WEST;endif;
ifmatches(%DIRECTION%,E);&dir=EAST;endif;

do;
PICK(346);
KEY(USE);
WAIT(1ms);
KEY(USE);
WAIT(1ms);
if(%DURABILITY%<15);
echo(/fix);
ENDIF;
LOOP;
endif;
do();

}$$
 
Desculpa amigo não uso macro e nem gosto, eu espero que alguém te ajude nisso.
 
Status
Não está aberto para novas respostas.

Users who are viewing this thread

Voltar
Topo