• RSS
  • Facebook
  • Twitter
  • Linkedin

Criando um Addon para World of Warcraft – Parte 1

Muita gente me pergunta se é dificil programar utilizando a API do World of Warcraft, programar mesmo não é dificil, porem achar conteudo sobre o assunto não é tão simples.

Eu sou um fã de carteirinha do portal wowwiki.com, nesse site está concentrado muita informação sobre warcraft, assim como a Lore, Gameplay e também sobre a API do World of Warcraft.

Quando eu tive a idéia de criar o KM_RecipeTree, eu já tinha noção que no wowwiki eu poderia encontrar informações de como inciar o projeto. Como sempre eu achei o velho exemplo de qualquer inicio em linguagem de programação que é o “Hello World”.

Vou mostrar aqui neste artigo como criar um simples Addon “Hello World” e como interagir com a API do jogo mostrando a quantidade de “gold” que seu personagem tem. Avisando que esses dois Addon de exemplo já existem no kit de desenvolvimento oficial da Blizzard, eu só vou explicar passo a passo da criação de cada um.

1. Estrutura de um Addon

Um addon deve possuir em sua pasta três arquivos.
.toc -> Onde fica as informações principais do addon; nome, versão, variáveis, dependências e etc.
.lua -> Onde fica toda a programação do addon.
.xml -> Onde fica o código da estrutura da interface do addon.

1.1 Arquivo .toc

A estrutura do .toc é mais ou menos assim:

## Author: Thiago Melo
## Interface: 30000
## Notes: Control Attendance using Built-in WOW calendar.
## Title: KM_Attendance
## Version: 1.0
## eMail: reiserfs@killermonkeys.net
## URL: http://thiago.killermonkeys.net
## DefaultState: Enabled
## LoadOnDemand: 0
## SavedVariables: KMATT_SAVED_VAR_CONFIG, KMATT_SAVED_VAR_ATT
KM_Att.xml

Esse ai é o .toc do meu addon KM_Att se você reparar ele apenas informa para o jogo as informações básicas do addon.
Os campos mais importante são, o Interface (onde diz qual versão do jogo o addon é compatível, 30000 = WOTLK), Title (o nome do addon) e a ultima linha são os arquivos que vamos carregar.

A estrutura do nosso addon OlaMundo será assim

## Interface: 30000
## Title: Ola Mundo!
## Notes: Meu primeiro Addon
## Dependencies:
Olamundo.xml

– Crie uma pasta chamada Olamundo dentro da pasta dos addon do WOW (Pasta do WOWInterfaceAddOnsOlamundo).
– Crie um arquivo chamado Olamundo.toc e coloque os dados acima.
1.2 Arquivo .lua

Agora vamos para a parte de programação, a API do world of warcraft trabalha com uma linguagem de programação chamada Lua, eu não vou entrar muito a fundo de Lua porém tem que saber dela para programar no jogo, ela é simples e para saber mais informações veja o wikipedia sobre lua.

Nessa etapa deve se criar um arquivo chamado Olamundo.lua na pasta do jogo, e abrir esse arquivo para colocar nossas primeiras linhas de código.

function Olamundo()
  message("Olá Mundo de Azeroth!");
end 

Salve o arquivo, com isso você criou uma função que chama uma outra função global chamada message. Essa função message vai mostrar uma janela com o texto escolhido e um botão de “OK”, é uma função da API.
1.3 Arquivo .xml

Esse arquivo é o que vai interagir diretamente com a API, sendo carregado pelo .toc e se comunicando com o .lua.
Crie um arquivo chamado Olamundo.xml e nele bote o código abaixo.


  
  
   
	
	 Olamundo();
	
   
  

Se você já entende um pouco com XML vai se familirializar com a formatação XML. Se você sabe absolutamente nada de XML, dá uma “googlada” sobre o assunto pois voando em XML não vai pra frente com addons no wow.
A tag inicial do código XML para a API do wow sempre vai ser <UI>, e nesse mesmo formato ai com esses mesmo valores xmls e bla bla bla. A parte que fica entre as tags <UI></UI> é o que importa mais.
<Script /> essa tag vai chamar o Olamundo.lua, pode se colocar varios .lua ai bastanto adicionar outra <Script file=”nomedoarquivo.lua” />
* Importante: XML tem uma formatação certa, se abrir uma TAG deve fechar <TAG> </TAG> se quiser uma Tag de uma linha só coloque <TAG /> com a barra “/” no final.

<Frame> </Frame> essa e a parte que criamos um frame, na verdade não vai ter nenhum Frame na tela do jogo, pois nossa função somente aqui é escrever o “Olá Mundo” na tela. Mas o frame é quem dispara eventos então mesmo sem nada gráfico precisa de um frame para fazer o addon funcionar.
<Scripts> </Scripts> Aqui controlamos os eventos do frame, lembra um pouco os eventos de um campo HTML (onload, onmouseover, onclick, etc).
<Onload></Onload> Aqui vamos informar a API do jogo que quando carregar esse frame (quando carrega o jogo e a cada ReloadUI) execute os comandos dentro das TAG, que no caso é o Olamundo() que esta dentro de Olamundo.lua.

2 Testando

– Salve tudo e abra o Jogo, na tela de Login clique em Addons para ver se o addon Olamundo está sendo listado e esta habilitado.
– Escolha um personagem e entre no jogo.
– Se a tela “Olá Mundo de Azeroth” aparecer com o botão de OK para fechar, você teve sucesso e criou seu primeiro Addon.

3 Mais só isso?

Vou depois criar uma proxima etapa indo mais a fundo com a interface e com os eventos do jogo, e claro monstrando algo mais concreto, mas só com isso já da para ter ideia de como funciona e começar a criar seus próprios addons.

16 Responses so far.

  1. Luiza says:

    MSIE 7.0 Windows Vista

    Olá!
    Olha, sou programadora e fiquei muito interessada em criar alguns addons.
    Queria saber mais, se puder me passa seu contato, ok?

    E o post tá mto bom!
    Pra quem que assim como eu tá pesquisando, já dá uma clareada boa ^^

  2. Thiago Melo says:

    Firefox 3.0.11 Windows XP

    Olá Luiza, eu tenho Gmail/Gtalk me adiciona thiago(arroba)oxente.org

  3. DMBoss says:

    Firefox 3.0.6MEGAUPLOAD1.0.NETCLR3.5.30729 Windows Vista

    para quando a segunda parte do toturial

  4. Thiago Melo says:

    Firefox 3.0.11 Linux

    Eu tava meio sem tempo mas vou providenciar em breve.

  5. DMBoss says:

    Firefox 3.0.6MEGAUPLOAD1.0.NETCLR3.5.30729 Windows Vista

    eu adicionei o teu e-mail
    o meu e manuel_nicolau_454@hotmail.com

  6. Steven Gusmão says:

    Firefox 3.5.5 Windows XP

    Trobogiii, esse post foi o bicho, adorei, vou enfiar minha cara na Lua pra programar meus addons, adorei mesmo, brigadu trobogi

  7. Thiago Melo says:

    Firefox 3.5.3 Linux

    LOL Steven! heuaheu sumido cara.

  8. Nicholas says:

    Opera 10.01 Windows XP

    hmmm eu tava pesquisando sobre isso e realmente isso que você disse esclareceu bastante mesmo, já chegou a lançar o 2º tutorial, caso crie pode me mandar email?
    flws! coloque no assunto “criação de addon: tutorial 2”

    que fica mais facil de saber oq é e não apagar como spam hehehe!

  9. Thiago Melo says:

    Firefox 3.5.5 Windows 7

    Opa Nicholas, ainda não o fiz, muita gente pediu, só ainda não tive tempo, mas ainda esse ano faço hehehe.

  10. Fred says:

    Firefox 3.5.5.NETCLR3.5.30729 Windows XP

    Dae Thiago!

    Otimo post. A mutio venho querendo descobrir como fazer isso mas nunk tinha encontrado algo com uma linguagem tão direta assim.

    Seria possivel eu alterar um addo que ja existe sem ter que recria-lo? Tipo uso um addon que na 3.3 não funciona coo deveria e o seu criador não joga mais wow logo não vai mais atualiza-lo. Queria tentrar resolver isso eu mesmo.

  11. Thiago Melo says:

    Firefox 3.5.5 Linux

    Sim, muitos addons vão passando de desenvolvedores a desenvolvedores quando alguém desiste de manter. Eu recomendo apenas que se você for publicar a sua versão, manter os créditos do criador original e perguntar ao mesmo.

  12. luan says:

    MSIE 7.0 Windows XP

    luan anderson santos de olivera

  13. pixu says:

    Chrome 13.0.782.220 Windows 7

    tenho umas ideias para um addon pvp , mais ta foda to a 1 mes tentando e nada ,pode me mandar um link de ajuda?

  14. Thiago Melo says:

    Firefox 6.0.2 Linux

    pixu no wowpedia e no wowwiki tem muita informação sobre addons, eu nao jogo wow desde que saiu a cata, estou meio por fora de como anda o cenário.

  15. Francis.link@hotmail.com says:

    Chrome 30.0.1599.101 Windows 7

    thiago qual é o seu e-mail? é o mesmo ainda?
    thiago@oxente.org


pfSense 2.0 e...

Ano passado eu tentei me aventurar a configurar um servidor ...

GVT TV ...

A GVT está lançando seu novo produto, Televisão por Assinatura ...

Novo Blog, quem...

Hoje resolvi voltar a postar no blog, aproveitei para trocar ...

FlashPlayer no Snep,...

Esses dias pediram para eu ouvir umas ligações, e era ...

VMware vCenter Converter...

Esses dias chegou um servidor novo aqui na empresa, um ...

Ultimo post de...

Bom esta semana final de 2010 eu estava aqui de ...

Migração do Voip...

Bom quando terminou a migração eu fiquei direto na empresa ...

Asterisk com Snep...

A tempos venho comentando sobre Asterisk e Snep aqui no ...

Implementações na Radiologia

Estou fazendo implementações de novos sistemas na Radiologia, o primeiro ...

FISL 11 –...

Opa dia 2 do FISL foi ontem lol. Mas não ...