Afinal o que é "macro" e o que é "bind"?
Algumas pessoas possuem dificuldades em distinguir ou apenas acham que essas duas funções são as mesmas, e é por isso que irei explicar suas "responsabilidades" no mod.
Macro: Esta função é responsável por ações "automáticas" dentro do jogo, seja para andar, abrir baús, escrever no chat global ou local, trocar de ferramenta, avisar sobre a durabilidade de um item, etc.
O macro é o código que você cria, para realizar uma tarefa dentro do jogo.
Em alguns casos, pode ser considerado um "robo" por assumir tarefas que seriam realizadas por um player.
Bind: Esta função é responsável apenas pela ação de pressionar uma tecla, como executar um texto por exemplo.
Ou seja, sem a bind não seria possível executar um código de macro.
[hr]
Para aprender a utilizar o mod, é necessário conhecer pelo menos sua estrutura principal ou seja, a interface gráfica que ele possui e o que ela tem a oferecer.
Como eu acesso essa interface?
Você pode acessa-lo através das teclas de atalho que você definiu quando iniciou o mod pela primeira vez, ou simplesmente ir em:
>Controles > Macro Settings
A imagem acima, mostra o menu principal do mod.
Como pode ser notado, é exibido o layout de um teclado e de um mouse.
- As teclas em
vermelho indicam que as mesmas já possuem funções dentro do jogo, é possível utiliza-las, porém não é recomendável.
- As teclas em
amarelo indicam que o usuário já inseriu algum tipo de função, ou seja, já está em uso.
- As tecla em
cinza indicam que estão livre para uso.
Mais acima é possível notar a presença de 3 funções:
1° Função:
- Clicando sobre este ícone, serão exibido um mini menu, que permite alterar configurações, alterar janela de interface e outros.
2° Função:
- Clicando na seta que indica para a direita, você poderá mexer em outras funções que o mod permite, como o menu "Events/Eventos" que irei explicar mais abaixo.
3° Função:
- É possível definir várias configurações dentro do mod, é como se fosse um "save" de outras configurações do mod, pode ser utilizado para testar macros, etc.
[hr]
Mas o que seria esse "Evento" dentro do mod de macros?
Poucos conhecem esse menu, e alguns simplesmente não entendem pra que serve.
Pois bem, este menu permite a você configurar um determinado código para ser ativado assim que ocorrer alguma ação dentro do jogo.
Ok, mas quais são estes tipos de ações?
Alguns são bem simples, irei citar dois exemplos e irei explicar como deve-se entende-los:
- OnJoinGame: É possível definir um código nesta ação, que assim que você acessar o servidor o macro digite sua senha automaticamente, etc.
Isso depende da sua criatividade, além de digitar a senha ainda é possível ir para uma determinada /home de sua escolha, como citei anteriormente isso depende da sua criatividade e é claro, de sua necessidade.
- onChat: Você deve entender esta função da seguinte forma "no chat", "quando abrir o chat", etc.
Assim que ocorrer alguma ação dentro do chat, a macro definida irá ativar.
Por exemplo: Você pode construir uma macro para ler as mensagens do global, e definir que quando mostrar a palavra "evento no servidor" o macro te avise com uma cor forte, ou faça alguma coisa no jogo.
- onHealthChange: Você deve entender esta função da seguinte forma "quando a vida mudar", "quando perder vida" executar tal ação.
- onFoodChange: Você deve entender esta função da seguinte forma "quando alterar o nivel de fome", "quando ficar com fome" executar tal ação.
- onArmourChange: Você deve entender esta função da seguinte forma "quando trocar de armadura" executar tal ação.
- onWorldChange: Você deve entender esta função da seguinte forma "Quando mudar/alterar de mundo" executar tal ação.
- onModeChange: Você deve entender esta função da seguinte forma "quando trocar a configuração do jogo" executar tal ação.
- onInventorySlotChange: Você deve entender esta função da seguinte forma "quando trocar alguma coisa de algum slot" executar tal ação.
- onArmourDurabilityChange: Você deve entender esta função da seguinte forma "quando mudar a durabilidade da armadura" executar tal ação.
- onOxygenChange: Você deve entender esta função da seguinte forma "quando sumir uma determinada quantia de bolha de respiração" executar tal ação.
- onXPChange: Você deve entender esta função da seguinte forma "Quando o nível de XP mudar/alterar/abaixar" executar tal ação.
- onLevelChange: Você deve entender esta função da seguinte forma "Quando mudar de nível" executar tal ação.
[Lembrando que isso não se aplica aos níveis de stats dentro da craftlandia]
- onWeatherChange: Você deve entender esta função da seguinte forma "Quando mudar o clima do jogo" executar tal ação.
- onPíckupItem: Você deve entender esta função da seguinte forma "Quando pegar/receber um item" executar tal ação.
- onPlayerJoined: Você deve entender esta função da seguinte forma "Quando algum jogador entrar/acessar o servidor" executar tal ação.
- onShowGui: Você deve entender esta função da seguinte forma "Quando exibir algum tipo de janela, ex: inventário, itens dentro de um baú..." executar tal ação.
- onAutoCraftingComplete: Você deve entender esta função da seguinte forma "Quando terminar de "craftar" algo " executar tal ação.
- onConfigChange: Você deve entender esta função da seguinte forma "quando for feita alguma alteração de configuração" executar tal ação.
- onSendChatMessage [Novo]: Entende-se esta função como "Ao enviar mensagem no chat" executar tal ação.
Obs: Essa função foi implementada na versão 1.7.2.
[hr]
Para utilizar/criar uma bind é super fácil, primeiro você precisa clicar na tecla que você deseja executar um texto ou chamar um código de macro e inserir sua respectiva função, deixarei 2 exemplos abaixo.
1° Criando uma bind para mostrar uma mensagem na tela:
Acesse a interface principal do mod, e clique ou pressione alguma tecla.
Será mostrado o seguinte:
- Como pode-se notar, estou configurando a bind na tecla "M"
E neste exemplo, iremos exibir apenas a frase "Olá craftlandia" então para isso, basta adicionar a frase:
- E em seguida clicar no botão "Save"
- Agora é só pressionar a tecla que você definiu, no exemplo utilizei a tecla "M" e ver o resultado dentro do jogo.
2° Utilizando uma bind para chamar um código de macro.
- Existem dois modos de executar um código macro em uma bind.
O primeiro permite que ao pressionar uma tecla, o mesmo execute um código macro pré definido na bind.
O segundo permite que você "chame" um arquivo .txt que tenha uma "programação" de macro dentro dele, ou seja um código extenso.
Mostrarei os dois exemplo, veja abaixo:
O macro postado
recentemente pelo nosso querido ex-sub-diretor ([member='MatheusUzumaki']) é um exemplo de código de macro pré definido dentro de uma bind (tecla) e não de um texto ".txt":
Pode-se notar que o código está dentro da tecla "M".
- Porque eu tenho que colocar estes comandos " $${ }$$ " no código?
R: O macro também é uma plataforma para "programação" porém essa "programação" é apenas para o minecraft, e como toda linguagem de programação, é necessário que o sistema que vai executar o código entenda onde começar a ler uma função.
E é justamente disso que trata-se estes cifões/chaves, eles indicam que dentro daquelas chaves existe um código macro, se você não colocasse essas chaves (
$${ }$$) o mod simplesmente iria mostrar todo esse código na tela como se fosse um texto, o que não seria muito agradável.
Para que a bind reconheça que você está querendo executar um código macro e não um texto, é necessário iniciar o código com "
$${" e terminar com "
$$}"
- Ok, mas porque eu vou querer escrever o código dentro de um arquivo .txt ??
R: Simplesmente por que o espaço para digitar um código dentro de uma bind é pequeno, imagine escrever um código de macro extenso dentro dessa caixa de textos?
- Como faça para "chamar" um arquivo .txt cujo o código de programação de macro esteja dentro dele?
R: Primeiramente quero esclarecer que já existe uma pasta pré-definida do mod para executar arquivos .txt.
Então não adianta querer incluir um comando para procurar o arquivo ".txt" em seu computador.
- Qual pasta ficam os arquivos (.txt) da macro?
R: .minecraft/mods/macros
- Eu posso construir o código no bloco de notas (Notepad) e salvar nesta pasta?
R: Sim
Para chamar um arquivo ".txt" é necessário inserir o comando "
$$<arquivo.txt>" sem aspas.
- Mas e aquelas chaves ($${ }$$) ?
R: Como disse anteriormente, essas chaves servem para indicar que o código trata-se de uma macro.
- Tudo bem, mas o arquivo que estamos chamando tem um código de macro dentro certo? onde vamos colocar essas chaves?
R: Bom, isso fica a critério do "programador".
Ou a pessoa coloca estas chaves dentro do arquivo .txt ou já insere na própria bind, evitando o uso das chaves dentro do arquivo ".txt", por exemplo:
[hr]
Mostrei anteriormente como utilizar binds, agora irei mostrar como editar/criar um código macro dentro do mod.
- Após definir a bind para "chamar" um código macro, clique em "Edit File..."
- Em seguida, dê o nome do arquivo que você definiu na bind.
No exemplo anterior o nome do arquivo era "macro.txt", lembrando que não é necessário adicionar a extensão .txt no final, depois clique no botão "Create" :
- Será aberto um editor de textos, e é nele que você irá construir seu código inteiro.
[hr]
Vamos tratar um pouco sobre o assunto "Comandos" também conhecidos como "Sintaxe" e são estas sintaxe que definem uma linguagem de programação.
O que é uma sintaxe?
Em termo informal, a sintaxe é uma palavra "chave" que possui uma instrução/função dentro do mod.
Se não existisse essa palavra chave, o programador teria que escrever uma série de códigos binários, para fazer o minecraft entender o que ele pretender fazer dentro do jogo.
Obs: Decidi colocar todas as funções abaixo em inglês até porque algumas sintaxes não fazem sentido nenhum em português:
CRAFT
CRAFT(<item[:damage]>,[amount],[throw],[verbose])
Descrição: Cria uma lista de itens para serem craftados.
CRAFTANDWAIT
CRAFTANDWAIT(<item[:id]>,[amount],[throw],[verbose])
Descrição: Cria uma lista de itens para serem craftados e aguarda por um tempo pré-definido.
DISCONNECT
DISCONNECT()
Descrição: Desconecta do jogo ou servidor.
GETID
GETID(<x>,<y>,<z>,<#idvar>,[#datavar])
Descrição: Obtém a ID e opcionalmente os valores de dados de um bloco em uma coordenada específica no mundo.
GETIDREL
GETIDREL(<xoffset>,<yoffset>,<zoffset>,<#idvar>,[#datavar])
Descrição: Obtém a ID e opcionalmente os valores de dados de um bloco em uma determinada coordenada relativa ao jogador.
GETITEMINFO
GETITEMINFO(<item[:damage]>,<&namevar>,[#maxstacksize],[&type],[#dropid])
Descrição: Obtém o nome e outras informações de um item, retorna o valor "None" caso o item seja inválido.
GETSLOT
GETSLOT(<item[:damage]>,<#idvar>,[startfromslotid])
Descrição: Obtém a id de um slot que contenha um item compatível, retorna -1 se não for encontrado.
GETSLOTITEM
GETSLOTITEM(<slotid>,<#idvar>,[#stacksizevar],[#datavar])
Descrição: Obtém informações sobre o item em um determinado slot.
INVENTORYDOWN
INVENTORYDOWN([amount])
Descrição: Desce uma específica quantia de slots na hotbar
INVENTORYUP
INVENTORYUP([amount])
Descrição: Sobe uma específica quantia de slots na hotbar
LOOK
LOOK(<yaw>,[pitch],[time])
Descrição: Faz o player olhar para uma direção específica, use ângulos prefixos com + ou - para movimentos relativos.
LOOKS
LOOKS(<yaw>,[pitch],[time])
Descrição: Vira o player suavemente para uma direção específica, use ângulos prefixos com + ou - para movimentos relativos.
PICK
PICK(<item[:damage]>,[item[:damage]],...)
Descrição: Seleciona a id de um item se o mesmo estiver na hotbar, especifique outros itens a serem apanhados de acordo com sua preferência.
PLACESIGN
PLACESIGN([line1],[line2],[line3],[line4],[showgui])
Descrição: Coloca uma placa com o texto designado (se você tiver um)
PLAYSOUND
PLAYSOUND(<sound>)
Descrição: Reproduz um som
RESPAWN
RESPAWN()
Descrição: Ressuscita um player caso ele tenha morrido.
SETSLOTITEM
SETSLOTITEM([item[:damage]],[slot],[amount])
Descrição: Apenas para o modo criativo, seleciona um conteúdo em um slot na hot bar.
SLOT
SLOT(<slot>)
Descrição: Seleciona um slot pré-definido na hot bar.
SLOTCLICK
SLOTCLICK(<slot>,[button],[shift])
Descrição: Simula o clique em um determinado slot na interface atual, é possível utilizar RMB e shiftkey
SPRINT
SPRINT()
Descrição: Faz o player correr se tiver estamina suficiente (comida)
UNSPRINT
UNSPRINT()
Descrição: Faz com que o player pare de correr.
KEY
KEY(<bind>)
Descrição: Ativa uma determinar tecla de atalho 1 vez.
KEYDOWN
KEYDOWN(<bind>)
Descrição: Define o estado de uma tecla de atalho para "pressionada", funciona apenas com atalhos pressionáveis.
KEYUP
KEYUP(<bind>)
Descrição: Define o estado de uma tecla de atalho para "sem pressionamento", funciona apenas com atalhos pressionáveis.
TOGGLEKEY
TOGGLEKEY(<bind>)
Descrição: Alterna o estado de uma tecla de atalho, funciona apenas com atalhos pressionáveis.
PRESS
PRESS(<lwjgl_name>)
Descrição: Realiza a função manual de uma determinada tecla.
TYPE
TYPE(<text>)
Descrição: Realiza a função manual de uma determinada tecla em sequências.
ASSIGN
<var> = <value>
Descrição: Função interna.
BREAK
BREAK
Descrição: Interrompe uma função interna que esteja sendo executada continuamente.
CALCYAWTO
CALCYAWTO(<xpos>,<zpos>,[#yaw],[#distance])
Descrição: Calcula o ângulo preciso de uma determinada coordenada.
DEC
DEC(<#var>,[amount])
Description: Decrements the specified counter by 1 or by the specified amount
Descrição: Desconta uma específica contagem por 1 ou por um outro valor.
DO
DO([count])
Description: Begins a loop, specify a number of loops to limit the loop count
Descrição: Inicia um loop, é possível definir um valor para o limite de loop.
ECHO
ECHO(<text>)
Description: Sends the specified message as a chat packet
Descrição: Envia uma mensagem no chat do jogo.
ELSE
ELSE
Description: ELSE clause
Descrição: (SE NÃO) <condição>
ELSEIF
ELSEIF(<condition>)
Description: ELSEIF clause
Descrição: (SE NÃO FOR) <condição>
ENDIF
ENDIF
Description: ENDIF clause
Descrição: (FIM DO MÉTODO IF) <condição>
EXEC
EXEC(<file.txt>,[taskname],[params],...)
Description: Creates a task by running the specified script file
Descrição: Cria uma tarefa para executar determinado arquivo de script.
FOR
FOR(<#var>,<start>,<end>)
Description: Begins a FOR->NEXT loop using the specified var as a loop counter, #var can be used inside the loop
Descrição: Inicia um FOR->NEXT utilizando uma específica variável como loop em contagem, #var pode ser usada dentro do loop.
FOREACH
FOREACH(<iterator>)
Description: Runs a loop over the specified iterator
Descrição: Executa um loop em um iterator.
IF
IF(<condition>)
Description: IF clause
Descrição: (SE) <condição>
IFBEGINSWITH
IFBEGINSWITH(<haystack>,<needle>)
Description: IFBEGINSWITH clause
Descrição: (SE INICIAR COM) <condição>
IFCONTAINS
IFCONTAINS(<haystack>,<needle>)
Description: IFCONTAINS clause
Descrição: (SE CONTER) <condição>
IFENDSWITH
IFENDSWITH(<haystack>,<needle>)
Description: IFENDSWITH clause
Descrição: (SE TERMINAR COM) <condição>
IFMATCHES
IFMATCHES(<subject>,<pattern>,[&target],[group])
Description: IFMATCHES clause
Descrição: (SE CORRESPONDER) <condição>
IIF
IIF(<condition>,<truetext>,[falsetext])
Description: Inline IF statement, sends truetext as a chat message if condition succeeds, or sends falsetext if not
Descrição: Utiliza a função IF em uma linha, envia um texto (True/Verdadeiro) se a condição obtiver sucesso, ou envia um (False/Falso) caso não obtenha.
INC
INC(<#var>,[amount])
Description: Increments the specified counter by 1 or by the specified amount
Descrição: Incrementa uma determinada contagem, em 1 ou por outro valor determinado.
LOG
LOG(<text>)
Description: Outputs the specified text into the local chat stream
Descrição: Retorna um determinado texto no chat local.
LOGTO
LOGTO(<target>,<text>)
Description: Outputs the specified text into the specified target, target can be a text file name or the name of a textarea
Descrição: Retorna um determinado texto em um local/alvo, o local/alvo pode ser um arquivo de texto ou uma área de texto.
LOOP
LOOP
Description: Ends a loop that was started with DO
Descrição: Finaliza um loop que foi iniciado com DO.
MATCH
MATCH(<subject>,<pattern>,[&target],[group],[default])
Description: Runs a regular expression match on the subject and puts the result in &target
Descrição: Inicia a expressão regular de comparação em um assunto e coloca o resultado em &alvo/local.
NEXT
NEXT
Description: Completes a FOR->NEXT loop
Descrição: Completa um loop do tipo FOR->NEXT.
PROMPT
PROMPT(<&target>,<paramstring>,[prompt],[override],[default])
Descrição: Displays a prompt (or prompts) by parsing the params in paramstring
RAMDOM
RANDOM(<#target>,[max],[min])
Descrição: Assigns a random number between min and max to target
REPLACE
REPLACE(<&subject>,<search>,[replace])
Descrição: Replace all occurrences of search with replace in &subject
SET
SET(<target>,[value])
Descrição: Sets the value of target to value (or TRUE if value is omitted)
SETLABEL
SETLABEL(<labelname>,<text>,[binding])
Descrição: Sets the text (and optionally binding) of the specified label
SQRT
SQRT(<value>,[#outvar])
Descrição: Calculate the square root of value and store it in #outvar
STOP
STOP([id])
Descrição: Stops the current macro, or macros matching the specified ID
STRIP
STRIP(<&target>,<text>)
Descrição: Strips all formatting codes from the specified text and assigns the result to &target
TOGGLE
TOGGLE([flag])
Descrição: Toggles the specified boolean flag's value
UNSET
UNSET(<flag>)
Descrição: Un-sets the specified variable
UNTIL
UNTIL(<condition>)
Descrição: Completes a loop started with DO but exits the loop if condition is met
WAIT
WAIT(<time>)
Descrição: Pauses the script for the time specified, suffix "ms" for a wait in milliseconds or "t" to wait in ticks
WHILE
WHILE(<condition>)
Descrição: Completes a loop started with DO but exits the loop if condition is not met
ARRAYSIZE
ARRAYSIZE(<array>,<outvar>)
Descrição: Stores the size of the specified array in outvar
INDEXOF
INDEXOF(<array>,<outvar>,<searchfor>)
Descrição:Gets the first index of searchfor in array and stores it in outvar, returns -1 on failure
POP
POP(<array>,<outvar>)
Descrição: Removes the last entry from the tail of array and stores it in outvar
PUSH
PUSH(<array>,<value>)
Descrição: Appends value to the end of array
PUT
PUT(<array>,<value>)
Descrição: Inserts value at the first empty point in array
CONFIG
CONFIG(<configname>)
Descrição: Switch to the specified configuration
IMPORT
IMPORT(<configname>)
Descrição: Overlay the specified configuration
UNIMPORT
UNIMPORT()
Descrição: Remove the specified configuration overlay if active
BIND
BIND(<bind>,<keycode>)
Descrição: Set the specified key binding to the specified key code
CHATHEIGHT
CHATHEIGHT(<value>,[time])
Descrição: Set height of the Minecraft chat whilst ingame 20-180
CHATHEIGHTFOCUSED
CHATHEIGHTFOCUSED(<value>,[time])
Descrição: Set height of the Minecraft chat whilst in the chat GUI 20-180
CHATOPACITY
CHATOPACITY(<value>,[time])
Descrição: Set opacity of the Minecraft chat 0-100
CHATSCALE
CHATSCALE(<value>,[time])
Descrição: Set scale of the Minecraft chat 0-100
CHATVISIBLE
CHATVISIBLE(<value>)
Descrição: Set visibility of minecraft chat
CHATWIDTH
CHATWIDTH(<value>,[time])
Descrição: Set width of the Minecraft chat 40-320
FOG
FOG([value])
Descrição: Toggles render distance, or optionally specify render distance
FOV
FOV(<value>,[time])
Descrição: Sets the FOV angle in degrees, specifying time causes the value to change smoothly
GAMMA
GAMMA(<value>,[time])
Descrição: Sets the brightness value (percent), specifying time causes the value to change smoothly
MUSIC
MUSIC(<value>,[time])
Descrição: Sets the music volume, specifying time causes the value to change smoothly
RESOURCEPACK
RESOURCEPACK([pattern])
Descrição: Sets the resource pack to the pack matching pattern
SENSITIVITY
SENSITIVITY(<value>,[time])
Descrição: Sets the mouse sensitivity (between 0 and 200), specifying time causes the value to change smoothly
SETRES
SETRES(<width>,<height>)
Descrição: Sets the size of the minecraft game window
TEXTUREPACK
TEXTUREPACK([pattern])
Descrição: Sets the resource pack to the pack matching pattern
VOLUME
VOLUME(<value>,[time])
Descrição: Sets the sound volume, specifying time causes the value to change smoothly
ACHIEVEMENTGET
ACHIEVEMENTGET(<text>,[itemid[:damage]])
Descrição: Displays the "achievment get" popup with a custom message
BINDGUI
BINDGUI(<slot>,<screen>)
Descrição: Binds the specified custom screen to the slot specified
CLEARCHAT
CLEARCHAT()
Descrição: Clears the current chat stream
GUI
GUI([name])
Descrição: Show (or hide) a gui screen
SHOWGUI
SHOWGUI(<screen>,[esc_screen])
Descrição: Show a custom gui screen
STORE
STORE(<type>,[name])
Descrição: Store a value into a list using the current environment
STOREOVER
STOREOVER(<type>,[name])
Descrição: Store a value into a list using the current environment and overwrite it if exists
TIME
TIME(<&target>,[format])
Descrição: Stores the current time and date into &target, optionally using format specified
Obs: Todas as sintaxe do mod, foram cedidas por Mumfrey - Criador do mod.
Última atualização do Tópico em: 17 /08/2014 - | ATENÇÃO! Algumas sintaxes não estão disponíveis na versão antiga (1.5.2)|
**TODOS OS COMANDOS DISPONÍVEIS NA MACROS FORAM ADICIONADOS AO TÓPICO**Clique para expandir...