PDA

Ir para Versão Original : [REVISÃO] - Guia para iniciantes em utilização de variáveis de macros



levelbot
30/04/2006, 23:35:48
AGUARDANDO REVISÃO OPENKORE 2.0.7 / MACRO PLUGIN 2.0.2

by K

Guia para iniciantes em utilização de variáveis

Fiz esse guia pela deficiência do manual do Macro SVN em variáveis, pois muitas pessoas tem uma certa dificuldade no mesmo.

---> Tipos de variáveis

Há 4 tipos de variáveis atualmente.

As variáveis simples, definidas por $x = x, as variáveis especiais já definidas pelo macro svn, as variáveis aninhadas (ou dinâmicas.) e as variáveis definidas pelo kore.

---> Setando ou diferindo uma variável
Você pode setar uma variável utilizando $nomedavariável = valordavariavel.

Ex:
$i = oi
$i = 3

Você pode setar uma variável com por um conjunto de variáveis, por palavras, letras, números ou comandos do kore. Unset é usado quando ela ainda não está definida.

Ex:
$i = @eval ($o - $k * $l)
$i = oi
$i = unset

Para setar uma variável já definida pelo kore, usa-se @eval (return <variável>) (no caso de valores utiliza-se @eval.

Ex:
$i = @eval (return $::char->{pos}{x})
$o = @eval ($i - 3)

Para setar uma variável dinâmica utiliza-se ${<variavel>}

Ex:

${$.lastpm}

---> Variáveis especiais

São as variáveis já definidas pelo macro svn, e você pode encontra-las no manual.


* $.map - o mapa que você está ("prontera")
* $.pos - sua posição atual ("123 234")
* $.time - tempo atual descrito no padrão unix timestamp ("1131116304")
* $.datetime - data e hora atual ("Fri Nov 4 15:59:36 2005")
* $.lastLogMsg - o texto que ativou a ultima condição da automacro "console" (ultimo texto visto no console)
* $.lastpub - o nome do jogador que ativou a ultima condição de automacro "pubm" (ultima pessoa que mandou mensagem publica)
* $.lastpubMsg - o que foi escrito
* $.lastpm - o nome do jogador que ativou a ultima condição da automacro "pm" (ultima pessoa que mandou PM)
* $.lastpmMsg - o que foi escrito
* $.lastguild - o nome do jogador que ativou a ultima condição da automacro "guild" (ultima pessoa que mandou mensagem pela guild)
* $.lastguildMsg - o que foi escrito
* $.lastparty - nome do jogador que ativou a ultima condição da automacro "party" (ultima pessoa que mandou mensagem pela party)
* $.lastpartyMsg - o que foi escrito
* $.lastMonster - nome do monstro que ativou a ultima condição da automacro "monster" (ultimo monstro que foi visto)
* $.lastMonsterPos - ultima posição conhecida do monstro ("123 234 prontera")
* $.lastMatchN - referências para a ultima regexp avaliada
* $.paramN - Parâmetros de linha de comando
* $.caller - O nome da ultima automacro triggered (engatilhada/ativada/dentre outros)

---> Variáveis dinâmicas / aninhadas

Estas são meio complicadas.

Você pode definir uma variável já definida dando-a um valor dinâmico.

É muito útil no caso de macros de resposta, pois ele vai setar um valor pra cada pessoa que ativar a automacro, dai o nome dinâmica.

Você deve sempre setar a variável de acordo com a condição que a automacro foi ligada.

Ex:
pubm - $.lastpub
pm - $.lastpm
guild - $.lastguild

Exemplo:


automacro oiz {
pubm /oi/,15
varvar .lastpub unset
call oi
}

automacro oiz2 {
pubm /oi/,15
varvar .lastpub >= 1
call oi
}

macro oi {
if (${$.lastpub} unset) goto ver0
if (${$.lastpub} = 1} goto ver1
if (${$.lastpub} >= 2} goto ver2
:ver0
${$.lastpub}++
do oiz
:ver1
${$.lastpub}++
do pum
:ver2
${$.lastpub}++
do caçarpuringo
}


Nesse caso a primeira vez que alguem falar oi ele vai promover o comando oiz, na segunda vez ele ira fazer "pum" e na terceira irá caçarpuringos.

Variáveis dinâmicas não são desdefinidas quando alguém diferente ativa as automacros.

Lembrando que o comando ${$.lastpub}++ aumenta em 1 o valor da automacro.

---> Variáveis definidas pelo kore

São as variáveis definidas pelo kore e por uso dele. Você pode acha-las fuçando no código fonte dele, principalmente no arquivo functions.pl encontrado na pasta src.

São utilizadas pela tag $::'tipodevariavel'->{valor}

Ex:
$::char->{exp}
$::storage->{item}
$::item->{name}

---> Utilizando if e goto

Eu sei que isso tem no manual, mas vou dar uma complementada aqui.

Nas automacros é possivel usar if $x = <valor>.

É possivel usar:

=
Ativa quando a variável está igual ao valor setado.

Ex:
if $i = 1

Vai ativar quando $i está 1.

>= e >
Ativa quando a variável está maior que e maior, respectivamente.

<= e <
Ativa quando a variável está menor que e maior, respectivamente.

!=
Ativa quando a variável está diferente do valor especificado.

Resumindo:

= | igual à
>= | maior ou igual à
> | maior que
<= | menor ou igual à
< | menor que
!= | diferente de

Você também pode utilizar if nas macros, complementadas por um goto.

Exemplo:



macro adz {
if ($i = 1) goto one
if ($i = 2) goto two
:one
do isso
do akilo
:two
do akilo
do isso
:fim
}


Resumindo:
if - Ativa a automacro se o valor especificado bate com a condição.
goto - Ativa uma série de comandos.

Você pode criar as famílias de comandos no goto adicionando um :<nomedafamilia> antes dos comandos.

--->While e as
Adimito que sou meio n00bz0rs nessa parte, seculpe.
Mas vou fazer o que posso.

"While" é utilizado como "enquanto". Isso mesmo, traduzindo. "As" é utilizado para nomear o while.

O while funciona assim:

Ele irá rodar tal ação enquanto a variável estiver de acordo com a condição.
Exemplo:

macro xaxasdas {
$x = 1
while ($x > 50) as oixix
do tele
$x++
end oixix
}

Neste caso ele teleportar até que $x esteja maior que 50.

"as oixix" nomeia o while, é apenas para você poder dar um fim a ele.

"end oixix" termina o while.

:pi #Familia
do oamdoia #comandos
:pi2 #Familia
do aocxmaix #comandos

###
Espero que ajude! :) Dúvidas, postem aqui!

Amexa
22/01/2008, 22:16:54
Variavel...

Bom procurei mais não achei, qual seria o "comando" para buscar se o bot esta conectado ou não ex: stat conection , ai ele fala se ta conectado ou não, tem??? Estava fazendo uma macro de @autoloot preciso disso ficaria +- assim por cima:

automacro autoloot {
<COMANDO> true
delay 5
call autoloott
}

macro autoloott
{
if (!$.autoloot) //Se $.autoloot for falso
{
c @autoloot
$.autoloot = true

}

}

automacro autoloot2 {
<COMANDO> false
delay 5
call autoloott2
}

macro autoloott2
{
if ($.autoloot) //Se $.autoloot for verdadeiro
{
c @autoloot
$.autoloot = false

}

}


Acho q ficaria +- assim, desculpa algum erro de sintaxe é q não manjo muito de C++ to estudando só java, mais da pra entende um pouco

0000
15/08/2009, 21:47:17
Oo
To começano a usa bot agora e n entendi nd disso de variavel alguem poderia me explicar o principal de variaveis (tipo O Q É) pra mim começar a entender

lucasfraga
14/01/2010, 18:33:23
somos 2 *-*

Adama
14/01/2010, 19:24:09
Comece por aqui, desde o básico. Bot não se aprende de um dia para o outro.

edit: (http://www.openkore-wiki.com)
http://www.wiki.openkore.com/index.php?title=Main_Page

madomaniaca
25/02/2010, 17:41:49
link q o joamil1 colocou tah off :disgust2:

Adama
25/02/2010, 17:43:03
http://www.wiki.openkore.com/index.php?title=Main_Page