[MACRO] Placa Automática (Auto-Sign)
Captura a ID+Metadata do Item Automaticamente
CHANGELOG
26/05/2015
- Resolvido Bug da macro não estar finalizando em alguns casos.
- Implementado AchievementGet.
- Implementado PlaySound.
23/05/2015
- Resolvido Bug de não estar detectando algumas IDs de itens Encantados.
- Implementado comando para selecionar o item ("colocar na mão") antes de executar o comando /iteminfo.
18/05/2015
- Código alterado para identificar também as IDs das poções.
Introdução
Concorde comigo:
Quando se tem dezenas de itens encantados para vender no sistema de lojas do servidor, dá uma preguiça danada né não? Ter que digitar /iteminfo em cada item, decorar toda aquela ID com "hashtag", "dois pontos" e ainda os numerais, para só depois inserir na placa, além do seu nick, da quantidade e do valor do item...
E quando esquecemos tudo e nos perguntamos: Putz qual era a ID mesmo? :facepalm:
Esta macro é justamente para ajudar preguiçosos e esquecidos assim como eu :whistling:, a montar de forma fácil, eficiente e eficaz as placas de vendas/compras dos itens com aqueles IDs gigantes em lojinhas vips.
No meu código usei algumas ideias bacanas presentes NESTA MACRO do [member=MrBlueees], que por sinal é muito boa também, porém não tem a função de capturar a ID completa do item (IDs complexas) e nem a possibilidade de, por exemplo, inserir somente uma placa para venda ou somente para compra.
Características deste Macro
-Testado somente nos Servidores 1.5.2;
-Somente para jogadores VIPs;
-Insere placas automaticamente com todas as informações necessárias para venda e/ou compra de itens em lojas vips;
-Macro só inicializa com o comando via chat: ativar malaka auto sign
-Insere placas segurando a tecla SHIFT do seu teclado;
-O item que desejar vender, deverá ser colocado na posição [1] da Hotbar para que a macro prossiga (será solicitado no momento, não se preocupe);
-Detecta automaticamente através de expressões regulares, os IDs dos itens juntamente com a Meta Data, usando o comando /iteminfo, ex: 276#fy ou 383:91;
-Insere placas somente para venda, somente para compra e/ou para compra e venda;
-Mensagens são exibidas a todo momento no chat, para informar ao jogador de cada passo relevante da macro;
-O código deverá ser inserido em Macro Bindings: Events -> onChat para que funcione corretamente;
-Não funciona em itens com IDs simples, ex: 323;
-Não funciona em itens encantados danificados (sem reparar);
-Código da Macro endentado e comentado para uma melhor compreensão de quem lê;
Código da Macro
$${
IFMATCHES(%CHAT%,"ativar malaka auto sign");
#poshotbar=1;
#slothotbar=36;
#flag=0;
#time=0;
#qtd=0;
#valor_venda=0;
#valor_compra=0;
#ativar=0;
#shift=0;
log( );
ACHIEVEMENTGET(Malaka Auto-Sign [ON],323);
PlaySound(random.pop);
ClearChat;
log("&5&l[MACRO]&e&l Auto-Insert de placas para itens com &b&lID+Metadata &e&lativado&c&l !!!");
log( );
wait(2);
log("&5&l[MACRO]&e&l Coloque o item desejado no slot &b&l[1] &e&lda sua Hotbar&c&l ...");
log( );
wait(2);
gui(inventory);
wait(500ms);
Slot(%#poshotbar%);
do;
getslotitem(%#slothotbar%,#id,#stack);
if(%#stack%=0);
log("&5&l[MACRO]&e&l Aguardando item no slot &b&l[1] &e&lda sua Hotbar&c&l ...");
log( );
wait(2);
inc(#time);
endif;
until((%#stack%!=0)||(%#time%=5));
if(%#time%=5);
gui();
log("&5&l[MACRO]&e&l Item não foi detectado&c&l !!!");
log( );
wait(500ms);
log("&5&l[MACRO]&e&l Certifique-se que está fazendo o procedimento correto e inicie novamente&c&l !!!");
log( );
ACHIEVEMENTGET(Malaka Auto-Sign [OFF],323);
PlaySound(random.pop);
#time=0;
#ativar=0;
BREAK;
else;
gui();
log("&5&l[MACRO]&e&l Item detectado&c&l !!!");
log( );
#ativar=1;
wait(2);
log("&5&l[MACRO]&e&l Capturando a &b&lID+Metadata &e&ldo Item&c&l !!!");
log( );
wait(2);
slot(%#slothotbar%);
}$$/iteminfo$${
wait(500ms);
endif;
endif;
//===========================================================Identificando ID de itens do tipo XXX#XXX
IFMATCHES(%CHATCLEAN%,"([0-9]+)#.+",&result);
if(%#ativar%=1);
wait(500ms);
log("&5&l[MACRO]&b&l ID+Metadata &e&ldo item capturada com sucesso&c&l !!!");
log( );
wait(3);
PlaySound(random.pop);
prompt(#qtd,$$?,"Informe Quantidade do item que deseja inserir na placa ( confirme com [ENTER] ):");
wait(500ms);
PlaySound(random.pop);
prompt(#valor_venda,$$?,"Informe Valor de venda do item ( informe 0 se só deseja comprar ) ( confirme com [ENTER] ):");
wait(500ms);
PlaySound(random.pop);
prompt(#valor_compra,$$?,"Informe Valor de compra do item ( informe 0 se só deseja vender ) ( confirme com [ENTER] ):");
wait(500ms);
if(%#qtd%=0);
log("&5&l[MACRO]&e&l Você não informou uma quantidade válida&c&l !!!");
log( );
wait(500ms);
log("&5&l[MACRO]&e&l Certifique-se que está fazendo o procedimento correto e inicie novamente&c&l !!!");
log( );
ACHIEVEMENTGET(Malaka Auto-Sign [OFF],323);
PlaySound(random.pop);
#ativar=0;
BREAK;
else;
log( );
log(&5&l[MACRO] &e&lSua placa ficará dessa forma
;
log(&f%PLAYER%);
log(&f%#qtd%);
if(%#valor_venda%=0);
log(&fS %#valor_compra%);
elseif(%#valor_compra%=0);
log(&fB %#valor_venda%);
else;
log(&fB %#valor_venda%:%#valor_compra% S);
endif;
log(&f%&result%);
log( );
wait(3);
PlaySound(random.pop);
&opcoes=SIM,NAO;
prompt(&escolha,$$[[%&opcoes%]],"Confirma os Dados?? ( Selecione SIM/NAO e confirme com [ENTER] )");
ifmatches(%&escolha%,"^SIM|sim$");
wait(500ms);
do;
log( );
log("&5&l[MACRO]&e&l Quando estiver pronto, segure a tecla &b&lSHIFT &e&lpara inserir a sua Placa&c&l !!!");
log( );
wait(2);
#flag=0;
#shift=0;
if(SHIFT);
#shift=1;
endif;
if(%#shift%=1);
if(%#valor_venda%=0);
placesign(%PLAYER%,%#qtd%,S %#valor_compra%,%&result%,true);
#flag=1;
elseif(%#valor_compra%=0);
placesign(%PLAYER%,%#qtd%,B %#valor_venda%,%&result%,true);
#flag=1;
else;
placesign(%PLAYER%,%#qtd%,B %#valor_venda%:%#valor_compra% S,%&result%,true);
#flag=1;
endif;
endif;
until(%#flag%=1);
log( );
PlaySound(random.pop);
log("&5&l[MACRO]&e&l Placa inserida com sucesso&c&l !!!");
log( );
ACHIEVEMENTGET(Malaka Auto-Sign [OFF],323);
PlaySound(random.pop);
#ativar=0;
break;
endif;
endif;
ifmatches(%&escolha%,"^NAO|nao$");
log( );
log("&5&l[MACRO]&e&l Auto-Insert de placas cancelado pelo jogador&c&l !!!");
log( );
wait(500ms);
log("&5&l[MACRO]&e&l Certifique-se que está fazendo o procedimento correto e inicie novamente&c&l !!!");
log( );
ACHIEVEMENTGET(Malaka Auto-Sign [OFF],323);
PlaySound(random.pop);
#ativar=0;
break;
endif;
endif;
endif;
//===========================================================Identificando ID de itens do tipo XXX:XXX
IFMATCHES(%CHATCLEAN%,"([1-9]+)
[1-9]+)",&result);
if(%#ativar%=1);
wait(500ms);
log("&5&l[MACRO]&b&l ID+Metadata &e&ldo item capturada com sucesso&c&l !!!");
log( );
wait(3);
PlaySound(random.pop);
prompt(#qtd,$$?,"Informe Quantidade do item que deseja inserir na placa ( confirme com [ENTER] ):");
wait(500ms);
PlaySound(random.pop);
prompt(#valor_venda,$$?,"Informe Valor de venda do item ( informe 0 se só deseja comprar ) ( confirme com [ENTER] ):");
wait(500ms);
PlaySound(random.pop);
prompt(#valor_compra,$$?,"Informe Valor de compra do item ( informe 0 se só deseja vender ) ( confirme com [ENTER] ):");
wait(500ms);
if(%#qtd%=0);
log("&5&l[MACRO]&e&l Você não informou uma quantidade válida&c&l !!!");
log( );
wait(500ms);
log("&5&l[MACRO]&e&l Certifique-se que está fazendo o procedimento correto e inicie novamente&c&l !!!");
log( );
ACHIEVEMENTGET(Malaka Auto-Sign [OFF],323);
PlaySound(random.pop);
#ativar=0;
BREAK;
else;
log( );
log(&5&l[MACRO] &e&lSua placa ficará dessa forma
;
log(&f%PLAYER%);
log(&f%#qtd%);
if(%#valor_venda%=0);
log(&fS %#valor_compra%);
elseif(%#valor_compra%=0);
log(&fB %#valor_venda%);
else;
log(&fB %#valor_venda%:%#valor_compra% S);
endif;
log(&f%&result%);
log( );
wait(3);
PlaySound(random.pop);
&opcoes=SIM,NAO;
prompt(&escolha,$$[[%&opcoes%]],"Confirma os Dados?? ( Selecione SIM/NAO e confirme com [ENTER] )");
ifmatches(%&escolha%,"^SIM|sim$");
wait(500ms);
do;
log( );
log("&5&l[MACRO]&e&l Quando estiver pronto, segure a tecla &b&lSHIFT &e&lpara inserir a sua Placa&c&l !!!");
log( );
wait(2);
#flag=0;
#shift=0;
if(SHIFT);
#shift=1;
endif;
if(%#shift%=1);
if(%#valor_venda%=0);
placesign(%PLAYER%,%#qtd%,S %#valor_compra%,%&result%,true);
#flag=1;
elseif(%#valor_compra%=0);
placesign(%PLAYER%,%#qtd%,B %#valor_venda%,%&result%,true);
#flag=1;
else;
placesign(%PLAYER%,%#qtd%,B %#valor_venda%:%#valor_compra% S,%&result%,true);
#flag=1;
endif;
endif;
until(%#flag%=1);
log( );
PlaySound(random.pop);
log("&5&l[MACRO]&e&l Placa inserida com sucesso&c&l !!!");
log( );
ACHIEVEMENTGET(Malaka Auto-Sign [OFF],323);
PlaySound(random.pop);
#ativar=0;
break;
endif;
endif;
ifmatches(%&escolha%,"^NAO|nao$");
log( );
log("&5&l[MACRO]&e&l Auto-Insert de placas cancelado pelo jogador&c&l !!!");
log( );
wait(500ms);
log("&5&l[MACRO]&e&l Certifique-se que está fazendo o procedimento correto e inicie novamente&c&l !!!");
log( );
ACHIEVEMENTGET(Malaka Auto-Sign [OFF],323);
PlaySound(random.pop);
#ativar=0;
break;
endif;
endif;
endif;
}$$
IFMATCHES(%CHAT%,"ativar malaka auto sign");
#poshotbar=1;
#slothotbar=36;
#flag=0;
#time=0;
#qtd=0;
#valor_venda=0;
#valor_compra=0;
#ativar=0;
#shift=0;
log( );
ACHIEVEMENTGET(Malaka Auto-Sign [ON],323);
PlaySound(random.pop);
ClearChat;
log("&5&l[MACRO]&e&l Auto-Insert de placas para itens com &b&lID+Metadata &e&lativado&c&l !!!");
log( );
wait(2);
log("&5&l[MACRO]&e&l Coloque o item desejado no slot &b&l[1] &e&lda sua Hotbar&c&l ...");
log( );
wait(2);
gui(inventory);
wait(500ms);
Slot(%#poshotbar%);
do;
getslotitem(%#slothotbar%,#id,#stack);
if(%#stack%=0);
log("&5&l[MACRO]&e&l Aguardando item no slot &b&l[1] &e&lda sua Hotbar&c&l ...");
log( );
wait(2);
inc(#time);
endif;
until((%#stack%!=0)||(%#time%=5));
if(%#time%=5);
gui();
log("&5&l[MACRO]&e&l Item não foi detectado&c&l !!!");
log( );
wait(500ms);
log("&5&l[MACRO]&e&l Certifique-se que está fazendo o procedimento correto e inicie novamente&c&l !!!");
log( );
ACHIEVEMENTGET(Malaka Auto-Sign [OFF],323);
PlaySound(random.pop);
#time=0;
#ativar=0;
BREAK;
else;
gui();
log("&5&l[MACRO]&e&l Item detectado&c&l !!!");
log( );
#ativar=1;
wait(2);
log("&5&l[MACRO]&e&l Capturando a &b&lID+Metadata &e&ldo Item&c&l !!!");
log( );
wait(2);
slot(%#slothotbar%);
}$$/iteminfo$${
wait(500ms);
endif;
endif;
//===========================================================Identificando ID de itens do tipo XXX#XXX
IFMATCHES(%CHATCLEAN%,"([0-9]+)#.+",&result);
if(%#ativar%=1);
wait(500ms);
log("&5&l[MACRO]&b&l ID+Metadata &e&ldo item capturada com sucesso&c&l !!!");
log( );
wait(3);
PlaySound(random.pop);
prompt(#qtd,$$?,"Informe Quantidade do item que deseja inserir na placa ( confirme com [ENTER] ):");
wait(500ms);
PlaySound(random.pop);
prompt(#valor_venda,$$?,"Informe Valor de venda do item ( informe 0 se só deseja comprar ) ( confirme com [ENTER] ):");
wait(500ms);
PlaySound(random.pop);
prompt(#valor_compra,$$?,"Informe Valor de compra do item ( informe 0 se só deseja vender ) ( confirme com [ENTER] ):");
wait(500ms);
if(%#qtd%=0);
log("&5&l[MACRO]&e&l Você não informou uma quantidade válida&c&l !!!");
log( );
wait(500ms);
log("&5&l[MACRO]&e&l Certifique-se que está fazendo o procedimento correto e inicie novamente&c&l !!!");
log( );
ACHIEVEMENTGET(Malaka Auto-Sign [OFF],323);
PlaySound(random.pop);
#ativar=0;
BREAK;
else;
log( );
log(&5&l[MACRO] &e&lSua placa ficará dessa forma

log(&f%PLAYER%);
log(&f%#qtd%);
if(%#valor_venda%=0);
log(&fS %#valor_compra%);
elseif(%#valor_compra%=0);
log(&fB %#valor_venda%);
else;
log(&fB %#valor_venda%:%#valor_compra% S);
endif;
log(&f%&result%);
log( );
wait(3);
PlaySound(random.pop);
&opcoes=SIM,NAO;
prompt(&escolha,$$[[%&opcoes%]],"Confirma os Dados?? ( Selecione SIM/NAO e confirme com [ENTER] )");
ifmatches(%&escolha%,"^SIM|sim$");
wait(500ms);
do;
log( );
log("&5&l[MACRO]&e&l Quando estiver pronto, segure a tecla &b&lSHIFT &e&lpara inserir a sua Placa&c&l !!!");
log( );
wait(2);
#flag=0;
#shift=0;
if(SHIFT);
#shift=1;
endif;
if(%#shift%=1);
if(%#valor_venda%=0);
placesign(%PLAYER%,%#qtd%,S %#valor_compra%,%&result%,true);
#flag=1;
elseif(%#valor_compra%=0);
placesign(%PLAYER%,%#qtd%,B %#valor_venda%,%&result%,true);
#flag=1;
else;
placesign(%PLAYER%,%#qtd%,B %#valor_venda%:%#valor_compra% S,%&result%,true);
#flag=1;
endif;
endif;
until(%#flag%=1);
log( );
PlaySound(random.pop);
log("&5&l[MACRO]&e&l Placa inserida com sucesso&c&l !!!");
log( );
ACHIEVEMENTGET(Malaka Auto-Sign [OFF],323);
PlaySound(random.pop);
#ativar=0;
break;
endif;
endif;
ifmatches(%&escolha%,"^NAO|nao$");
log( );
log("&5&l[MACRO]&e&l Auto-Insert de placas cancelado pelo jogador&c&l !!!");
log( );
wait(500ms);
log("&5&l[MACRO]&e&l Certifique-se que está fazendo o procedimento correto e inicie novamente&c&l !!!");
log( );
ACHIEVEMENTGET(Malaka Auto-Sign [OFF],323);
PlaySound(random.pop);
#ativar=0;
break;
endif;
endif;
endif;
//===========================================================Identificando ID de itens do tipo XXX:XXX
IFMATCHES(%CHATCLEAN%,"([1-9]+)

if(%#ativar%=1);
wait(500ms);
log("&5&l[MACRO]&b&l ID+Metadata &e&ldo item capturada com sucesso&c&l !!!");
log( );
wait(3);
PlaySound(random.pop);
prompt(#qtd,$$?,"Informe Quantidade do item que deseja inserir na placa ( confirme com [ENTER] ):");
wait(500ms);
PlaySound(random.pop);
prompt(#valor_venda,$$?,"Informe Valor de venda do item ( informe 0 se só deseja comprar ) ( confirme com [ENTER] ):");
wait(500ms);
PlaySound(random.pop);
prompt(#valor_compra,$$?,"Informe Valor de compra do item ( informe 0 se só deseja vender ) ( confirme com [ENTER] ):");
wait(500ms);
if(%#qtd%=0);
log("&5&l[MACRO]&e&l Você não informou uma quantidade válida&c&l !!!");
log( );
wait(500ms);
log("&5&l[MACRO]&e&l Certifique-se que está fazendo o procedimento correto e inicie novamente&c&l !!!");
log( );
ACHIEVEMENTGET(Malaka Auto-Sign [OFF],323);
PlaySound(random.pop);
#ativar=0;
BREAK;
else;
log( );
log(&5&l[MACRO] &e&lSua placa ficará dessa forma

log(&f%PLAYER%);
log(&f%#qtd%);
if(%#valor_venda%=0);
log(&fS %#valor_compra%);
elseif(%#valor_compra%=0);
log(&fB %#valor_venda%);
else;
log(&fB %#valor_venda%:%#valor_compra% S);
endif;
log(&f%&result%);
log( );
wait(3);
PlaySound(random.pop);
&opcoes=SIM,NAO;
prompt(&escolha,$$[[%&opcoes%]],"Confirma os Dados?? ( Selecione SIM/NAO e confirme com [ENTER] )");
ifmatches(%&escolha%,"^SIM|sim$");
wait(500ms);
do;
log( );
log("&5&l[MACRO]&e&l Quando estiver pronto, segure a tecla &b&lSHIFT &e&lpara inserir a sua Placa&c&l !!!");
log( );
wait(2);
#flag=0;
#shift=0;
if(SHIFT);
#shift=1;
endif;
if(%#shift%=1);
if(%#valor_venda%=0);
placesign(%PLAYER%,%#qtd%,S %#valor_compra%,%&result%,true);
#flag=1;
elseif(%#valor_compra%=0);
placesign(%PLAYER%,%#qtd%,B %#valor_venda%,%&result%,true);
#flag=1;
else;
placesign(%PLAYER%,%#qtd%,B %#valor_venda%:%#valor_compra% S,%&result%,true);
#flag=1;
endif;
endif;
until(%#flag%=1);
log( );
PlaySound(random.pop);
log("&5&l[MACRO]&e&l Placa inserida com sucesso&c&l !!!");
log( );
ACHIEVEMENTGET(Malaka Auto-Sign [OFF],323);
PlaySound(random.pop);
#ativar=0;
break;
endif;
endif;
ifmatches(%&escolha%,"^NAO|nao$");
log( );
log("&5&l[MACRO]&e&l Auto-Insert de placas cancelado pelo jogador&c&l !!!");
log( );
wait(500ms);
log("&5&l[MACRO]&e&l Certifique-se que está fazendo o procedimento correto e inicie novamente&c&l !!!");
log( );
ACHIEVEMENTGET(Malaka Auto-Sign [OFF],323);
PlaySound(random.pop);
#ativar=0;
break;
endif;
endif;
endif;
}$$
Como Instalar?
Primeiramente tenha certeza que seu Minecraft tenha instalado o Mod Macro/Keybind, caso não tenha certeza baixe o ModPack da Craftlandia CLICANDO NESTE LINK. Créditos ao [member=Lightning].
A instalação é simples, siga atentamente o tutorial abaixo para não fazer nada de errado:
1) Clique com o botão direito do mouse em algum espaço livre na sua Área de Trabalho do Computador, e crie um novo "Documento de Texto" conforme ilustrado na imagem:

2) Dê o nome de malaka_auto_sign para este novo arquivo;
3) Após ter renomeado dê dois cliques para abrir o documento e edita-lo, copie o código da macro postada neste tópico (ctrl+c) e cole no documento de texto que está em branco (ctrl+v);
4) Logo após salve as alterações clicando em Arquivo -> Salvar e feche este arquivo;
5) Copie este novo arquivo que acabou de criar ("malaka_auto_sign.txt") e cole-o no diretório de Macros do seu Minecraft (.minecraft\mods\macros);
6) Abra o seu Minecraft, abra o menu de Opções, Controles..., Macro Settings, conforme ilustra a imagem:


7) Já na Área de Macro Settings clique na seta ➨ Amarela para a Direita ao lado de Macro Bindings: Keys ➨ e navegue até achar Macro Bindings: Events ➨ clique em onChat:


8) Na tela do onChat insira o caminho para a macro: $$<malaka_auto_sign.txt>, caso já tenha alguma macro definida neste campo separe-a com um "pipe" "|" (ex: $$<malaka_auto_sign.txt>|$$<login.txt>) e por fim clique em SAVE:

Se seguiu certinho o tutorial, a Macro vai ser instalada com sucesso, espero que gostem, qualquer sugestão, bugs ou ajustes não deixem de comentar neste tópico.
Gostou do Tutorial e/ou da Macro?
Não deixe de curtir o tópico, codificar macros e criar estes tutoriais com tudo "mastigadinho" dá um maior trabalho, clica em

**Atenção para as regras informadas pelo [member=DeathStroker], em caso de reutilização/edição deste código para fins de postagem em um tópico novo, não esquecer de postar também os devidos créditos do(s) autor(es), evite de ter seu tópico denunciado :thumbsup: :

Enjoy!
Att [member=Malaka81].