<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Thiago Melo &#187; Lua XML</title>
	<atom:link href="http://thiago.oxente.org/category/programacao/lua-xml/feed" rel="self" type="application/rss+xml" />
	<link>http://thiago.oxente.org</link>
	<description>Linux, Programação, Redes e Jogos.</description>
	<lastBuildDate>Thu, 04 Feb 2010 18:03:37 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Addons atualizados.</title>
		<link>http://thiago.oxente.org/2009/01/22/addons-atualizados</link>
		<comments>http://thiago.oxente.org/2009/01/22/addons-atualizados#comments</comments>
		<pubDate>Thu, 22 Jan 2009 15:02:27 +0000</pubDate>
		<dc:creator>Thiago Melo</dc:creator>
				<category><![CDATA[Jogos]]></category>
		<category><![CDATA[Lua XML]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[World of Warcraft]]></category>

		<guid isPermaLink="false">http://thiago.oxente.org/?p=107</guid>
		<description><![CDATA[Hoje depois do Patch 3.0.8 resolvi atualizar meus addons, os dois tinham uns bugs que eu já estava sabendo só estava sem tempo de arrumar.
Killer Monkeys &#8211; Recipe Tree: Esse addon tava com um bug que causava um loop infinito travando o jogo, olhando o código percebi que o item Large Prismatic Shard é feito [...]]]></description>
			<content:encoded><![CDATA[<p>Hoje depois do Patch 3.0.8 resolvi atualizar meus addons, os dois tinham uns bugs que eu já estava sabendo só estava sem tempo de arrumar.<br />
Killer Monkeys &#8211; Recipe Tree: Esse addon tava com um bug que causava um loop infinito travando o jogo, olhando o código percebi que o item Large Prismatic Shard é feito com Small Prismatic Shard e Small Prismatic e feito de Large, com isso qualquer recipe que ussase Prismatic Shard entrava em loop infinito.<br />
A solução foi colocar os dois na lista de ignore, essa lista foi criada para Leatherworking onde ele ficava calculado todo tipo de couro para os itens, resolvi tambem coloar as Enchanting Rod na ignore list.</p>
<p>Killer Monkeys &#8211; Attendance: Esse addon começou com um problema em janeiro, que era criar raids com o mês (zero), pelo o que percebi ele ficou meio doido na virada do ano, o função que deveria calcular que se o mês anterior fosse dezembro, voltasse um ano, não estava funcionando,  com isso ele deixava Janeiro com 1 e Dezembro com 0.<br />
A solução foi remover esse código e usar uma função do jogo que pega o mês exato de acordo com o Offset que está sendo utilizado.</p>
<p>Ambos Addons se encontram hospedados na <a href="http://wow.curse.com" target="_blank">Curse Gaming</a>, e podem ser atualizados pelo Curse Client ou baixados diretamente.<br />
KM Recipe Tree <a href="http://my.curse.com/downloads/wow-addons/details/killer-monkeys-recipe-tree.aspx" target="_blank">http://my.curse.com/downloads/wow-addons/details/killer-monkeys-recipe-tree.aspx</a><br />
KM Attendance  <a href="http://my.curse.com/downloads/wow-addons/details/km_att.aspx" target="_blank">http://my.curse.com/downloads/wow-addons/details/km_att.aspx</a></p>
]]></content:encoded>
			<wfw:commentRss>http://thiago.oxente.org/2009/01/22/addons-atualizados/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Criando um Addon para World of Warcraft &#8211; Parte 1</title>
		<link>http://thiago.oxente.org/2008/12/01/criando-um-addon-para-world-of-warcraft-parte-1</link>
		<comments>http://thiago.oxente.org/2008/12/01/criando-um-addon-para-world-of-warcraft-parte-1#comments</comments>
		<pubDate>Mon, 01 Dec 2008 19:44:04 +0000</pubDate>
		<dc:creator>Thiago Melo</dc:creator>
				<category><![CDATA[Jogos]]></category>
		<category><![CDATA[Lua XML]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[World of Warcraft]]></category>
		<category><![CDATA[addon]]></category>
		<category><![CDATA[como criar]]></category>
		<category><![CDATA[hello world]]></category>
		<category><![CDATA[lua]]></category>
		<category><![CDATA[warcraft]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://thiago.oxente.org/?p=90</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-91" title="handwrench" src="http://thiago.oxente.org/wp-content/uploads/2008/12/handwrench-300x200.jpg" alt="" width="180" height="120" />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.</p>
<p>Eu sou um fã de carteirinha do portal <a title="WOW WIKI" href="http://www.wowwiki.com" target="_blank">wowwiki.com</a>, nesse site está concentrado muita informação sobre warcraft, assim como a Lore, Gameplay e também sobre a API do World of Warcraft.</p>
<p>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".</p>
<p>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 <a href="http://us.blizzard.com/support/article.xml?articleId=21465" target="_blank">kit de desenvolvimento</a> oficial da <a href="http://www.blizzard.com" target="_blank">Blizzard</a>, eu só vou explicar passo a passo da criação de cada um.</p>
<p><span id="more-90"></span></p>
<p><strong>1. Estrutura de um Addon</strong></p>
<p>Um addon deve possuir em sua pasta três arquivos.<br />
.toc -&gt; Onde fica as informações principais do addon; nome, versão, variáveis, dependências e etc.<br />
.lua -&gt; Onde fica toda a programação do addon.<br />
.xml -&gt; Onde fica o código da estrutura da interface do addon.</p>
<p><strong>1.1 Arquivo .toc</strong></p>
<p>A estrutura do .toc é mais ou menos assim:</p>
<div class="igBar"><span id="lcode-5"><a href="#" onclick="javascript:showPlainTxt('code-5'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-5">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">## Author: Thiago Melo</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">## Interface: <span style="color:#800000;color:#800000;">30000</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">## Notes: Control Attendance using Built-in WOW calendar.</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">## Title: KM_Attendance</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">## Version: <span style="color:#800000;color:#800000;">1</span>.<span style="color:#800000;color:#800000;">0</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">## eMail: reiserfs@killermonkeys.<span style="">net</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">## URL: http:<span style="color:#FF9933; font-style:italic;">//thiago.killermonkeys.net</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">## DefaultState: Enabled</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">## LoadOnDemand: <span style="color:#800000;color:#800000;">0</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">## SavedVariables: KMATT_SAVED_VAR_CONFIG, KMATT_SAVED_VAR_ATT</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">KM_Att.<span style="">xml</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>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.<br />
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.</p>
<p>A estrutura do nosso addon OlaMundo será assim</p>
<div class="igBar"><span id="lcode-6"><a href="#" onclick="javascript:showPlainTxt('code-6'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-6">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">## Interface: <span style="color:#800000;color:#800000;">30000</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">## Title: Ola Mundo!</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">## Notes: Meu primeiro Addon</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">## Dependencies:</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">Olamundo.<span style="">xml</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>
- Crie uma pasta chamada Olamundo dentro da pasta dos addon do WOW (Pasta do WOW\Interface\AddOns\Olamundo).<br />
- Crie um arquivo chamado Olamundo.toc e coloque os dados acima.<br />
<strong>1.2 Arquivo .lua</strong></p>
<p>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 <a href="http://pt.wikipedia.org/wiki/Lua_(linguagem_de_programa%C3%A7%C3%A3o)" target="_blank">wikipedia sobre lua</a>.</p>
<p>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.</p>
<pre>
<div class="igBar"><span id="lcode-7"><a href="#" onclick="javascript:showPlainTxt('code-7'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-7">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">function Olamundo<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; message<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">"Olá Mundo de Azeroth!"</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">end </div>
</li>
</ol>
</div>
</div>
</div>


</pre>
<p>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.<br />
<strong>1.3 Arquivo .xml<br />
</strong></p>
<p>Esse arquivo é o que vai interagir diretamente com a API, sendo carregado pelo .toc e se comunicando com o .lua.<br />
Crie um arquivo chamado Olamundo.xml e nele bote o código abaixo.</p>
<pre>
<div class="igBar"><span id="lcode-8"><a href="#" onclick="javascript:showPlainTxt('code-8'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-8">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;ui xmlns=<span style="color:#CC0000;">"http://www.blizzard.com/wow/ui/"</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;xmlns:xsi=<span style="color:#CC0000;">"http://www.w3.org/2001/XMLSchema-instance"</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;xsi:schemaLocation=<span style="color:#CC0000;">"http://www.blizzard.com/wow/ui/</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#CC0000;"> ..<span style="color:#000099; font-weight:bold;">\.</span>.<span style="color:#000099; font-weight:bold;">\F</span>rameXML<span style="color:#000099; font-weight:bold;">\U</span>I.xsd"</span>&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &lt;script file=<span style="color:#CC0000;">"Olamundo.lua"</span>/&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &lt;frame name=<span style="color:#CC0000;">"HelloWorldFrame"</span>&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;&lt;scripts&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &lt;onload&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;&nbsp; Olamundo<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &lt;/onload&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;&lt;/scripts&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &lt;/frame&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;/ui&gt; </div>
</li>
</ol>
</div>
</div>
</div>


</pre>
<p>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.<br />
A tag inicial do código XML para a API do wow sempre vai ser &lt;UI&gt;, e nesse mesmo formato ai com esses mesmo valores xmls e bla bla bla. A parte que fica entre as tags &lt;UI&gt;&lt;/UI&gt; é o que importa mais.<br />
&lt;Script /&gt; essa tag vai chamar o Olamundo.lua, pode se colocar varios .lua ai bastanto adicionar outra &lt;Script file="nomedoarquivo.lua" /&gt;<br />
<em>* Importante: XML tem uma formatação certa, se abrir uma TAG deve fechar &lt;TAG&gt; &lt;/TAG&gt; se quiser uma Tag de uma linha só coloque &lt;TAG /&gt; com a barra "/" no final.</em></p>
<p>&lt;Frame&gt; &lt;/Frame&gt; 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.<br />
&lt;Scripts&gt; &lt;/Scripts&gt; Aqui controlamos os eventos do frame, lembra um pouco os eventos de um campo HTML (onload, onmouseover, onclick, etc).<br />
&lt;Onload&gt;&lt;/Onload&gt; 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.</p>
<p><strong>2 Testando</strong></p>
<p>- 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.<br />
- Escolha um personagem e entre no jogo.<br />
- Se a tela "Olá Mundo de Azeroth" aparecer com o botão de OK para fechar, você teve sucesso e criou seu primeiro Addon.</p>
<p><strong>3 Mais só isso?</strong></p>
<p>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.</p>
]]></content:encoded>
			<wfw:commentRss>http://thiago.oxente.org/2008/12/01/criando-um-addon-para-world-of-warcraft-parte-1/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Meu novo Addon para World of Warcraft</title>
		<link>http://thiago.oxente.org/2008/11/26/meu-novo-addon-para-world-of-warcraft</link>
		<comments>http://thiago.oxente.org/2008/11/26/meu-novo-addon-para-world-of-warcraft#comments</comments>
		<pubDate>Wed, 26 Nov 2008 18:00:51 +0000</pubDate>
		<dc:creator>Thiago Melo</dc:creator>
				<category><![CDATA[Jogos]]></category>
		<category><![CDATA[Lua XML]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[World of Warcraft]]></category>
		<category><![CDATA[addon]]></category>
		<category><![CDATA[curse]]></category>
		<category><![CDATA[km_att]]></category>
		<category><![CDATA[lua]]></category>
		<category><![CDATA[wow]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://thiago.oxente.org/?p=86</guid>
		<description><![CDATA[
Meu primeiro addon foi um que eu fiz com a saida da BC, era o KM_RecipeTree (Killer Monkeys - Recipe Tree) esse addon eu fiz porque eu tinha um lock tailor e era muuuito chato ficar calculando os mats que precisava para fazer os itens, tipo o cara me perguntava QUAIS OS MATS DA BAG? [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://thiago.oxente.org/wp-content/uploads/2008/11/goblin.jpg"><img class="alignleft size-medium wp-image-88" title="goblin" src="http://thiago.oxente.org/wp-content/uploads/2008/11/goblin-300x257.jpg" alt="" width="126" height="108" /></a></p>
<p>Meu primeiro addon foi um que eu fiz com a saida da BC, era o KM_RecipeTree (Killer Monkeys - Recipe Tree) esse addon eu fiz porque eu tinha um lock tailor e era muuuito chato ficar calculando os mats que precisava para fazer os itens, tipo o cara me perguntava QUAIS OS MATS DA BAG? se eu falar é tantos bold of cloth ai cara e os MATS DO BOLT? puts, ai eu fiz um addon que calcula tudo isso e manda no chat<br />
Mais info aqui: <a href="http://my.curse.com/downloads/wow-addons/details/killer-monkeys-recipe-tree.aspx" target="_blank">http://my.curse.com/downloads/wow-addons/d...ecipe-tree.aspx</a> (não ta funcionando na WOTLK mas vou atualizar em breve)</p>
<p>bom voltando ao mais novo <img style="vertical-align: middle;" src="http://www.hangarnet.com.br/forum/style_emoticons/default/biggrin.gif" border="0" alt="biggrin.gif" /><br />
Site do Addon no Curse.com<br />
<a href="http://my.curse.com/downloads/wow-addons/details/km_att.aspx" target="_blank">http://my.curse.com/downloads/wow-addons/details/km_att.aspx</a><br />
<strong>O Killer Monkeys - Attendance</strong> é um addon que tem como função gerar o numero de attendance dos membros da guild, usando como base de dados o sistema de calendário do jogo. De inicio a minha guild (Killer Monkeys) costumava usar o phpRaid, onde os eventos eram marcados e de acordo com o apply de cada membro uma pontuação era dada e no final de cada mês era gerado a porcentagem de presença desse player (attendance) e com isso ele subia ou descia de rank na guild.</p>
<p><span id="more-86"></span><br />
O phpRaid é uma boa ferramenta porem ele tem um problema que era ter que atualizar manualmente cada dia de raid de acordo com o setup da mesma, tendo que marcar os faltosos e o grupo que foi formado, as vezes isso gerava dados imprecisos e sem falar do saco que é o (Alt-Tab) para atualizar.</p>
<p>O phpRaid tinha flags para o player de acordo com o apply da raid: Avaliable, Not Avaliable e Confirmed, onde se dava 1 ponto para Confirmed, 0.5 para Avaliable e 0 (zero) para Not Avaliable. No final contava os pontos com uma formula e o phpRaid gerava o att (ele não faz isso nativamente foi uma modificação que fiz).</p>
<p>Com o calendário e um sistema de attendance in-game tudo é feito usando a interface do jogo, sem alt-tab, officers podem setar as raids e as flags e players podem conferir seu attendance ontime.</p>
<p><strong>No calendário do jogo existem 6 flags onde a pontuação pode ser mais diversificada, para a nossa guild usamos:</strong><br />
Confirmed  = 1 (usado para quem deu accepted e apareceu no dia do evento).<br />
Standby = 0.5 (usado para quem deu accepted, apareceu mas saiu no meio, ou ficou de replace e saiu logo em seguida quando precisou).<br />
Declined = 0.25 (não pode vir mas avisou com antecedência).<br />
Out = -1 (ponto negativo para quem da accepted e não aparece, e para quem não responde ao evento também).<br />
Invited = ~ (não conta pontos mas e a flag de todos que foram invitados, se o cara não responder delcined ou accepted o addon muda a flag dele para Out no dia do evento).<br />
Accepted = 0 (essa flag quase nunca vai ser usada como pontuação final, mas e bom ter como coringa para dar ZERO a alguem em algum caso especial).</p>
<p>A formula para gerar o attendance é:<br />
factor_confirmed = 1<br />
factor_standby = 0.5<br />
factor_declined = 0.25<br />
factor_out = -1<br />
FLAGS_DOPLAYER = (confirmed * factor_confirmed) + (standby * factor_standby) + (declined * factor_declined) + (out * factor_out)<br />
attendance = (FLAGS_DOPLAYER * 100) / NUMBER_OF_EVENTS</p>
<p>* Mas claro cada guild pode mudar os valores das flags de acordo com suas regras.</p>
<p><strong>=== FEATURES ===</strong><br />
- Atualiza as flags do evento de acordo com a raid montada (Aba 2, Raid Setup)<br />
- Calcula o attendance de acordo com as flags marcadas no calendário<br />
- Mostra detalhes do attendace do jogador (confirmed, declined, out e etc)<br />
- Menu de configurações onde pode se escolhe:<br />
-- Dias da semana que a guild raida (Segunda, terça e etc) os outros dias da semana não serão contados no ATT (Minha guild raida oficialmente de Segunda a Quinta, porem agente marca raid todo dia os outros dias não contam att)<br />
-- Ignorar algumas raids mesmo no dia da semana da raid, apagar dados da raid no cache<br />
-- Fatores da formula para cada flag, cada guild pode ter os fatores que desejar.</p>
<p><strong>=== TODO === </strong><br />
- Filtro para os tipos de raid que valem attendance (Blacktemple, Nax25man e etc).<br />
- Relatório da raid em texto (c/ ou sem formato BBCODE) para ser usado nos forums.<br />
- Relatório do player em texto (c/ ou sem formato BBCODE).<br />
- Purge raids (esse butão não funciona bem ainda)<br />
- Completar dados da raid pelo addon e não pelo calendário (depende da blizz liberar a função no próximo patch)</p>
<p><strong> === KNOW ISSUES ===</strong><br />
- Assim que instalado o addon não atualiza os dados do cache dos eventos sozinho, precisa abrir o calendário para que ele consiga carregar a lista de eventos, isso é um bloqueio da blizz ainda não consegui disparar o evento sem ser abrindo o calendário.<br />
- O addon pega todas as raids mas sem os dados dos players, para evitar tráfego de dados a blizz so manda dados dos players do evento escolhido pelo calendário, e tem um bloqueio de 2 segundos para puxar denovo os dados, então para atualizar os dados so players daquele evento deve se clicar nele no calendário. O botão completar dados da raid não funciona também só da pra completar usando o calendário.<br />
- Ontem a noite depois do crash do server o addon deu um erro na parte de atualizar a raid mas do nada parou, não sei o que foi mas vou tentar identificar.</p>
<p>## Author: ReiserFS<br />
## Interface: 30000<br />
## Notes: Control Attendance using Built-in WOW calendar.<br />
## Title: KM_Attendance<br />
## Version: 1.0<br />
## eMail: reiserfs@killermonkeys.net<br />
## URL: <a href="http://thiago.killermonkeys.net/" target="_blank">http://thiago.killermonkeys.net</a><br />
## DefaultState: Enabled<br />
## LoadOnDemand: 0<br />
## SavedVariables: KMATT_SAVED_VAR_CONFIG, KMATT_SAVED_VAR_ATT</p>
]]></content:encoded>
			<wfw:commentRss>http://thiago.oxente.org/2008/11/26/meu-novo-addon-para-world-of-warcraft/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Meu primeiro MOD Publicado para PHPBB3</title>
		<link>http://thiago.oxente.org/2007/08/28/meu-primeiro-mod-publicado-para-phpbb3</link>
		<comments>http://thiago.oxente.org/2007/08/28/meu-primeiro-mod-publicado-para-phpbb3#comments</comments>
		<pubDate>Tue, 28 Aug 2007 13:04:53 +0000</pubDate>
		<dc:creator>Thiago Melo</dc:creator>
				<category><![CDATA[Lua XML]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[World of Warcraft]]></category>

		<guid isPermaLink="false">http://thiago.oxente.org/2007/08/28/meu-primeiro-mod-publicado-para-phpbb3/</guid>
		<description><![CDATA[Depois do release do novo portal do KM, eu decidi colocar uma das modificações criadas por mim na web. Antes no phpBB2 existia um mod chamado itemstats, esse mod foi originalmente desenvolvido para o EqDKP (uma ferramenta muito usada por grupo de jogadores de MMORPG) e logo após convertido para phpBB2 e outros sistemas de [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://hilfe.phpbb3.com/page_images/logo.gif" align="left" height="120" width="211" />Depois do release do novo portal do KM, eu decidi colocar uma das modificações criadas por mim na web. Antes no phpBB2 existia um mod chamado itemstats, esse mod foi originalmente desenvolvido para o EqDKP (uma ferramenta muito usada por grupo de jogadores de MMORPG) e logo após convertido para phpBB2 e outros sistemas de fóruns e de portais.</p>
<p>O itemstats constava em mostrar as informações dos itens do world of warcraft na página. Sendo preciso apenas colocar o nome do item, e o sistema iria buscar em portais especializados (thottbot, allakhazam e etc)  as informações e armazenava em um banco de dados.</p>
<p><span id="more-33"></span></p>
<p>Para simplificar o funcionamento, um usuário do fórum por exemplo poderia usar o BBcode [wow]Nome do Item[/wow] em seu tópico que o sistema iria buscar o "Nome do Item" e gravar no banco de dados se caso encontrasse. Assim quando postado o tópico o "Nome do Item" seria um link, e que quando passado o mouse em cima desse link, um "tooltip" iria aparecer mostrando as informações desse item.</p>
<p>Apesar de ter usado o sistema, na nova versão do PHPBB3 eu não queria mais ter que usa-lo pois apesar de ser uma boa idéia o sistema tinha alguns problemas que eram:</p>
<p>- Implementar o sistema implicaria uma modificação nos arquivos originais do phpbb3, coisa que eu estou evitando fazer.<br />
- O sistema de armazenamento no banco fazendo um cache dos itens, não acompanhava a atualização dos dados.<br />
- Buscar informações dos itens nos sites de terceiros não gerava dados confiáveis e deixava o sistema pesado por baixar um site toda vez que um item era postado.<br />
- Postar mais de 4 novos items deixava a função de enviar a mensagem no fórum muito lenta, pois o servidor tinha que baixar o site 4 vezes e gravar no banco.<br />
- Itens atualizados no jogo, não eram atualizados no cache.</p>
<p>Para evitar estes problemas eu tive a idéia inicial de usar o Armory. O Armory é um portal da blizzard que contem informações sobre os personagens, guilds e itens do jogo. Com isso já se tinha uma base com dados confiáveis e atualizados.<br />
Usar o armory também implicaria em menos tráfego de informação pois o armory é um site todo em XML, então o tráfego seria mínimo.<br />
Outra coisa que eu não queria era uma base de dados de cache, mas também não queria que o fórum ficasse lento. Para isso eu encontrei no portal Dhtmlgoodies.com um script em AJAX que tem a função de mostrar um Tooltip externo, e que esse era carregado apenas quando se passar o mouse por cima do link.</p>
<p>Com as idéias prontas e as ferramentas na mão eu comecei a programar, para facilitar mais o trabalho eu usei uma classe em PHP pronta chamada phparmory criada por Michael Cotterell. Onde evitou economizou tempo, re-inventar a roda está fora de moda.</p>
<p>O único problema que encontrei com a classe, era que a classe buscava os itens pelo ItemID e não pelo nome do item. Como o objetivo do MOD era buscar os itens pelo nome eu fiz uma modificação na classe adicionando um novo método que busca o item pelo nome.</p>
<p>Bom o projeto final ficou pronto, tendo problemas apenas com o IE7, mas quem que usa Internet Explorer? eu não conheço ninguém.</p>
<p><img src="http://i17.photobucket.com/albums/b55/reiserfs/wow_armory_items.png" height="398" width="800" /></p>
<p>Link do projeto no site do phpbb3<br />
<a href="http://www.phpbb.com/community/viewtopic.php?f=70&amp;t=576155&amp;p=3174276#p3174276" target="_blank">http://www.phpbb.com/community/viewtopic.php?f=70&amp;t=576155&amp;p=3174276#p3174276</a></p>
<p>PhpArmory<br />
<a href="http://phparmory.sourceforge.net/" target="_blank">http://phparmory.sourceforge.net/</a><br />
DHTMLGOODIES<br />
<a href="http://www.dhtmlgoodies.com/scripts/ajax-tooltip/ajax-tooltip.html" target="_blank">http://www.dhtmlgoodies.com/scripts/ajax-tooltip/ajax-tooltip.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://thiago.oxente.org/2007/08/28/meu-primeiro-mod-publicado-para-phpbb3/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Killer Monkeys &#8211; Recipe Tree</title>
		<link>http://thiago.oxente.org/2007/02/14/killer-monkeys-recipe-tree</link>
		<comments>http://thiago.oxente.org/2007/02/14/killer-monkeys-recipe-tree#comments</comments>
		<pubDate>Wed, 14 Feb 2007 19:32:41 +0000</pubDate>
		<dc:creator>Thiago Melo</dc:creator>
				<category><![CDATA[Assuntos Gerais]]></category>
		<category><![CDATA[Lua XML]]></category>
		<category><![CDATA[World of Warcraft]]></category>

		<guid isPermaLink="false">http://thiago.killermonkeys.net/2007/02/14/killer-monkeys-recipe-tree/</guid>
		<description><![CDATA[Esse foi meu Primeiro Addon para o World of Warcraft.
Ele consiste em calcular o total de reagentes que são requeridos para se criar um item através de uma profissão do jogo.
Clique em Read More abaixo para ver porque criei esse addon, e como ele funciona.

- Bom com  a saída da expansão do World of [...]]]></description>
			<content:encoded><![CDATA[<p>Esse foi meu Primeiro Addon para o World of Warcraft.</p>
<p>Ele consiste em calcular o total de reagentes que são requeridos para se criar um item através de uma profissão do jogo.<br />
Clique em Read More abaixo para ver porque criei esse addon, e como ele funciona.<br />
<span id="more-14"></span></p>
<p>- Bom com  a saída da expansão do World of Warcraft, (The Burning Crusade) foram adicionados mais "recipes" para as profissões existentes.</p>
<p>Com isso alguns novos itens possuem uma lista muito grande de reagentes para criação, e alguns desses reagentes precisam de outros reagentes formando uma cascata.<br />
Quando alguem me perguntava quais os materiais que precisavam para criar um item, era meio confuso responder pois eu tinha que passar apenas para ele a lista de matéria prima então precisava fazer varios calculos para isso, por exemplo:</p>
<p>Para criar uma bolsa que cabem 18 itens, eu precisava de:<br />
4: "Rolo de pano magico"<br />
2: "Teias de aranha"<br />
1: "Essencia plana".</p>
<p>Porem o outro jogador não tinha como conseguir o "Rolo de pano magico" pois era com  a minha profissão que era feito esse reagente. Então para fazer ficava assim:</p>
<p>4: "Rolo de pano magico"<br />
-3: "Rolo de pano normal"<br />
--6: "Pedaços de pano"<br />
-2: "Poeira magica"<br />
2: "Teias de aranha"<br />
1: "Essencia plana".</p>
<p>No final das contas eu tinha que passar para o outro jogador somente os materiais que ele consegue no jogo matando monstros o pegando no chão (Herbalista, Minerador e etc).</p>
<p>O resultado final era:<br />
72: "Pedaços de pano"<br />
8: "Poeira magica"<br />
2: "Teias de aranha"<br />
1: "Essencia plana".</p>
<p>Bom o addon foi feito para automatizar essas contas e facilitando o uso do jogo.<br />
Download: <a title="Curse Game" href="http://www-en.curse-gaming.com/files/details/6395/killer-monkeys-recipe-tree/"></a><a href="http://www.curse.com/downloads/wow-addons/details/killer-monkeys-recipe-tree.aspx" target="_blank">http://www.curse.com/downloads/wow-addons/details/killer-monkeys-recipe-tree.aspx</a><br />
<img title="Exemplo" src="https://killermonkeys.net/files/km-recipetree2_249.jpg" alt="Exemplo" /></p>
]]></content:encoded>
			<wfw:commentRss>http://thiago.oxente.org/2007/02/14/killer-monkeys-recipe-tree/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
