[Tutorial]Como criar um addOn

6 de Setembro de 2009
1
0
0
#1
Bom, eu encontrei esse tutorial ensinando a criar um addon no wow, irei dar uma revisada e editada pra postar aqui pra vcs. Vamos la, mão na massa, quer dizer, no teclado xD.

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 (links logo abaixo), 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:

1. ## Author: Thiago Melo

2. ## Interface: 30000

3. ## Notes: Control Attendance using Built-in WOW calendar.

4. ## Title: KM_Attendance

5. ## Version: 1.0

6. ## eMail: reiserfs@killermonkeys.net

7. ## URL: http://thiago.killermonkeys.net

8. ## DefaultState: Enabled

9. ## LoadOnDemand: 0

10. ## SavedVariables: KMATT_SAVED_VAR_CONFIG, KMATT_SAVED_VAR_ATT

11. 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:

1. ## Interface: 30000

2. ## Title: Ola Mundo!

3. ## Notes: Meu primeiro Addon

4. ## Dependencies:

5. 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 (wikipedia sobre 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.

Crie um arquivo Olamundo.lua na pasta WOW\Interface\AddOns\Olamundo, abra o arquivo e copie o codigo abaixo:

1. function Olamundo()

2. message("Olá Mundo de Azeroth!");

3. 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 (igual ao que vc fez com o arquivo lua, na mesma pasta).

1. <ui xmlns="http://www.blizzard.com/wow/ui/"

2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

3. xsi:schemaLocation="http://www.blizzard.com/wow/ui/

4. ..\..\FrameXML\UI.xsd">

5. <script file="Olamundo.lua"/>

6. <frame name="HelloWorldFrame">

7. <scripts>

8. <onload>

9. Olamundo();

10. </onload>

11. </scripts>

12. </frame>

13. </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.

Obs e Links:

-Quando copiarem os codigos NÃO copiem os numeros que vem antes

Isso está errado: 1. ## Interface: 30000

Isso está certo: ## Interface: 30000

-O addon vai carregar como uma mensgem de erro.

Para ver de novo o addon basta digitar /reload.

-Links

Wikipedia:

Lua - http://pt.wikipedia.org/wiki/Lua_(linguage...a%C3%A7%C3%A3o)

Api - http://pt.wikipedia.org/wiki/Api

Xml - http://pt.wikipedia.org/wiki/Xml

Wowwiki (tudo em Inglês):

Addons - http://www.wowwiki.com/Addons

Criando addons - http://www.wowwiki.com/Getting_started_with_writing_addons

Guia sobre Ui (user interface) - http://www.wowwiki.com/UI_Beginners_Guide

Faq (perguntas e respostas) sobre addons - http://www.wowwiki.com/UI_FAQ/AddOns

Lua - http://www.wowwiki.com/Lua

World of Warcraft (pagina oficial em Inglês):

Forum sobre Ui e addons - http://forums.worldofwarcraft.com/board.ht...11114&sid=1

User Interface Customization tool (tutorial original) - http://us.blizzard.com/support/article.xml...articleId=21466

Versão original do tutorial em português - http://thiago.oxente.org/2008/12/01/criand...arcraft-parte-1

Xml - http://www.w3.org/XML/

Lua - http://www.lua.org/

Creditos: Thiago Melo.

Edição e Revisão: Dhunter.