Aprendendo a criar scripts para ElfBOT - Tibia Elfbot Brasil

05/11/12

Aprendendo a criar scripts para ElfBOT

Aprendendo a criar scripts - ElfBOT

Ola, está cançado de pagar 5-10R$ ou 100-1000k por scripts estupidos que sao feitos em minutos? Concluindo esse tutorial você sera capaz de fazer seus proprios scripts economizando dinheiro nao só na vida real ( Caso você seja algum milionario ) como no tibia.

1. Funções mais usadas:

end - comando que faz parar a rotkey que esta executada.
skip - igualzinhu ao end porem ele é usado mais na criação de waypoints na aba actions.
dontlist - graças a essa maravilhosa rotkey nao aparece na tela as msg exemplo-> Usado: auto 200 dontlist | safe healparalysis 'utani gran hur'
safe - so executa a ação se o bot nao estiver tentando se curar.

2. Uma pequena explicação.

a) O que é variavel?

- Variavel é um simbolo que vem antes de uma condição.
Exemplo:
$mp é uma variavel dentro do elfobot que mostra a sua mana atual

b ) Como comparar as variáveis de um valor?

- '==', '<' e '>'. Pode ser usado juntos tb '<='.
Exemplo:
$mp > 300 a proxima ação so vai acontecer si você estiver com 300 ou mais de mana.

c) Posso usar uma variavel com outra variavel?

- claro que pode!
Exemplo:
$mp == $hp a proxima ação soh iria acontecer si a vida estivesse igual a mana.

d) Porque '==' e nao '='?

- Bom se eu fosse explicar deixaria o tutorial muito grande, digamos que é regra de programação. Apenas use '==' quando for usar uma variavel com um valor.

e) Porque '>=' e nao '>=='?

- '>' e '<' o elf ja sabe que um é usado quando maior e o outro quando menor entao nao há necessidade de usar o '>=='.

f) Eu quero que confirme se o item1 nao é igual ao item2, como eu faço issu?

- Use '!='.
3. Como criar condições simples
Para diser ao bot checar se alguma coisa é verdadeira ou nao use.
if [check if true] { action }
Nunca esqueça das '[', ']', '{' e '}'

Exemplo:

if [$mp > 300] { action }

Soh irá acontecer o que está escrito dentro do '{' e '}' se você tiver mais de 300 de mana.

Explicando

if [$mp > 300] { action } O '$mp > 300' fara que a ação só seja executada se você estiver com 300 ou mais de mana. Nao esqueça de colocar a ação dentro do '{' e '}' que de acordo com o if $mp > 300' será executada somente se estiver com mais de 300 de mana.

4. Como executar diversas ações com o uso do "|".
Se voce quer executar mais de uma ação por script separe eles com o uso do "|" .

Exemplo:

if [$mp > 300] { ação1 | ação2 | ação3 }

Vai executar a ação1 e depois a ação2 e por ultimo a ação3.
Alem disso, voce deve saber que o "|" pode ser colocado para executar varias ações assim como o "if".

if [$mp > 300] { mana self | wait 500 } | if [$hp < 600] { say exura | wait 500 }

Isso é bem simples e não é necessario explicação eu acho.

5. Condições avançadas. Como "&&" e "||".
&& - é como se fosse um 'e'
|| - é como se fosse um 'ou'

a) Usando '&&' você pode fazer com que o bot só execute alguma coisa se 2 condições forem verdadeiras.

Exemplo:

if [$mp > 300 && $hp < 300 && .... && ...] { action }

SIM! A ação só ira acontecer se a mana for maior que 300 e a vida menor que 300.

Explicando:

Como eu disse antes o bot só ira executar a ação se as condições forem corretas,Lembrando que as condições devem ser postas entre '[' e ']'.
Vamos fazer com que ninguem tenha duvidas.
$mp > 300 a ação só ira ser executada si a mana for maior que 300
$hp < 300 a ação só ira ser executada se a vida for menor que 300
Seria como fazer dois scripts:
if [true, true] { action }

E o outro:

if [true, false] { action }

b ) Usando '||'

você podera fazer com que a ação seja executada somente se Fulano ou Ciclano nao sendo obrigatoriamente somente Fulano ou Ciclano ou os dois juntos para acontecer.

Exemplo


if [$mp > 300 || $hp < 300] { action }

Explicando:

Se a mana for maior que 300 ou a vida menor que 300 execute tal ação..... ( Axo que deu pra entender né? )

c) Você poderá usar os dois '||' e '&&' de uma vez! Como?

Apenas use '(' e ')' para separar as duas condições. Veja abaixo:

Exemplo

if [$mp > 300 && ($hp > 600 || $cap < 800)] { action }
Qualquer coisa entre '(' e ')' só pode retornar 1 unico valor!
Entendendo '$hp > 600 || $cap < 800' vao apenas retornar um valor.Entao, quando a mana for maior que 300 e (a vida maior que 600 ou cap menor que 800).

Eu quero dar uma explicação completa então:

($hp > 600 || $cap < 800) Ira executar a ação se qualquer uma das duas for verdadeira. Não executará caso as duas seja falsa.
($hp > 600 && $cap < 800) Aqui só se executara se as duas condições forem verdadeiras. Nao executará caso alguma das duas condições forem falsas.

Como se fosse matematica.

5 - (5+4-5+3)
(5+4-5+3) retornaria 7.

Porque devo utilizar o "&&" e "||"?

- Bem, é muito simples. Você podera evistar complicações usando elas.

Exemplo:

if [$mp > 300] { if [$hp < 600] { action } }

Codigo complicado acima:

if [$mp > 300 && $hp < 600] { action }
Muito mais facil,mais bonito e profissional não?

6. A bit more complicated conditions.

Bom vamos utilizar varias condições ao mesmo tempo varias ações. Exemplo

if [$hp < 400] { if [$mp < 100] { say exura } | if [$mp > 100] { say exura gran } }

Explicando:

Aqui o bot vai ver se voce está com menos de 400 de vida. Se mana tiver menor que 100 ele ira diser "Exura". Mas se a mana for maior que 100 ele vai diser "Exura Gran".

E possivel criar mais e mais condições e ações:

if [...] { if [...] { if [...] { if [...] { } } | if [...] { if [...] { } } } | if [...] { } }
è muito ruim de saber que bloco pertence a que bloco nessa mistureba frenetic não é verdade? Porem necessario para um grande scripter, porem existem maneiras de deixar um pouco mais simples como veremos logo - logo.

Código:

if [...] { if [...] { } | if [...] { } }
Esses são uma porcaria ;D

Código:

if [...] { if [...] { } if [...] { } }
Axo que agora ficou um pouco mais facil ;p

7. Algumas vezes não é necessario o uso de "{", "}" e "if"nos scripts, iremos mostrar agora como e quando isso é possivel

Parabens! Se você estendeu tudo do 1-6 jaja você estará fazendo scripts foda facilmente.

Agora vamos parar com esta felicidade toda e começar a parte dificil. De agora em diante tudo vai estar mais conplicado e dificil de se entender..

Ok, Agora vamos aprender a deixar os scripts mais profissionais e claros possiveis.

a) Quando "{" e "}" sao inuteis.

è muito facil. Quando tiver apenas 1 condição ou se você nao quiser usar o "{,}" na ultima condição do script. Vamos ao exemplo:

auto 200 if [$hp < 400] say exura
muito facil não? Nos nao usamos o "{" e "}" deixando o codigo mais bonitinhu e profissional.

Uma outra maneira é no final do script:

auto 200 if[$cap < 500] { gotolabel deposit } | if[$itemcount.268 < 20] { gotolabel refill } | if[$hp < 400] say exura
auto 200 if[$hp < 400] { if [$mp > 100] { say exura } }
Agora está mais claro

Atenção!

Lembre-se de colocar o "|" ou algo parecido que substitua o parenteses.

Eu vou lhe dar alguns exemplos.

auto 200 ifplayeronscreen playsound 'playeronscreen.wav'
Irá tocar um som quando algum player aparecer na tela.

Irá usar utani gran hur quando estiver paralizado e quando o bot nao estiver
tentando se curar.

auto 200 safe healparalysis 'utani gran hur'

Irá castar o UE se a pessoa que você está atacando estiver com menos de 600 de vida.

auto 200 targethplower 600 say 'exevo gran mas vis'


8. Vamos falar agora sobre mensagens.
Agora iremos aprender tudo sobre mensagens. è um aspecto basico de um script avançado. Voce podera usar msgs para diversas coisas, responder automaticamente ou controlar outros chars totalmente boteadores . Você pergunta: "COMO?!?!". Muito simples. Seu bot podera mandar msg para seus amigos si algum player entrar na tela dele ou se algum player atacar ele. Se você configurar o elf para fazer algo quando receber certa msg você tambem pode fazer ele atacar de volta a distancia, ou diser pra ele correr pra cidade quem sabe?, logar ou algo que você quera, LEMBRANDO QUE COCA ELE NAO PEGA NAO ADIANTA ME MANDAREM PRIVATES PEDINDO "COCA - COLA ELE NAO PEGA" .

Gostaria de aprender tudo issu???? Então vamos la


a) Mensagens Recebidas.

Aqui estão as variaveis para mensagens.
http://forums.tibiabot.com/showpost....mp;postcount=5
Nota: Não consegui de jeito nenhum entrar neste link pois ele está protegido e eu axo que nao tenhu o numero minimo de postagens.

Ok, agora é hora de explicar tudo sobre o recebimento de msgs.
Aqui estão 3 funções que checam as mensagens de 3 direfentes maneiras.There are 3 functions which check msgs in a 3 different ways:
$curmsg - checa algo na mensagem que você recebeu (Eu não recomendo o uso desta opção no momento porque ele nao checa direito, Eu vou explicar isso mais pra baixo)
$lastmsg - Checa a sua ultima msn recebida
$lastnavmsg - Nao sei!

Entao o que agora?? Eu expliquei tudo mas e "O que exatamente seria checar?"? muito simples parte disso. Para diser ao bot o que checar qual parte
Apenas use:
$lastmsg.property

Voce tem que trocar "property" para uma possivel variavel. Todas listadas nakele topico maluco que nao abre de jeito nenhum.

Exemplo:

auto 200 if [$lastmsg.sender ? 'GM'] playsound 'playeronscreen.wav'

Isto irá checar se o ultima pessoa que mando a mensagem tem no nome a palavra 'GM'.


Explicando:

Voce pode ver que eu usei "?" para checar se contem 'GM'. Este caracter permite você verificar a posição da string em outra string.

if [string1 ? string2] action

Código:

Mandando mensagens.
Mandando mensagens nad amais é do que mandar uma msg se alguem falar certa palavra:
gamesay 'lol' - ira dizer lol no game chat
guildsay 'porcaria' - irá diser porcaria no guilda chat
helpsay 'something' - ira diser help-channel
npcsay 'something'- ira diser npc-chat
pm 'Furao Dutra' 'something' - Manda private pro cara
rlsay 'something' - Esse nao entendi pelo que entendi diz algo na vida real?
say 'something' - diz sothing no chat normal o default
tradesay 'something' - diz sothing no trade

Eu axo melhor colocar alguns exemplos...


Exemplo:

auto 100 if [$lastmsg.sender ? 'GM' || $lastmsg.sender ? 'CM'] pm 'Furao Dutra' 'RAPIDOOOOOOO LOGA AQUI O GM / CM ta aqui perto de mim acc:3423523 pass 324234234'
Bom o codigo assima é bem simples, irá mandar uma msg para o Furao Dutra caso alguem com 'GM' ou 'CM' no nome te mande alguma mensagem.

Cósigo:

auto 100 if [$lastmsg.sender == 'Furao Dutra'] say $lastmsg.content
Bom teoricamente ele deveria falar no default chat o que o 'Furao Dutra' falasse, porem eu testei e notei que com outro char eu mandava 1 frase ele repetia a frase 3 vezes, eu resolvi este problema adicionando um delay veja abaixo:

Código:

div class="bblk">
auto 100 if [$lastmsg.sender == 'Furao Dutra'] say $lastmsg.content | wait 500

Código:

auto 100 if [$lastmsg.sender == 'Furao Dutra' && $lastmsg.content == 'run to city'] gotolabel runtocity

Bem aqui ta disendo que se a ultima mensagem do Furao Dutra for run to city é pra ele ir para o label runtocity, bem util quando voce tem mais de um pc e esta usando em outro e configura pra ele te mandar msg se você for atacado, ai voce fala run to city e ele realmente sai correndo, to disendo viu só coca mesmo que ele nao pega pra voce de resto ele faz, botzin da desgrama xD

9. foreach.

O que exatamente é foreach?

- Foreach é uma confição de procura, por exemplo foreach 'allplayers' ele vai retornar todos os jogadores que aparecerem na sua tela.

Existem 3 tipos de foreach no elfbot:

a) foreach 'listtype' $varname {action}
- Este lista o seguinte (players, monstros ou mensagens).
B ) while {condition} {action}
- Executa certas ações de acordo com as condições.
c) loop {number} {action}
- Executa a condição de acordo com o numero
IMPORTANTE!
Apenas o "foreach" são permitidos em hotkey.

9.1 Foreach

Vamos dar um simples exemplo deste foreach:

auto 100 foreach 'floorplayers' $var pm 'Furao Dutra' 'Player $var.name is on screen.' | wait 2000

Com isto ele ira enviar uma msg pro Furao Dutra com o nome das pessoas que aparecerem na tela dele.

Nota: Nao sei porque tambem fica muted!

Aqui vai uma lista de possiveis ltypes:

allcreatures, allplayers, allmonsters, floorcreatures, floorplayers, floormonsters, screencreatures, screenplayers, screenmonsters, shootablecreatures, shootableplayers, shootablemonsters, newmessages

9.2 While
while nos foreach sao usados para executar uma certa ação com uma condição especifica,

Por exemplo:

while [$itemcount.268 < 200] buyitems 268 20

Este script ira continuar comprando 20 mfs ate chegar a 200 de mfs.

Como issu funciona?

Primeiro o bot ira checar a condição "[$itemcount.268 < 200]" returns true. Se tiver menos que 200 ele irá partir para a proxima ação que é comprar mf "buyitems 268 20".
Quando eu vo ter que usar este loop??
é bastante util quando voce faz ele comprar as coisas automaticamente.
9.3 Loop

Esta ação loop executa x action por vez. exemplo:

loop 2 buyitems 268 20

Issu vai comprar 20 items com o id 268 .
Axo que nao tem mais nada pra colocar sobre este tipo de loop eu axo... ;p

9.4 Loops skeletons
Voce devem ter percebido que eu nao enxi os scripts com "{" e "}" porque nao foi necessario deixando assim mais bunito. Os verdadeiros loops

skeletons estão aqui:

foreach 'listtype' { action }
while [condition] { action }
loop 'number' { action }
9.5 Loop no loop??

Sim é possivel! voce poderá colocar um loop em outro loop como:

foreach 'listtype' { while [condition] { action } }

10. Como fazer refillers.
Antes de tudo, o que é um Refiller?, refillers sao scripts que fazem o bot se recarregar, por exemplo , acabo as mana ele vai ate o npc de mana e compra mais, entenderam?... otimo então vamos continuar.

Vamos la, ao mais usado e querido script do elfo.E ao mesmo tempo na minha opiniao o mais dificil script de se fazer tambem. Adivinha? Não é tao dificil no final depois que voce pega as manhas. Elfbot lhe da as funções que tornam faceis o uso de scripts. Claro que você precisa aprender antes de sair porai fazendo

10.1 O que você precisa saber??
a) Se você quer saber como fazer esses refillers você precisa saber primeiro como chegar ao npc não? mas não se preocupe se você nao sabe como fazer o elfbot , andar pelas caves atacar etc.... sugiro que de uma olhada nesses dois tutoriais abaixo:.
Targeting Tutorial - Como atacar monstros.
Cave bot Tutorial - Como andar pelas caves e fazer waypoints

B) Bom se você leu o tutorial de cave bot deve saber como montar o waypoint abaixo.

waypoint // hunt, label start
waypoint // hunt
waypoint // hunt
waypoint // hunt
action // if more then 20 mfs go to label start
waypoint // go to shop
waypoint // go to shop
action // refill
waypoint // back to spot
waypoint // back to spot

Como eu disse se vocês leram o tutorial devem ter entendido neh?.


10.2 Como se encher de pot de vida ou mana?

a)Existem algumas ações que podem ser adicionadas alem do refiller.
- Depositar itens
- Pegar dinheiro do banco dependendo do que tu quer comprar (Nao sendo necessario se for poco e a hunt sempre der uma certa quantidade de grana)
- Se tiver sem grana vai ao dp e loga
- Em tantas horas va ao dp e logue
e muito mais...

Ok, voce chegou na cidade o que fazer agora?

Voce pode usar uma dessas funções:
say - diz alguma coisa no default, exemplo: hi
npcsay - diz alguma coisa na janela do npc, exemplo: trade
buyitems 268 20 - Compra 20 items com o id 268
settradeoptions - Adiciona opções como, comprar com backpack, ignorar cap etc.. exemplo: settradeoptions 'buywithbps' 'ignorecap' 'ignoreequipped'

c) Quantos items desse tipo eu tenhu ja??

Para checar quantos itens de um certo id voce ja tem as seguintes variaveis podem ser colocadas:
countitems 268 - vai forçar o uso do item id 268. vai aparecer uma msg em verde
countitemsvisible 268 - igualzin o de cima mais conta soh os visiveis "countitems" so nao faz a msg verde aparecer.
$itemcount.268 - mostra a quantidade de items visiveis com id 268
$itemcount.'mana potion' - vai mostrar a quantidade de items com o nome 'mana potion' voce tem.

10.3 Fim?
Bom eu terminei sobre refiller mas eu axo que tem algumas coisas a serem ditas ainda.

Se voce ainda nao sabe como comprar as coisas vamos a revisão, exemplo:
- spears: Apenas faça um waypoint da cave até o npc que vende spearst:

NO exemplo abaixo voce tiraria 3k de gold...

say hi
npcsay withdraw 3000
npcsay yes

Mas ai agente si pergunta, po um bot tao fantastico como ele nao haveria uma maneira de ele retirar a grana certa pra comprar as coisas? Vamos dar uma olhada no exemplo das spears.

Código

1. set $mspears 30
2. countitems 7378
3. set $needcash [($mspears - $itemcount.'royal spear') * 15]
say hi
npcsay deposit all
npcsay yes
4. npcsay withdraw $needcash
npcsay yes

1- Define a variavel $mspears para 30 que eh a quantidade de spears que queremos para ter depois de compra-las
2- Conta as spears que estao e as que nao estao visiveis (Com spears nao precisamos contar as q nao estao visiveis, porem soh quis mostrar como countar mfs q nao estao visiveis, pq vc n precisa abrir todas bps com mfs ;p)
3- Define a variavel $needcash usando matematica(contas)...Se vc quer definir uma variavel usando contas de matematica vc precisa colocar entre "[" e "]" como eu fiz. Esta linha ($mspears - $itemcount.'royal spear') significa (30 - atual quantidade de spears) e multiplica o resultado por 15, que eh o preço das royal spears
4- Retira dinheiro usando a variavel $needcash (depois de configurada a quantidade)

Novamente muito obrigado maninhu.

10.4 Aos finalmentes

Bom se
vocês leram todo o tutorial no minimo entenderam como funciona o sistema de scripts do Elfbotng, Conforme o tempo eu vou ir melhorando este tutorial acrescentando links com todas as variaveis etc....
11. Extras.

a) Sistema de Tempo.

Para checar as horas use a variavel $systime variable.

Exemplo

auto 200 if [$systime == '07:50:00'] gotolabel log

Explicando:

Ira checar a sua vida e curar voce entre 500 e 700 de vida.

8 comentários:

  1. mano , eu queria faze um scripit tpw dash' , só que mais rapido que o DASH'' qe o elfbot ja ten e entre outras , eu queria fazer uma que corra bem mais rapido que essa nao que ande 1 quadradinho e pula 1 do , quero que pule mais , como eu faço? '-' ten como responde ae ? vlw (:

    ResponderExcluir
    Respostas
    1. ADD SKYPE , giovane.souza55 , quem pode ajuda ai vlw :D agradeçe (;

      Excluir
  2. Como Coloca o nome da Hotkey em vez de fica aquele monte de nome no meio da tela,sei q posso tira mais nao quero e sim quero coloca o nome ! Add Skype : Custela_ZL

    ResponderExcluir
  3. se quiser muda a cor e só coloca assim
    auto 1 listas 'Nome' | setcolor 255 0 255 | seticontext 'Nome' | attack target

    ResponderExcluir
  4. Qual é a sigla do Soul ? Da vida é HP ..
    auto 100 if [$Soul > 100] { say 'Exura' }

    ResponderExcluir
  5. Opa, eu tenteei fazer uma aqui mas nao deu certo.. Eu queria montar um tipo, o char ta no cavebot e de repente aparece um pk, eu precisava de um script qe parece o cavebot atkasse o pk e se tivesse sucesso em mata-lo eu queria qe o bot voltasse a caçar..

    ResponderExcluir
  6. vendo scripts full afk em qualquer otserver
    sao muito baratos claro
    so faço do elfbot
    quem quiser entra no ot hexana.net (8.6) falar com os seguites personagens
    king of brasil
    master ph one
    sao muito bons os script meu time uza e fala muito bem deles

    ResponderExcluir