Eu não sou um expert em Lua/Xml, manjo um pouco de programação e com um pouco de tempo livre e estudo eu consegui fazer alguns addons já, dois deles eu publiquei e continuo desenvolvendo, atualizando e melhorando. Window já faz mais ou menos o que esse addon faz, e ainda faz mais, porem eu queria algo mais simples e ATSW não estava sendo atualizado, ele era pesado por carregar uma UI própria e não usar a UI do game.
Idéias para novos addons sempre surgem, porem deve se ter tempo e dedicação, para não largar o filho no mercado e abandonar depois, como muitos addons legais morrem por falta de atualização por ai.
Muita gente me pergunta se é difícil programar utilizando a API do World of Warcraft, programar mesmo não é dificil, porem achar conteúdo sobre o assunto não é tão simples. Eu sou um fã de carteirinha da lore do warcraft (jogo desde o demon do Warcraft: Orcs and Humans) e do portal [Tens de ter uma conta e sessão iniciada para poderes visualizar este link] nesse site está concentrado muita informação sobre warcraft, assim como a Lore, Gameplay e também sobre a API do World of Warcraft.
Vou mostrar aqui neste artigo como criar um simples Addon "Hello World" e na parte 2, 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: Lazaromuskk
## Interface: 30000
## Notes: Control Attendance using Built-in WOW calendar.
## Title: KM_Attendance
## Version: 1.0
## URL: [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
## 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:
- 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 abaixo.
## Interface: 30000
## Title: Ola Mundo!
## Notes: Meu primeiro Addon
## Dependencies:
Olamundo.xml
- Salve o arquivo.
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, Lua é uma linguagem brasileira, muito fácil de usar, mais info sobre Lua veja aqui no wikipedia.
- Nessa etapa deve se criar um arquivo chamado Olamundo.lua na pasta do addon Olamundo que criamos, e abrir esse arquivo para colocar nossas primeiras linhas de código.
function Olamundo()
message("Ola 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(string)"vai mostrar uma janela com o texto escolhido e um botão de "OK", é uma função da API.
1.3 Arquivo .xml
Os arquivos XML são carregados pelo .toc, esse arquivo é o que vai interagir diretamente com a API, e se comunicando com os arquivos .lua. Nesse arquivo está também a parte gráfica do addon, os frames, botões e etc. Nesse nosso primeiro addon o XML não vai criar nenhum gráfico, apenas vai carregar o nosso arquivo .lua que vai gerar um popup padrão do jogo.
Crie um arquivo chamado Olamundo.xml dentro da pasta do Addon Olamundo, e nele coloque o código abaixo:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.blizzard.com/wow/ui/
..\..\FrameXML\UI.xsd">
<onload>
Olamundo();
onload>
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, e nesse mesmo formato ai com esses mesmo valores xmls e bla bla bla. A parte que fica entre as tags é o que importa mais.
essa tag vai chamar o Olamundo.lua, pode se colocar varios .lua ai bastando adicionar outra
* Importante: XML tem uma formatação certa, se abrir uma TAG deve fechar se quiser uma Tag de uma linha só coloque com a barra "/" no final.
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-se de um frame para fazer o addon funcionar.
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 é a funçã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. Considerações finais
* Um addon somente é carregado quando se abre o jogo, nesta parte e quando o jogo varre a pasta de Addon a procura dos arquivos .toc. Porem dentro do jogo pode mudar os códigos LUA/XML e dar um reloadUI que ele carrega novamente, pois os arquivos XML/LUA só são carregadas junto com a UI do game, isso é util para programar um addon, a cada modificação basta dar um reloadUI para ver o resultado. (DICA: você pode criar uma macro com o comando "/script ReloadUI();" para facilitar.
* Existem muitas funções do jogo prontas para buscar dados e modificar dados, uma lida no wowwiki sobre a API do wow pode mostrar o poder da API e o que se pode fazer com ela, porem existem funções bloqueadas onde somente os ADDONS da blizzard podem utilizar, um exemplo o calendário.
* Algumas funções do jogo possuem limitações e bloqueios que vão desde negar a respostas ou dar um disconnect. Por exemplo GuildRoster(); essa função pega as informações da lista de players da guild porem voce só pode usar ela em intervalos de 10 segundos. Outro exemplo é linkar itens que não estão no cache do usuário pode dar Disconnect, ou tentar linkar mais de 3 itens no chat.
* Existem programas como WOW Studio e outros que ajudam na criação da parte gráfica do wow, é bom para iniciar, mas acho que fica confuso depois, e o mesmo que fazer um site do Dreamweaver comparado a fazer o html no bloco de notas (eu sou do time do bloco de notas)
* Eu uso um programa chamado PSPad, é um bloco de notas avançado que suporta várias linguagens de programação incluindo XML e Lua.
* Em breve eu escrevo a parte 2
4. Links
WowWiki WOW_API: [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
Addon Studio: [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
WoW UI Designer: [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
Lua Wiki: [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
Creditos thiago
Idéias para novos addons sempre surgem, porem deve se ter tempo e dedicação, para não largar o filho no mercado e abandonar depois, como muitos addons legais morrem por falta de atualização por ai.
Muita gente me pergunta se é difícil programar utilizando a API do World of Warcraft, programar mesmo não é dificil, porem achar conteúdo sobre o assunto não é tão simples. Eu sou um fã de carteirinha da lore do warcraft (jogo desde o demon do Warcraft: Orcs and Humans) e do portal [Tens de ter uma conta e sessão iniciada para poderes visualizar este link] nesse site está concentrado muita informação sobre warcraft, assim como a Lore, Gameplay e também sobre a API do World of Warcraft.
Vou mostrar aqui neste artigo como criar um simples Addon "Hello World" e na parte 2, 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: Lazaromuskk
## Interface: 30000
## Notes: Control Attendance using Built-in WOW calendar.
## Title: KM_Attendance
## Version: 1.0
## URL: [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
## 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:
- 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 abaixo.
## Interface: 30000
## Title: Ola Mundo!
## Notes: Meu primeiro Addon
## Dependencies:
Olamundo.xml
- Salve o arquivo.
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, Lua é uma linguagem brasileira, muito fácil de usar, mais info sobre Lua veja aqui no wikipedia.
- Nessa etapa deve se criar um arquivo chamado Olamundo.lua na pasta do addon Olamundo que criamos, e abrir esse arquivo para colocar nossas primeiras linhas de código.
function Olamundo()
message("Ola 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(string)"vai mostrar uma janela com o texto escolhido e um botão de "OK", é uma função da API.
1.3 Arquivo .xml
Os arquivos XML são carregados pelo .toc, esse arquivo é o que vai interagir diretamente com a API, e se comunicando com os arquivos .lua. Nesse arquivo está também a parte gráfica do addon, os frames, botões e etc. Nesse nosso primeiro addon o XML não vai criar nenhum gráfico, apenas vai carregar o nosso arquivo .lua que vai gerar um popup padrão do jogo.
Crie um arquivo chamado Olamundo.xml dentro da pasta do Addon Olamundo, e nele coloque o código abaixo:
xsi:schemaLocation="http://www.blizzard.com/wow/ui/
..\..\FrameXML\UI.xsd">
<onload>
Olamundo();
onload>
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
* Importante: XML tem uma formatação certa, se abrir uma TAG deve fechar
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-se de um frame para fazer o addon funcionar.
<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 é a funçã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. Considerações finais
* Um addon somente é carregado quando se abre o jogo, nesta parte e quando o jogo varre a pasta de Addon a procura dos arquivos .toc. Porem dentro do jogo pode mudar os códigos LUA/XML e dar um reloadUI que ele carrega novamente, pois os arquivos XML/LUA só são carregadas junto com a UI do game, isso é util para programar um addon, a cada modificação basta dar um reloadUI para ver o resultado. (DICA: você pode criar uma macro com o comando "/script ReloadUI();" para facilitar.
* Existem muitas funções do jogo prontas para buscar dados e modificar dados, uma lida no wowwiki sobre a API do wow pode mostrar o poder da API e o que se pode fazer com ela, porem existem funções bloqueadas onde somente os ADDONS da blizzard podem utilizar, um exemplo o calendário.
* Algumas funções do jogo possuem limitações e bloqueios que vão desde negar a respostas ou dar um disconnect. Por exemplo GuildRoster(); essa função pega as informações da lista de players da guild porem voce só pode usar ela em intervalos de 10 segundos. Outro exemplo é linkar itens que não estão no cache do usuário pode dar Disconnect, ou tentar linkar mais de 3 itens no chat.
* Existem programas como WOW Studio e outros que ajudam na criação da parte gráfica do wow, é bom para iniciar, mas acho que fica confuso depois, e o mesmo que fazer um site do Dreamweaver comparado a fazer o html no bloco de notas (eu sou do time do bloco de notas)
* Eu uso um programa chamado PSPad, é um bloco de notas avançado que suporta várias linguagens de programação incluindo XML e Lua.
* Em breve eu escrevo a parte 2
4. Links
WowWiki WOW_API: [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
Addon Studio: [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
WoW UI Designer: [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
Lua Wiki: [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
Creditos thiago