Support OpenKore:
Learn about
the Fund Pool

Macro Plugin PortuguêsBR

O que é um plugin de Macro?

Com este plugin você pode pré-definir seqüências de comandos (macros) que são executadas ou manualmente ou através de gatilhos dependendo da situação. A versão mais recente é 2.0.2.


Contents


Instalação

Instalação no OpenKore

  1. Download o plugin de macro.
  2. Acesse sua pasta do OpenKore (a pasta que contém o arquivo openkore.pl).
  3. Nesta pasta crie uma subpasta chamada plugins, se já não houver uma.
  4. Dentro do arquivo zip do plugin de macro você econtrará o arquivo macro.pl e a pasta Macro. Extraia-os para a pasta plugins.
  5. Na pasta control do seu OpenKore crie um arquivo em branco chamado macros.txt. Nele você adicionará suas macros/automacros.

Depois da instalação, a árvore de arquivos do seu OpenKore será similar a (ignorando os arquivos próprios do OpenKore):

openkore
|-- openkore.pl
|-- control
|   `-- macros.txt
|-- fields
|-- logs
|-- plugins
|   |-- Macro
|   |   |-- Automacro.pm
|   |   |-- Data.pm
|   |   |-- Parser.pm
|   |   |-- Script.pm
|   |   `-- Utilities.pm
|   |-- macro.pl
|-- src
`-- tables


Instalação no VisualKore

  1. Download plugin de macro.
  2. Dentro do arquivo zipado do plugin de macro você encontrará o arquivo macro.pl e a pasta Macro. Extraia-os para C:\Program Files\VisualKore\plugins
  3. Acesse a janela Profiles do VisualKore . Selecione seu perfil e clique em "Edit Profile".
  4. Uma pasta irá aparecer, nela crie um arquivo vazio chamado macros.txt. Neste arquivo você colocará suas macros/automacros.

Para configurar o plugin procure em Configuração de arquivos.

Notas:

  • Cada pasta de perfil do seu VisualKore corresponde a pasta "control" referenciado neste manual.
  • Para utilizar a mesma macro em múltiplos perfis, você deverá copiar o arquivo macros.txt(sua macro) para cada perfil. Além disso, cada config.txt do seu perfil deve possuir a linha de código que previne o plugin de ser descarregado/desligado.
  • Por favor leia todo o manual para buscar a linha de código que você precisa adicionar em seu config.txt na pasta de seu perfil. Se o código não for inserido o plugin será descarregado/desligado.

Comandos

macro <nome da macro> [opções] [-- parâmetro(s)]

Executa a macro <nome da macro>.

Opção Valor Descrição
-repeat n repete a macro n vezes
-overrideAI (nenhum) sobrepõe a IA do openkore
-macro_delay atraso sobrepõe a macro_deley global para esta macro
-exclusive (nenhum) não permite que automacros cancelem essa macro
-orphan método use o método para lidar com macros órfãs

Parâmetros para a macro podem ser especificados após o uso de dois hífens(--). Estes parâmetros são salvos nas variáveis $.param1 to $.paramN. Exemplo:

macro foo {
 log Parâmetro 1 é $.param1
 log Parâmetro 2 é $.param2
}

quando executada como macro foo -- foo bar apresentará

[macro] Parâmetro 1 é foo
[macro] Parâmetro 2 é bar

macro list

Lista todas as macros disponíveis.

macro stop

Pára a macro atual.

macro pause

Interrompe a execução da macro.

macro resume

Reinicia uma macro interrompida.

macro set variáve valor

Configura/troca variável para valor ou apaga variável se nenhum valor é dado.

macro version

Imprime o número da versão.

macro reset [<nome(s)>]

Reseta todas as automacros que executam uma única vez ou a automacro especificada em <nome>.

macro status

Mostra quando uma macro está ou não em execução. Se estiver em execução mostra o atraso para o próximo comando, a linha atual, configruação de overrideAi, quando ou se a macro foi encerrada e se a macro está ou não registrada na fila de AI.

Configuração de arquivos

control/macros.txt

Coloque suas macros e automacros aqui.

control/timeouts.txt

Adicione o macro_delay e configure para o número de segundos que você deseja que o plugin pause entre os commandos.

control/config.txt

Variável Valor Descrição
macro_nowarn 0
1
habilita ou desabilita os alertas importunos quando não se usa call em sua(s) automacro(s).
macro_orphans terminate
reregister
reregister_safe
veja a seção de macros órfãs
macro_file nome do arquivo arquivo contendo as macros ("macros.txt" por padrão)
macro_allowDebug 0
1
console-verifica também mensagens de debug de processos do OpenKore (padrão: 0). Atenção: atrasa a execução do plugin.

Antes de escrever macros

Certifique-se de ler esse manual por completo.
Se você quiser usar comandos do OpenKore em suas macros leia sobre Commands comandos de console. Note que alguns comandos como de manipulação da fila de IA não são permitidos.
Finalmente, leia os anúncios. Eles podem conter exemplos úteis.

Sintaxe de Macro

macro foo {
   faça isso..
   e aquilo..
   blábláblá..
}

Na teoria você pode usar qualquer comando de console em uma macro. Eu testei este plugin para comprar flechas de prata, conversar com NPC e mandar mensagens privadas para pessoas. Pessoas preguiçosas podem usar este plugin para completar a quest de amtsu ou algo similar.

do <comando>

Permite que o OpenKore execute o <comando>.

Example:

 macro foo {
    do move 123 234 prontera
    do sit
    do c "Olá mundo"
 }


log <texto>

Envia o <texto> para o console.

Example:

macro foo {
   log Esta linha registra um texto no console.
   log Toda sua base pertence a nós!
}


pause [<n>]

Pausa por um ou <n> segundos.

Example:

 macro foo {
    log Eu estou aqui e...
    pause 10
    log agora estou aqui.
 }


call <nome da macro> [<n>]

Executa a macro <nome da macro> [<n> vezes]. Quando <nome da macro> termina a macro atual continua a execução.

release (<nome> | all)

Reabilita a execução de uma automacro travada (parâmetro "run-once" ou travada por "lock") ou reabilita todas as automacros quando utilizando release all.

lock <nome>

Trava uma automacro e deasbilita sua verificação.

stop

Encerra imediatamente a macro em execução.

set <opção> <valor>

Configura caracterísitcas da macro:

  • orphan método
  • macro_delay timeout
  • overrideAI [0|1]
  • repeat vezes
  • exclusive [0|1]

Veja a seção de automacro.


Declaração e uso de variáveis

Você pode definir e trabalhar com suas próprias variáveis.
Para configurar uma variável use $variable = valor, para reutilziar o valor use $variable.
É possível incrementar e decrementar a variável usando $variable++ ou $variable--.
Para cálculos utilize @eval. Para extrair o primeiro item de uma lista separada por vígula utilize

macro foo {
  $list = elemento um,elemento dois,foo,bar,baz
  $var = [$list]
  log var contains $var (elemento um)
  log list contains $list (elemento dois,foo,bar,baz)
}

Note que os nomes de variáveis devem começar com uma letra e só podem conter letras e dígitos.

Example:

macro foo {
   $var1 = mundo
   $var2 = olá
   $var3 = $var2 $var1
   log a próxima linha apresentarán "olá mundo . mundo . olá"
   do c $var3 . $var1 . $var2
   $var4 = 47
   log \$var4 é $var4
   $var4++
   log \$var4 é $var4
   $var4 = @eval ($var4 + 52)
   log \$var4 é $var4
}


Variáveis Especiais

Essas são variáveis especiais apenas para leitura que começam com um ponto.

  • $.map - o mapa em que você se encontra ("prontera")
  • $.pos - sua posição atual ("123 234")
  • $.time - horário atual formatado como no Unix ("1131116304")
  • $.datetime - data e hora atuais ("Fri Nov 4 15:59:36 2005")
  • $.hp - hp atual
  • $.sp - sp atual
  • $.lvl - nível de base atual
  • $.joblvl - nível de job atual
  • $.spirits - quantidade atual de esferas espirituais
  • $.zeny - quantidade atual de zeny
  • $.status - status atual em uma lista separada por vírgula
  • $.lastLogMsg - o texto que acionou a condição da última automacro
  • $.lastpub - o nome do jogador que acionou a condição "pubm" da última automacro
  • $.lastpubMsg - o que ele escreveu
  • $.lastpm - o nome do jogador que acionou a condição "pm" da última automacro
  • $.lastpmMsg - o que ele escreveu
  • $.lastguild - o nome do jogador que acionou a condição "guild" da última automacro
  • $.lastguildMsg - o que ele escreveu
  • $.lastparty - o nome do jogador que acionou a condição "party" da última automacro
  • $.lastpartyMsg - o que ele escreveu
  • $.lastMonster - o nome do monstro que acionou a condição "monster" da última automacro
  • $.lastMonsterPos - a última posição conhecida do monstro ("123 234 prontera")
  • $.lastMatchN - última referência de comparação positiva de regexp.
  • $.paramN - parâmetros de linha de comando (veja comandos)
  • $.caller - nome da última automacro acionada
  • $.hooksave - valor de uma hash key (argumento repassado pelo o hook)
  • $.weight Peso atual do personagem
  • $.maxweight Peso máximo do personagem

Variáveis encadeadas(Nested variables)

Você pode definir variáveis dinâmicas ou variáveis encadadeadas.

Example:

macro foo {
    $var = foo
    log \$var is "foo"
    ${$var} = bar
    log \$\$var is \$foo is "bar"
}


Controle de fluxo e labels

Enquanto todas as linguagens de programação de alto nível possuem construções como "if .. then", "while", "repeat", "for .. next", "do .. while", as funções executam seus denominadores mais comuns que são "if", "goto" and "while". E é por isso que o plugin de macro só suporta essas três palavras chaves. Apesar de não existir número de linhas(visíveis) você vai precisar usar labels que são definidas por dois pontos seguidos do nome da label.


Exemplo de uma construção "while":

macro foo {
    $i = 0
    log as próximas linhas irão entrar em loop por 11 vezes (0 .. 10)
    while ($i <= 10) as exampleloop
    	log loop $i
    	$i++
    end exampleloop
}


Example:

macro foo {
   $i = @random ("1", "2", "3")
   if ($i == 1) goto um
   if ($i == 2) goto dois
   log i is three.
   goto end
   :um
   log i é um
   goto end
   :two
   log i é dois
   :end
}

Nota: labels goto só podem conter letras e dígitos. Exemplo: warp_to_payon não funciona, deve ser algo parecido com warpToPayon.


Condições

Condição Significado
< menor que
<= menor ou igual
== igualdade
>= maior ou igual
> maior que
 != diferente
~ <parte esquerda> é elemento da <parte direita (da lista separada por vírgula)>

Palavras-chaves especiais

@npc (<x> <y>)
Expõe o ID de NPC que está localizado em (<x>,<y>), ou para -1 se o NPC não for localizado.
@inventory (<item>)
Procura em seu inventário pelo <item> e retorna o ID ou -1 se o item não foi encontrado.
@Inventory (<item>)
Mesmo que @inventory mas retorna todas as IDs que combinarem em uma lista separada por vírgula ou -1 se o item não for localizado.
@cart (<item>)
Procura em seu carrinho pelo <item> e retorno o ID ou -1 se não for encontrado.
@Cart (<item>)
Igual a @cart mas retorna todos os IDs que combinarem em uma lista separada por vírgula ou -1 se o item não for encontrado.
@storage (<item>)
Pesquisa pelo <item> em seu inventário e retorna a ID ou -1 se não for localizado.
@Storage (<item>)
O mesmo que @storage mas retorna todos os IDs que combinarem em uma lista separada por vírgula e -1 se o item não for localizado.
@player (<nome>)
Procurar por um jogador e retorna o ID ou -1 se não for localizado.
@vender (<nome>)
Procura por um vendedor e retorna o ID ou -1 se não for localizado.
@store (<nome>)
Procura por um item na loja e retorna seu ID ou -1 se não for encontrado.
@random ("<argumento1>"[, "<argumento2>"[, ...]])
Retorna um dos argumentos dados aleatóriamente.
@rand (<n>, <m>)
Retorna um número aleatório entre(e incluindo) <n> e <m>.
@invamount (<item>)
Retorna a quantidade do <item> no invertário.
@cartamount (<item>)
Retorna a quantidade do <item> no carrinho.
@shopamount (<item>)
Retorna a quantidade do <item> na vendinha.
@storamount (<item>)
Retorna a quantidade do <item> no inventário.
@eval (<argumento>)
Analisa o <argumento> dado.
@arg ("<argumento>", <n>)
Retorna a letra na posição <n> do argumento dado ou uma string vazia se o índice estiver fora de alcance.
@config (<variável>)
Retorna o valor da <variável> especificada no config.txt
@venderitem (<nome>)
Olha por um item no mercado de jogadores e retorna ID se encontrado, ou -1 se o item não foi encontrado.
@venderprice (<indexID>)
Olha por um item no mercado de jogadores e retorna o preço.

Comandos "encadeados"

Você pode executar múltiplos comandos um após o outro sem ter que esperar pela IA do OpenKore ou macro_delay ou outra coisa. Apenas encadeie os comandos com "[" e "]".

Exemplo (com linhas numeradas):

0 macro foo {
1  do algo
2  log ainda outra linha
3  [
4     do alguma coisa
5     do outra coisa
6     log foo
7  ]
8  log pronto
9 }


A linha 3 inicia o modo encadeado. Essa linha não tem atraso. As linhas 4,5 e 6 são executadas assim que o comando anterior terminar, sem atraso e eles não podem ser interrompidos. A linhas 7 interrompe o modo encadeado e a linha 8 executará $macro_delay segundos após.

Exemplo simples de macro

Example:

macro foo {
   $foobegin = $.pos
   do move 168 128 prt_in
   do talk @npc (172 130)
   do store
   do store
   do buy @store (Silver Arrow) 10000
   do move 280 198 prontera
   do talk @npc (282 200)
   do talk cont
   do talk resp 1
   do storage add @inventory (Silver Arrow) @eval (@invamount (Silver Arrow) - 1000)
   do move $foobegin
}

Quando acionada pelo comando "macro foo [times]" a macro faz o seguinte:

  • armazena a posição atual em "foobegin";
  • move-se para 168 128 prt_in (weapon shop);
  • conversa com o NPC localizado em 172 130 (vendedor de armas);
  • digita "store" duas vezes para mostrar o que ele vende;
  • compra 10,000 flechas de prata;
  • move-se para 280 198 prontera (portal leste de Prontera);
  • conversa com a kafra;
  • responde cont(continuar) e resp(opção) 1 e abre o armazém;
  • adiciona todas as flechas de prata com exceção de 1000 ao armazém;
  • e finalmente retorna para onde estávamos antes de executar a macro.


Sintaxe de automacro

Example:

automacro foo {
    <condition> bar
    <condition> baz, yatta
    call macroname
}
automacro mi {
    <condition> moo
    <condition> xyz
    call {
    	do isso
    	do aquilo
    }
}


Automacros são macros que serão automaticamente acionadas quando algumas condições são alcançadas.

map <nome do mapa>
É acionada quando o map atual é <nome do mapa>.
location [not] <nome do mapa [<x1> <y1> [<x2> <y2>]] [, ...]
É acionada quando voce está (ou não[not]) no local especificado.
Quando nem <x1> <y1> ou <x2> <y2> são dados é acionada quando você está(ou não [not]) no <nome do mapa>.
Quando <x2> <y2> não são dados é acionada quando você está(ou não [not]) no <nome do mapa> em (<x1>,<x2>).
Quando ambos <x1> <y1> e <x2> <y2> são definidos é acionada quando você está no <nome do mapa> em algum lugar entre <x1>, <y1> (superior-esquerda) e <x2>, <y2> (inferior-direita), onde <x1> < <x2> e <y1> > <y2>.
Argumentos separados por vírgula são tratados como a condição OU:
Example:
location geffen, prontera 123 234
Acionada quando você está ou em Geffen ou em Prontera na posição 123 234.
Linhas múltipas são tratads como a condição E:
Example:
location not geffen
location not prontera
Acionada quando você não está em Geffen e nem em Prontera.
mapchange (<nome do mapa>|any) [, ...]
Acionada quando o mapa é mudado para <nome do mapa>. Se o argumento for "any" então será acionada em qualquer mudança de mapa.
Argumentos separados por vírgula são tratados como condições OU.
hp <condição> <quantidade>[%]
Aciona quando atinge a condição de hp <condição> <quantidade> (valor absoluto) ou <condition> <quantidade> percentual (valor relativo).
Linhas múltiplas são tratadas como condições E.
sp <condição> <quantidade>[%]
Acionada quando atinge a condição de sp <condição> <quantidade> (valor absoluto) ou <condition> <amount> percentual (valor relativo).
Múltiplas linhas são tratadas como condições E.
spirit <condição> <quantidade>
Acionada quando atinge a condição de espíritos <condição> <quantidade>.
Linhas múltiplas são tratadas como condições E.
weight <condição> <quantidade>[%]
Acionada quando atinge a condição de peso <condição> <quantidade> (valor absoluto) ou <condição> <quantidade> percent (valor relativo).
Linhas múltiplas são tratadas como condições E.
cartweight <condição> <quantidade>[%]
Acionada quando a condição de peso do carrinho atinge <condição> <quantidade> (valor absoluto) ou <condição> <quantidade> percentual (valor relativo).
Linhas múltiplas são tratadas como condições E.
zeny <condição> <quantidade>
Aciona quando atinge a condição de quantidade de zeny <condição> <quantidade>.
Linhas múltiplas são tratadas como condições E.
soldout <condição> <slots>
Acionada quando atinge a condição de quantidade de slots de itens vendidos <condição> <slots>.
Linhas múltiplas são tratadas como condições E.
status [not] <status> [, ...]
Acionada quando você está(ou não [not]) sob o <status>.
Os status "dead"(morto) e "muted"(mudo) são adicionalmente suportados.
Argumentos separados por vírgulas são tratados como condições OU.
Linhas múltiplas são tratadas como condições E.
inventory "<item>" <condição> <quantidade> [, ...]
Acionada quando você tem <condição> <quantidade> do <item> em seu inventário.
Argumentos separados por vírgulas são tratados como condições OU.
Linhas múltiplas são tratadas como condições E.
storage "<item>" <condição> <quantidade> [, ...]
Acionada quando você tem <condição> <quantidade> do <item> no seu armazém.
Argumentos separados por vírgulas são tratados como condições OU.
Linhas múltiplas são tratadas como condições E.
cart "<item>" <condição> <quantidade> [, ...]
Acionada quando você tem <condição> <quantidade> do <item> no seu carrinho.
Argumentos separados por vírgulas são tratados como condições OU.
Linhas múltiplas são tratadas como condições E.
shop "<item>" <condição> <quantidade> [, ...]
Acionada quado você tem <condição> <quantidade> do <item> em sua lojinha.
Argumentos separados por vírgulas são tratados como condições OU.
Linhas múltiplas são tratadas como condições E.
base <condição> <level>
Acionada quando seu nível de base atinge a <condição> <level>.
Linhas múltiplas são tratadas como condições E.
job <condição> <level>
Acionada quando seu nível de classe atinge a <condição> <level>.
Linhas múltiplas são tratadas como condições E.
class <profissão>
Acionada quando sua classe é <profissão>
spell <magia> [, ...]
Acionada quando alguém lança a <magia> em você ou quando você é seu alvo.
Argumentos separados por vírgulas são tratados como condições OU.
monster <nome do monstro> [, ...]
Acionada quando <nome do monstro> está próximo.
Quando acionada as variáveis especiais $.lastMonster e $.lastMonsterPos são alteradas.
Argumentos separados por vírgulas são tratados como condições OU.
Linhas múltiplas são tratadas como condições E.
notMonster <nome do monstro> [, ...]
É acionada quando um mostro que não está na lista aparece.
Argumentos separados por vírgula são tratados como condições E.
aggressives <condição> <número>
Acionada quando há <número> monstros agressivos.
Linhas múltiplas são tratadas como condições E.
player "<nome do jogador>" [, <distância> ]
Acionada quando o <nome do jogador> está na tela ou não mais que <distância> blocos de distância.
Linhas múltiplas são tratadas como condições E.
equipped [<slot>] (<item>|none) [, ...]
Acionada quando o <item> ou nenhum(none) é equipado [no slot <slot>]
Os slots são topo da cabeça, centro da cabeça, cabeça baixo, mão esquerda, mão direita, capa, armadura, sapato, acessório esquerdo, acessório direito e flecha.
Argumentos separados por vírgulas são tratados como condições OU.
Linhas múltiplas são tratadas como condições E.
var <variável> (unset|<condição> <valor>)
Acionada quando a <variable> está nula ou atinge a <condição> <valor>.
Linhas múltiplas são tratadas como condições E.
varvar <variável encadeada(nested)> (unset|<condição> <valor>)
Acionada quando a <variável encadeada(nested)> não foi alterada ou atinge a <condição> <valor>.
Linhas múltiplas são tratadas como condições E.
console ("<texto>"|/<regexp>/[i])
Acionada quando o <texto> é recebido no console ou quando o texto recebido combina com a regexp>.
O i entre colchetes significa que regexp é case insensitive(maiúscula = minúscula).
Altera $.lastLogMsg.
pm ("<texto>"|/<regexp>/[i]) [, <nome do jogador>]
Acionada quando o <text> é recebido por mp [do <nome do jogador>] ou ou mensagens de texto recebidas que combinem com o <regexp>.
O i entre colchetes significa que regexp é case insensitive(maiúscula = minúscula).
Altera $.lastpm e $.lastpmMsg.
pubm ("<texto>"|/<regexp>/[i]) [, <distancia>]
Acionada quando uma mensagem pública [até a distancia de <distancia>] recebida é o seu <texto> ou combina com o<regexp>
O i entre colchetes significa que regexp é case insensitive(maiúscula = minúscula).
Altera $.lastpub e $.lastpubMsg.
party ("<texto>"|/<regexp>/[i])
Acionada quando o <texto> é recibdo pelo chat da party o texto recebido combina com o <regexp>.
O i entre colchetes significa que regexp é case insensitive(maiúscula = minúscula).
Altera $.lastparty e $.lastpartyMsg.
guild ("<texto>"|/<regexp>/[i])
Acionada quando o <texto> for recebido pelo chat do clã ou o texto recebido combinar com o <regexp>.
O i entre colchetes significa que regexp é case insensitive(maiúscula = minúscula).
Altera $.lastguild e $.lastguildMsg.
hook <nome do hook>
Acionada quando o OpenKore executa <nome do hook>.
save <hash key>
(Utilizado em combinção com o hook)
Salva o valor <hash key> da variável .hooksave1 para .hooksaveN
run-once (0|1)
Quando alterado para 1 a automacro será desativada após ter sido acionada.
Utilize o comando de macro all)|release para reabilitar esta automacro.
overrideAI (0|1)
Quando alterada para 1 a macro ignora a IA do OpenKore. Ou seja, ela não vai pausar quando do "move" ou "status dead".
delay <n>
Aguarda por <n> segundos antes de executar a macro correspondente.
timeout <n>
Aguarda por pelo menos <n> segundos antes que essa automacro possa ser acionada novamente.
macro_delay <n>
Substitui o delay(atraso) global configurado para o da macro executada.
priority <número>
Seleciona que automacros devem ser verificadas antes das outras. Quanto menor o <número> mais cedo a automacro será verificada. Se a prioridade não for dada será assumida 0(zero = verifique primeiro).
exclusive (0|1)
Automacros que possuem configuração exclusive não podem ser interrompidas por outras automacros.
A partir da macro 1.3.0, macros em execução podem ser interrompidas por automacros por padrão. Para desabilitar este comportamento ou ative esta opção ou use a linha de comando opcional -exclusive.
set <variável> <valor>
Alimenta a variável <variable> com o <value>. Você pode possuir múltiplas linhas de set por automacro.
call <nome>
Executa a macro <name> quando a automacro é acionada.
call {
<instruções>
}
Executa as <instruções> quando a automacro é acionada.
orphan <método>
Configura o métdo de como lidar com macros órfãs.

Exemplo de Automacro

Example:

automacro checkshop {
   location prontera
   soldout >= 3
   delay 60
   call reopenshop
}

macro reopenshop {
   do closeshop
}

Esta automacro é acionada quando você tem uma lojinha aberta em Prontera e três ou mais itens foram vendidos. Quando acionada ela aguarda por um minuto, e então executa a macro "reopenshop" que fecha sua lojinha. Se você tem shopAuto_open ou autoshop configurado para 1, ela será reaberta após um certo tempo.

Comentários

Os arquivos de macro agora permitem comentário, ou seja, linhas que são ignoradas pelo plugin de macro. Linhas que comecem com # serão tratadas como um comentário.

Example:

# esta linha é um comentário

Macros Órfãs

Pode acontecer, um exemplo é se utilizar ai clear enquanto uma macro é executada, que a macro se torne órfã. Isso significa que o objeto macro existe mas não pode continuar porque precisa da fila de IA que continha a entrada "macro" (ou "deal"). Quando a fila de IA é apagada a entrada da "macro" desaparece.
Antes de 1.0.2 este problema tinha que ser resolvido manualmente digitando "macro stop". Com o 1.0.2 e versões superiores, voce pode slecionar qual mecanismo deve ser usado para resolver o problema. Há três métodos:

terminate Encerra a macro(é equivalenta ao macro stop)
reregister Registra-se novamente na fila de IA, ultrapassando outras entradas.

Isto significa forçar a continuação da macro.

reregister_safe Registra-se novamente na fila de IA quando a IA não for utilizada.

Isto significar que a macro continuará após todas as tarefas estiverem prontas.

Por fazer/Bugs conhecidos/Limitações conhecidas

  • A verificação de console da automacro ignora os seguintes domínio: macro and cvsdebug.
  • Não utilize parenteses fechados ")" em argumentos keywords, a não ser que seja para fechar um argumento. Por exemplo: @random ("foo", "bar", "@eval (4 + 5)", "yatta") é permitido, @random ("foo", "bar", ":-)", "yatta") não é.
  • Macro 1.3.x necessita do OpenKore 1.9.1 ou superior.

Se existir algum bug, por favor me reporte. Utilize em por seu próprio risco, eu não garanto que este script funcione como foi descrito. Então, se o exemplo acima comparar 10.000 main gauche, eu não serei responsável por isso (isso não acontecerá, mas só para me precaver.. ^^). Acredito que seja tudo. Divirta-se.

Download

Baixe o Firefox com a barra de ferramentas da Google para uma navegação melhor
Download macro plugin version 2.0.2 para OpenKore/VisualKore 2.0.5 e superiores apenas
Download macro plugin version 1.3.6 para OpenKore/VisualKore 1.9.x até 2.0.0
Download macro plugin version 1.2.0 para OpenKore/VisualKore até 1.6.9

Veja também este tópico do fórum para informações gerais e sobre a instalção de plugins.

Versão em desenvolvimento (SVN)

A versão em desenvolvimento pode ser encontrada no depositário OpenKore SVN.

Usuários do Windows devem ler SVN guia para usuários.

Usuários do Linux podem executar os seguintes comandos para baixar a versão em desenvolvimento do SVN:

svn co https://svn.sourceforge.net/svnroot/openkore/macro/trunk/

Distribuições antigas: https://openkore.svn.sourceforge.net/svnroot/openkore/plugins/macro/tags/

Extras

A versão SVN inclui dois arquivos extras:

recorder.pl
Um único plugin para OpenKore que pode ser utilizado para gravar macros (apenas de linha de comando)

mconv.pl
Um (ainda incompleto) programa para converter macro 0.8.x e 0.9.x para 1.x.x.

Dúvidas freqüentes(FAQ)

Me ajude! Instalei o plugin de macro mas minhas macros não aparecem!

Certifique-se que tenha salvo suas macro em macros.txt. O Windows Explorer algumas vezes esconde extensões conhecidas como txt, então verifique se você não nomeou aquele arquivo acidentalmente para macros.txt.txt.

Me ajude! O OpenKore dá alguns erros estranhos de perl e informa que "a plugin failed to load(houve falha no carregamento do plugin)"!

Nunca salve suas macros/automacros em um arquivo .pl em sua pasta plugins. Coloque-as em um arquivo chamado macros.txt.

Possuo algumas macros que funcinavam perfeitamente com macro 0.9.x, mas agora só recebo erros de sintaxe.

A sintaxe mudou com a macro 1.0.0. Leia a documentação para aprender a nova sintaxe. Muitas macros 0.8.x e 0.9.x podem ser convertidas utilizando-se o utilitário mconv.pl.

O quê!? Estou com o erro "Can't locate encoding.pm"!

  • Se você utiliza o OpenKore, atualize para 1.9.1 ou superior.
  • Se você utililza o VisualKore, atualize para o VisualKore 1.9.2 ou superior.

OpenKore/VisualKore 1.6.x não possuem mais suporte desde o plugin de Macro versão 1.3.0.

Onde consigo pegar uma macro que faça [insira a característica aqui]?

Procure no fórum. Se você não consegue uma macro que se adeque a sua necessidade, escreva uma! Nada de dar comida na boquinha.

Eu tenho uma automacro que checa a quantidade de um item em meu inventário/carrinho para que seja menor que um valor ou igual a zero (ex: inventory "red potion" <= 30) mas esta automacro é acionada também quando mudo de mapa. Por que isso acontece e o que devo fazer?

Quando você está mudando de mapa todos os items desaparecem de seu inventário por um pequeno período de tempo. Isto acontece com os clientes oficiais também. Para prevenir isso adicione uma verificação adicional por um item que você sempre carrega com você, como inventory "Jellopy" > 0

Fui desconectado do servidor de mapas enquanto rodava uma macro!

os comandos foram mandados muito rápido. Aumente o macro_delay ou adicione linhas de pause entre os comandos do.

Estou estou recebendo mensagens aleatórias em Pearl. O que devo fazer?

Algum dos componentes d OpenKore pode ter mudado desde a versão mais recente do plugin macro. Primeiro, atualize sua instalação do OpenKore.Depois, pegue a ultima versão SVN do macro e instale. Se isto não ajudou, procure por uma descrição específica do erro, não procure apenas por "subrotina indefinida (Undefined subroutine)" ou algo do gênero. Ainda sem sorte? então pergunte por suporte mas escolha um tópico apropriado!

Discussão no fórum

Para discussão e suporte acesse o fórum de plugin de macro.

Licença

O plugin de macro é licenciado sob GNU General Public License v2.

Autor

Escrito por arachno <arachnophobia at users dot sourceforge dot net>

Agradecimentos especiais para Pacho por mover a homepage do Plugin de Macro para wiki.