Você já pensou em fazer addons do World of Warcraft? Independente da sua resposta, leia este post...
No meu último post falei um pouco a respeito da linguagem Lua, que é brasileira e é utilizada pela Blizzard para ser o "motor" de interface do WoW.
Contudo, ao final do post, compartilhei um vídeo do projeto Code.org, que incentiva as pessoas à programar, fazendo seus próprios códigos. Esta filosofia acredita que, ao programar, as pessoas ganharão mais autonomia no nosso contexto tecnológico, desenvolvendo suas próprias soluções.
E cá estou eu novamente para instigá-los neste sentido: vocês já pensaram em fazer um addon?
Bem, inicialmente, deixe-me contar-lhes um segredo, o fato é que programar não tem segredo, basta entender o que se quer comunicar com o computador, saber como a "língua" que você quer usar funciona e tentar, tentar e tentar... Comece pelo simples e depois vá aumentando a complexidade.
Com o addon é a mesma coisa, portanto vou te apresentar uma ideia simples para fazer uma addon para resolver esta questão.
Pegando a Missão

Minha necessidade é: "Como não falo nada de inglês, gostaria de um addon para enviar frases simples em inglês, como 'Olá Todos!' e 'Obrigado!'"
Para tal, gostaria de ter uma janela com um botão para cada mensagem que quero disparar.
Primeiro vamos entender o que é um addon. São três tipos de arquivos:
1) .toc: Um arquivo que é, na realidade uma espécie de identificação do addon. Tem linhas que declaram qual a versão do WoW que é suportada por ele, quem é o autor e sua descrição que aparece na janelinha de addons do jogo. Tem, também, a lista de arquivos que compõem a solução;
2) .xml: XML é um formato de uso geral na computação. Trata-se de um arquivo com "marcações" e "seções". No caso dos addons, este arquivo é usado para se montar um ou vários elementos visuais. Ele desenha a tela, com suas particularidades de cor, tamanho, posicionamento e indica quais comportamentos os elementos terão;
3) .lua: É o chamado arquivo de scripting. Aqui é onde fica a lógica toda do addon. Neste arquivo são inseridas as linhas de código para que o WoW se comporte da maneira que deseja, com a linguagem Lua.
Fazendo a Missão
Agora que já sabemos os tipos de arquivos, vamos iniciar. Crie uma pasta com o nome exato que terá seu addon, isto será importante, pois ele procurará as pastas dentro da pasta Addons do WoW e, em cada pasta procurará um arquivo .toc com o mesmo nome. Neste arquivo estarão os dados necessários para a carga e execução do addon. Como mostrado na imagem abaixo, criei uma pasta dentro das minhas pastas de desenvolvimento e não direto no WoW, para não correr riscos durante o desenvolvimento.
![]() |
| Exemplo de pasta onde ficarão os arquivos do addon |
Agora podemos criar e editar os três arquivos que conterão a solução ao nosso problema. Eu utilizo o NotePad++ para esta tarefa, mas você pode utilizar qualquer programa que grave texto puro (o Word, por exemplo, não serve, pois ele coloca marcas de formatação no arquivo, o que irá danificar o projeto).
O primeiro será o arquivo "Frases.toc", com o seguinte conteúdo
## Interface: 60100## Title: Frases Bilíngues
## Notes: "Addon para auxiliar falantes em português, para armazenar e usar frases básicas"
## Version: 1.0
Frases.xml
Frases.lua
A primeira linha do arquivo contém a versão da chamada API do WoW "## Interface: 60100", que muda junto com a expansão e alguns casos com patches que a modifiquem.
Para saber qual é esta versão, abra o jogo e digite o seguinte na janela de chat:
/run print((select(4, GetBuildInfo())))
A segunda linha tem o título do aaddon que vai aparecer na janela de addons e a terceira contém a descrição mais detalhada.
A quarta linha tem a versão do addon (número que cada desenvolvedor dá para controlar as versões e correções feitas no addon).
Logo na sequencia tem os arquivos que irão fazer parte da solução. Lembre-se que o WoW espera que o arquivo "toc" tenha o mesmo nome da pasta para carregá-lo e lê-lo, contudo, os outros arquivos podem ter nomes distintos. Coloquei os mesmos para facilitar o entendimento.
O segundo arquivo será o "Frases.xml" é a representação da minha interface
Para ler um XML, seja ele qual for, use a seguinte técnica. Normalmente ele começa com uma "tag" ou marcação, por exemplo "<UI" que irá finalizar com um "/>" ou "</UI". Dentro de cada marcação, podem ter várias outras marcações, que seguirão a mesma lógica. Isto mostra que cada seção, marcada por uma tag de início e fim, pode ter seções internas.
Na prática, o exemplo do nosso addon ilustra isto bem. Como podem ver na imagem final, teremos um painel com dois botões. Os botões são "filhos" do painel, estão dentro dele e são controlados por ele.
![]() |
| Imagem Final do Addon |
As palavras que fazem a marcação são bem intuitivas. Veja bem, jogando "Frame" no Google Translate, a primeira palavra que vem é "Quadro". É exatamente esta a forma que iremos desenhar. E "Button" é traduzido como "botão". Leia com calma e sem medo o XML e você verá que não tem muito mistério, apenas formatações de fundo de tela, cores, fontes e coisas do tipo.
Veja arquivo completo abaixo:
<?xml version="1.0"?>
<Ui xmlns="http://www.blizzard.com/wow/ui/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Script file="Frases.lua" />
<Frame name="PainelFrases" parent="UIParent" toplevel="true" enableMouse="true">
<Size>
<AbsDimension x="147" y="90" />
</Size>
<Anchors>
<Anchor point="CENTER">
<Offset x="-43" y="-11" />
</Anchor>
</Anchors>
<Backdrop bgFile="Interface\DialogFrame\UI-DialogBox-Background" edgeFile="Interface\DialogFrame\UI-DialogBox-Border" tile="true">
<BackgroundInsets>
<AbsInset left="11" right="12" top="12" bottom="11" />
</BackgroundInsets>
<TileSize>
<AbsValue val="32" />
</TileSize>
<EdgeSize>
<AbsValue val="32" />
</EdgeSize>
</Backdrop>
<Frames>
<Button name="OlaTodos" inherits="UIPanelButtonTemplate" text="Olá a todos">
<Size>
<AbsDimension x="75" y="28" />
</Size>
<Anchors>
<Anchor point="TOPLEFT">
<Offset x="32" y="-52" />
</Anchor>
</Anchors>
<Frames />
<Layers />
<Scripts>
<OnClick>Hi();</OnClick>
</Scripts>
</Button>
<Button name="Obrigado" inherits="UIPanelButtonTemplate" text="Obrigado">
<Size>
<AbsDimension x="75" y="28" />
</Size>
<Anchors>
<Anchor point="TOPLEFT">
<Offset x="32" y="-22" />
</Anchor>
</Anchors>
<Frames />
<Layers />
<Scripts>
<OnClick>Thanks();</OnClick>
</Scripts>
</Button>
</Frames>
<Layers>
</Layers>
</Frame>
</Ui>
Eu quero chamar atenção especial para três linhas, que são exatamente os pontos de ligação do "xml" com meu arquivo "lua" que irá executar as ações.
<Script file="Frases.lua" /> -> Esta linha ensina ao xml quem irá executar o comportamento indicado pelos elementos da tela;
<OnClick>Hi();</OnClick> -> Esta linha instrui ao primeiro botão que execute a função Hi() que está dentro do arquivo "Frases.lua";
<OnClick>Thanks();</OnClick> -> Esta linha instrui ao segundo botão que execute a função Thanks() que está dentro do arquivo "Frases.lua".
Existem muitas outras tags e possibilidades de formatação de tela. Para uma referência mais detalhada, veja em: http://www.wowwiki.com/XML_UI
O terceiro arquivo será, por fim o "Frases.lua"
Aqui teremos os scripts executados pelas ações da interface, com o seguinte conteúdo:function Hi()
SendChatMessage("Hi All!" ,"SAY");
end
function Thanks()
SendChatMessage("Thank You!" ,"SAY");
end
Neste caso, as funções estão usando o /say, mas você pode direcioná-los para outros chats.
Entregando a Missão
Bem, agora é a hora da verdade. Siga os passos abaixo:
1) Localize a pasta "Interface\Addons" dentro das pastas do jogo, conforme imagem abaixo. (O caminho vai variar de acordo com o local de instalação do WoW, mas a pasta Addons sempre estará dentro da pasta "Interface".
![]() |
| Exemplo de Pasta do WoW |
2) Crie a pasta "Frases" dentro da pasta "Addons". É importante que o nome seja exatamente este para que ele reconheça o addon.
3) Copie os três arquivos "Frases.toc", "Frases.xml" e "Frases.lua" para dentro da pasta "Frases" recém criada.
Agora basta rodar o WoW.
Na tela inicial, veja se nosso addon aparece, conforme imagem, se não aparecer, repita com cuidado a operação acima. Saia e entre no jogo novamente.
![]() |
| Tela Inicial |
![]() |
| Tela Dentro do Jogo |
Agora é testar.
Importante: se em algum momento dos seus testes o WoW travar ou tiver comportamento estranho, basta excluir a pasta "Frases" de dentro da pasta "Interface\Addons" do jogo.
Versão 2.
Ah, mas o addon só tem estas duas frases? A janelinha não se move? queria editar e salvar minhas próprias frases dentro do jogo.
Bom, se você chegou até aqui e sentiu que estas perguntas são relevantes, significa que o bichinho do desenvolvimento te pegou. Na internet tem muito material sobre o assunto. Defina seus próximos requisitos e mãos à obra.
Algumas referências:
http://wowprogramming.com/docs
http://www.wowwiki.com/WoW_AddOn
http://www.wowinterface.com/forums/forumdisplay.php?f=12
http://www.mmo-champion.com/threads/817817-Creating-Your-Own-WoW-Addon
https://addonstudio.codeplex.com/discussions/251771
http://www.dev-hq.net/posts/2--create-world-of-warcraft-addon
Montanha
fonte de imagem: http://fc07.deviantart.net/fs70/i/2014/230/1/6/gnome_engineer_by_ancientsources-d4t3lsm.jpg - acesso em 27.mar.2015
fonte de imagem: http://th05.deviantart.net/fs70/PRE/f/2010/296/5/6/goblin_engineer_by_nefarei-d31cg23.jpg - acesso em 27.mar.2015
fonte de imagem: http://gamestudies.org/articleimages/30_Figure1a.jpg - acesso em 27.mar.2015
fonte de imagem: http://muse.union.edu/unfiltered/files/2012/11/level70.jpg - acesso em 27.mar.2015
fonte de imagem: arquivo pessoal - - acesso em 27.mar.2015
fonte de pesquisa: http://www.cojanowow.com.br/2015/03/dentro-do-wow-bate-um-coracao-brasileiro.html - acesso em 27.mar.2015
fonte de pesquisa: http://us.blizzard.com/pt-br/ - acesso em 27.mar.2015
fonte de pesquisa: http://us.battle.net/wow/pt/game/ - acesso em 27.mar.2015
fonte de pesquisa: http://code.org/ - acesso em 27.mar.2015
fonte de pesquisa: http://pt.wikipedia.org/wiki/XML - acesso em 27.mar.2015
fonte de pesquisa: http://www.lua.org/portugues.html - acesso em 27.mar.2015
fonte de pesquisa: http://notepad-plus-plus.org/ - acesso em 27.mar.2015
fonte de pesquisa: http://www.wowwiki.com/API_SendChatMessage - acesso em 27.mar.2015
fonte de pesquisa: http://www.wowwiki.com/XML_UI - acesso em 27.mar.2015
fonte de pesquisa: https://translate.google.com.br/ - acesso em 27.mar.2015
fonte de pesquisa: http://wowprogramming.com/docs - acesso em 27.mar.2015
fonte de pesquisa: http://www.wowwiki.com/WoW_AddOn - acesso em 27.mar.2015
fonte de pesquisa: http://www.wowinterface.com/forums/forumdisplay.php?f=12 - acesso em 27.mar.2015
fonte de pesquisa: http://www.mmo-champion.com/threads/817817-Creating-Your-Own-WoW-Addon - acesso em 27.mar.2015
fonte de pesquisa: https://addonstudio.codeplex.com/discussions/251771 - acesso em 27.mar.2015
fonte de pesquisa: http://www.dev-hq.net/posts/2--create-world-of-warcraft-addon - acesso em 27.mar.2015


























4 comentários:
Estou dando ênfase nessa "mão na roda" que pouco citada foi nesse artigo.
Uma IDE para criar a interface do Addon:
https://addonstudio.codeplex.com/
Fala Cesar!
Obrigado por contribuir. A ideia de não apresentar nenhuma ferramenta, lib ou framework de addon (como a Ace, por exemplo), foi apresentar o mecanismo de forma mais crua.
A ideia é fazer um "Raio-X" do addon para quem não conhece.
À medida que a pessoa se interesse, ela vai naturalmente procurando meios de acelerar o desenvolvimento.
Galera eu uso Visual Basic para ler as .XML dentre outras ele a melhor pra mim e já uso há anos
Olá Daniel,
Você deve estar se referindo ao Visual Studio, né?
Sim, é uma excelente ferramenta para ler XML, contudo é muito pesado. Caso não seja um desenvolvedor VB especificamente, aí recomendo o NotePad++ por ser mais leve e ainda dar suporte à edição dos arquivos Lua.
Abs.
Postar um comentário