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.
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.
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
Versão em desenvolvimento (SVN)
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.