CÓDIGOS PARA FACILITAR CRIAÇÃO DE MACROS
Olá, pessoal, tudo bem?
Pra quem não me conhece sou o MathCraft e crio macros desde o inicio das macros na craftlandia, porém não divulgava elas.
Vou começar a postar alguns mecanismos básicos que eu sempre usei e vejo que a galera ainda não conhece. Ao passar do tempo vou postando mais...
Fazer 1 única macro para VIP's e NÃO-VIP's
Para evitar fazer duas macros, uma para não-vip e outra para vip devido ao delay de teleporte...
#xatual=%XPOS%;
#yatual=%YPOS%;
#zatual=%ZPOS%;
WAIT(1);
ECHO(/home ***SUA HOME***);
DO;
IF(%#xatual%!=%XPOS%);
BREAK;
ENDIF;
IF(%#yatual%!=%YPOS%);
BREAK;
ENDIF;
IF(%#zatual%!=%ZPOS%);
BREAK;
ENDIF;
LOOP;
WAIT(500ms);
Basicamente fazer isso fará ele detectar quando o player mudou de posição, essa linhas de código só NÃO poderá ser usada em 2 ocasiões:
- Quando o player dará /home para a mesma coordenada que ele está.
- Quando o player dará o comando /home em movimento (andando, correndo, etc...)
Evitar Macro funcionando com o player caindo no infinito.
Para evitar com que as macros funcionem com os players caindo no infinito use o código abaixo após dar qualquer comando de teleporte:
WAIT(500ms);IFMATCHES(%DIRECTION%,N);
&frentehome = NORTH;
ENDIF;
IFMATCHES(%DIRECTION%,S);
&frentehome = SOUTH;
ENDIF;
IFMATCHES(%DIRECTION%,W);
&frentehome = WEST;
ENDIF;
IFMATCHES(%DIRECTION%,E);
&frentehome = EAST;
ENDIF;
WAIT(500ms);
LOOK(%&frentehome%);
LOOK(,+90);
DO;
IFMATCHES(%HIT%,TILE);
BREAK;
ENDIF;
LOOP;
WAIT(500ms);
LOOK(%&frentehome%);
WAIT(200ms);
Ao usar esse comando ao invés de você utilizar "LOOK(NORTH);" você devera passar a usar "LOOK(%&frente%)" ou para onde você queira que ele olhe como frente, atras, esquerda ou direita.
Detectar abertura de uma GUI
Pará detectar se alguma GUI foi aberta e liberar a macro somente quando ela foi detectada, evitando assim que as macros tente clicar em slots enquanto o GUI está fechado, podendo bugar as macros.
BAU
#testgui=0;
KEY(Use);
DO;
INC(#testgui);
IF(%#testgui%=100);
KEY(Use);
#testgui=0;
ENDIF;
IFMATCHES(%GUI%,GUICHEST);
BREAK;
ENDIF;
LOOP;
INVENTÁRIO
#testgui=0;
GUI(Inventory);
DO;
INC(#testgui);
IF(%#testgui%=100);
GUI(Inventory);
#testgui=0;
ENDIF;
IFMATCHES(%GUI%,GUIINVENTORY);
BREAK;
ENDIF;
LOOP;
Esse comando fará um teste sempre que vc mandar abrir um inventário caso o teste falhe ele executara o comando novamente para tentar abrir.