O que a macro faz?
- Planta os cactos automaticamente;
- Verifica sem tem itens suficientes na hotbar, se não, pega no inventário;
- Facilita sua vida.
Como utilizar?
1 - Faça o primeiro andar de sua plantação normalmente, ou apenas deixe um bloco para demarcar o local onde deve executar a macro (a macro faz apenas uma torre por execução);
2 - Deixe 1 pá (de qualquer tipo de material, ou nem mesmo precisa de pá), terra, areia e cactos (não importa a ordem) no seu inventário;
3 - Olhe para o NORTE (é preciso para não ter erros no próximo passo);
4 - Olhe para baixo e deixe sua mira em alguma área da parte verde marcada na imagem abaixo, sempre EVITE deixar a mira na parte vermelha pois podem haver erros durante a execução da macro;
5 - Deixe itens reservas no inventário (não obrigatório, mas recomendado);
6 - Execute a macro.
Código (1.5.2):
$${&fcacto = "&6[FazendaCacto]&3";if(fc);unset(fc,faltaitem);log("%&fcacto% &4Desligado");keyup(sneak);keyup(forward);keyup(left);keyup(right);keyup(back);keyup(jump);stop();else;set(fc);#i = 0;#x = 0;#nx = 0;#id = 0;#stack = 0;#t3 = 0;#t12 = 0;#t81 = 0;log("%&fcacto% &2Ligado");prompt(#x,$$?,"Quantos andares?");do(%#x%);unset(faltaitem);wait(500ms);look(NORTH);pick(3);if((%ITEM%!=3)||(%STACKSIZE%<7));gui(inventory);for(#i,9,35);wait(100ms);getslotitem(%#i%,#id,#stack);if(%#id%=3);slotclick(%#i%,l,true);pick(3);if(%STACKSIZE%>=7);break;endif;endif;next;gui();endif;pick(12);if((%ITEM%!=12)||(%STACKSIZE%<5));gui(inventory);for(#i,9,35);wait(100ms);getslotitem(%#i%,#id,#stack);if(%#id%=12);slotclick(%#i%,l,true);pick(12);if(%STACKSIZE%>=5);break;endif;endif;next;gui();endif;pick(81);if((%ITEM%!=81)||(%STACKSIZE%<4));gui(inventory);for(#i,9,35);wait(100ms);getslotitem(%#i%,#id,#stack);if(%#id%=81);slotclick(%#i%,l,true);pick(81);if(%STACKSIZE%>=4);break;endif;endif;next;gui();endif;pick(3);if(%STACKSIZE%<7);set(faltaitem);endif;pick(12);if(%STACKSIZE%<5);set(faltaitem);endif;pick(81);if(%STACKSIZE%<4);set(faltaitem);endif;if(faltaitem);log("%&fcacto% &3Serviço encerrado por falta de materiais!");unset(fc,faltaitem);keyup(sneak);keyup(forward);keyup(left);keyup(right);keyup(back);keyup(jump);stop();endif;pick(3);look(,90);keydown(jump);wait(200ms);key(use);keyup(jump);pick(3);wait(100ms);look(90,80);keydown(back);keydown(sneak);pick(3);wait(1000ms);keyup(back);key(use);keyup(sneak);wait(100ms);look(270,80);keydown(back);keydown(sneak);pick(3);wait(1500ms);keyup(back);key(use);keyup(sneak);wait(100ms);look(180,80);keydown(sneak);keydown(right);wait(650ms);keyup(right);wait(100ms);keyup(sneak);wait(400ms);look(180,80);keydown(back);keydown(sneak);pick(3);wait(1000ms);keyup(back);key(use);keyup(sneak);wait(100ms);look(0,80);keydown(back);keydown(sneak);pick(3);wait(1500ms);keyup(back);key(use);keyup(sneak);wait(100ms);#posz=%ZPOS%;look(0,90);keydown(sneak);do;keydown(forward);until(%ZPOS%=(%#posz%-1));keyup(forward);wait(100ms);keyup(sneak);wait(500ms);look(0,90);keydown(jump);pick(12);wait(200ms);key(use);keyup(jump);wait(100ms);pick(12);look(0,68);do;keydown(sneak);keydown(forward);until(%HITID%=3);keyup(forward);wait(200ms);keyup(sneak);wait(600ms);key(use);wait(100ms);pick(12);look(90,68);do;keydown(sneak);keydown(forward);until(%HITID%=3);keyup(forward);wait(200ms);keyup(sneak);wait(600ms);key(use);wait(100ms);pick(12);look(180,68);do;keydown(sneak);keydown(forward);until(%HITID%=3);keyup(forward);wait(200ms);keyup(sneak);wait(600ms);key(use);wait(100ms);pick(12);look(270,68);do;keydown(sneak);keydown(forward);until(%HITID%=3);keyup(forward);wait(200ms);keyup(sneak);wait(600ms);key(use);wait(100ms);look(0,90);pick(3);wait(500ms);keydown(jump);wait(200ms);key(use);keyup(jump);pick(3);wait(500ms);keydown(jump);wait(200ms);key(use);keyup(jump);wait(400ms);look(0,84);keydown(sneak);keydown(back);wait(800ms);keyup(back);wait(200ms);keyup(sneak);look(0,84);pick(269,273,256,277,284);wait(800ms);do;key(attack);until(%HITID%=0);wait(400ms);wait(100ms);pick(81);wait(200ms);look(0,75);keydown(sneak);do;keydown(forward);key(use);until((%HITID%=12)||(%HITID%=81));keyup(forward);wait(200ms);keyup(sneak);key(use);wait(100ms);pick(81);keydown(sneak);keydown(back);wait(250ms);keyup(back);wait(200ms);look(90,75);do;keydown(forward);key(use);until((%HITID%=12)||(%HITID%=81));keyup(forward);wait(200ms);keyup(sneak);wait(400ms);key(use);wait(100ms);pick(81);keydown(sneak);keydown(back);wait(250ms);keyup(back);wait(200ms);look(180,75);do;keydown(forward);key(use);until((%HITID%=12)||(%HITID%=81));keyup(forward);wait(200ms);keyup(sneak);wait(400ms);key(use);wait(100ms);pick(81);keydown(sneak);keydown(back);wait(250ms);keyup(back);wait(200ms);look(270,75);do;keydown(forward);key(use);until((%HITID%=12)||(%HITID%=81));keyup(forward);wait(200ms);keyup(sneak);wait(400ms);key(use);INC(#nx);log("%&fcacto% &2[%#nx%/%#x%] &3Andares prontos");loop;if(%#nx%=%#x%);log("%&fcacto% &3Todos os andares foram concluidos!");endif;log("%&fcacto% &3Serviço encerrado!");unset(fc,faltaitem);keyup(sneak);keyup(forward);keyup(left);keyup(right);keyup(back);keyup(jump);stop();endif}$$
Código (1.7.4) - Créditos para [member='Ernanik']
$${&fcacto = "&6[FazendaCacto]&3";if(fc);unset(fc,faltaitem);log("%&fcacto% &4Desligado");keyup(sneak);keyup(forward);keyup(left);keyup(right);keyup(back);keyup(jump);stop();else;set(fc);#i = 0;#x = 0;#nx = 0;#id = 0;#stack = 0;#t3 = 0;#tsand = 0;#tcactus = 0;log("%&fcacto% &2Ligado");prompt(#x,$$?,"Quantos andares?");do(%#x%);unset(faltaitem);wait(500ms);look(NORTH);pick(dirt);if((%ITEM%!=3)||(%STACKSIZE%<7));gui(inventory);for(#i,9,35);wait(100ms);getslotitem(%#i%,#id,#stack);if(%#id%=3);slotclick(%#i%,l,true);pick(dirt);if(%STACKSIZE%>=7);break;endif;endif;next;gui();endif;pick(sand);if((%ITEM%!=sand)||(%STACKSIZE%<5));gui(inventory);for(#i,9,35);wait(100ms);getslotitem(%#i%,#id,#stack);if(%#id%=sand);slotclick(%#i%,l,true);pick(sand);if(%STACKSIZE%>=5);break;endif;endif;next;gui();endif;pick(cactus);if((%ITEM%!=cactus)||(%STACKSIZE%<4));gui(inventory);for(#i,9,35);wait(100ms);getslotitem(%#i%,#id,#stack);if(%#id%=cactus);slotclick(%#i%,l,true);pick(cactus);if(%STACKSIZE%>=4);break;endif;endif;next;gui();endif;pick(dirt);if(%STACKSIZE%<7);set(faltaitem);endif;pick(sand);if(%STACKSIZE%<5);set(faltaitem);endif;pick(cactus);if(%STACKSIZE%<4);set(faltaitem);endif;if(faltaitem);log("%&fcacto% &3Serviço encerrado por falta de materiais!");unset(fc,faltaitem);keyup(sneak);keyup(forward);keyup(left);keyup(right);keyup(back);keyup(jump);stop();endif;pick(dirt);look(,90);keydown(jump);wait(200ms);key(use);keyup(jump);pick(dirt);wait(100ms);look(90,80);keydown(back);keydown(sneak);pick(dirt);wait(1000ms);keyup(back);key(use);keyup(sneak);wait(100ms);look(270,80);keydown(back);keydown(sneak);pick(dirt);wait(1500ms);keyup(back);key(use);keyup(sneak);wait(100ms);look(180,80);keydown(sneak);keydown(right);wait(650ms);keyup(right);wait(100ms);keyup(sneak);wait(400ms);look(180,80);keydown(back);keydown(sneak);pick(dirt);wait(1000ms);keyup(back);key(use);keyup(sneak);wait(100ms);look(0,80);keydown(back);keydown(sneak);pick(dirt);wait(1500ms);keyup(back);key(use);keyup(sneak);wait(100ms);#posz=%ZPOS%;look(0,90);keydown(sneak);do;keydown(forward);until(%ZPOS%=(%#posz%-1));keyup(forward);wait(100ms);keyup(sneak);wait(500ms);look(0,90);keydown(jump);pick(sand);wait(200ms);key(use);keyup(jump);wait(100ms);pick(sand);look(0,68);do;keydown(sneak);keydown(forward);until(%HITID%=3);keyup(forward);wait(200ms);keyup(sneak);wait(600ms);key(use);wait(100ms);pick(sand);look(90,68);do;keydown(sneak);keydown(forward);until(%HITID%=3);keyup(forward);wait(200ms);keyup(sneak);wait(600ms);key(use);wait(100ms);pick(sand);look(180,68);do;keydown(sneak);keydown(forward);until(%HITID%=3);keyup(forward);wait(200ms);keyup(sneak);wait(600ms);key(use);wait(100ms);pick(sand);look(270,68);do;keydown(sneak);keydown(forward);until(%HITID%=3);keyup(forward);wait(200ms);keyup(sneak);wait(600ms);key(use);wait(100ms);look(0,90);pick(dirt);wait(500ms);keydown(jump);wait(200ms);key(use);keyup(jump);pick(dirt);wait(500ms);keydown(jump);wait(200ms);key(use);keyup(jump);wait(400ms);look(0,84);keydown(sneak);keydown(back);wait(800ms);keyup(back);wait(200ms);keyup(sneak);look(0,84);pick(wooden_shovel,stone_shovel,iron_shovel,diamond_shovel,golden_shovel);wait(800ms);do;key(attack);until(%HITID%=air);wait(400ms);wait(100ms);pick(cactus);wait(200ms);look(0,75);keydown(sneak);do;keydown(forward);key(use);until((%HITID%=sand)||(%HITID%=cactus));keyup(forward);wait(200ms);keyup(sneak);key(use);wait(100ms);pick(cactus);keydown(sneak);keydown(back);wait(250ms);keyup(back);wait(200ms);look(90,75);do;keydown(forward);key(use);until((%HITID%=sand)||(%HITID%=cactus));keyup(forward);wait(200ms);keyup(sneak);wait(400ms);key(use);wait(100ms);pick(cactus);keydown(sneak);keydown(back);wait(250ms);keyup(back);wait(200ms);look(180,75);do;keydown(forward);key(use);until((%HITID%=sand)||(%HITID%=cactus));keyup(forward);wait(200ms);keyup(sneak);wait(400ms);key(use);wait(100ms);pick(cactus);keydown(sneak);keydown(back);wait(250ms);keyup(back);wait(200ms);look(270,75);do;keydown(forward);key(use);until((%HITID%=sand)||(%HITID%=cactus));keyup(forward);wait(200ms);keyup(sneak);wait(400ms);key(use);INC(#nx);log("%&fcacto% &2[%#nx%/%#x%] &3Andares prontos");loop;if(%#nx%=%#x%);log("%&fcacto% &3Todos os andares foram concluidos!");endif;log("%&fcacto% &3Serviço encerrado!");unset(fc,faltaitem);keyup(sneak);keyup(forward);keyup(left);keyup(right);keyup(back);keyup(jump);stop();endif}$$
Obsrvações:
- Sujeita a menos erros que a já existente devido a detecção de blocos paraexecutar as ações e vários testes feitos;
- Fique monitorando a execução pois podem haver BUGs, mas as chances de você morrer nos cactos é mínima.
- Testes feitos com média de 13 FPS, resultados: 100% do esperado.
Dúvidas, BUGs, etceteras...
Comente abaixo ou mande pm.
Desenvolvimento
Autor: AndersonMC
Alguns trechos de código retirado da macro Plant de Cacto automática v2.0 [NAO VIP] do Inglad;
Ajuda do Phodalao.
Por que fiz está macro?
Para mim quando estava colocando a terra ele andava de mais para o lado, ficando torto o resto da plantação, então fiz está macro visando detectar os blocos para tomar as ações, ficando mais preciso.