APRENDA A PROGRAMAR MACROS (DO ZERO)

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.
jimmyfilips disse:
haha ai siim, vai ser bom trocar ideia com vc :3


então faça o seguinte, provavelmente ele repara, mas o lag do servidor demora pra alterar o numero da durabilidade, entao, fiz uma pausa DEPOIS da reparação, pra assim ele ter tempo de "contabilizar" a reparação mesmo com lag, ve se funciona

$${
IF(espada);
LOG("&6Espadas &4Off");
UNSET(espada);
STOP();
ELSE;
LOG("&6Espadas &aOn");
SET(espada);

//deixe "ifmatches" para todas as direções, não somente para west
IFMATCHES(%DIRECTION%,N);&frente = NORTH;ENDIF;
IFMATCHES(%DIRECTION%,S);&frente = SOUTH;ENDIF;
IFMATCHES(%DIRECTION%,E);&frente = EAST;ENDIF;
IFMATCHES(%DIRECTION%,W);&frente = WEST;ENDIF;

//para ficar melhor de visualizar, deixe cada repetição um caractere mais a frente, como eu deixei aqui:
DO;
LOOK(%&frente%);
LOOK(,-1);
DO;
KEY(attack);
WAIT(50ms);
//"ms" já significa "milisegundos", 1 já é quase que a mesma coisa que nada,
//entao não use abaixo de "0", como por exemplo o 0,50ms
UNTIL(%DURABILITY% < 20);
if(%DURABILITY% < 20);
LOOK(%&frente%);
LOOK(,+90);
DO(3);
WAIT(300ms);
KEY(use);
LOOP;
WAIT(1);
endif;
LOOP;
ENDIF;
}$$
opa, funcionou certinho mano, esse repara bunitinho kk valew pela ajuda!!
 
jimmyfilips disse:
AVISO
ESTE POST RECEBERÁ VÁRIOS EDIT's COM O DECORRER DO TEMPO, DE ACORDO COM NECESSIDADE E PEDIDOS NOS COMENTÁRIOS

Pra começar, você precisa entender duas coisas básicas:

1 - CONTROLES DE VARIÁVEIS
COMANDO "IF" (SE)
em português, 'if' significa "se".
o uso dela é simples:
SE uma condição for real, fazer isso.

Ok, mas tenho duas perguntas:

Que condição é essa?
um exemplo básico é:
Se 5 for maior que 2, ficaria:
if(5 > 2);
(mais detalhes sobre como montar condições vão ser dados mais a frente)

mas o que eu defino o que ele vai fazer?
Bem, logicamente, ele não vai adivinhar o que precisa fazer se a condição for verdadeira, então imagine da seguinte forma:

você tem 5 coisas pra fazer:
1
2
3
4
5

mas na segunda coisa, se algo estiver diferente, você precisa fazer algo mais, mas o 3, 4 e 5 vão ser feitos independente do que acontecer no dois

Como defino o que deve ser feito? Simples!
IMAGINE ISSO:

Se(isso = isso)
fazer isso
isso
e isso
fim"Se"

esse fim"Se" define até onde deve ser executado, SE algo for verdadeiro!

como faço isso?
na macro seria "endif;"

resumindo, ficaria +/- assim:

IF(CONDIÇÃO);
FAÇA ISSO
ISSO
E ISSO
ENDIF;
Mas calma, ainda não acabou
já dá pra fazer muita coisa com isso! mas tem um comando simples que pode ajudar muito!!
Imagine isso:

Se fizer sol, vou fazer 1
Se Chover, vou fazer 2
Se ficar nublado, tambem vou fazer 2
Se tiver caindo uma tepestade, tambem vou fazer 2
imagine a poluição (e complicação) de colocar vários "SE", condição por condição!
Não seria mais fácil dizer

Se fizer sol, vou fazer 1
Senão, faço 2

esse senão, vai abranger tempo nublado, tempestade, chuva, neve e qualquer outra condição climática que vier,
afinal, se você não demarcar TAMBÉM o senão, ele faria

Se fizer sol, vou fazer 1
vou fazer 2 (sem condições significa de qualquer forma)

útil não?
ele ficaria assim:

IF(condição);
fazer 1
ELSE;
fazer 2
ENDIF;

Hmmm, legal, mas e se eu quiser dizer "Se for assim, faça isso, mas se for assim, faça isso, se não for nenhum dos dois faça isso"?
veja bem, é um comando um tanto complexo, daria pra fazer só com if e else, mas seria um pouco chato, não concorda?
é a partir daí que outro comando que o Yao sabiamente me lembrou, entra na jogada!

COMANDO ELSEIF;

Como funciona?
Seguindo a logica dessa frase, analise o codigo de acordo com as cores:
"Se for assim, faça isso, mas se for assim, faça isso, se não for nenhum dos dois faça isso"
if(condicao);
faça isso
elseif(condicao2);
faça isso
else;
faça isso
endif;

COMANDO "DO" (REPETIR)
"DO", no português mais simples seria "FAÇA"
Pegando a logica do "endif", ele funciona da seguinte forma:

do; / loop; Faça / repita
esses comandos vão fazer com que tudo repita dentro deles até que a macro seja desligada
imagine o "loop;" como o "endif;"

Exemplo:

DO;
fazer 1
fazer 2
fazer 3
loop;
do(); / loop; Faça(tantas vezes) / repita
esses comandos vão fazer com que tudo repita "tantas vezes", definindo a quantia dentro de "()"

Exemplo:

do(5);
fazer 1
fazer 2
fazer 3
loop;
do; / while(); Faça / enquanto(condiçao)
esses comandos vão fazer com que tudo repita ENQUANTO a condição for verdadeira
(mais detalhes sobre como montar condições vão ser dados mais a frente)

Exemplo:

do;
fazer 1
fazer 2
fazer 3
while(a>2);
do; / until(); Faça / até(condiçao)
esses comandos vão fazer com que tudo repita ATÉ uma condição ser verdadeira

Exemplo:

do;
fazer 1
fazer 2
fazer 3
until(a=5);

2 - CONDIÇÕES
é com isso que você vai definir coisas do tipo:
SE O PLAYER ESTIVER OLHANDO PARA O NORTE, FAÇA ISSO
REPITA ATÉ QUE A DURABILIDADE SEJA MENOR QUE 5

OPERADORES RELACIONAIS (ou só "operadores")
Não vou nem explicar, olhando já é possível entender ^^
IGUAL
=
DIFERENTE
seria a mesma coisa de dizer (se isso não for assim)
!=
MAIOR
>
MENOR
<
MAIOR OU IGUAL
>=
MENOR OU IGUAL
<=

MAS O QUE FAÇO COM ELES?
é com eles que você irá comparar números e variáveis (vou explicar sobre elas mais pra frente)

Um exemplo pratico muito usado é o de durabilidade,
por exemplo, se sua espada estiver com baixa durabilidade, a macro para, ficaria assim:

IF(%DURABILITY% < 5); - Se a durabilidade for menor que 5
STOP;
ENDIF;

3 - VARIÁVEIS
FLAGS
"flags" em portuguêns significa "bandeira"

Como Funcionam?
uma bandeira só tem 2 "status": Ligado ou Desligado
lembre-se dos bandeirinhas no futebol, SE estiver levantada (ligada) é impedimento, SE estiver baixada (desligada) não é nada
(lembre-se desse SE)

COMO LIGAR

set(nome_da_flag);
COMO DESLIGAR

unset(nome_da_flag);
E SE EU QUISER APENAS "INVERTER", TENHO QUE USAR IF?
Não, você pode usar um comando que define isso automaticamente!
Agradecimentos a iBieel por ter me lembrado desse comando!

COMANDO TOGGLE(nome_da_flag);
esse comando, irá inverter o status da flag

Se ela estiver desligada, irá ligar
Se estiver ligada, irá desligar

Mas onde aplico elas?
Você vai utilizá-la com o comando IF (lembre-se do exemplo dos bandeirinhas)

if(nome_da_flag);

assim, escrevendo o comando dessa forma, ele já lê como:
se a flag "nome_da_flag" estiver LIGADA

TEXTUAIS E NUMÉRICAS
essas variáveis armazenam dados que podem ser alterados durante o código, ou armazenar dados que sejam adquiridos na hora do uso, como por exemplo %ITEM%, %DIRECTION%, %PLAYER%, etc. (todas vão ser explicadas mais pra frente).

Como Funcionam?
o uso delas são simples, vou explicar uma de cada vez

NUMÉRICAS
usadas para armazenar APENAS NÚMEROS, ela não armazena texto, caso tente armazenar texto nela, ela ficará em branco.

elas são identificadas da seguinte forma:
#nome_da_variavel

automaticamente, qualquer variável numérica vem com o valor 0, para alterá-lo, é simples:

#nome_da_variavel= conteudo;

OBS:
1 - o "nome_da_variavel" é a sua escolha!
2 - o símbolo "#" deve SEMPRE estar na frente do nome da variável
3 - o conteúdo pode ser um numero
ex.: #nome_da_variavel=20;
ou pode ser outra variável
ex.: #nome_da_variavel=%#var2%;

USANDO AS VARIÁVEIS:
para usá-las é simples, elas devem ficar dentro de "%", por exemplo:
IF(%#variavel%);

(lembrando que junto com o nome é obrigatório colocar o simbolo # ou &, e ele deve ser o mesmo que você usou quando atribuiu um valor a ela).

MANIPULANDO AS VARIÁVEIS:
uma variável numerica pode ser manipulada de várias formas, como são números, contas matemáticas podem ser feitas com elas, veja


%#var1% = %#var1%+2 esse comando altera a variável var1 adicionando 2 a mesma

%#var2% = %#var1%+2 esse, altera OUTRA variável (var2) colocando nela o valor da variável var1 + 2

com elas é possível

%#var1%+5 Adicionar
%#var1%-3 Subtrair
%#var1%/7 Dividir
%#var1%*7 Multiplicar
OBS: TODO o tutorial esta sendo feito de cabeça, e muita coisa pode ser deixada pra trás, se souber de outras contas possíveis, marque nos comentários!


outra forma de manipulá-las, é através dos comandos INC e DEC

o uso deles também é bem simples e útil

COMANDO INC
é usado para ACRESCENTAR um numero a variável, desta forma:


INC(#nome_da_variavel, valor);

um exemplo simples de uso é:




INC(#var, 1);

este comando irá acrescentar 1 a variável #var



COMANDO DEC
é usado para SUBTRAIR um numero a variável, desta forma:


DEC(#nome_da_variavel, valor);

um exemplo simples de uso é:




DEC(#var, 1);

Este comando irá subtrair 1 a variável #var





TEXTUAIS

usadas para armazenar caracteres de TEXTO, com ela você pode salvar nomes e outros tipos de informações em forma de texto e/ou números.

elas são identificadas da seguinte forma:
&nome_da_variavel

automaticamente, qualquer variável numérica vem com o valor 0, para alterá-lo, é simples:

&nome_da_variavel= conteudo;

OBS:
1 - o "nome_da_variavel" é a sua escolha!
2 - o símbolo "&" deve SEMPRE estar na frente do nome da variável
3 - o conteúdo pode ser um texto
ex.: &nome_da_variavel=OLÁ;
ou pode ser outra variável
ex.: &nome_da_variavel=%&var5%;

USANDO AS VARIÁVEIS:
assim como as numéricas, para usá-las é simples, elas devem ficar dentro de "%", por exemplo:
IF(%&variavel%);

(lembrando que junto com o nome é obrigatório colocar o simbolo # ou &, e ele deve ser o mesmo que você usou quando atribuiu um valor a ela).


DESVANTAGEM: ela não pode ser manipulada.

VARIÁVEIS DO MINECRAFT
Responsáveis por obter dados do jogo, essas variáveis são separadas em seis grupos
ao contrario das demais elas não levam um caractere do tipo # ou &, mas elas tem duas características únicas:
1 - São escritas SEMPRE em letras MAIÚSCULAS
2 - SEMPRE serão escritas entre "%"

INFORMAÇÕES GERAIS


%PLAYER% - nick do jogador
%DIMENSION% - nome da dimensão atual (nether/mundo normal)
%SERVER% - IP do server
%RAIN% - condiçao de chuva (0 - 400)

INFORMAÇÕES DO PLAYER



%XPOS% - posição X atual
%YPOS% - posição Y atual
%ZPOS% - posição Z atual
%DIRECTION% - direçao em que está olhando (apresentada atraves de uma letra N/S/E/W)
%YAW% - direção horizontal em que está olhando, medida em ângulos, vai de (-90 a 0) e de (0 a 90)
%PITCH% - direçao vertical em que está olhando, medida em ângulos, vai de (-90 a 0) e de (0 a 90)
%HEALTH% - Sangue atual do jogador (0 - 20) sendo meio coraçao = 1
%HUNGER% - Fome atual do jogador (0 - 20) sendo meia carne = 1
%SATURATION% - (SEM INFORMAÇOES)
%OXYGEN% - Oxigênio atual do jogador (0 - 400)

INFORMAÇÕES DA ARMADURA (EM USO)



%BOOTSDURABILITY% - Durabilidade da bota
%BOOTSID% - ID da bota usada
%LEGGINGSDURABILITY% - Durabilidade da calça
%LEGGINGSID% - ID da calça usada
%CHESTPLATEDURABILITY% - Durabilidade do Peitoral
%CHESTPLATEID% - ID do peitoral usado
%HELMDURABILITY% - Durabilidade do capacete
%HELMID% - ID do capacete usado

INFORMAÇÕES DO ITEM QUE ESTÁ EM SUA MÃO



%ITEM% - ID do item que esta em sua mão
%ITEMNAME% - Nome do item que está em sua mão (Ex: Torch)
%DURABILITY% - Durabilidade do item que está em sua mão
%STACKSIZE% - (SEM INFORMAÇOES)

INFORMAÇÕES SOBRE O QUE ESTÁ EM SUA MIRA


%HIT% - Tipo do que esta em sua mira (PLAYER, BLOCK, etc)
%HITID% - ID do que esta em sua mira
%HITNAME% - Nome do que está em sua mira (baseado no ID)
%HITDATA% - (SEM INFORMAÇOES)


INFORMAÇÕES DE "BOTÕES PRESSIONADOS"



%KEY_CTRL% - Verifica se a tecla CTRL esta sendo pressionado
%KEY_ALT% - Verifica se a tecla ALT esta sendo pressionado
%KEY_SHIFT% - Verifica se a tecla SHIFT esta sendo pressionado
%KEY_(name)% - Verifica se a tecla definida esta sendo pressionado (ex:%KEY_(B)%)

PROXIMAS EXPLICAÇÕES:
VARIAVEIS: Random / Strips / globais

PROGRAMADORES

Se quiserem acrescentar ou até mesmo me corrigir, FIQUEM A VONTADE!!

%STACKSIZE% - (Quantia Maxina que o Item pode Ser Juntado (stackado)
 
Não sei se isso é possível fazer no Macro (em outras linguagens de programação é possível), mas queria verificar se 2 variáveis tem tal valor em um só IF, exemplo:

if(%&legal% = 1 E %&naolegal% = 2);
//função;
endif;
Ou melhor ainda:

if(%&legal% = 2 OU %&legal% = 3);
//função;
endif;
Ou terei que usar elseif?
 
Alazaki disse:
Não sei se isso é possível fazer no Macro (em outras linguagens de programação é possível), mas queria verificar se 2 variáveis tem tal valor em um só IF, exemplo:

if(%&legal% = 1 E %&naolegal% = 2);
//função;
endif;
Ou melhor ainda:

if(%&legal% = 2 OU %&legal% = 3);
//função;
endif;
Ou terei que usar elseif?
A condição OU eu sei que é possível utilizar |
agora, E, em algumas seria &, mas em macro isso é indicador de variável, então não funciona
Sei que também dá, mas não sei qual caractere faz essa função
 
jimmyfilips disse:
A condição OU eu sei que é possível utilizar |
agora, E, em algumas seria &, mas em macro isso é indicador de variável, então não funciona
Sei que também dá, mas não sei qual caractere faz essa função
Pesquisei aqui e as condições E e OU são as seguintes:

E = ||
OU = &&

Adicione isso ao seu tópico para as pessoas que tiverem dúvidas.

Ótimo tópico.
 
Alazaki disse:
Pesquisei aqui e as condições E e OU são as seguintes:

E = ||
OU = &&

Adicione isso ao seu tópico para as pessoas que tiverem dúvidas.

Ótimo tópico.
Isso é aplicado ao código da macro? Pois "OU" na linguagem do mod seria | e não &&
 
sarg123 disse:
Como faço para o %HIT% bater em player
o comando %HIT% apenas ve se há alguem em sua mira
o comando para atacar é key(attack);
esse comando simula o clique esquerdo do mouse (apenas um clique)
Vou explicar sobre comandos desse tipo mais pra frente
 
jimmyfilips disse:
o comando %HIT% apenas ve se há alguem em sua mira
o comando para atacar é key(attack);
esse comando simula o clique esquerdo do mouse (apenas um clique)
Vou explicar sobre comandos desse tipo mais pra frente
Mas exemplo, como fasso para ele atacar quando alguém entra na minha mira?
 
jimmyfilips disse:
Em que área do forúm você está? é só olhar isso e terá uma resposta ;)
Filha de Deus,
EU sei que é Macro
, mais você ta programando alguma Linguagem, eu quero saber QUAL LINGUAGEM É.
 
Fernando Brasil disse:
Filha de Deus,
EU sei que é Macro
, mais você ta programando alguma Linguagem, eu quero saber QUAL LINGUAGEM É.
É a linguagem macro cara, não é linguagem C, Assembly, C++, etc. É a linguagem MACRO e ponto, não tem outro nome
 
Fernando Brasil disse:
Filha de Deus,
EU sei que é Macro
, mais você ta programando alguma Linguagem, eu quero saber QUAL LINGUAGEM É.
O mod macro keybind tem sua propria linguagem criatura, é a linguagem de MACRO, deste mod!
 
Status
Não está aberto para novas respostas.

Users who are viewing this thread

Voltar
Topo