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 WOW\Interface\AddOns\Olamundo).
- 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.
CODE:
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.
CODE:
<ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/ ..\..\FrameXML\UI.xsd"> <script file="Olamundo.lua"/> <frame name="HelloWorldFrame"> <scripts> <onload> Olamundo(); </onload> </scripts> </frame> </ui>
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.






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 ^^
Olá Luiza, eu tenho Gmail/Gtalk me adiciona thiago(arroba)oxente.org
para quando a segunda parte do toturial
Eu tava meio sem tempo mas vou providenciar em breve.
eu adicionei o teu e-mail
o meu e manuel_nicolau_454@hotmail.com
Trobogiii, esse post foi o bicho, adorei, vou enfiar minha cara na Lua pra programar meus addons, adorei mesmo, brigadu trobogi
LOL Steven! heuaheu sumido cara.
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!
Opa Nicholas, ainda não o fiz, muita gente pediu, só ainda não tive tempo, mas ainda esse ano faço hehehe.
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.
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.