<?xml version="1.0"?>
<rss version="2.0"><channel><title>Tutoriais de Clients Latest Topics</title><link>https://xtibia.com/forum/forum/886-tutoriais-de-clients/</link><description>Tutoriais de Clients Latest Topics</description><language>en</language><item><title>anonymous adult encounters</title><link>https://xtibia.com/forum/topic/260086-anonymous-adult-encounters/</link><description><![CDATA[Sexy girls are waiting for live chat and discreet adult dating. Join now. <br />
https://secrelocal.com <br />
 <br />
 <br />
[url=https://secrelocal.com] adult hookups online [/URL]]]></description><guid isPermaLink="false">260086</guid><pubDate>Mon, 08 Sep 2025 09:11:39 +0000</pubDate></item><item><title>[NEW][MODULE]Store_module</title><link>https://xtibia.com/forum/topic/238828-newmodulestore_module/</link><description><![CDATA[
<p><strong><span><span>Descrição:</span>  <span>Loja de</span> <span>servidor </span><span>Tibia</span> <span>/</span> <span>personalizada</span><span>.</span><br /><span>Ele permite</span> o <span>jogador</span> <span>comprar itens</span> <span>com pontos de</span> <span>prémios /</span> <span>tokens.</span></span></strong></p>
<p> </p>
<p>&lt;------------------------&gt;</p>
<p> </p>
<p><span><span><strong>Como usar</strong>:</span></span><br /><span><span><strong>1. Arraste e solte o conteúdo do arquivo zip baixado no final do tópico para a pasta modules do OTC.<br />2. Vá para a store_module e abra o arquivo configs.lua<br />3. Altere COMMAND_BUYITEM para comandar a compra do item.<br />4. Altere comando COMMAND_TRANSFER para comandar a transferência de pontos.<br />5. Altere WEBSITE_GETCOINS a página onde você pode comprar pontos.<br />6. Altere COINS_OPCODE mudança,opcode para qualquer número que você vai usar.<br />7. Salve,e pronto.</strong></span></span></p>
<p> </p>
<p><span><span><strong><span><span>Como adicionar</span> novos items<span>:</span></span></strong></span></span></p>
<pre class="ipsCode prettyprint">
storeIndex = {
    [1] = {
        id = '1',
        name = 'Premium Time',
        description = 'Buy low-priced Premium Time to add it to your own account.',
        image = "/images/shop/premium_time",
        imageList = '/images/shop/premium_time_small'
    },
}
</pre>
<div><div> </div></div>
<div>
<div><span><span>ID</span> <span>-</span> <span>ID</span> <span>do categoria</span><span>(usado para</span> <span>comando</span><span>)</span><span>.</span><br /><span>nome</span> <span>- Nome da</span> <span>categoria.</span><br /><span>Descrição</span> <span>- descrição da</span> <span>categoria.</span><br /><span>- Imagem</span> <span>da categoria</span> <span>na</span> <span>Descrição</span> <span>Painel</span> <span>(</span><span>tamanho</span> <span>64x64px</span><span>)</span><span>.</span><br /><span>imageList</span> <span>-</span> <span>Imagem da</span> <span>categoria</span> <span>no Painel</span> <span>List (</span><span>tamanho</span> <span>32x32px</span><span>)</span><span>.</span></span></div>
<div>
<div><div> </div></div>
<div>
<div><strong><span><span>Como adicionar</span> <span>produtos</span> <span>à categoria</span><span>:</span></span></strong></div>
<div>
<pre class="ipsCode prettyprint">
storeProducts = {
    {
        name = "30 days",
        id = '1',
        category_id = "1",
        description = 'Do you really want to buy "30 days" of premium time?\n\nNote: Once you have purchased Premium Time, your account\ninstantly receives premium status - no relog necessary!',
        tooltip = "",
        price = 250,
        image = "/images/shop/offer/30days"
    },
}
</pre>
<p><span><span>Nome</span> <span>- Nome do</span> <span>jogador</span> <span>artigo será</span> <span>capaz de comprar</span><span>.</span><br /><span>ID</span> <span>- Id</span> <span>do</span> <span>item (</span><span>usado para</span> <span>comando</span><span>)</span><span>.</span><br /><span>category_id</span> <span>- Id</span> <span>da categoria na</span> <span>qual o item</span> <span>será exibido.</span><br /><span>Descrição</span> <span>- Descrição</span> <span>do</span> <span>jogador</span> <span>artigo</span> <span>quer comprar</span><span>,</span> <span>exibido na janela</span> <span>pop-up</span><span>.</span><br /><span>dica</span> <span>-</span> <span>Se o</span> <span>nome tiver mais de</span> <span>12-13</span> <span>caracteres</span><span>,</span> <span>digite o nome do</span> <span>produto</span> <span>aqui.</span> <span>Ele</span> <span>será exibido</span> <span>em foco</span><span>.</span><br /><span>preço -</span> <span>Preço</span> <span>do</span> <span>item.</span><br /><span>imagem</span> <span>- ícone</span> <span>do</span> <span>item de</span> <span>jogador</span> <span>quer comprar</span> <span>(</span><span>tamanho</span> <span>88x70px</span><span>)</span><span>.</span></span></p>
<p> </p>
<p><strong><span><span><span><span>Como enviar</span> <span>Tibia</span> <span>valor</span> <span>Coins</span> <span>para o cliente</span><span>:</span></span></span></span></strong></p>
<p><span><span><span><span><span><span>Abrir em</span> <span>seus</span> <span>TFS</span> <span>(estou usando o</span> <span>TFS</span> <span>1.2)</span> <span>dados</span> <span>/</span> <span>scripts de</span> <span>criatura</span> <span>/</span> <span>scripts /</span> <span>extendedopcode.lua</span></span></span></span></span></span></p>
<p><span><span><span><span><span><span>adicione:</span></span></span></span></span></span></p>
<pre class="ipsCode prettyprint">
    local tibiaCoins = getPlayerStorageValue(player, 999999999)
    player:sendExtendedOpcode(52, tibiaCoins)
</pre>
<p><strong><span><span>Todo o arquivo</span> <span>deve ser</span> <span>semelhante a este:</span></span></strong></p>
<pre class="ipsCode prettyprint">
function onExtendedOpcode(player, opcode, buffer)
    local tibiaCoins = getPlayerStorageValue(player, 999999999)
    player:sendExtendedOpcode(52, tibiaCoins)
    return true
end
</pre>
<p><b>Download: </b></p>
<p><a href="https://mega.nz/#!H0wSFYAK!moIqbr0vElaESUI--lybbczQl6SYVl9NYIuLwI4JGrA" rel="external nofollow"><span style="font-size:24px;">MEGA</span></a></p>
<p> </p>
<p> </p>
<p><strong><span><span>Nota:</span> <span>Comando</span> <span>para a compra de</span> <span>item deve</span> <span>seguir</span> <span>modelo</span><span>:</span></span></strong></p>
<pre class="ipsCode prettyprint">
!storebuy CATEGORYID, ITEMID
</pre>
<p><strong><span><span>Comando</span> <span>para a transferência de</span> <span>moeda</span> <span>deve seguir</span> <span>modelo</span><span>:</span></span></strong></p>
<pre class="ipsCode prettyprint">
!transferpoints PLAYERNAME, VALUE
</pre>
<p><span style="font-size:18px;"><strong>Créditos:</strong></span></p>
<p><span style="font-size:18px;"><span style="font-size:8px;"><span style="font-size:14px;"></span></span></span></p>
<div class="ipsSpoiler" data-ipsspoiler="">
<div class="ipsSpoiler_header"><span></span></div>
<div class="ipsSpoiler_contents">
<p></p>
<p><span style="font-size:18px;"><span style="font-size:8px;"><span style="font-size:14px;">Cheers,<br />margoh.</span></span></span></p>
<p><span style="font-size:18px;"><span style="font-size:8px;"><span style="font-size:14px;"></span></span></span></p>
</div>
</div>
<p></p>
<p> </p>
<p><span style="font-size:18px;"><strong>obs:não testado em tfs abaixo de 1.2.</strong></span></p>
</div>
</div>
</div>
</div>
<p> </p>
<p><a class="ipsAttachLink ipsAttachLink_image" href="//cdn.xtibia.com/monthly_01_2016/post-382746-0-58260900-1452959841.png" data-fileid="19658" rel=""><img src="https://cdn.xtibia.com/monthly_01_2016/post-382746-0-58260900-1452959841_thumb.png" data-fileid="19658" class="ipsImage ipsImage_thumbnailed" alt="post-382746-0-58260900-1452959841_thumb.png" /></a></p>
<p><a class="ipsAttachLink ipsAttachLink_image" href="//cdn.xtibia.com/monthly_01_2016/post-382746-0-66591400-1452959859.png" data-fileid="19659" rel=""><img src="https://cdn.xtibia.com/monthly_01_2016/post-382746-0-66591400-1452959859_thumb.png" data-fileid="19659" class="ipsImage ipsImage_thumbnailed" alt="post-382746-0-66591400-1452959859_thumb.png" /></a></p>
<p><a class="ipsAttachLink ipsAttachLink_image" href="//cdn.xtibia.com/monthly_01_2016/post-382746-0-82318300-1452959877.png" data-fileid="19660" rel=""><img src="https://cdn.xtibia.com/monthly_01_2016/post-382746-0-82318300-1452959877_thumb.png" data-fileid="19660" class="ipsImage ipsImage_thumbnailed" alt="post-382746-0-82318300-1452959877_thumb.png" /></a></p>
]]></description><guid isPermaLink="false">238828</guid><pubDate>Sat, 16 Jan 2016 15:58:04 +0000</pubDate></item><item><title>[Tutorial] Mudar miniwidow</title><link>https://xtibia.com/forum/topic/237310-tutorial-mudar-miniwidow/</link><description><![CDATA[
<p><span style="font-family:'lucida sans unicode', 'lucida grande', sans-serif;">Boa tarde galera, eu mostrei no meu showoff a tela do meu cliente, que pretendo liberar para a galera, porem, recebi mensagens de como fazer aquilo, e como eu vou postar o cliente com o module, resolvi fazer esse tutorial e liberar o module.. </span><br /><span style="font-family:'lucida sans unicode', 'lucida grande', sans-serif;">Esse module é para mudar a Game Window, para que não conhece, veja um print:</span><br /><span style="font-family:'lucida sans unicode', 'lucida grande', sans-serif;"></span></p>
<div class="ipsSpoiler" data-ipsspoiler="">
<div class="ipsSpoiler_header"><span></span></div>
<div class="ipsSpoiler_contents"><p> </p></div>
</div>
<p><br /><span style="font-family:'lucida sans unicode', 'lucida grande', sans-serif;"><img src="http://i.imgur.com/bSMnsH4.png" alt="bSMnsH4.png" /></span><br /><br /><span style="font-family:'lucida sans unicode', 'lucida grande', sans-serif;">Então, vou liberar o entergame já feito, e também vou ensinar como modificar. *Download no fim do topico*, vamos ao tutorial:</span><br /><br /><span style="font-family:'lucida sans unicode', 'lucida grande', sans-serif;">Tenha em mente a imagem, e então, veja o tamanho dela, feito isso, va no entergame.lua e procure a linha que seta o IP do seu servidor, va está assim:</span></p>
<br /><pre class="ipsCode prettyprint lang-auto">
EnterGame.setUniqueServer("127.0.0.1", 7877, 854, 361, 356)
</pre>
<p><span style="font-family:'lucida sans unicode', 'lucida grande', sans-serif;">Vou explicar a linha toda para que entendam:</span><br /><span style="font-family:'lucida sans unicode', 'lucida grande', sans-serif;"><strong>127.0.0.1</strong> = IP do server</span><br /><span style="font-family:'lucida sans unicode', 'lucida grande', sans-serif;"><strong>7877</strong> = port do servidor, no meu caso ta 7877, porque é a porta Linnux.</span><br /><span style="font-family:'lucida sans unicode', 'lucida grande', sans-serif;"><strong>854 </strong>= Versão do cliente/servidor.</span><br /><span style="font-family:'lucida sans unicode', 'lucida grande', sans-serif;"><strong>361</strong> = Tamanho da game window</span><br /><span style="font-family:'lucida sans unicode', 'lucida grande', sans-serif;"><strong>356</strong> = largura da game window</span><br /><span style="font-family:'lucida sans unicode', 'lucida grande', sans-serif;">em outras palavras, 361 e 356 é onde vamos modificar.. Você pega as dimensões da imagem, e coloca no lugar dos mesmos(361 e 356)..</span><br /><span style="font-family:'lucida sans unicode', 'lucida grande', sans-serif;">Feito isso, salve o entergame.lua e feche. Agora vamos editar a OTUI.. Abra o Entergame.otui e na primeira linha temos isso: </span></p>
<br /><pre class="ipsCode prettyprint lang-auto">
EnterGameWindow &lt; MainWindow
  !text: tr('Enter Game')
  size: 236 274
</pre>
<p><span style="font-family:'lucida sans unicode', 'lucida grande', sans-serif;">Bom, vamos modificar.. Retire essa linha:</span></p>
<br /><pre class="ipsCode prettyprint lang-auto">
!text: tr('Enter Game')
</pre>
<p><span style="font-family:'lucida sans unicode', 'lucida grande', sans-serif;">Nessa função modifique esse tamanho "236 274" para as dimensões da imagem *no caso seria (361 e 356):</span><br /><span style="font-family:'lucida sans unicode', 'lucida grande', sans-serif;">Antes:</span></p>
<br /><pre class="ipsCode prettyprint lang-auto">
size: 236 274
</pre>
<p><span style="font-family:'lucida sans unicode', 'lucida grande', sans-serif;">Agora: </span></p>
<br /><pre class="ipsCode prettyprint lang-auto">
size: 361 356 </pre>
<p><span style="font-family:'lucida sans unicode', 'lucida grande', sans-serif;">Adicione isto em baixo dessa função acima:</span></p>
<br /><pre class="ipsCode prettyprint lang-auto">
  image-source: enter.png
</pre>
<p><span style="font-family:'lucida sans unicode', 'lucida grande', sans-serif;">*enter.png é a imagem que estamos usando para colocar no game window, a mesma que a gente pegou as dimensões e modificamos no entergame.lua*, *ela tem que está dentro da pasta onde se localiza o entergame.lua*.</span><br /><br /><span style="font-family:'lucida sans unicode', 'lucida grande', sans-serif;">pronto, seu cliente já vai ler sua nova window com imagem.<br />*Terá que mudar os lugares de onde coloca senha e conta* É bem simples, basta ir na OTUI e mudar os margin-top*</span><br /><br /><strong>DOWNLOAD ENTERGAME COM NOVA WINDOW:</strong><br /><a href="http://www.mediafire.com/download/tb8y7xb6pxptp1b/client_entergame.zip" rel="external nofollow">Download</a><br /><strong>OBS: Deixei uns 3 Entergame dentro, se vocês quiserem usar como base, não me importo..<br />POR FAVOR, NÃO POSTE ESSE TUTORIAL EM OUTRO FÓRUM SEM OS DEVIDOS CRÉDITOS.</strong><br /><strong>FUNCIONA EM QUALQUER VERSÃO DO OTCLIENT.<br /><br />OBS: se vocês não souberem editar o entergame, irá bugar. É melhor baixar o que estou disponizilizando, e então mudar somente as dimensões..</strong></p>
]]></description><guid isPermaLink="false">237310</guid><pubDate>Sun, 11 Oct 2015 16:44:23 +0000</pubDate></item><item><title>[MOD] Pokedex Window para base PDA [v1.0]</title><link>https://xtibia.com/forum/topic/233668-mod-pokedex-window-para-base-pda-v10/</link><description><![CDATA[<p style="text-align:center;">
	<span style="font-size:24px;">Eai galera, blz?</span>
</p>

<p style="text-align:center;">
	 
</p>

<p style="text-align:center;">
	<span style="font-size:18px;">Bom, vim trazer pra vcs a versão 1.0 do mod de pokedex que eu desenvolvi mês passado visando aprendizado no mundo de OTC, com o objetivo também de mostrar que o otclient é flexível suficiente para se fazer muitas coisas sem a necessidade das sources nem do servidor e nem do client...</span>
</p>

<p style="text-align:center;">
	 
</p>

<p style="text-align:center;">
	<span style="font-size:18px;">Para aqueles que não conhecem, vejam o <a href="https://xtibia.com/forum/topic/233504-mod-pokedex-window-pda-show-off/" rel="">Show Off</a> desse trabalho. </span>
</p>

<p style="text-align:center;">
	 
</p>

<p>
	<br /><span style="font-size:24px;">Atualizações:</span><br /><br /><span style="font-size:18px;"><strong>1.</strong> Adicionado um pack com <strong>276</strong> imagens de pokemons (<span style="color:#ff0000;">16,1MB</span>);</span><br /><span style="font-size:18px;"><strong>2.</strong> Pokemons shiny tem a exibição da imagem de pokemons normais (para alterar, basta remover a linha <strong><span style="color:#ff0000;">75</span></strong> do arquivo <strong>game_pokedex.lua</strong>, na pasta <strong>modules/game_pokedex </strong>de seu client);</span>
</p>

<p>
	<span style="font-size:18px;"><strong>3.</strong> Pokedex fecha ao se deslogar do char com ela aberta </span><span style="font-size:18px;">[créditos a <strong>@<a contenteditable="false" data-mentionid="363510" href="https://xtibia.com/forum/profile/363510-soulviling/" rel="">@Soulviling</a> </strong>pela ideia]</span><span style="font-size:18px;">;</span>
</p>

<p style="text-align:center;">
	 
</p>

<p style="text-align:center;">
	 
</p>

<p style="text-align:center;">
	<span style="font-size:24px;"><strong>Bom, sem mais delongas;</strong></span>
</p>

<p>
	<br /><br /><span style="font-size:24px;">Instalação fácil:</span><br /><br /><span style="font-size:18px;"><strong>Passo 1.</strong> Faça o download do arquivo RAR (download no final do tópico);</span><br /><span style="font-size:18px;"><strong>Passo 2.</strong> Copie a pasta modules pro seu client;</span><br /><span style="font-size:18px;"><strong>Passo 3.</strong> "Deseja substituir?" [X]Sim [ ]Não</span><br /><span style="font-size:18px;"><strong>Passo 4.</strong> Só vai até o passo 3;</span><br /><br /><span style="font-size:24px;"><span style="font-size:18px;">Bom, segue uma imagem</span> <u>ATUALIZADA</u></span>
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		 
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			<br /><span>http://i.imgur.com/WwY7wAH.png</span><br /><span style="color:#ff0000;"><span style="font-size:14px;">*Obs.: O servidor usado para a demonstração do mod foi o</span></span> <a href="http://pokeforce.wix.com/pokeforcesite" rel="external nofollow">PokeForce</a>
		</p>
	</div>
</div>

<p>
	<br /><br /><span style="font-size:18px;">Download e Scan</span>
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		 
	</div>

	<div class="ipsSpoiler_contents">
		<p style="text-align:center;">
			<a href="https://drive.google.com/file/d/0B3_yBTfd9ifeWU80VzBhZmZldHc/view?usp=sharing&amp;resourcekey=0-Kj3EY8utfiwWs3x0csFSDw" rel="external nofollow"><img alt="iKZ6mS2.gif" class="ipsImage" data-ratio="20.00" height="196" width="1000" src="https://i.imgur.com/iKZ6mS2.gif" /></a><br /></p>

		<p style="text-align:center;">
			<a href="https://www.virustotal.com/pt/file/6d4db92d44424aeb9f954c923c98c193d860a4bd746940be203fa2e6eed6a077/analysis/1430645100/" rel="external nofollow">VirusTotal Scan</a>
		</p>
	</div>
</div>
]]></description><guid isPermaLink="false">233668</guid><pubDate>Sun, 03 May 2015 05:00:31 +0000</pubDate></item><item><title>Como mudar otc para otcv8</title><link>https://xtibia.com/forum/topic/259173-como-mudar-otc-para-otcv8/</link><description><![CDATA[<p>
	Oi pessoal, gostaria de saber como posso mudar meu otc para um otcv8 com uma base poketibia tfs 0.3.6<br /><br />
	Obg.<br /><br />
	Área errada, pode mover o post pra área supporte clients?
</p>
]]></description><guid isPermaLink="false">259173</guid><pubDate>Tue, 23 May 2023 09:57:19 +0000</pubDate></item><item><title>[TUTORIAL] Transpar&#xEA;ncia</title><link>https://xtibia.com/forum/topic/234058-tutorial-transpar%C3%AAncia/</link><description><![CDATA[
<p style="text-align:center;"><span style="font-size:18px;"><strong>Transparência</strong></span></p>
<p style="text-align:center;"> </p>
<p><span style="font-size:14px;">Eae galera, vim aqui pra ensinar vocês a usar a transparência no tibia, vamos começar.</span></p>
<p> </p>
<p><span style="font-size:14px;">Primeiro você tem que ter uma versão de<strong> 0.6.5 ou superior</strong> do otclient e habilitar a feature.</span></p>
<p><span style="font-size:14px;">Para habilitar a feature você vai em <strong>game_things</strong> depois em <strong>game_things.lua</strong> e adicione isto em baixo de <strong>function load()</strong></span></p>
<pre class="ipsCode prettyprint lang-auto">

g_game.enableFeature(GameSpritesAlphaChannel)
</pre>
<p><span style="font-size:14px;">Agora você tem que usar o <strong>Object Builder(versão 0.3.4)</strong>, abra o object builder, abra seu spr/dat e bota em <strong>compile as</strong> e <strong>ative a opção transparency</strong>.</span></p>
<p><span style="font-size:14px;">Pronto, seu cliente e o server já estão aptos a receber a transparência.</span></p>
<p> </p>
<p><span style="font-size:14px;">Agora a parte mais complicadinha, como montar a sprite com transparência para adicionar no client.</span></p>
<p> </p>
<p><span style="font-size:14px;">Abra sua sprite no photoshop, <strong>delete todos os pixels de fundo(geralmente é rosa)</strong>, deixe somente os que a sprite usa.</span></p>
<p> </p>
<p><span style="font-size:14px;">Agora vá em <strong>opacidade</strong> e diminua para o desejado.</span></p>
<p> </p>
<p><span style="font-size:14px;"><strong>Agora preste bem atenção, salve a imagem no formato PNG, pois ele aceita alfa.</strong></span></p>
<p> </p>
<p><span style="font-size:14px;">Depois vá no Object Builder, clique para abrir spr/dat, <strong>selecione a opção transparency(senão não vai reconhecer seu dat/spr)</strong>, vá na sprite desejada e a adicione.</span></p>
<p> </p>
<p><strong><span style="font-size:14px;">Agora compile, também com a opção transparency ativada.</span></strong></p>
<p> </p>
<p><span style="font-size:14px;">Testei com uma outfit qualquer, resultado final:</span></p>
<p style="margin-left:320px;"><img src="http://i.imgur.com/ur2ustw.png" alt="ur2ustw.png" /></p>
<p style="margin-left:120px;"> </p>
<p style="margin-left:120px;"> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p><strong><span style="font-size:14px;">Créditos</span></strong></p>
<pre class="ipsCode prettyprint lang-auto">
xSONYx
EdMignari
Baxnie</pre>
]]></description><guid isPermaLink="false">234058</guid><pubDate>Fri, 22 May 2015 23:15:46 +0000</pubDate></item><item><title>Mudar imagem do client 13x</title><link>https://xtibia.com/forum/topic/259169-mudar-imagem-do-client-13x/</link><description><![CDATA[<p>
	<span style="font-size:20px;"><strong>Tutorial de como alterar a imagem do seu cliente 13x</strong></span>
</p>

<p>
	 
</p>

<div class="ipsEmbeddedVideo">
	<div>
		<iframe allowfullscreen="" frameborder="0" height="113" src="https://www.youtube-nocookie.com/embed/lyPsSgw0TJk?feature=oembed" title="Otserv com client 13+ custom,  mudar imagens da tela inicial" width="200"></iframe>
	</div>
</div>

<p>
	<span style="font-size:20px;"><strong>Créditos a mim por ter feito todo o processo.</strong></span>
</p>
]]></description><guid isPermaLink="false">259169</guid><pubDate>Thu, 18 May 2023 21:09:51 +0000</pubDate></item><item><title>[Tutorial] Editar Client do Kpdo e deixar online</title><link>https://xtibia.com/forum/topic/245426-tutorial-editar-client-do-kpdo-e-deixar-online/</link><description><![CDATA[
<p>	<span style="font-size:14px;">Fala galera estou trazendo um tutorial sobre kpdo porque eu tinha alguns videos porém acabei excluindo todos então resolvi trazer esse tutorial pra galera que acha complicado editar o client do kpdo e por online bom vamos lá</span></p>
<p>	 </p>
<p>	<span style="font-size:14px;">Primeiramente tudo o que vocês vão precisar</span></p>
<p>	<span style="font-size:14px;"><a href="http://download1655.mediafireuserdownload.com/d676dn1vm5gg/2wybbom0ol88uvk/xvi32.zip" rel="external nofollow">Hex editor</a></span></p>
<p>	<span style="font-size:14px;"><a href="http://download1797.mediafire.com/fjpzds9lpavg/z47n4ha56ivk2v1/xampp-win32-1.7.3.rar" rel="external nofollow">Xampp 1.7.3</a></span></p>
<p>	<span style="font-size:14px;"><a href="http://download1348.mediafire.com/q7gdgzt9i5fg/9ahxgtxtuaf2767/Template+ot+pokemon.rar" rel="external nofollow">Template do Otpokemon</a></span></p>
<p>	<span style="font-size:14px;"><a href="http://download937.mediafire.com/33b5htc9z3tg/xw5dnpugwcqqgza/Pic+Editor_1.rar" rel="external nofollow">Pic Editor</a></span></p>
<p>	<span style="font-size:14px;"><a href="http://download1587.mediafire.com/dyqt0nrwo6yg/bg8xtxtemva8z63/Resource+Hacker.rar" rel="external nofollow">Resourcer Hacker</a></span></p>
<p>	<span style="font-size:14px;"><a href="http://www.photoshoponline.blog.br/" rel="external nofollow">Photoshop Online</a></span></p>
<p>	<span style="font-size:14px;"><a href="http://image.online-convert.com/convert-to-ico" rel="external nofollow">Image Converter</a></span></p>
<p>	<span style="font-size:14px;"><a href="https://notepad-plus-plus.org/download/v7.3.3.html" rel="external nofollow">Notepad++</a></span></p>
<p>	<span style="font-size:14px;">só clicar para baixar os mesmos ou acessar os sites /\</span></p>
<p>	 </p>
<p>	<strong><span style="font-size:16px;"><span style="font-family:Arial, Helvetica, sans-serif;">1º- Criando ip fixo para o Kpdo</span></span></strong></p>
<p>	 </p>
<p>	<span style="font-size:14px;">Bom vamos começar criando um IP fixo obs: seu ip deve conter no máximo quatro letra ficando assim exemplo: poke.sytes.net (sytes.net obrigatório) usem a criatividade.</span></p>
<p>	<span style="font-size:14px;">Acessem <a href="https://www.noip.com/pt-BR" rel="external nofollow">https://www.noip.com/pt-BR</a> caso não seja cadastrado se cadastre</span></p>
<p>	 </p>
<p>	<span style="font-size:14px;">quando terminar irá aparecer isso</span></p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="win6cvP.png" class="ipsImage" height="564" src="http://i.imgur.com/win6cvP.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	Adicionar Rápido ali você vai criar seu host coloque o nome do host lembre ip com no maximo quatro letras e escolha o domínio sytes.net ficando assim</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="nHEPNJ4.png" class="ipsImage" height="564" src="http://i.imgur.com/nHEPNJ4.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	Depois de ter criado o host você vai para essa página <a href="https://www.noip.com/pt-BR/download?page=win" rel="external nofollow">https://www.noip.com/pt-BR/download?page=win</a> e logo em seguida clique no botão laranja faça o download agora para baixar o client do no-ip logo depois de baixar vamos configura-lo logo depois de abrir irá pedir o login e a senha você pode usar o email que usou para criar a conta e a senha ou username e a senha também irá funcionar</p>
<p>	 </p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="IbJw8ps.png" class="ipsImage" height="564" src="http://i.imgur.com/IbJw8ps.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	 </p>
<p>	logo depois de entrar na sua conta clique em edit host</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="GLR2VYc.png" class="ipsImage" height="564" src="http://i.imgur.com/GLR2VYc.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	 </p>
<p>	e marque a caixinha ao lado do ip que você criou de um save ali embaixo e clique em refresh now pronto seu ip fixo está criado</p>
<p>	 </p>
<p>	 </p>
<p>	<strong><span style="font-size:16px;"><span style="font-family:Arial, Helvetica, sans-serif;">2º- Editando o Ip no Client</span></span></strong></p>
<p>	 </p>
<p>	Agora vamos colocar o seu ip fixo no client do kpdo agora vou falar por que são necessarios apenas quatro letras no ip e é obrigatório o sytes.net porque o seu ip tem que ser o mais curto possivel para poder funcionar o client do kpdo é todo cheio de "travas" digamos assim</p>
<p>	 </p>
<p>	abra o hex editor que veio como xvi32 depois de aberto aperta ctrl + O ou clique em file na parte superior esquerda e procure pelo client após abrir ele aperte Ctrl + F e procure por 127.0.0.1 vai achar isso</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="Xd3TQWf.png" class="ipsImage" height="540" src="http://i.imgur.com/Xd3TQWf.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	Aqui você vai editar da seguinte forma lembre toda vez que começar adicionar o IP comece adicionando sempre a partir do 1 do 127 não comece nem antes nem depois do 1 sempre comece por ele isso realmente é necessário caso contrario seu ip não irá funcionar depois de editado ficara exatamente assim</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="yZUxOuP.png" class="ipsImage" height="564" src="http://i.imgur.com/yZUxOuP.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	pronto agora o seu client kpdo já está com o ip fixo seu editado.</p>
<p>	 </p>
<p>	 </p>
<p>	<strong><span style="font-size:16px;"><span style="font-family:Arial, Helvetica, sans-serif;">3º- Editando background</span></span></strong></p>
<p>	 </p>
<p>	Aqui vamos editar a imagem do fundo do client  vamos abrir o arquivo da pasta pic editor 1 depois de aberto clique em Arquivo - Abrir procure pelo kpdo.pic e abra ele ficara assim</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="uKF5diG.png" class="ipsImage" height="564" src="http://i.imgur.com/uKF5diG.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	agora vamos para o site photoshop online que está no começo do tópico eu vou pegar uma imagem qualquer da internet mas caso tiverem problemas procure sempre uma imagem pokemon ou por nome de pokemon no final coloque wallpaper</p>
<p>	 </p>
<p>	Feito isso ao abrir o site do photoshop online ele vai abrir uma aba perguntando se você quer criar uma imagem nova e etc.. pode fechar essa aba e ir no canto superior esquerdo e clicar em file e clique em open image e procure pela imagem que você salvou logo em seguida clique em imagem e image size ficando assim</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="8RRwZUW.png" class="ipsImage" height="564" src="http://i.imgur.com/8RRwZUW.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	você vai editar o tamanho da imagem para 640x480 lembre desmarque aquela caixa escrito Constrain proportions caso contrario você não vai conseguir por essas dimensões depois de feito você clica no T na parte inferior esquerda e coloque o nome do seu servidor ficando assim</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="n6Gh7mE.png" class="ipsImage" height="564" src="http://i.imgur.com/n6Gh7mE.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	depois que tiver editado totalmente ao seu gosto salve a imagem como bmp</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="VswrUK8.png" class="ipsImage" height="564" src="http://i.imgur.com/VswrUK8.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	Voltando ao pic editor vamos colocar a nova capa do client clicando em arquivo e importar irá ficar assim</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="lfmUw8u.png" class="ipsImage" height="564" src="http://i.imgur.com/lfmUw8u.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	 </p>
<p>	depois disso clique em Arquivo novamente e clique em compilar selecione seu client e espere um pouco Obs: pode aparecer uma mensagem no programa como tal ele parou de funcionar ou um travamento isso é normal só esperar um pouco até ele voltar ao normal isso acontece sempre quando você compila depois de pronto ficara assim</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="HHWUgpo.png" class="ipsImage" height="564" src="http://i.imgur.com/HHWUgpo.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	espero que tenham gostado vamos ao próximo passo</p>
<p>	 </p>
<p>	<strong><span style="font-size:16px;"><span style="font-family:Arial, Helvetica, sans-serif;">4º- Editando o Icone</span></span></strong></p>
<p>	 </p>
<p>	Antes de tudo pegue qualquer imagem da internet uma pokebola ou um pokemon ou até um logo que você tenha criado logo agora clique no site imagem converter vai ter uma lista na parte esquerda do site selecione a Convert to ICO selecione sua imagem ou logo do seu server e clique em converto file logo depois vai iniciar um download é a mesma imagem porém o arquivo vai estar convertido para icon</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="riETA5Q.png" class="ipsImage" height="564" src="http://i.imgur.com/riETA5Q.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	 </p>
<p>	depois abra o resource hack clique em file - Open e selecione o executável do seu servidor agora vamos para a opção Action na parte superior e clique em replace icon</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="vyJpo5C.png" class="ipsImage" height="564" src="http://i.imgur.com/vyJpo5C.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	Vai aparecer essa aba</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="bYn7x6D.png" class="ipsImage" height="564" src="http://i.imgur.com/bYn7x6D.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	clique em Open file with new icon e selecione a imagem que você baixou do site aquela que foi convertida logo em seguida clique em Replace e seu icone irá mudar ficando assim</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="g8AJ9V1.png" class="ipsImage" height="532" src="http://i.imgur.com/g8AJ9V1.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	agora clique em File novamente clique em Save As e selecione seu client e salve ele irá perguntar se quer substituir você diz que sim lembre sempre faça uma copia antes de qualquer tipo de alteração depois de salvo abra seu client e teste obs: algumas imagens podem não dar certo ao passar para ICO podem ser leves demais ou pesadas demais caso tiver problemas estarei colocando aqui a imagem ico que usei neste client test para ser usada como base image ico anexada no tópico</p>
<p>	 </p>
<p>	depois de pronto ficara assim</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="mzUXvHI.png" class="ipsImage" height="564" src="http://i.imgur.com/mzUXvHI.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	 </p>
<p>	agora o icone é uma pokebola xD</p>
<p>	 </p>
<p>	<strong><span style="font-size:16px;"><span style="font-family:Arial, Helvetica, sans-serif;">5º- Abrindo as portas 7171 - 7172 - 8090 no moldem e roteador</span></span></strong></p>
<p>	 </p>
<p>	<em><span style="font-size:16px;"><span style="font-family:Arial, Helvetica, sans-serif;">OBS!! : Moldem é o aparelho que recebe o fio do poste até a sua casa o aparelho que recebe esse fio é o moldem, o fio da internet que sai do moldem e vai para outro aparelho esse aparelho é o roteador porém eu tenho um aparelho da NET que são os dois juntos ele é moldem e roteador então no caso o meu acesso ao roteador vai ser diferente de muitos caso tiverem problemas nessa parte não darei suporte neste tópico abram um tópico com o problema e me mandem mensagem privada para eu responder o tópico.</span></span></em></p>
<p>	 </p>
<p>	Agora vamos ao firewall do windows se encontra em painel de controle - sistema e segurança - firewall do windows - configurações avançadas - regras de entrada</p>
<p>	vai estar assim porém sem as portas como está no meu</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="ZWkK1ql.png" class="ipsImage" height="564" src="http://i.imgur.com/ZWkK1ql.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	feito isso clique ali na parte superior direita Nova Regra</p>
<p>	 </p>
<p>	Vai aparecer essa aba</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="wyt5fxk.png" class="ipsImage" height="564" src="http://i.imgur.com/wyt5fxk.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	Cliquem em porta e avançar logo em seguida vai aparecer essa aba</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="5izkEtO.png" class="ipsImage" height="564" src="http://i.imgur.com/5izkEtO.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	deixe como TCP e coloque a porta 7171 logo abaixo como o meu esta e clique em avançar</p>
<p>	vai aparecer essa outra aba</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="X1gwwWv.png" class="ipsImage" height="564" src="http://i.imgur.com/X1gwwWv.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	deixe a opção permitir conexão e clique em avançar logo em seguida vai aparecer outra aba com dominio / particular / público e ao lado deles caixas já marcadas não precisa mexer só clicar em avançar em seguida a próxima aba vai pedir para você colocar o nome a descrição não precisa e logo em seguida clique em concluir pronto você abriu a porta 7171 no seu computador repita o processo usando a porta 7172 e 8090</p>
<p>	 </p>
<p>	Agora vamos para o roteador primeiramente você vai abrir o executar do seu PC e vai escrever cmd e de enter</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="f27Ndld.png" class="ipsImage" height="564" src="http://i.imgur.com/f27Ndld.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	vai aparecer a propomt de comando</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="IAKMg24.png" class="ipsImage" height="564" src="http://i.imgur.com/IAKMg24.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	escreva ipconfig e de enter vai aparecer vários números e etc... você vai pegar seu gateway padrão e vai escrever ele em uma página da internet vai aparecer uma aba não igual porém uma aba pedindo um usuário e senha logo depois que você logar vai aparecer a senha do wifi o usuário a senha de tudo essa aba é para você configurar o roteador então tome cuidado caso não souber mexer nessa parte faça apenas o que estiver aqui no tutorial</p>
<p>	 </p>
<p>	logo após logado procure por firewall e virtua server ou apenas virtua server no meu caso é firewall e virtua server</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="0LmC6b7.png" class="ipsImage" src="http://i.imgur.com/0LmC6b7.png" /></p>	</div>
</div>
<p>	 </p>
<p>	e vocês vão abrir as portas 7171 - 7172 - 8090 as restantes não precisa no meu está porque foi para testes</p>
<p>	obs: ao abrir as portas vai pedir um IP privado segue a print</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="0CMRcQb.png" class="ipsImage" src="http://i.imgur.com/0CMRcQb.png" /></p>	</div>
</div>
<p>	 </p>
<p>	O ip privado no caso Private IP Address é o seu endereço de ipv4 ou endereço de ip que vai estar na propomt de comando que usamos para saber o gateway padrão lá vai estar também o endereço de ipv4 basta colocar ali e pronto fazer o procedimento com todas as portas e você terá aberto as portas no PC e no roteador caso usar um ou moldem.</p>
<p>	 </p>
<p>	<strong><span style="font-size:16px;"><span style="font-family:Arial, Helvetica, sans-serif;">6º- Instalando o Xampp 1.7.3 - Configurando e Deixando o Site Online</span></span></strong></p>
<p>	 </p>
<p>	Logo após baixar o xampp vamos instalar após abrir o instalador do xampp vai aparecer isso</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="FIwN4Yg.png" class="ipsImage" height="564" src="http://i.imgur.com/FIwN4Yg.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	Só clicar em install e esperar instalar após terminar a instalação vai aparecer essa aba</p>
<p>	essa primeira está perguntando se você quer que crie um atalho para o desktop e o menu iniciar do windows eu geralmente coloco não no caso N mas caso vocês quiserem basta deixar Y e dar enter</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="7KAexte.png" class="ipsImage" height="564" src="http://i.imgur.com/7KAexte.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	Logo após dar enter vai aparecer essa outra aqui vai estar perguntando algo sobre alocar corretamente as pastas algo assim eu deixo Y e do enter</p>
<p>	 </p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="dPtxsRx.png" class="ipsImage" height="564" src="http://i.imgur.com/dPtxsRx.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	após da enter vai aparecer esse aqui perguntando se vai ser de sua escolha as pastas eu coloco não ai ele verifica todas</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="JVBYA1V.png" class="ipsImage" height="564" src="http://i.imgur.com/JVBYA1V.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	após dar enter vai ocorrer o processo quando terminar vai ficar assim</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="yNpPkQm.png" class="ipsImage" height="564" src="http://i.imgur.com/yNpPkQm.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	depois disso aperte enter vai aparecer outra mensagem só apertar enter novamente depois vai te apresentar algumas opções basta colocar o x que irá fechar a aba</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="BAdEEHt.png" class="ipsImage" height="564" src="http://i.imgur.com/BAdEEHt.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	Agora vamos configurar o xampp vá até a pasta dele que está no diretório do disco C:\  após abrir a pasta do xamp abra uma pasta chamada apache</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="v6Padm8.png" class="ipsImage" src="http://i.imgur.com/v6Padm8.png" /></p>	</div>
</div>
<p>	 </p>
<p>	ao abrir vai ter outras pasta abra a pasta conf</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="g4TXMFn.png" class="ipsImage" src="http://i.imgur.com/g4TXMFn.png" /></p>	</div>
</div>
<p>	 </p>
<p>	procure um arquivo chamado httpd.conf abra ele como notepad++ vamos mudar todos os 80 para 8090</p>
<p>	ficando assim</p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			#<br />			# This is the main Apache HTTP server configuration file.  It contains the<br />			# configuration directives that give the server its instructions.<br />			# See &lt;URL:http://httpd.apache.org/docs/2.2&gt; for detailed information.<br />			# In particular, see <br />			# &lt;URL:http://httpd.apache.org/docs/2.2/mod/directives.html&gt;<br />			# for a discussion of each configuration directive.<br />			#<br />			# Do NOT simply read the instructions in here without understanding<br />			# what they do.  They're here only as hints or reminders.  If you are unsure<br />			# consult the online docs. You have been warned.  <br />			#<br />			# Configuration and logfile names: If the filenames you specify for many<br />			# of the server's control files begin with "/" (or "drive:/" for Win32), the<br />			# server will use that explicit path.  If the filenames do *not* begin<br />			# with "/", the value of ServerRoot is prepended -- so "logs/foo.log"<br />			# with ServerRoot set to "C:/xampp/apache" will be interpreted by the<br />			# server as "C:/xampp/apache/logs/foo.log".<br />			#<br />			# NOTE: Where filenames are specified, you must use forward slashes<br />			# instead of backslashes (e.g., "c:/apache" instead of "c:\apache").<br />			# If a drive letter is omitted, the drive on which httpd.exe is located<br />			# will be used by default.  It is recommended that you always supply<br />			# an explicit drive letter in absolute paths to avoid confusion.		</p>		<p>			#<br />			# ServerRoot: The top of the directory tree under which the server's<br />			# configuration, error, and log files are kept.<br />			#<br />			# Do not add a slash at the end of the directory path.  If you point<br />			# ServerRoot at a non-local disk, be sure to point the LockFile directive<br />			# at a local disk.  If you wish to share the same ServerRoot for multiple<br />			# httpd daemons, you will need to change at least LockFile and PidFile.<br />			#<br />			ServerRoot "C:/xampp/apache"		</p>		<p>			#<br />			# Listen: Allows you to bind Apache to specific IP addresses and/or<br />			# ports, instead of the default. See also the &lt;VirtualHost&gt;<br />			# directive.<br />			#<br />			# Change this to Listen on specific IP addresses as shown below to <br />			# prevent Apache from glomming onto all bound IP addresses.<br />			#<br />			#Listen 0.0.0.0:8090<br />			#Listen [<img src="https://cdn.xtibia.com/emoticons/speechless_2.png" alt="::" />]:8090<br />			Listen 8090		</p>		<p>			#<br />			# Dynamic Shared Object (DSO) Support<br />			#<br />			# To be able to use the functionality of a module which was built as a DSO you<br />			# have to place corresponding `LoadModule' lines at this location so the<br />			# directives contained in it are actually available _before_ they are used.<br />			# Statically compiled modules (those listed by `httpd -l') do not need<br />			# to be loaded here.<br />			#<br />			# Example:<br />			# LoadModule foo_module modules/mod_foo.so<br />			#<br />			LoadModule actions_module modules/mod_actions.so<br />			LoadModule alias_module modules/mod_alias.so<br />			LoadModule asis_module modules/mod_asis.so<br />			LoadModule auth_basic_module modules/mod_auth_basic.so<br />			LoadModule auth_digest_module modules/mod_auth_digest.so<br />			#LoadModule authn_alias_module modules/mod_authn_alias.so<br />			#LoadModule authn_anon_module modules/mod_authn_anon.so<br />			#LoadModule authn_dbd_module modules/mod_authn_dbd.so<br />			#LoadModule authn_dbm_module modules/mod_authn_dbm.so<br />			LoadModule authn_default_module modules/mod_authn_default.so<br />			LoadModule authn_file_module modules/mod_authn_file.so<br />			#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so<br />			#LoadModule authz_dbm_module modules/mod_authz_dbm.so<br />			LoadModule authz_default_module modules/mod_authz_default.so<br />			LoadModule authz_groupfile_module modules/mod_authz_groupfile.so<br />			LoadModule authz_host_module modules/mod_authz_host.so<br />			#LoadModule authz_owner_module modules/mod_authz_owner.so<br />			LoadModule authz_user_module modules/mod_authz_user.so<br />			##LoadModule autoindex_module modules/mod_autoindex.so # replaced with autoindex_color_module<br />			#LoadModule bucketeer_module modules/mod_bucketeer.so<br />			#LoadModule cache_module modules/mod_cache.so<br />			#LoadModule case_filter_module modules/mod_case_filter.so<br />			#LoadModule case_filter_in_module modules/mod_case_filter_in.so<br />			#LoadModule cern_meta_module modules/mod_cern_meta.so<br />			LoadModule cgi_module modules/mod_cgi.so<br />			#LoadModule charset_lite_module modules/mod_charset_lite.so<br />			LoadModule dav_module modules/mod_dav.so<br />			LoadModule dav_fs_module modules/mod_dav_fs.so<br />			LoadModule dav_lock_module modules/mod_dav_lock.so<br />			#LoadModule dbd_module modules/mod_dbd.so<br />			#LoadModule deflate_module modules/mod_deflate.so<br />			LoadModule dir_module modules/mod_dir.so<br />			#LoadModule disk_cache_module modules/mod_disk_cache.so<br />			#LoadModule dumpio_module modules/mod_dumpio.so<br />			#LoadModule echo_module modules/mod_echo.so<br />			LoadModule env_module modules/mod_env.so<br />			#LoadModule example_module modules/mod_example.so<br />			#LoadModule expires_module modules/mod_expires.so<br />			#LoadModule ext_filter_module modules/mod_ext_filter.so<br />			#LoadModule file_cache_module modules/mod_file_cache.so<br />			#LoadModule filter_module modules/mod_filter.so<br />			LoadModule headers_module modules/mod_headers.so<br />			#LoadModule ident_module modules/mod_ident.so<br />			#LoadModule imagemap_module modules/mod_imagemap.so<br />			LoadModule include_module modules/mod_include.so<br />			LoadModule info_module modules/mod_info.so<br />			LoadModule isapi_module modules/mod_isapi.so<br />			#LoadModule ldap_module modules/mod_ldap.so<br />			#LoadModule logio_module modules/mod_logio.so<br />			LoadModule log_config_module modules/mod_log_config.so<br />			#LoadModule log_forensic_module modules/mod_log_forensic.so<br />			#LoadModule mem_cache_module modules/mod_mem_cache.so<br />			LoadModule mime_module modules/mod_mime.so<br />			#LoadModule mime_magic_module modules/mod_mime_magic.so<br />			LoadModule negotiation_module modules/mod_negotiation.so<br />			#LoadModule proxy_module modules/mod_proxy.so<br />			#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so<br />			#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so<br />			#LoadModule proxy_connect_module modules/mod_proxy_connect.so<br />			#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so<br />			#LoadModule proxy_http_module modules/mod_proxy_http.so<br />			LoadModule rewrite_module modules/mod_rewrite.so<br />			LoadModule setenvif_module modules/mod_setenvif.so<br />			#LoadModule speling_module modules/mod_speling.so<br />			LoadModule ssl_module modules/mod_ssl.so<br />			LoadModule status_module modules/mod_status.so<br />			#LoadModule substitute_module modules/mod_substitute.so<br />			#LoadModule unique_id_module modules/mod_unique_id.so<br />			#LoadModule userdir_module modules/mod_userdir.so<br />			#LoadModule usertrack_module modules/mod_usertrack.so<br />			#LoadModule version_module modules/mod_version.so<br />			#LoadModule vhost_alias_module modules/mod_vhost_alias.so		</p>		<p>			#<br />			# 3rd party modules<br />			#<br />			LoadModule autoindex_color_module modules/mod_autoindex_color.so		</p>		<p>			&lt;IfModule !mpm_netware_module&gt;<br />			&lt;IfModule !mpm_winnt_module&gt;<br />			#<br />			# If you wish httpd to run as a different user or group, you must run<br />			# httpd as root initially and it will switch.  <br />			#<br />			# User/Group: The name (or #number) of the user/group to run httpd as.<br />			# It is usually good practice to create a dedicated user and group for<br />			# running httpd, as with most system services.<br />			#<br />			User daemon<br />			Group daemon		</p>		<p>			&lt;/IfModule&gt;<br />			&lt;/IfModule&gt;		</p>		<p>			# 'Main' server configuration<br />			#<br />			# The directives in this section set up the values used by the 'main'<br />			# server, which responds to any requests that aren't handled by a<br />			# &lt;VirtualHost&gt; definition.  These values also provide defaults for<br />			# any &lt;VirtualHost&gt; containers you may define later in the file.<br />			#<br />			# All of these directives may appear inside &lt;VirtualHost&gt; containers,<br />			# in which case these default settings will be overridden for the<br />			# virtual host being defined.<br />			#		</p>		<p>			#<br />			# ServerAdmin: Your address, where problems with the server should be<br />			# e-mailed.  This address appears on some server-generated pages, such<br />			# as error documents.  e.g. admin@your-domain.com<br />			#<br />			ServerAdmin postmaster@localhost		</p>		<p>			#<br />			# ServerName gives the name and port that the server uses to identify itself.<br />			# This can often be determined automatically, but we recommend you specify<br />			# it explicitly to prevent problems during startup.<br />			#<br />			# If your host doesn't have a registered DNS name, enter its IP address here.<br />			#<br />			ServerName localhost:8090		</p>		<p>			#<br />			# DocumentRoot: The directory out of which you will serve your<br />			# documents. By default, all requests are taken from this directory, but<br />			# symbolic links and aliases may be used to point to other locations.<br />			#<br />			DocumentRoot "C:/xampp/htdocs"		</p>		<p>			#<br />			# Each directory to which Apache has access can be configured with respect<br />			# to which services and features are allowed and/or disabled in that<br />			# directory (and its subdirectories). <br />			#<br />			# First, we configure the "default" to be a very restrictive set of <br />			# features.  <br />			#<br />			&lt;Directory /&gt;<br />			    Options FollowSymLinks<br />			    AllowOverride None<br />			    Order deny,allow<br />			    Deny from all<br />			&lt;/Directory&gt;		</p>		<p>			#<br />			# Note that from this point forward you must specifically allow<br />			# particular features to be enabled - so if something's not working as<br />			# you might expect, make sure that you have specifically enabled it<br />			# below.<br />			#		</p>		<p>			#<br />			# This should be changed to whatever you set DocumentRoot to.<br />			#<br />			&lt;Directory "C:/xampp/htdocs"&gt;<br />			    #<br />			    # Possible values for the Options directive are "None", "All",<br />			    # or any combination of:<br />			    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews<br />			    #<br />			    # Note that "MultiViews" must be named *explicitly* --- "Options All"<br />			    # doesn't give it to you.<br />			    #<br />			    # The Options directive is both complicated and important.  Please see<br />			    # <a href="http://httpd.apache.org/docs/2.2/mod/core.html#options" rel="external nofollow">http://httpd.apache.org/docs/2.2/mod/core.html#options</a><br />			    # for more information.<br />			    #<br />			    Options Indexes FollowSymLinks Includes ExecCGI		</p>		<p>			    #<br />			    # AllowOverride controls what directives may be placed in .htaccess files.<br />			    # It can be "All", "None", or any combination of the keywords:<br />			    #   Options FileInfo AuthConfig Limit<br />			    #<br />			    AllowOverride All		</p>		<p>			    #<br />			    # Controls who can get stuff from this server.<br />			    #<br />			    Order allow,deny<br />			    Allow from all		</p>		<p>			&lt;/Directory&gt;		</p>		<p>			#<br />			# DirectoryIndex: sets the file that Apache will serve if a directory<br />			# is requested.<br />			#<br />			&lt;IfModule dir_module&gt;<br />			    DirectoryIndex index.php index.pl index.cgi index.asp index.shtml index.html index.htm \<br />			                   default.php default.pl default.cgi default.asp default.shtml default.html default.htm \<br />			                   home.php home.pl home.cgi home.asp home.shtml home.html home.htm<br />			&lt;/IfModule&gt;		</p>		<p>			#<br />			# The following lines prevent .htaccess and .htpasswd files from being <br />			# viewed by Web clients. <br />			#<br />			&lt;FilesMatch "^\.ht"&gt;<br />			    Order allow,deny<br />			    Deny from all<br />			    Satisfy All<br />			&lt;/FilesMatch&gt;		</p>		<p>			#<br />			# ErrorLog: The location of the error log file.<br />			# If you do not specify an ErrorLog directive within a &lt;VirtualHost&gt;<br />			# container, error messages relating to that virtual host will be<br />			# logged here.  If you *do* define an error logfile for a &lt;VirtualHost&gt;<br />			# container, that host's errors will be logged there and not here.<br />			#<br />			ErrorLog "logs/error.log"		</p>		<p>			#ScriptLog "logs/cgi.log"		</p>		<p>			#<br />			# LogLevel: Control the number of messages logged to the error_log.<br />			# Possible values include: debug, info, notice, warn, error, crit,<br />			# alert, emerg.<br />			#<br />			LogLevel warn		</p>		<p>			&lt;IfModule log_config_module&gt;<br />			    #<br />			    # The following directives define some format nicknames for use with<br />			    # a CustomLog directive (see below).<br />			    #<br />			    LogFormat "%h %l %u %t \"%r\" %&gt;s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined<br />			    LogFormat "%h %l %u %t \"%r\" %&gt;s %b" common		</p>		<p>			    &lt;IfModule logio_module&gt;<br />			      # You need to enable mod_logio.c to use %I and %O<br />			      LogFormat "%h %l %u %t \"%r\" %&gt;s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio<br />			    &lt;/IfModule&gt;		</p>		<p>			    #<br />			    # The location and format of the access logfile (Common Logfile Format).<br />			    # If you do not define any access logfiles within a &lt;VirtualHost&gt;<br />			    # container, they will be logged here.  Contrariwise, if you *do*<br />			    # define per-&lt;VirtualHost&gt; access logfiles, transactions will be<br />			    # logged therein and *not* in this file.<br />			    #<br />			    #CustomLog "logs/access.log" common		</p>		<p>			    #<br />			    # If you prefer a logfile with access, agent, and referer information<br />			    # (Combined Logfile Format) you can use the following directive.<br />			    #<br />			    CustomLog "logs/access.log" combined<br />			&lt;/IfModule&gt;		</p>		<p>			&lt;IfModule alias_module&gt;<br />			    #<br />			    # Redirect: Allows you to tell clients about documents that used to <br />			    # exist in your server's namespace, but do not anymore. The client <br />			    # will make a new request for the document at its new location.<br />			    # Example:<br />			    # Redirect permanent /foo <a href="http://localhost/bar" rel="external nofollow">http://localhost/bar</a>		</p>		<p>			    #<br />			    # Alias: Maps web paths into filesystem paths and is used to<br />			    # access content that does not live under the DocumentRoot.<br />			    # Example:<br />			    # Alias /webpath /full/filesystem/path<br />			    #<br />			    # If you include a trailing / on /webpath then the server will<br />			    # require it to be present in the URL.  You will also likely<br />			    # need to provide a &lt;Directory&gt; section to allow access to<br />			    # the filesystem path.		</p>		<p>			    #<br />			    # ScriptAlias: This controls which directories contain server scripts. <br />			    # ScriptAliases are essentially the same as Aliases, except that<br />			    # documents in the target directory are treated as applications and<br />			    # run by the server when requested rather than as documents sent to the<br />			    # client.  The same rules about trailing "/" apply to ScriptAlias<br />			    # directives as to Alias.<br />			    #<br />			    ScriptAlias /cgi-bin/ "C:/xampp/cgi-bin/"		</p>		<p>			&lt;/IfModule&gt;		</p>		<p>			&lt;IfModule cgid_module&gt;<br />			    #<br />			    # ScriptSock: On threaded servers, designate the path to the UNIX<br />			    # socket used to communicate with the CGI daemon of mod_cgid.<br />			    #<br />			    #Scriptsock "logs/cgi.sock"<br />			&lt;/IfModule&gt;		</p>		<p>			#<br />			# "C:/xampp/cgi-bin" should be changed to whatever your ScriptAliased<br />			# CGI directory exists, if you have that configured.<br />			#<br />			&lt;Directory "C:/xampp/cgi-bin"&gt;<br />			    AllowOverride None<br />			    Options None<br />			    Order allow,deny<br />			    Allow from all<br />			&lt;/Directory&gt;		</p>		<p>			#<br />			# DefaultType: the default MIME type the server will use for a document<br />			# if it cannot otherwise determine one, such as from filename extensions.<br />			# If your server contains mostly text or HTML documents, "text/plain" is<br />			# a good value.  If most of your content is binary, such as applications<br />			# or images, you may want to use "application/octet-stream" instead to<br />			# keep browsers from trying to display binary files as though they are<br />			# text.<br />			#<br />			DefaultType text/plain		</p>		<p>			&lt;IfModule mime_module&gt;<br />			    #<br />			    # TypesConfig points to the file containing the list of mappings from<br />			    # filename extension to MIME-type.<br />			    #<br />			    TypesConfig "conf/mime.types"		</p>		<p>			    #<br />			    # AddType allows you to add to or override the MIME configuration<br />			    # file specified in TypesConfig for specific file types.<br />			    #<br />			    #AddType application/x-gzip .tgz<br />			    #<br />			    # AddEncoding allows you to have certain browsers uncompress<br />			    # information on the fly. Note: Not all browsers support this.<br />			    #<br />			    #AddEncoding x-compress .Z<br />			    #AddEncoding x-gzip .gz .tgz<br />			    #<br />			    # If the AddEncoding directives above are commented-out, then you<br />			    # probably should define those extensions to indicate media types:<br />			    #<br />			    AddType application/x-compress .Z<br />			    AddType application/x-gzip .gz .tgz		</p>		<p>			    #<br />			    # AddHandler allows you to map certain file extensions to "handlers":<br />			    # actions unrelated to filetype. These can be either built into the server<br />			    # or added with the Action directive (see below)<br />			    #<br />			    # To use CGI scripts outside of ScriptAliased directories:<br />			    # (You will also need to add "ExecCGI" to the "Options" directive.)<br />			    #<br />			    AddHandler cgi-script .cgi .pl .asp		</p>		<p>			    # For type maps (negotiated resources):<br />			    #AddHandler type-map var		</p>		<p>			    #<br />			    # Filters allow you to process content before it is sent to the client.<br />			    #<br />			    # To parse .shtml files for server-side includes (SSI):<br />			    # (You will also need to add "Includes" to the "Options" directive.)<br />			    #<br />			    AddType text/html .shtml<br />			    AddOutputFilter INCLUDES .shtml<br />			&lt;/IfModule&gt;		</p>		<p>			&lt;IfModule mime_magic_module&gt;<br />			    #<br />			    # The mod_mime_magic module allows the server to use various hints from the<br />			    # contents of the file itself to determine its type.  The MIMEMagicFile<br />			    # directive tells the module where the hint definitions are located.<br />			    #<br />			    MIMEMagicFile "conf/magic"<br />			&lt;/IfModule&gt;		</p>		<p>			#<br />			# Customizable error responses come in three flavors:<br />			# 1) plain text 2) local redirects 3) external redirects<br />			#<br />			# Some examples:<br />			#ErrorDocument 500 "The server made a boo boo."<br />			#ErrorDocument 404 /missing.html<br />			#ErrorDocument 404 "/cgi-bin/missing_handler.pl"<br />			#ErrorDocument 402 <a href="http://localhost/subscription_info.html" rel="external nofollow">http://localhost/subscription_info.html</a><br />			#		</p>		<p>			#<br />			# EnableMMAP and EnableSendfile: On systems that support it, <br />			# memory-mapping or the sendfile syscall is used to deliver<br />			# files.  This usually improves server performance, but must<br />			# be turned off when serving from networked-mounted <br />			# filesystems or if support for these functions is otherwise<br />			# broken on your system.<br />			#<br />			#EnableMMAP off<br />			#EnableSendfile off		</p>		<p>			# Supplemental configuration<br />			#<br />			# The configuration files in the conf/extra/ directory can be <br />			# included to add extra features or to modify the default configuration of <br />			# the server, or you may simply copy their contents here and change as <br />			# necessary.		</p>		<p>			# XAMPP specific settings<br />			Include "conf/extra/httpd-xampp.conf"		</p>		<p>			# Perl settings<br />			Include "conf/extra/perl.conf"		</p>		<p>			# Server-pool management (MPM specific)<br />			Include "conf/extra/httpd-mpm.conf"		</p>		<p>			# Multi-language error messages<br />			Include "conf/extra/httpd-multilang-errordoc.conf"		</p>		<p>			# Fancy directory listings<br />			Include "conf/extra/httpd-autoindex.conf"		</p>		<p>			# Language settings<br />			Include "conf/extra/httpd-languages.conf"		</p>		<p>			# User home directories<br />			Include "conf/extra/httpd-userdir.conf"		</p>		<p>			# Real-time info on requests and configuration<br />			Include "conf/extra/httpd-info.conf"		</p>		<p>			# Virtual hosts<br />			Include "conf/extra/httpd-vhosts.conf"		</p>		<p>			# Distributed authoring and versioning (WebDAV)<br />			Include "conf/extra/httpd-dav.conf"		</p>		<p>			# Implements a proxy/gateway for Apache.<br />			Include "conf/extra/httpd-proxy.conf"		</p>		<p>			# Various default settings<br />			Include "conf/extra/httpd-default.conf"		</p>		<p>			# Secure (SSL/TLS) connections<br />			Include "conf/extra/httpd-ssl.conf"<br />			#<br />			# Note: The following must must be present to support<br />			#       starting without SSL on platforms with no /dev/random equivalent<br />			#       but a statically compiled-in mod_ssl.<br />			#<br />			&lt;IfModule ssl_module&gt;<br />			    SSLRandomSeed startup builtin<br />			    SSLRandomSeed connect builtin<br />			    SSLSessionCache "shmcb:logs/ssl.scache(512000)"<br />			    SSLSessionCacheTimeout 300<br />			&lt;/IfModule&gt;		</p>	</div>
</div>
<p>	 </p>
<p>	depois disso pode salvar a fechar ainda na pasta conf vai ter outra pasta chamada extra abra ela e abra o arquivo httpd-ssl.conf usando o notepad++ aperta ctrl + H coloque para localizar o código 443 e coloque para substituir por 4499 e clique em substituir tudo feito isso pode salvar e fechar.</p>
<p>	 </p>
<p>	Dentro da pasta do xampp abra o xampp control e habilite o apache e o mysql</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="PlZcI2E.png" class="ipsImage" height="564" src="http://i.imgur.com/PlZcI2E.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	escreva localhost:8090 vai aparecer esta página</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="GQt9YSr.png" class="ipsImage" height="564" src="http://i.imgur.com/GQt9YSr.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	depois de escolher o idioma você vai ser redirecionado para esta parte do site</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="mjMVAUD.png" class="ipsImage" height="564" src="http://i.imgur.com/mjMVAUD.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	clique em segurança logo após vai aparecer a seguinte aba e clique em <span style="color:#000000;">=&gt;<span> </span></span><a href="http://localhost:8090/security/xamppsecurity.php" rel="external nofollow" style="color:#bb3902;"><b>http://localhost/security/xamppsecurity.php</b></a><span style="color:#000000;"><span> </span>&lt;=</span></p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<span style="color:#000000;"><img alt="MOkTs2q.png" class="ipsImage" height="354" src="http://i.imgur.com/MOkTs2q.png" width="1000" /></span>		</p>	</div>
</div>
<p>	 </p>
<p>	após clicar vai aparecer essa página, nesta página é onde você vai colocar a senha do root depois de colocar a senha do root clique em alterar senha depois de alterar feche a primeira página e na anterior vai ter a opção phpmyadmin vai ficar entre as ultimas opções da lista</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="kNljOw4.png" class="ipsImage" height="564" src="http://i.imgur.com/kNljOw4.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	depois de clicar em phpmyadmin você vai ser redirecionado para esta página basta colocar root e a senha que você colocou no passo anterior</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="yUxPHXE.png" class="ipsImage" height="564" src="http://i.imgur.com/yUxPHXE.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	após entrar vai aparecer o seguinte, como podem ver em mysql localhost já aparece a opção de criar um banco de dados porém ele vem com a opção collation mude para utf8_general_ci igual o que está abaixo os dois tem que ficar igual o de cima tem que ficar igual o que esta embaixo</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="7uK6wHs.png" class="ipsImage" height="564" src="http://i.imgur.com/7uK6wHs.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	ficando assim</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="ljmt0mW.png" class="ipsImage" height="564" src="http://i.imgur.com/ljmt0mW.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	depois de criar o banco de dados vai ficar assim</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="ufjr5G4.png" class="ipsImage" height="564" src="http://i.imgur.com/ufjr5G4.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	clique em importar você vai ser redirecionado para esta parte</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="DZlYAFP.png" class="ipsImage" height="564" src="http://i.imgur.com/DZlYAFP.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	Agora já não precisamos de nada que está na pasta htdocs do xampp porque já o configuramos pode excluir tudo dentro da pasta htdocs do xampp ficando assim</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="m3D7xn8.png" class="ipsImage" height="564" src="http://i.imgur.com/m3D7xn8.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	pegue disponibilizado para download e jogue dentro dessa pasta htdocs do xampp ficando assim</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="Qj0qKJ3.png" class="ipsImage" height="564" src="http://i.imgur.com/Qj0qKJ3.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	agora voltando no phpmyadmin clique em escolher arquivo e selecione o Otpokemon.sql que esta na pasta htdocs do xampp depois de selecionar clique em executar e vai ficar assim</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="CsdPFaP.png" class="ipsImage" height="564" src="http://i.imgur.com/CsdPFaP.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	agora vamos configurar para o site acessar o bando de dados vá na pasta do seu site que agora está no htdocs do xampp e abra o config.php como notepad++</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="0yWf8cD.png" class="ipsImage" height="564" src="http://i.imgur.com/0yWf8cD.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	configurando o site</p>
<p>	 </p>
<blockquote class="ipsQuote" data-ipsquote="">	<div class="ipsQuote_citation">		Citar	</div>	<div class="ipsQuote_contents">		<p>			/*Database information*/<br />			$config['database']['host'] = "localhost";   AQUI VOCÊ DEIXA LOCALHOST<br />			$config['database']['login'] = "root";    AQUI O LOGIN QUE É ROOT<br />			$config['database']['password'] = "SENHA DO ROOT";   A SENHA QUE VOCÊ CONFIGUROU PARA ACESSAR O ROOT<br />			$config['database']['database'] = "test";  O NOME DO BANCO DE DADOS QUE VOCÊ CRIOU		</p>	</div>
</blockquote>
<p>	 </p>
<p>	após configurar isso certinho você vai conseguir acessar o site normalmente usando localhost:8090 caso estiver com o programa do no-ip aberto e configurado o seu site já vai estar online para o público usando o ip do no-ip em seguida 8090 ficando meuip.sytes.net:8090 no meu caso está pkns.sytes.net:8090</p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<img alt="JuwqKrx.png" class="ipsImage" height="564" src="http://i.imgur.com/JuwqKrx.png" width="1000" /></p>	</div>
</div>
<p>	 </p>
<p>	<strong><span style="font-size:16px;"><span style="font-family:Arial, Helvetica, sans-serif;">7º- configurando o config.lua para trabalhar com o site</span></span></strong></p>
<p>	 </p>
<p>	Antes de começar no ip do config.lua você vai usar o ip do no-ip no meu caso pkns.sytes.net</p>
<p>	Nessa parte aqui vocês vão configurar da seguinte maneira   </p>
<blockquote class="ipsQuote" data-ipsquote="">	<div class="ipsQuote_citation">		Citar	</div>	<div class="ipsQuote_contents">		<p>			 		</p>		<p>			    sqlType = "mysql" DEIXAR MYSQL<br />			    sqlHost = "localhost" DEIXAR LOCALHOST<br />			    sqlPort = 3306  NAO MEXER<br />			    sqlUser = "root" DEIXAR ROOT<br />			    sqlPass = "senha do root" COLOCAR A SENHA DO ROOT<br />			    sqlDatabase = "test" COLOCAR O NOME DO BANCO DE DADOS<br />			    sqlFile = "forgottenserver.s3db"  NAO MEXER<br />			    sqlKeepAlive = 0  NAO MEXER<br />			    mysqlReadTimeout = 10  NAO MEXER<br />			    mysqlWriteTimeout = 10 NAO MEXER<br />			    encryptionType = "sha1" COLOCAR SHA1		</p>		<p>			 		</p>		<p>			 		</p>		<p>			 		</p>	</div>
</blockquote>
<p>	 </p>
<p>	pronto isso é o necessário para deixar o servidor online com site</p>
<p>	 </p>
<p>	obs: quase esquecendo no kpdo na pasta data/xml tem um arquivo chamado servers.xml nele você configura o ip do mundo você vai apagar tudo o que tiver e vai colocar esse aqui</p>
<p>	 </p>
<blockquote class="ipsQuote" data-ipsquote="">	<div class="ipsQuote_citation">		Citar	</div>	<div class="ipsQuote_contents">		<p>			&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />			&lt;servers&gt;<br />			&lt;server id="0" name="Nibiru" address="IP NÚMERICO DO NO-IP" port="7172"/&gt;<br />			&lt;/servers&gt;		</p>	</div>
</blockquote>
<p>	 </p>
<p>	Agora o xampp esta hospedando o seu site e trabalhando com o servidor</p>
<p>	 </p>
<p>	agora você ficara com o servidor online não use windows 10 estou usando e não é aconselhável use windows 7 ou xp</p>
<p>	 </p>
<p>	<span style="font-family:Arial, Helvetica, sans-serif;"><span style="font-size:16px;"><strong>obrigado a todos espero que ajude vocês qualquer dúvida só comentar e se eu errei em alguma parte por favor me corrijam para o tópico ficar sempre atualizado xD</strong></span></span></p>
<p>	 </p>
<div class="ipsSpoiler" data-ipsspoiler="">	<div class="ipsSpoiler_header">		<span>Spoiler</span>	</div>	<div class="ipsSpoiler_contents">		<p>			<span style="font-family:Arial, Helvetica, sans-serif;"><span style="font-size:16px;"><strong><img alt="CXFl6sY.png" class="ipsImage" height="564" src="http://i.imgur.com/CXFl6sY.png" width="1000" /></strong></span></span>		</p>	</div>
</div>
<p>	 </p>
<p>	A maioria dos programas que usei tem disponibilizado aqui no fórum mas os tenho a muito tempo então não sei o que é de quem, quem souber me diz que coloco os créditos dos programas</p>
<p>	 </p>
<p>	by: Brunds</p>
<p>	 </p>
<p>	 </p>
<p>	 </p>
<p>	 </p>
<p>	 </p>
<p>	<a class="ipsAttachLink" data-fileid="23191" href="" rel="">imagem ico.rar</a></p>
<p><a href="https://xtibia.com/forum/applications/core/interface/file/attachment.php?id=23191" data-fileid="23191" rel="">imagem ico.rar</a></p>
]]></description><guid isPermaLink="false">245426</guid><pubDate>Sat, 10 Jun 2017 13:49:52 +0000</pubDate></item><item><title>Pok&#xE9;Bar/MoveBar/Sound para OLD Client</title><link>https://xtibia.com/forum/topic/246176-pok%C3%A9barmovebarsound-para-old-client/</link><description><![CDATA[
<p> </p>
<p>
</p>
<p style="color:rgb(53,60,65);text-align:center;"></p>
<p>
	<span style="font-family:'Lucida Sans Unicode', 'Lucida Grande', sans-serif;"><span style="font-size:18px;"><span style="color:#ff0000;">Venho através desse POST, disponibilizar para vocês duas DLL's, uma de poke e move bar, e a outra consiste em um sistema de som, para old client!</span></span></span></p>
<p> </p>
<p> </p>
<p>
</p>
<p style="color:rgb(53,60,65);text-align:center;"></p>
<p>
	<span style="font-family:'Lucida Sans Unicode', 'Lucida Grande', sans-serif;"><span style="font-size:18px;"><span style="color:#ff0000;">(POKETIBIA)</span></span></span></p>
<p> </p>
<p> </p>
<p>
</p>
<p style="color:#353c41;"></p>
<p>
	 </p>
<p> </p>
<p> </p>
<p>
</p>
<p style="color:#353c41;"></p>
<p>
	<span style="font-size:18px;"><span style="color:#ff0000;">1º Baixe as Dll's aqui -&gt; <a href="http://www.mediafire.com/file/9uyyrbe8s8h1m86/dll_pokebar_e_sound.rar" rel="external nofollow" style="color:#243238;">Download</a></span></span></p>
<p> </p>
<p> </p>
<p>
</p>
<p style="color:#353c41;"></p>
<p>
	<span style="color:#ff0000;">scan:<span> </span></span><a href="https://www.virustotal.com/#/file/dcd0937fceba666c08f66ef876dc1816ae3c1a22d64f84163e1144ddb5e6824f/detection" rel="external nofollow" style="color:#243238;">aqui</a></p>
<p> </p>
<p> </p>
<p>
</p>
<p style="color:#353c41;"></p>
<p>
	 </p>
<p> </p>
<p> </p>
<p>
</p>
<p style="color:#353c41;"></p>
<p>
	<span style="font-size:18px;"><span style="color:#ff0000;">2º Baixe o Stude_PE aqui -&gt; <a href="http://www.cgsoftlabs.ro/zip/Stud_PE.zip" rel="external nofollow" style="color:#243238;">Download</a></span></span></p>
<p> </p>
<p> </p>
<p>
</p>
<p style="color:#353c41;"></p>
<p>
	<span style="color:#ff0000;"><span><span>scan:<span> </span><a href="https://www.virustotal.com/#/file/bfbd32294ffbd568b17b94d30f0dca2c6578b12eeff9ae53d296c397328d3857/detection" rel="external nofollow" style="color:#243238;">aqui</a></span></span></span></p>
<p> </p>
<p> </p>
<p>
</p>
<p style="color:#353c41;"></p>
<p>
	<span style="color:#ff0000;"><span>(OBS: OS SCANS REGISTRAM IRREGULARIDADES, PORÉM FALANDO DE UM PROGRAMA QUE FAÇA INJEÇÃO E MODIFICAÇÕES EM EXE, E DLL'S, É SEMPRE DIFÍCIL VER ALGO 100% LIMPO OU SEJA SÃO AMEAÇAS INOFENSIVAS)</span></span></p>
<p> </p>
<p> </p>
<p>
</p>
<p style="color:#353c41;"></p>
<p>
	 </p>
<p> </p>
<p> </p>
<p>
</p>
<p style="color:#353c41;"></p>
<p>
	<span style="font-size:18px;"><span style="color:#ff0000;">3º Siga o Tutorial, para fazer a instalação. OBS: Pode ser que não funcione em todos devido às config. de sua Base!</span></span></p>
<p> </p>
<p> </p>
<p>
</p>
<p style="color:#353c41;"></p>
<p>
	 </p>
<p> </p>
<p> </p>
<p>
</p>
<p style="color:#353c41;"></p>
<p>
	 </p>
<p> </p>
<p> </p>
<p>
</p>
<div class="ipsEmbeddedVideo">
<p>
	</p>
<div>
<p>
		<iframe allowfullscreen="true" frameborder="0" height="270" src="https://www.youtube.com/embed/gvwP11gSbQY?feature=oembed" width="480"></iframe></p>
<p>
	</p>
</div>
<p>
</p>
</div>
<p> </p>
<p>
</p>
<p style="color:#353c41;"></p>
<p>
	 </p>
<p> </p>
<p> </p>
<p>
</p>
<p style="color:#353c41;"></p>
<p>
	<span><span>Créditos:</span></span></p>
<p> </p>
<p> </p>
<p>
</p>
<p style="color:#353c41;"></p>
<p>
	<span><span>Eu - Por Fazer o Tutorial e disponibilizar</span></span></p>
<p> </p>
<p> </p>
<p>
</p>
<p style="color:#353c41;"></p>
<p>
	<span><span>Nest Silva - Dono do Server, o qual eu encontrei as DLL's(PokeIlusion)</span></span></p>
<p> </p>
<p> </p>
<p>
</p>
<p style="color:#353c41;"></p>
<p>
	<span><span>Não encontrei o Responsável, por essas DLL's, porém à ele pertence os Créditos</span></span></p>
<p> </p>
<p> </p>
]]></description><guid isPermaLink="false">246176</guid><pubDate>Sun, 10 Sep 2017 04:31:52 +0000</pubDate></item><item><title>Erro pos compila&#xE7;&#xE3;o do cliente Edubart</title><link>https://xtibia.com/forum/topic/253929-erro-pos-compila%C3%A7%C3%A3o-do-cliente-edubart/</link><description><![CDATA[<p>
	Salve rapaziada, beleza?<br style="background-color:#161616;color:#efefef;font-size:14px;text-align:left;" />
	Estou com problema pos compilar o cliente, <br style="background-color:#161616;color:#efefef;font-size:14px;text-align:left;" /><br style="background-color:#161616;color:#efefef;font-size:14px;text-align:left;" /><span style="background-color:#161616;color:#efefef;font-size:14px;text-align:left;">Acontece que, eu to usando a base pokeZR para testar algumas coisas, não achei a source original do cliente então, vou usar a do Edu, compilei tudo certinho porem, quando troco a "modules" do cliente compilado para a "modules" do cliente do pokeZR, o .exe para de abrir, apresentando um erro estranho! Sera que alguém já passou por isso? </span>
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<img class="ipsImage ipsImage_thumbnailed" data-fileid="30720" data-ratio="60.57" width="246" alt="image.png.ea8d6c4e812287e885b5e5a217ff274a.png" src="https://cdn.xtibia.com/monthly_2022_05/image.png.ea8d6c4e812287e885b5e5a217ff274a.png" /></p>
]]></description><guid isPermaLink="false">253929</guid><pubDate>Mon, 16 May 2022 00:21:20 +0000</pubDate></item><item><title>Pokebar para PDA</title><link>https://xtibia.com/forum/topic/230109-pokebar-para-pda/</link><description><![CDATA[
<p>Colocando pokebar (a barrinha que troca de pokemon) no seu pda sem level. Se quiser que eu faça com pda com level comentem ai.</p>
<p> </p>
<p> </p>
<div class="ipsSpoiler" data-ipsspoiler="">
<div class="ipsSpoiler_header"><span></span></div>
<div class="ipsSpoiler_contents">
<p> </p>
<p></p>
<p style="margin-left:80px;"><img src="http://nsae01.casimages.net/img/2014/04/30/140430051409227784.jpg" alt="140430051409227784.jpg" /></p> <p> </p>
</div>
</div>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p></p>
<p>  PDA SEM LEVEL</p> <p>1. Vá na pasta data\actions\scripts\goback.lua</p>
<p>e embaixo da parte:</p>
<pre class="ipsCode prettyprint">function onUse(cid, item, frompos, item2, topos)</pre>coloque: <pre class="ipsCode prettyprint">sendAllPokemonsBarPoke(cid)</pre>2. Vá na pasta data\lib\catch system.lua<p>Procure por:</p>
<pre class="ipsCode prettyprint">setPlayerStorageValue(cid, 854788, 'done')        end</pre>e embaixo coloque: <pre class="ipsCode prettyprint lang-auto">sendAllPokemonsBarPoke(cid)</pre>3. Vá na pasta data\lib\cooldown bar.lua<p> </p>
<p>Procure por:</p>
<pre class="ipsCode prettyprint">endreturn retend</pre>e embaixo coloque: <p> </p>
<div class="ipsSpoiler" data-ipsspoiler="">
<div class="ipsSpoiler_header"><span></span></div>
<div class="ipsSpoiler_contents">
<p> </p>
<p> </p>
<p></p>
<pre class="ipsCode prettyprint">function doUpdatePokemonsBar(cid)if not isCreature(cid) then return true endif getPlayerStorageValue(cid, 656494) &gt; 0 thenreturn trueendsetPlayerStorageValue(cid, 656494, 1000)addEvent(setPlayerStorageValue, 100, cid, 656494, -1)local ret = {}table.insert(ret, "p#,")local balls = getPlayerPokeballs(cid)local times = 0for a = 1, #balls do    local item = balls[a]    local hp = math.ceil(getItemAttribute(item.uid, "hp") * 100)    local name = getItemAttribute(item.uid, "poke")    local port = getPlayerSlotItem(cid, CONST_SLOT_LEGS)     if fotos[name] &gt;= 11137 and fotos[name] &lt;= 11387 then       times = times + 1       local foto = fotos[name] - 911       doItemSetAttribute(item.uid, "ballorder", times)       table.insert(ret, foto..","..name..""..times..","..hp..",")                    elseif fotos[name] &gt;= 12605 then                                                  times = times + 1                                                             local foto = fotos[name] - 1178  --alterado v1.9        doItemSetAttribute(item.uid, "ballorder", times)       table.insert(ret, foto..","..name..""..times..","..hp..",")    else       times = times + 1       local foto = fotos[name] - 928       doItemSetAttribute(item.uid, "ballorder", times)       table.insert(ret, foto..","..name..""..times..","..hp..",")    endenddoPlayerSendCancel(cid, table.concat(ret))end</pre>
</div>
</div>
<p> </p>
<p> </p>
<p> </p>
<p>4. Vá na pasta data\lib\some functions.lua</p>
<p>Troque por esse:</p>
<p> </p>
<div class="ipsSpoiler" data-ipsspoiler="">
<div class="ipsSpoiler_header"><span></span></div>
<div class="ipsSpoiler_contents">
<p></p>
<pre class="ipsCode prettyprint">function addPokeToPlayer(cid, pokemon, boost, gender, ball, unique, level)             --alterado v1.9 \/ peguem ele todo...local genders = {["male"] = 4,["female"] = 3,[1] = 4,[0] = 3,[4] = 4,[3] = 3,}if not isCreature(cid) then return false endsendAllPokemonsBarPoke(cid)local pokemon = doCorrectString(pokemon)if not pokes[pokemon] then return false end   local GENDER = (gender and genders[gender]) and genders[gender] or getRandomGenderByName(pokemon)   local btype = (ball and pokeballs[ball]) and ball or isShinyName(pokemon) and "shinynormal" or "normal"   local happy = 250   if (getPlayerFreeCap(cid) &gt;= 6 and not isInArray({5, 6}, getPlayerGroupId(cid))) or not hasSpaceInContainer(getPlayerSlotItem(cid, 3).uid) then       item = doCreateItemEx(11826)   else      item = addItemInFreeBag(getPlayerSlotItem(cid, 3).uid, 11826, 1)      end   if not item then return false end   doItemSetAttribute(item, "poke", pokemon)   doItemSetAttribute(item, "hp", 1)   doItemSetAttribute(item, "level", level and level or 1)   doItemSetAttribute(item, "happy", happy)   doItemSetAttribute(item, "gender", GENDER)   doSetItemAttribute(item, "hands", 0)   doItemSetAttribute(item, "description", "Contains a "..pokemon..".")   doItemSetAttribute(item, "fakedesc", "Contains a "..pokemon..".")    if boost and tonumber(boost) and tonumber(boost) &gt; 0 and tonumber(boost) &lt;= 50 then      doItemSetAttribute(item, "boost", boost)   end   if unique then      doItemSetAttribute(item, "unique", getCreatureName(cid))   end                                                                                if (getPlayerFreeCap(cid) &gt;= 6 and not isInArray({5, 6}, getPlayerGroupId(cid))) or not hasSpaceInContainer(getPlayerSlotItem(cid, 3).uid) then      doPlayerSendMailByName(getCreatureName(cid), item, 1)      sendMsgToPlayer(cid, 27, "You are already holding six pokemons, so your new pokemon was sent to your depot.")   end   if (isShinyName(pokemon) or (boost and tonumber(boost) and tonumber(boost) &gt;= 10)) and pokeballs["shiny"..btype] then      doTransformItem(item, pokeballs["shiny"..btype].on)   else      doTransformItem(item, pokeballs[btype].on)   endif getPlayerGroupId(cid) &gt; 4 thenlocal shinys = {"Venusaur", "Charizard", "Blastoise", "Butterfree", "Beedrill", "Pidgeot", "Rattata", "Raticate", "Raichu", "Zubat", "Golbat", "Paras", "Parasect", "Venonat", "Venomoth", "Growlithe", "Arcanine", "Abra", "Alakazam", "Tentacool", "Tentacruel", "Farfetch'd", "Grimer", "Muk", "Gengar", "Onix", "Krabby", "Kingler", "Voltorb", "Electrode", "Cubone", "Marowak", "Hitmonlee", "Hitmonchan", "Tangela", "Horsea", "Seadra", "Scyther", "Jynx", "Electabuzz", "Pinsir", "Magikarp", "Gyarados", "Snorlax", "Dragonair", "Dratini", "Dragonite"}if isInArray(shinys, pokemon) then           sendMsgToPlayer(cid, 27, "Transform Poke In Shiny")           tranfBallInShiny(item)          endendsendAllPokemonsBarPoke(cid)return trueend ---------------------------function unLock(ball)                                                             if not ball or ball &lt;= 0 then return false endif getItemAttribute(ball, "lock") and getItemAttribute(ball, "lock") &gt; 0 then   local vipTime = getItemAttribute(ball, "lock")   local timeNow = os.time()   local days = math.ceil((vipTime - timeNow)/(24 * 60 * 60))   if days &lt;= 0 then      doItemEraseAttribute(ball, "lock")          doItemEraseAttribute(ball, "unique")      return true   endendreturn falseendfunction getGuildMembersOnline(GuildId)local players = {}for _, pid in pairs(getPlayersOnline()) do    if getPlayerGuildId(pid) == tonumber(GuildId) then       table.insert(players, pid)    endend                                                   --by Vodkartreturn #players &gt; 0 and players or falseendfunction getGuildMembers(GuildId)local players,query = {},db.getResult("SELECT `name` FROM `players` WHERE `rank_id` IN (SELECT `id` FROM `guild_ranks` WHERE `guild_id` = " .. GuildId .. ");")if (query:getID() ~= -1) then     repeat         table.insert(players,query:getDataString("name"))   until not query:next()                           --by Vodkart   query:free()endreturn #players &gt; 0 and players or falseend --/////////////////////////////////////////////////////////////////////////////////---function sendMsgToPlayer(cid, tpw, msg)      --alterado v1.7 \/\/\/if not isCreature(cid) or not tpw or not msg then return true endreturn doPlayerSendTextMessage(cid, tpw, msg)endfunction getPlayerDesc(cid, thing, TV)if (not isCreature(cid) or not isCreature(thing)) and not TV then return "" endlocal pos = getThingPos(thing)local ocup = youAre[getPlayerGroupId(thing)]local rank = (getPlayerStorageValue(thing, 86228) &lt;= 0) and "a Pokemon Trainer" or lookClans[getPlayerStorageValue(thing, 86228)][getPlayerStorageValue(thing, 862281)]local name = thing == cid and "yourself" or getCreatureName(thing)     local art = thing == cid and "You are" or (getPlayerSex(thing) == 0 and "She is" or "He is")   local str = {}table.insert(str, "You see "..name..". "..art.." ")if youAre[getPlayerGroupId(thing)] then   table.insert(str, (ocup).." and "..rank.." from ".. getTownName(getPlayerTown(thing))..".")       else   table.insert(str, (rank).." from ".. getTownName(getPlayerTown(thing))..".")endif getPlayerGuildId(thing) &gt; 0 then   table.insert(str, " "..art.." "..getPlayerGuildRank(thing).." from the "..getPlayerGuildName(thing)..".")endif TV then   table.insert(str, " "..art.." watching TV.")endtable.insert(str, ((isPlayer(cid) and youAre[getPlayerGroupId(cid)]) and "\nPosition: [X: "..pos.x.."][Y: "..pos.y.."][Z: "..pos.z.."]" or "")) return table.concat(str) end-------------------------------------------------------------------------------------------------   /\/\function getPokemonLevelByPokemon(pk)if isSummon(pk) thenlocal cid = getCreatureMaster(pk)if cid thenlocal ball = getPlayerSlotItem(cid, 8)if ball.uid ~= 0 thenreturn getItemAttribute(ball.uid, "level") or 1endendendreturn falseendfunction addValuePokeLevel(level, value)if tonumber(level) thenvalue = value/100value = value*levelreturn valueendreturn falseendfunction getLivePokeballs(cid, container, duel)     if not isCreature(cid) then return {} end     	if not isContainer(container) then return {} end	local items = {}	---	local ballSlot = getPlayerSlotItem(cid, 8)    if ballSlot.uid ~= 0 then       for a, b in pairs (pokeballs) do           if ballSlot.itemid == b.on or ballSlot.itemid == b.use then              if duel and getPlayerLevel(cid) &gt;= (pokes[getItemAttribute(ballSlot.uid, "poke")].level + getPokeballBoost(ballSlot)) then                 table.insert(items, ballSlot.uid)                                                                      --alterado v1.8              elseif not duel then                 table.insert(items, ballSlot.uid)              end           end       end    end    ---     	if isContainer(container) and getContainerSize(container) &gt; 0 then      		for slot=0, (getContainerSize(container)-1) do			local item = getContainerItem(container, slot)				if isContainer(item.uid) then					local itemsbag = getPokeballsInContainer(item.uid)					for i=0, #itemsbag do						if not isInArray(items, itemsbag[i]) then                           table.insert(items, itemsbag[i])                        end					end				elseif isPokeball(item.itemid) then				    for a, b in pairs (pokeballs) do                        if item.itemid == b.on then                           if duel and getPlayerLevel(cid) &gt;= (pokes[getItemAttribute(item.uid, "poke")].level + getPokeballBoost(item)) then    					          table.insert(items, item.uid)                                            --alterado v1.8                           elseif not duel then                              table.insert(items, item.uid)                           end	                    end                    end				end		end	endreturn itemsendfunction addItemInFreeBag(container, item, num)if not isContainer(container) or not item then return false end                                             if not num or num &lt;= 0 then num = 1 end                                            --alterado v1.6.1if getContainerSize(container) &lt; getContainerCap(container) then   return doAddContainerItem(container, item, num)else   for slot = 0, (getContainerSize(container)-1) do       local container2 = getContainerItem(container, slot)       if isContainer(container2.uid) and getContainerSize(container2.uid) &lt; getContainerCap(container2.uid) then          return doAddContainerItem(container2.uid, item, num)       end   endendreturn falseend------------------------------------------------------------------------------------------------------function pokeHaveReflect(cid)if not isCreature(cid) then return false endlocal table = getTableMove(cid, "Reflect")if table and table.name then     --alterado v1.6   return true endreturn falseend------------------------------------------------------------------------------------------------------function nextHorario(cid)    horarioAtual = os.date("%X")    horario = string.explode(horarioAtual, ":")        for i = 1, #horas do        horarioComparacao = horas[i]        horarioComp = string.explode(horarioComparacao, ":")        ---------------        if tonumber(horarioComp[1]) &gt; tonumber(horario[1]) then           return horarioComparacao                                        elseif tonumber(horarioComp[1]) == tonumber(horario[1]) and tonumber(horario[2]) &lt; tonumber(horarioComp[2]) then           return horarioComparacao        end    end     return horas[1]                                  end                                                               function getTimeDiff(timeDiff)local dateFormat = {{'hour', timeDiff / 60 / 60}, --6%{'min', timeDiff / 60 % 60},}local out = {}                                   for k, t in ipairs(dateFormat) do    local v = math.floor(t[2])    if(v &gt; -1) then         table.insert(out, (k &lt; #dateFormat and '' or ' and ') .. v .. '' .. (v &lt;= 1 and t[1] or t[1].."s"))    endendif tonumber(dateFormat[1][2]) == 0 and tonumber(dateFormat[2][2]) == 0 then   return "seconds"endreturn table.concat(out)endfunction getTimeDiff2(timeDiff)local dateFormat = {{'hour', timeDiff / 60 / 60}, --6%{'min', timeDiff / 60 % 60},{'sec', timeDiff % 60},}local out = {}                                  for k, t in ipairs(dateFormat) do    local v = math.floor(t[2])    if(v &gt; 0) then         table.insert(out, (k &lt; #dateFormat and ' ' or ' and ') .. v .. '' .. (v &lt;= 1 and t[1] or t[1].."s"))    endendreturn table.concat(out)end function showTimeDiff(timeComp)local b = string.explode(os.date("%X"), ":")local c = string.explode(timeComp, ":")    ---    local d, m, y = os.date("%d"), os.date("%m"), os.date("%Y")    local hAtual, mAtual = tonumber(b[1]), tonumber(b[2])    local hComp, mComp = tonumber(c[1]), tonumber(c[2])    ---    local t = os.time{year= y, month= m, day= d, hour= hAtual, min= mAtual}    local t1 = os.time{year= y, month= m, day= d, hour= hComp, min= mComp}    ---                                                                           comparacao = t1-t    if hComp &lt; hAtual then       v = os.time{year= y, month= m, day= d, hour= 24, min= 0}       v2 = os.time{year= y, month= m, day= d, hour= 0, min= 0}       comparacao = (v-t)+(t1-v2)    endreturn getTimeDiff(comparacao)end-------------------------------------------------------------------------function cleanCMcds(item)if item ~= 0 then   for c = 1, 15 do              --alterado v1.5      local str = "cm_move"..c      setCD(item, str, 0)   endendendfunction ehNPC(cid)   --alterado v1.9return isCreature(cid) and not isPlayer(cid) and not isSummon(cid) and not isMonster(cid)endfunction ehMonstro(cid)   --alterado v1.9return cid and cid &gt;= AUTOID_MONSTERS and cid &lt; AUTOID_NPCSendfunction doAppear(cid)    --Faz um poke q tava invisivel voltar a ser visivel...if not isCreature(cid) then return true end	doRemoveCondition(cid, CONDITION_INVISIBLE)    doRemoveCondition(cid, CONDITION_OUTFIT)	doCreatureSetHideHealth(cid, false)	if getCreatureName(cid) == "Ditto" and pokes[getPlayerStorageValue(cid, 1010)] and getPlayerStorageValue(cid, 1010) ~= "Ditto" then       if isSummon(cid) then          local item = getPlayerSlotItem(getCreatureMaster(cid), 8)          doSetCreatureOutfit(cid, {lookType = getItemAttribute(item.uid, "transOutfit")}, -1)   --alterado v1.6.1       end    end endfunction doDisapear(cid)   --Faz um pokemon ficar invisivelif not isCreature(cid) then return true enddoCreatureAddCondition(cid, permanentinvisible)doCreatureSetHideHealth(cid, true)doSetCreatureOutfit(cid, {lookType = 2}, -1)endfunction hasTile(pos)    --Verifica se tem TILE na pospos.stackpos = 0if getTileThingByPos(pos).itemid &gt;= 1 then   return trueendreturn falseendfunction getThingFromPosWithProtect(pos)  --Pega uma creatura numa posiçao com proteçoesif hasTile(pos) then   if isCreature(getRecorderCreature(pos)) then      return getRecorderCreature(pos)   else      pos.stackpos = 253      pid = getThingfromPos(pos).uid   endelse   pid = getThingfromPos({x=1,y=1,z=10,stackpos=253}).uidendreturn pidendfunction getTileThingWithProtect(pos)    --Pega um TILE com proteçoesif hasTile(pos) thenpos.stackpos = 0   pid = getTileThingByPos(pos)else   pid = getTileThingByPos({x=1,y=1,z=10,stackpos=0})endreturn pidendfunction canAttackOther(cid, pid)         --Function q verifica se um poke/player pode atacar outro poke/playerif not isCreature(cid) or not isCreature(pid) then return "Cant" endlocal master1 = isSummon(cid) and getCreatureMaster(cid) or cidlocal master2 = isSummon(pid) and getCreatureMaster(pid) or pid      ----                if getPlayerStorageValue(master1, 6598754) &gt;= 5 and getPlayerStorageValue(master2, 6598754) &gt;= 5 then      if getPlayerStorageValue(master1, 6598754) ~= getPlayerStorageValue(master2, 6598754) then         if isDuelingAgainst(master1, master2) then   --alterado v1.8            if isSummon(cid) and isPlayer(pid) then               return "Cant"            else               return "Can"            end         end      end   end   ----              pvp system   if getPlayerStorageValue(master1, 6598754) &gt;= 1 and getPlayerStorageValue(master2, 6598755) &gt;= 1 then      return "Can"    end   if getPlayerStorageValue(master1, 6598755) &gt;= 1 and getPlayerStorageValue(master2, 6598754) &gt;= 1 then  ---estar em times diferentes      return "Can"   end   ----   if ehMonstro(cid) or ehMonstro(pid) then      return "Can"   endreturn "Cant"end         function stopNow(cid, time)    --function q faz o poke/player ficar imovel por um tempoif not isCreature(cid) or not tonumber(time) or isSleeping(cid) then return true endlocal function podeMover(cid)                         --alterado v1.9 \/if isCreature(cid) then mayNotMove(cid, false) endendmayNotMove(cid, true)addEvent(podeMover, time, cid)endfunction doReduceStatus(cid, off, def, agi)   --reduz os statusif not isCreature(cid) then return true endlocal A = getOffense(cid)local B = getDefense(cid)local C = getSpeed(cid)if off &gt; 0 then   setPlayerStorageValue(cid, 1001, A - off)endif def &gt; 0 then   setPlayerStorageValue(cid, 1002, B - def)endif agi &gt; 0 then   setPlayerStorageValue(cid, 1003, C - agi)   if getCreatureSpeed(cid) ~= 0 then      doRegainSpeed(cid)   end                                              --alterado v1.5  functions arrumadas...endendfunction doRaiseStatus(cid, off, def, agi, time)  if not isCreature(cid) then return true endlocal A = getOffense(cid)local B = getDefense(cid)local C = getSpeed(cid)if off &gt; 0 then   setPlayerStorageValue(cid, 1001, A * off)endif def &gt; 0 then   setPlayerStorageValue(cid, 1002, B * def)endif agi &gt; 0 then   setPlayerStorageValue(cid, 1003, C + agi)   if getCreatureSpeed(cid) ~= 0 then      doRegainSpeed(cid)   endendlocal D = getOffense(cid)local E = getDefense(cid)local F = getSpeed(cid)---------------------------local G = D - Alocal H = E - Blocal I = F - CaddEvent(doReduceStatus, time*1000, cid, G, H, I)endfunction BackTeam(cid)            if isCreature(cid) then     local summon = getCreatureSummons(cid)   --alterado v1.6     for i = 2, #summon do         doSendMagicEffect(getThingPos(summon[i]), 211)         doRemoveCreature(summon[i])     end     setPlayerStorageValue(cid, 637501, -1)  end  end    function choose(...) -- by mock    local arg = {...}    return arg[math.random(1,#arg)]endfunction AddPremium(cid, days)local function removerPlayer(cid)if isCreature(cid) then   doRemoveCreature(cid)endenddb.executeQuery("UPDATE `accounts` SET `premdays` = '"..days.."' WHERE `accounts`.`id` = ".. getPlayerAccountId(cid) ..";")doPlayerSendTextMessage(cid,25,"Você será kickado em 5 segundos.")    addEvent(removerPlayer, 5*1000, cid)     return TRUEendfunction isShiny(cid) return isCreature(cid) and string.find(getCreatureName(cid), "Shiny")  --alterado v1.9endfunction isShinyName(name)        return tostring(name) and string.find(doCorrectString(name), "Shiny") --alterado v1.9endfunction doConvertTypeToStone(type, string)local t = {["fly"] = {heart, "heart"},["flying"] = {heart, "heart"},["normal"] = {heart, "heart"},["fire"] = {fire, "fire"},["grass"] = {leaf, "leaf"},["leaf"] = {leaf, "leaf"},["water"] = {water, "water"},["poison"] = {venom, "venom"},["venom"] = {venom, "venom"},["electric"] = {thunder, "thunder"},["thunder"] = {thunder, "thunder"},["rock"] = {rock, "rock"},["fight"] = {punch, "punch"},["fighting"] = {punch, "punch"},["bug"] = {coccon, "coccon"},["dragon"] = {crystal, "crystal"},["dark"] = {dark, "dark"},["ghost"] = {dark, "dark"},["ground"] = {earth, "earth"},["earth"] = {earth, "earth"},["psychic"] = {enigma, "enigma"},["steel"] = {metal, "metal"},["metal"] = {metal, "metal"},["ice"] = {ice, "ice"},["boost"] = {boostStone, "boost"},  --alterado v1.9}if string thenreturn t[type][2]elsereturn t[type][1]endendfunction doConvertStoneIdToString(stoneID)local t = {[11453] = "Heart Stone",[11441] = "Leaf Stone",[11442] = "Water Stone",[11443] = "Venom Stone",[11444] = "Thunder Stone",[11445] = "Rock Stone",[11446] = "Punch Stone", [11447] = "Fire Stone",               --alterado v1.6[11448] = "Cocoon Stone", [11449] = "Crystal Stone",[11450] = "Darkess Stone", [11451] = "Earth Stone",[11452] = "Enigma Stone",[11454] = "Ice Stone", [12244] = "King's Rock",[12232] = "Metal Stone",[12242] = "Sun Stone",[12401] = "Shiny Fire Stone",[12402] = "Shiny Water Stone",[12403] = "Shiny Leaf Stone",[12404] = "Shiny Heart Stone",[12405] = "Shiny Enigma Stone",[12406] = "Shiny Rock Stone",[12407] = "Shiny Venom Stone", [12408] = "Shiny Ice Stone",[12409] = "Shiny Thunder Stone",[12410] = "Shiny Crystal Stone",[12411] = "Shiny Cocoon Stone",[12412] = "Shiny Darkness Stone",[12413] = "Shiny Punch Stone",[12414] = "Shiny Earth Stone",[boostStone] = "Boost Stone",  --alterado v1.9}if t[stoneID] thenreturn t[stoneID]elsereturn ""endendfunction isStone(id)if id &gt;= leaf and id &lt;= ice thenreturn trueendif id == boostStone then  --alterado v1.9return trueendif id == 12232 or id == 12242 or id == 12244 or id == 12245 thenreturn true                                 endif (id &gt;= sfire and id &lt;= searth) or id == 12417 or id == 12419 thenreturn true endreturn falseendfunction isWater(id)return tonumber(id) and id &gt;= 4820 and id &lt;= 4825 --alterado v1.9endfunction getTopCorpse(position)local pos = positionfor n = 1, 255 do    pos.stackpos = n    local item = getTileThingByPos(pos)    if item.itemid &gt;= 2 and (string.find(getItemNameById(item.itemid), "fainted ") or string.find(getItemNameById(item.itemid), "defeated ")) then       return getTileThingByPos(pos)    endendreturn nullendbpslot = CONST_SLOT_BACKPACKfunction hasPokemon(cid)	if not isCreature(cid) then return false end	if getCreatureMana(cid) &lt;= 0 then return false end	if #getCreatureSummons(cid) &gt;= 1 then return true end	local item = getPlayerSlotItem(cid, CONST_SLOT_FEET)	local bp = getPlayerSlotItem(cid, bpslot)	for a, b in pairs (pokeballs) do        if item.itemid == b.on or item.itemid == b.use then        return true                              --alterado v1.4        end        if #getItemsInContainerById(bp.uid, b.on) &gt;= 1 then        return true        end	endreturn falseendfunction isNpcSummon(cid)return isNpc(getCreatureMaster(cid))endfunction getPokemonHappinessDescription(cid)	if not isCreature(cid) then return true end	local str = {}	if getPokemonGender(cid) == SEX_MALE then		table.insert(str, "He")	elseif getPokemonGender(cid) == SEX_FEMALE then		table.insert(str, "She")	else		table.insert(str, "It")	end	local h = getPlayerStorageValue(cid, 1008)	if h &gt;= tonumber(getConfigValue('PokemonStageVeryHappy')) then		table.insert(str, " is very happy with you!")	elseif h &gt;= tonumber(getConfigValue('PokemonStageHappy')) then		table.insert(str, " is happy.")	elseif h &gt;= tonumber(getConfigValue('PokemonStageOK')) then		table.insert(str, " is unhappy.")	elseif h &gt;= tonumber(getConfigValue('PokemonStageSad')) then		table.insert(str, " is sad.")	elseif h &gt;= tonumber(getConfigValue('PokemonStageMad')) then		table.insert(str, " is mad.")	else		table.insert(str, " is very mad at you!")	endreturn table.concat(str)endfunction doSetItemAttribute(item, key, value)doItemSetAttribute(item, key, value)endfunction deTransform(cid, check)	if not isCreature(cid) then return true end	local m = getCreatureMaster(cid)	local p = getPlayerSlotItem(m, 8)	if getItemAttribute(p.uid, "transTurn") ~= check then return true end	setPlayerStorageValue(cid, 1010, getCreatureName(cid) == "Ditto" and "Ditto" or "Shiny Ditto")        --edited	doRemoveCondition(cid, CONDITION_OUTFIT)	doSendMagicEffect(getThingPos(cid), 184)	doCreatureSay(cid, "DITTO!", TALKTYPE_MONSTER)	doItemSetAttribute(p.uid, "transBegin", 0)	doItemSetAttribute(p.uid, "transLeft", 0)	doItemEraseAttribute(p.uid, "transName")	adjustStatus(cid, p.uid, true, true, true)endfunction isTransformed(cid)return isCreature(cid) and not isInArray({-1, "Ditto", "Shiny Ditto"}, getPlayerStorageValue(cid, 1010))  --alterado v1.9endfunction doSendFlareEffect(pos)	local random = {28, 29, 79}	doSendMagicEffect(pos, random[math.random(1, 3)])endfunction isDay()	local a = getWorldTime()	if a &gt;= 360 and a &lt; 1080 then	return true	endreturn falseendfunction doPlayerSendTextWindow(cid, p1, p2)	if not isCreature(cid) then return true end	local item = 460	local text = ""	if type(p1) == "string" then		doShowTextDialog(cid, item, p1)	else		doShowTextDialog(cid, p1, p2)	endendfunction getClockString(tw)	local a = getWorldTime()	local b = a / 60	local hours = math.floor(b)	local minut = a - (60 * hours)	if not tw then		if hours &lt; 10 then			hours = "0"..hours..""		end		if minut &lt; 10 then			minut = "0"..minut..""		end	return hours..":"..minut	else		local sm = "a.m"		if hours &gt;= 12 then			hours = hours - 12			sm = "p.m"		end		if hours &lt; 10 then			hours = "0"..hours..""		end		if minut &lt; 10 then			minut = "0"..minut..""		end	return hours..":"..minut.." "..sm	endendfunction doCorrectPokemonName(poke)return doCorrectString(poke)endfunction doCorrectString(str)local name = str:explode(" ")  --alterado v1.9local final = {}for _, s in ipairs(name) do    table.insert(final, s:sub(1, 1):upper()..s:sub(2, #s):lower())endreturn table.concat(final, (name[2] and " " or ""))end   function getHappinessRate(cid)	if not isCreature(cid) then return 1 end	local a = getPlayerStorageValue(cid, 1008)		if a == -1 then return 1 end	if a &gt;= getConfigValue('PokemonStageVeryHappy') then		return happinessRate[5].rate	elseif a &gt;= getConfigValue('PokemonStageHappy') then		return happinessRate[4].rate	elseif a &gt;= getConfigValue('PokemonStageOK') then		return happinessRate[3].rate	elseif a &gt;= getConfigValue('PokemonStageSad') then		return happinessRate[2].rate	else		return happinessRate[1].rate	endreturn 1endfunction doBodyPush(cid, target, go, pos)	if not isCreature(cid) or not isCreature(target) then		doRegainSpeed(cid)		doRegainSpeed(target)	return true	end		if go then			local a = getThingPos(cid)			doChangeSpeed(cid, -getCreatureSpeed(cid))				if not isPlayer(target) then					doChangeSpeed(target, -getCreatureSpeed(target))				end			doChangeSpeed(cid, 800)			doTeleportThing(cid, getThingPos(target))			doChangeSpeed(cid, -800)			addEvent(doBodyPush, 350, cid, target, false, a)		else			doChangeSpeed(cid, 800)			doTeleportThing(cid, pos)			doRegainSpeed(cid)			doRegainSpeed(target)		endendfunction doReturnPokemon(cid, pokemon, pokeball, effect, hideeffects, blockevo)    -----------------	local edit = true	if not pokeball then		pokeball = getPlayerSlotItem(cid, 8)	end	if blockevo then		edit = false		doPlayerSendCancel(cid, "Your pokemon couldn't evolve due to server mistakes, please wait until we fix the problem.")	end	local happy = getPlayerStorageValue(pokemon, 1008)	local hunger = getPlayerStorageValue(pokemon, 1009)	local pokelife = (getCreatureHealth(pokemon) / getCreatureMaxHealth(pokemon))	if edit then		doItemSetAttribute(pokeball.uid, "happy", happy)		doItemSetAttribute(pokeball.uid, "hunger", hunger)		doItemSetAttribute(pokeball.uid, "hp", pokelife)	end	if getCreatureName(pokemon) == "Ditto" then		if isTransformed(pokemon) then			local left = getItemAttribute(pokeball.uid, "transLeft") - (os.clock() - getItemAttribute(pokeball.uid, "transBegin"))			doItemSetAttribute(pokeball.uid, "transLeft", left)		end	end	if hideeffects then		doRemoveCreature(pokemon)	return true	end	local pokename = getPokeName(pokemon)	local mbk = gobackmsgs[math.random(1, #gobackmsgs)].back:gsub("doka", pokename)	if getCreatureCondition(cid, CONDITION_INFIGHT) then		if isCreature(getCreatureTarget(cid)) then			doItemSetAttribute(pokeball.uid, "happy", happy - 5)		else			doItemSetAttribute(pokeball.uid, "happy", happy - 2)		end	end	doTransformItem(pokeball.uid, pokeball.itemid-1)	doCreatureSay(cid, mbk, TALKTYPE_SAY)	doSendMagicEffect(getCreaturePosition(pokemon), effect)	doRemoveCreature(pokemon)                doCloseInfoPoke(cid)    unLock(pokeball.uid) --alterado v1.8        if useOTClient then       doPlayerSendCancel(cid, '12//,hide')  --alterado v1.7    end    	if useKpdoDlls then		doUpdateMoves(cid)	endendlocal EFFECTS = {  --[OutfitID] = {Effect}  ["Magmar"] = 35,    --magmar            --alterado v2.5  ["Magmortar"] = 35,    --magmar      ["Jynx"] = 17,    --jynx  ["Shiny Jynx"] = 17,    --shiny jynx  ["Piloswine"] = 210,    --piloswine  ["Swinub"] = 210,    --swinub}function doGoPokemon(cid, item)sendAllPokemonsBarPoke(cid)	if getPlayerStorageValue(cid, 17000) &gt;= 1 or getPlayerStorageValue(cid, 17001) &gt;= 1 or getPlayerStorageValue(cid, 63215) &gt;= 1 then	return true	end---------------------------------------------------------------local ballName = getItemAttribute(item.uid, "poke")   btype = getPokeballType(item.itemid)                   	local effect = pokeballs[btype].effect		if not effect then			effect = 21		end-----------------------------------------------------------------	if item.uid ~= getPlayerSlotItem(cid, CONST_SLOT_FEET).uid then		doPlayerSendCancel(cid, "You must put your pokeball in the correct place!")	return TRUE	end	local thishp = getItemAttribute(item.uid, "hp")	if thishp &lt;= 0 then		if isInArray(pokeballs[btype].all, item.itemid) then			doTransformItem(item.uid, pokeballs[btype].off)			doItemSetAttribute(item.uid, "hp", 0)			doPlayerSendCancel(cid, "This pokemon is fainted.")		    return true		end	end	local pokemon = getItemAttribute(item.uid, "poke")	if not pokes[pokemon] then	return true	end----------------------- Sistema de nao poder carregar mais que 3 pokes lvl baixo e + q 1 poke de lvl medio/alto ---------------------------------if not isInArray({5, 6}, getPlayerGroupId(cid)) then   local balls = getPokeballsInContainer(getPlayerSlotItem(cid, 3).uid)      --alterado v1.9 \/   local low = {}   local lowPokes = {"Rattata", "Caterpie", "Weedle", "Oddish", "Pidgey", "Paras", "Poliwag", "Bellsprout", "Magikarp", "Hoppip", "Sunkern"}   if #balls &gt;= 1 then      for _, uid in ipairs(balls) do          local nome = getItemAttribute(uid, "poke")          if not isInArray(lowPokes, pokemon) and nome == pokemon then             return doPlayerSendTextMessage(cid, 27, "Sorry, but you can't carry two pokemons equals!")          else             if nome == pokemon then                table.insert(low, nome)             end          end      end   endif #low &gt;= 3 then   return doPlayerSendTextMessage(cid, 27, "Sorry, but you can't carry more than three pokemons equals of low level!")end   end---------------------------------------------------------------------------------------------------------------------------------------------------	local x = pokes[pokemon]	local boosts = getItemAttribute(item.uid, "boost") or 0	if getPlayerLevel(cid) &lt; (x.level + boosts) then   --alterado v1.8 \/	doPlayerSendCancel(cid, "You need level "..(x.level + boosts).." to use this pokemon.")	return true	end		--------------------------------------------------------------------------------------	shinysClan = {	["Shiny Fearow"] = {4, "Wingeon"},	["Shiny Flareon"] = {1, "Volcanic"},	["Shiny Vaporeon"] = {2, "Seavel"}, 	["Shiny Jolteon"] = {9, "Raibolt"},	["Shiny Hypno"] = {7, "Psycraft"},	["Shiny Golem"] = {3, "Orebound"},         	["Shiny Vileplume"] = {8, "Naturia"},	["Shiny Nidoking"] = {5, "Malefic"},	["Shiny Hitmontop"] = {6, "Gardestrike"},   	}		if shinysClan[pokemon] and (getPlayerGroupId(cid) &lt; 4 or getPlayerGroupId(cid) &gt; 6) then --alterado v1.9	   if getPlayerStorageValue(cid, 86228) ~= shinysClan[pokemon][1] then	      doPlayerSendCancel(cid, "You need be a member of the clan "..shinysClan[pokemon][2].." to use this pokemon!")	      return true          elseif getPlayerStorageValue(cid, 862281) ~= 5 then          doPlayerSendCancel(cid, "You need be atleast rank 5 to use this pokemon!")	      return true       end    end    --------------------------------------------------------------------------------------	doSummonMonster(cid, pokemon)	local pk = getCreatureSummons(cid)[1]	if not isCreature(pk) then return true end		------------------------passiva hitmonchan------------------------------	if isSummon(pk) then                                                  --alterado v1.8 \/       if pokemon == "Shiny Hitmonchan" or pokemon == "Hitmonchan" then          if not getItemAttribute(item.uid, "hands") then             doSetItemAttribute(item.uid, "hands", 0)          end          local hands = getItemAttribute(item.uid, "hands")          doSetCreatureOutfit(pk, {lookType = hitmonchans[pokemon][hands].out}, -1)       end    end	-------------------------------------------------------------------------    ---------movement magmar, jynx-------------    if EFFECTS[getCreatureName(pk)] then            markPosEff(pk, getThingPos(pk))       sendMovementEffect(pk, EFFECTS[getCreatureName(pk)], getThingPos(pk))       end    --------------------------------------------------------------------------  	if getCreatureName(pk) == "Ditto" then		local left = getItemAttribute(item.uid, "transLeft")		local name = getItemAttribute(item.uid, "transName")		if left and left &gt; 0 then			setPlayerStorageValue(pk, 1010, name)			doSetCreatureOutfit(pk, {lookType = getItemAttribute(item.uid, "transOutfit")}, -1)			addEvent(deTransform, left * 1000, pk, getItemAttribute(item.uid, "transTurn"))			doItemSetAttribute(item.uid, "transBegin", os.clock())		else			setPlayerStorageValue(pk, 1010, "Ditto")		end	end	if isGhostPokemon(pk) then doTeleportThing(pk, getPosByDir(getThingPos(cid), math.random(0, 7)), false) end	doCreatureSetLookDir(pk, 2)             if not getItemAttribute(item.uid, "level") then             doSetItemAttribute(item.uid, "level", 1)          end	adjustStatus(pk, item.uid, true, true, true)	doAddPokemonInOwnList(cid, pokemon)	doTransformItem(item.uid, item.itemid+1)	local pokename = getPokeName(pk) --alterado v1.7	local mgo = gobackmsgs[math.random(1, #gobackmsgs)].go:gsub("doka", pokename)	doCreatureSay(cid, mgo, TALKTYPE_SAY)                sendAudio(cid, "006")                sendPokeInfo(cid)	doSendMagicEffect(getCreaturePosition(pk), effect)    unLock(item.uid) --alterado v1.8	if useKpdoDlls then		doUpdateMoves(cid)	endendfunction doRegainSpeed(cid)              --alterado v1.9 \/if not isCreature(cid) then return true end   local speed = PlayerSpeed   if isMonster(cid) then      speed = getSpeed(cid)   elseif isPlayer(cid) and isInArray({4, 5, 6}, getPlayerGroupId(cid)) then      speed = 200*getPlayerGroupId(cid)    end      doChangeSpeed(cid, -getCreatureSpeed(cid))   if getCreatureCondition(cid, CONDITION_PARALYZE) == true then      doRemoveCondition(cid, CONDITION_PARALYZE)      addEvent(doAddCondition, 10, cid, paralizeArea2)                end    doChangeSpeed(cid, speed)return speedendfunction isPosEqualPos(pos1, pos2, checkstackpos)	if pos1.x ~= pos2.x or pos1.y ~= pos2.y and pos1.z ~= pos2.z then	return false	end	if checkstackpos and pos1.stackpos and pos2.stackpos and pos1.stackpos ~= pos2.stackpos then	return false	endreturn trueendfunction getRandomGenderByName(name)local rate = newpokedex[name]	if not rate then return 0 end	rate = rate.gender	if rate == 0 then		gender = 3	elseif rate == 1000 then		gender = 4	elseif rate == -1 then		gender = 0	elseif math.random(1, 1000) &lt;= rate then		gender = 4	else		gender = 3	endreturn genderendfunction getRecorderPlayer(pos, cid)	local ret = 0	if cid and isPosEqual(getThingPos(cid), pos) then   --alterado v1.9	   return cid	end	local s = {}	s.x = pos.x	s.y = pos.y	s.z = pos.z		for a = 0, 255 do			s.stackpos = a			local b = getTileThingByPos(s).uid			if b &gt; 1 and isPlayer(b) and getCreatureOutfit(b).lookType ~= 814 then				ret = b			end		endreturn retendfunction getRecorderCreature(pos, cid)	local ret = 0	if cid and isPosEqual(getThingPos(cid), pos) then   --alterado v1.9	   return cid	end	local s = {}	s.x = pos.x	s.y = pos.y	s.z = pos.z		for a = 0, 255 do			s.stackpos = a			local b = getTileThingByPos(s).uid			if b &gt; 1 and isCreature(b) and getCreatureOutfit(b).lookType ~= 814 then				ret = b			end		endreturn retendfunction doCreatureSetOutfit(cid, outfit, time)	doSetCreatureOutfit(cid, outfit, time)endfunction doMagicalFlower(cid, away)	if not isCreature(cid) then return true end	for x = -3, 3 do		for y = -3, 3 do		local a = getThingPos(cid)		a.x = a.x + x		a.y = a.y + y			if away then				doSendDistanceShoot(a, getThingPos(cid), 21)			else				doSendDistanceShoot(getThingPos(cid), a, 21)			end		end	endend		function isItemPokeball(item)         --alterado v1.9 \/if not item then return false endfor a, b in pairs (pokeballs) do	if isInArray(b.all, item) then return true endendreturn falseendfunction isPokeball(item)return isItemPokeball(item)end                                    --/\function getPokeballType(id)	for a, b in pairs (pokeballs) do		if isInArray(b.all, id) then			return a		end	endreturn "none"endrandomdiagonaldir = {[NORTHEAST] = {NORTH, EAST},[SOUTHEAST] = {SOUTH, EAST},[NORTHWEST] = {NORTH, WEST},[SOUTHWEST] = {SOUTH, WEST}}function doFaceOpposite(cid)local a = getCreatureLookDir(cid)local d = {[NORTH] = SOUTH,[SOUTH] = NORTH,[EAST] = WEST,[WEST] = EAST,[NORTHEAST] = SOUTHWEST,[NORTHWEST] = SOUTHEAST,[SOUTHEAST] = NORTHWEST,[SOUTHWEST] = NORTHEAST}doCreatureSetLookDir(cid, d[a])endfunction doFaceRandom(cid)local a = getCreatureLookDir(cid)local d = {[NORTH] = {SOUTH, WEST, EAST},[SOUTH] = {NORTH, WEST, EAST},[WEST] = {SOUTH, NORTH, EAST},[EAST] = {SOUTH, WEST, NORTH}}doChangeSpeed(cid, 1)doCreatureSetLookDir(cid, d[a][math.random(1, 3)])doChangeSpeed(cid, -1)endfunction getFaceOpposite(dir)local d = {[NORTH] = SOUTH,[SOUTH] = NORTH,[EAST] = WEST,[WEST] = EAST,[NORTHEAST] = SOUTHWEST,[NORTHWEST] = SOUTHEAST,[SOUTHEAST] = NORTHWEST,[SOUTHWEST] = NORTHEAST}return d[dir]endfunction getResistance(cid, combat)	if isPlayer(cid) then return false endlocal poketype1 = pokes[getCreatureName(cid)].typelocal poketype2 = pokes[getCreatureName(cid)].type2local multiplier = 1	if effectiveness[combat].super and isInArray(effectiveness[combat].super, poketype1) then		multiplier = multiplier * 2	end	if poketype2 and effectiveness[combat].super and isInArray(effectiveness[combat].super, poketype2) then		multiplier = multiplier * 2	end	if effectiveness[combat].weak and isInArray(effectiveness[combat].weak, poketype1) then		multiplier = multiplier * 0.5	end	if poketype2 and effectiveness[combat].weak and isInArray(effectiveness[combat].weak, poketype2) then		multiplier = multiplier * 0.5	end	if effectiveness[combat].non and isInArray(effectiveness[combat].non, poketype1) then		multiplier = multiplier * 0	end	if poketype2 and effectiveness[combat].non and isInArray(effectiveness[combat].non, poketype2) then		multiplier = multiplier * 0	end	if multiplier == 0.25 then		multiplier = 0.5	elseif multiplier == 4 then		multiplier = 2	endreturn multiplierendfunction getCreatureDirectionToTarget(cid, target, ranged)	if not isCreature(cid) then return true end	if not isCreature(target) then return getCreatureLookDir(cid) end	local dirs = {	[NORTHEAST] = {NORTH, EAST},	[SOUTHEAST] = {SOUTH, EAST},	[NORTHWEST] = {NORTH, WEST},	[SOUTHWEST] = {SOUTH, WEST}}	local x = getDirectionTo(getThingPos(cid), getThingPos(target), false)		if x &lt;= 3 then return x		else			local xdistance = math.abs(getThingPos(cid).x - getThingPos(target).x)			local ydistance = math.abs(getThingPos(cid).y - getThingPos(target).y)				if xdistance &gt; ydistance then					return dirs[x][2]				elseif ydistance &gt; xdistance then					return dirs[x][1]				elseif isInArray(dirs[x], getCreatureLookDir(cid)) then					return getCreatureLookDir(cid)				else					return dirs[x][math.random(1, 2)]				end		endendfunction getSomeoneDescription(cid)	if isPlayer(cid) then return getPlayerNameDescription(cid) endreturn getMonsterInfo(getCreatureName(cid)).descriptionend	function isGhostPokemon(cid)  if not isCreature(cid) then return false end                             --alterado v2.7  if isInArray({"Mismagius", "Dusknoir", "Sableye" , "Shuppet" , "Banette" , "Duskull" , "Dusclops" , "Gengar", "Haunter", "Gastly", "Misdreavus", "Shiny Gengar", "Shiny Abra", "Ghost Marowak"}, getCreatureName(cid)) then  return true  endreturn falseendfunction updateGhostWalk(cid)	if not isCreature(cid) then return false end	local pos = getThingPos(cid)	pos.x = pos.x + 1	pos.y = pos.y + 1	local ret = getThingPos(cid)	doTeleportThing(cid, pos, false)	doTeleportThing(cid, ret, false)return trueendfunction doRemoveElementFromTable(t, e)	local ret = {}	for a = 1, #t do		if t[a] ~= e then		table.insert(ret, t[a])		end	endreturn retendfunction doFaceCreature(sid, pos)if not isCreature(sid) then return true end	if getThingPos(sid).x == pos.x and getThingPos(sid).y == pos.y then return true end	local ret = 0	local ld = getCreatureLookDir(sid)	local dir = getDirectionTo(getThingPos(sid), pos)	local al = {	[NORTHEAST] = {NORTH, EAST},	[NORTHWEST] = {NORTH, WEST},	[SOUTHEAST] = {SOUTH, EAST},	[SOUTHWEST] = {SOUTH, WEST}}	if dir &gt;= 4 and isInArray(al[dir], ld) then return true end	doChangeSpeed(sid, 1)		if dir == 4 then			ret = math.random(2, 3)		elseif dir == 5 then			ret = math.random(1, 2)		elseif dir == 6 then			local dirs = {0, 3}			ret = dirs[math.random(1, 2)]		elseif dir == 7 then			ret = math.random(0, 1)		else			ret = getDirectionTo(getThingPos(sid), pos)		enddoCreatureSetLookDir(sid, ret)doChangeSpeed(sid, -1)return trueendfunction doCreatureAddCondition(cid, condition)if not isCreature(cid) then return true enddoAddCondition(cid, condition)endfunction doCreatureRemoveCondition(cid, condition)if not isCreature(cid) then return true enddoRemoveCondition(cid, condition)endfunction setCD(item, tipo, tempo)	if not tempo or not tonumber(tempo) then		doItemEraseAttribute(item, tipo)	return true	end	doItemSetAttribute(item, tipo, "cd:"..(tempo + os.time()).."")return tempo + os.time()endfunction getCD(item, tipo, limite)	if not getItemAttribute(item, tipo) then	return 0	end	local string = getItemAttribute(item, tipo):gsub("cd:", "")	local number = tonumber(string) - os.time()	if number &lt;= 0 then	return 0	end	if limite and limite &lt; number then		return 0	endreturn numberendfunction doSendMoveEffect(cid, target, effect)if not isCreature(cid) or not isCreature(target) then return true enddoSendDistanceShoot(getThingPos(cid), getThingPos(target), effect)return trueendfunction doSetItemActionId(uid, actionid)doItemSetAttribute(uid, "aid", actionid)return trueendfunction threeNumbers(number)	if number &lt;= 9 then	return "00"..number..""	elseif number &lt;= 99 then	return "0"..number..""	endreturn ""..number..""endfunction isBr(cid)if getPlayerStorageValue(cid, 105505) ~= -1 thenreturn trueendreturn falseendfunction isBeingUsed(ball)            if not ball then return false endfor a, b in pairs (pokeballs) do           --alterado v1.9    if b.use == ball then return true endendreturn falseendfunction doRemoveTile(pos)-- Script by mockpos.stackpos = 0local sqm = getTileThingByPos(pos)doRemoveItem(sqm.uid,1)endfunction doCreateTile(id,pos) -- By mockdoAreaCombatHealth(0,0,pos,0,0,0,CONST_ME_NONE)doCreateItem(id,1,pos)endfunction hasSqm(pos)local f = getTileThingByPos(pos)if f.itemid ~= 0 and f.itemid ~= 1 thenreturn trueendreturn falseendfunction getPosDirs(p, dir) -- By MatheusMkaloreturn dir == 1 and {x=p.x-1, y=p.y, z=p.z} or dir == 2 and {x=p.x-1, y=p.y+1, z=p.z} or dir == 3 and {x=p.x, y=p.y+1, z=p.z} or dir == 4 and {x=p.x+1, y=p.y+1, z=p.z} or dir == 5 and {x=p.x+1, y=p.y, z=p.z} or dir == 6 and {x=p.x+1, y=p.y-1, z=p.z} or dir == 7 and {x=p.x, y=p.y-1, z=p.z} or dir == 8 and {x=p.x-1, y=p.y-1, z=p.z}endfunction canWalkOnPos(pos, creature, pz, water, sqm, proj)if not pos then return false endif not pos.x then return false endif getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid &lt;= 1 and sqm then return false endif getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 919 then return false endif isInArray({4820, 4821, 4822, 4823, 4824, 4825}, getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid) and water then return false endif getTopCreature(pos).uid &gt; 0 and creature then return false endif getTileInfo(pos).protection and pz then return false end    local n = not proj and 3 or 2                                    --alterado v1.6    for i = 0, 255 do        pos.stackpos = i                                   local tile = getTileThingByPos(pos)                if tile.itemid ~= 0 and i ~= 253 and not isCreature(tile.uid) then     --edited            if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then                return false            end        end    end   return trueendfunction canWalkOnPos2(pos, creature, pz, water, sqm, proj)     --alterado v1.6if not pos then return false endif not pos.x then return false endif getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid &lt;= 1 and sqm then return false endif getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 919 then return false endif isInArray({4820, 4821, 4822, 4823, 4824, 4825}, getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid) and water then return false endif getTopCreature(pos).uid &gt; 0 and creature then return false endif getTileInfo(pos).protection and pz then return false end    --[[local n = not proj and 3 or 2    for i = 0, 255 do        pos.stackpos = i                           --edited pra retirar um bug.. ;x        local tile = getTileThingByPos(pos)                if tile.itemid ~= 0 and i ~= 253 and not isCreature(tile.uid) then     --edited            if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then                return false            end        end    end ]]  return trueendfunction getFreeTile(pos, cid)	if canWalkOnPos(pos, true, false, true, true, false) then		return pos	end	local positions = {}	for a = 0, 7 do		if canWalkOnPos(getPosByDir(pos, a), true, false, true, true, false) then		table.insert(positions, pos)		end	end	if #positions &gt;= 1 then		if isCreature(cid) then			local range = 1000			local ret = getThingPos(cid)			for b = 1, #positions do				if getDistanceBetween(getThingPos(cid), positions[b]) &lt; range then					ret = positions[b]					range = getDistanceBetween(getThingPos(cid), positions[b])				end			end			return ret		else			return positions[math.random(#positions)]		end	endreturn getThingPos(cid)endfunction isWalkable(pos, creature, proj, pz, water)-- by Nord    if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end    if isWater(getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid) and water then return false end    if getTopCreature(pos).uid &gt; 0 and creature then return false end    if getTileInfo(pos).protection and pz then return false, true end    local n = not proj and 3 or 2    for i = 0, 255 do        pos.stackpos = i        local tile = getTileThingByPos(pos)        if tile.itemid ~= 0 and not isCreature(tile.uid) then            if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then                return false            end        end    end    return trueendfunction isPlayerSummon(cid, uid)return getCreatureMaster(uid) == cid  --alterado v1.9endfunction isSummon(sid)return isCreature(sid) and getCreatureMaster(sid) ~= sid and isPlayer(getCreatureMaster(sid))   --alterado v1.9end function getItemsInContainerById(container, itemid) -- Function By Kydrailocal items = {}if isContainer(container) and getContainerSize(container) &gt; 0 then   for slot=0, (getContainerSize(container)-1) do       local item = getContainerItem(container, slot)       if isContainer(item.uid) then          local itemsbag = getItemsInContainerById(item.uid, itemid)          for i=0, #itemsbag do              table.insert(items, itemsbag[i])          end       else          if itemid == item.itemid then             table.insert(items, item.uid)          end       end   endendreturn itemsendfunction getPokeballsInContainer(container) -- Function By Kydrai	if not isContainer(container) then return {} end	local items = {}	if isContainer(container) and getContainerSize(container) &gt; 0 then		for slot=0, (getContainerSize(container)-1) do			local item = getContainerItem(container, slot)				if isContainer(item.uid) then					local itemsbag = getPokeballsInContainer(item.uid)					for i=0, #itemsbag do						table.insert(items, itemsbag[i])					end				elseif isPokeball(item.itemid) then					table.insert(items, item.uid)				end		end	endreturn itemsendfunction getItensUniquesInContainer(container)    --alterado v1.6if not isContainer(container) then return {} endlocal items = {}if isContainer(container) and getContainerSize(container) &gt; 0 then   for slot=0, (getContainerSize(container)-1) do       local item = getContainerItem(container, slot)       if isContainer(item.uid) then          local itemsbag = getItensUniquesInContainer(item.uid)          for i=0, #itemsbag do	          table.insert(items, itemsbag[i])          end       elseif getItemAttribute(item.uid, "unique") then          table.insert(items, item)       end   endendreturn itemsendfunction hasSpaceInContainer(container)                --alterado v1.6if not isContainer(container) then return false endif getContainerSize(container) &lt; getContainerCap(container) then return true endfor slot = 0, (getContainerSize(container)-1) do    local item = getContainerItem(container, slot)    if isContainer(item.uid) then       if hasSpaceInContainer(item.uid) then          return true       end    endendreturn falseendfunction doPlayerAddItemStacking(cid, itemid, quant) -- by mkalolocal item = getItemsInContainerById(getPlayerSlotItem(cid, 3).uid, itemid)local piles = 0if #item &gt; 0 then   for i,x in pairs(item) do       if getThing(x).type &lt; 100 then          local it = getThing(x)          doTransformItem(it.uid, itemid, it.type+quant)          if it.type+quant &gt; 100 then             doPlayerAddItem(cid, itemid, it.type+quant-100)          end       else          piles = piles+1       end   endelse   return doPlayerAddItem(cid, itemid, quant)endif piles == #item then   doPlayerAddItem(cid, itemid, quant)endendfunction createBallByStatus(cid, status, id)slot = getPlayerSlotItem(cid, 8)if slot.uid == 0 thenitem = doPlayerAddItem(cid, id) elseitem = addItemInFreeBag(getPlayerSlotItem(cid, 3).uid, id, 1)endsetStatusPokeballByStatusStr(item, status)endfunction getPokemonByName(cid, pokemon)local arraypoke = {}local container = getPlayerSlotItem(cid, 3).uidlocal pokeballs = getPokeballsInContainer(container) for i =1, #pokeballs doname = getItemAttribute(pokeballs[i], "poke") if pokemon == name thentable.insert(arraypoke, pokeballs[i])return arraypoke[1]endendreturn falseendfunction tranfBallInShiny(pokeball)doItemSetAttribute(pokeball, "shiny", "shiny")return trueendfunction getShinyByPokeball(pokeball)local shiny = getItemAttribute(pokeball, "shiny") return shiny == "shiny" and true or falseendfunction getShinyNameByPokeball(pokeball)local shiny = getItemAttribute(pokeball, "shiny") return shiny and "Shiny "..getItemAttribute(pokeball, "poke").."" or getItemAttribute(pokeball, "poke")endfunction setStatusPokeballByStatusStr(pokeball, status)local attr = string.explode(status, ",")local x = {"poke", "hp", "offense", "defense", "speed", "vitality", "specialattack", "happy", "gender", "hands", "description", "fakedesc", "boost", "ball", "defeated", "shiny", "level"}for i =1, #attr dodoItemSetAttribute(pokeball, x[i], attr[i])endendfunction copieAllStatusBalls(pokeball)local x = {"poke", "hp", "offense", "defense", "speed", "vitality", "specialattack", "happy", "gender", "hands", "description", "fakedesc", "boost", "ball", "defeated", "shiny", "level"}str = ""sep = ","for i =1, #x dolocal attr = getItemAttribute(pokeball, x[i]) or 0local t = attr ..sepstr = str..tendreturn str endfunction atualizaPokes(cid)local item = getPlayerSlotItem(cid, 8)if item.uid &lt;= 0 then return true endif not getItemAttribute(item.uid, "poke") thenreturn trueend    for i, x in pairs(fotos) doif string.lower(getItemAttribute(item.uid, "poke")) == string.lower(i) thendoTransformItem(getPlayerSlotItem(cid, 7).uid, fotos[i])if useOTClient thendoPlayerSendCancel(cid, '12//,show')endif useKpdoDlls thendoUpdateMoves(cid)endendendendfunction doSendPokemon(cid, pokemon)if getPlayerStorageValue(cid, 17000) &gt;= 1 or getPlayerStorageValue(cid, 17001) &gt;= 1 or getPlayerStorageValue(cid, 63215) &gt;= 1 or getPlayerStorageValue(cid, 75846) &gt;= 1 or getPlayerStorageValue(cid, 5700) &gt;= 1  then    --alterado v1.9 &lt;&lt;return true                                                                                                                        endif exhaustion.get(cid, 6666) and exhaustion.get(cid, 6666) &gt; 0 then return true endif #getCreatureSummons(cid) &gt; 1 and getPlayerStorageValue(cid, 212124) &lt;= 0 then     --alterado v1.6if getPlayerStorageValue(cid, 637501) == -2 or getPlayerStorageValue(cid, 637501) &gt;= 1 then  BackTeam(cid)       endend   if #getCreatureSummons(cid) &gt; 0 thent = getPlayerSlotItem(cid, 8)local btype = getPokeballType(t.itemid)local effect = pokeballs[btype].effect or 21	doReturnPokemon(cid, getCreatureSummons(cid)[1], t,effect)endt = getPlayerSlotItem(cid, 8)if t.uid ~= 0 thenpokeslot = getItemAttribute(t.uid, "poke") if pokeslot == pokemon thent = getPlayerSlotItem(cid, 8)doGoPokemon(cid, t)atualizaPokes(cid)return trueendif getPokemonByName(cid, pokemon) thenlocal poke = getPokemonByName(cid, pokemon)local attr = copieAllStatusBalls(t.uid)local id = t.itemiddoRemoveItem(t.uid)local attr2 = copieAllStatusBalls(poke)local id2 = getThing(poke).itemiddoRemoveItem(getPokemonByName(cid, pokemon))createBallByStatus(cid, attr2, id2)createBallByStatus(cid, attr, id)t = getPlayerSlotItem(cid, 8)doGoPokemon(cid, t)atualizaPokes(cid)return trueendendif getPokemonByName(cid, pokemon) thenlocal id = getThing(getPokemonByName(cid, pokemon)).itemidlocal attr = copieAllStatusBalls(getPokemonByName(cid, pokemon))doRemoveItem(getPokemonByName(cid, pokemon))createBallByStatus(cid, attr, id)t = getPlayerSlotItem(cid, 8)doGoPokemon(cid, t)atualizaPokes(cid)return trueendreturn falseendfunction sendPokeInfo(cid)local activeimg = truelocal poke = getPlayerSlotItem(cid, 8)local pokeslot = getItemAttribute(poke.uid, "poke") local pokeboost = getItemAttribute(poke.uid, "boost") or 0local pokehappy = getPlayerStorageValue(getCreatureSummons(cid)[1], 1008) or 1 doPlayerSendCancel(cid, "NewInfo/"..pokeslot.."/"..pokeboost.."/"..pokehappy.."")if activeimg thenlocal img = "ShowPoke/"doPlayerSendCancel(cid, img..pokeslot)endendfunction sendAudio(cid, audio)local function getSpectatorsFromArea(fromPosition, toPosition, multifloor)    local lenght = ((math.max(fromPosition.x, toPosition.x) - math.min(fromPosition.x, toPosition.x)) * 0.5) + 1    local width = ((math.max(fromPosition.y, toPosition.y) - math.min(fromPosition.y, toPosition.y)) * 0.5) + 1    if multifloor == true then        local ret = {}        for f = math.min(fromPosition.z, toPosition.z), math.max(fromPosition.z, toPosition.z) do            local tmp = getSpectators({x = math.min(fromPosition.x, toPosition.x) + lenght, y = math.min(fromPosition.y, toPosition.y) + width, z = f}, lenght, width, false)            for k = 1, #tmp dotable.insert(ret, tmp[k])end        end        return ret    end    return getSpectators({x = math.min(fromPosition.x, toPosition.x) + lenght, y = math.min(fromPosition.y, toPosition.y) + width, z = fromPosition.z}, lenght, width, false)endlocal pos = getThingPos(cid)local pos = getThingPos(cid)local t = 5local pos1 = {x = pos.x-t, y = pos.y-t, z = pos.z}local pos2 = {x = pos.x+t, y = pos.y+t, z = pos.z}for _, pid in pairs(getSpectatorsFromArea(pos1, pos2, true)) doif isPlayer(pid) thendoPlayerSendCancel(pid, "Audio "..audio.."")endendendfunction doShowSelectChar(cid)doPlayerSendCancel(cid, "ShowChar")endfunction doCloseSelectChar(cid)doPlayerSendCancel(cid, "CloseChar")endfunction doShowLookPlayer(cid, target, msg)doPlayerSendCancel(cid, "ShowLook/"..getPlayerStorageValue(target, 21121).."/"..msg.."")endfunction doCloseInfoPoke(cid)local activeimg = truedoPlayerSendCancel(cid, "InfoClosed")if activeimg thenlocal close = "ClosePoke"doPlayerSendCancel(cid, close)endendfunction sendAllPokemonsBarPoke(cid)local container = getPlayerSlotItem(cid, 3).uidlocal pokes = "Pokebar"local t = getPlayerSlotItem(cid, 8)if t.uid ~= 0 thenpokeslot = getItemAttribute(t.uid, "poke") pokes = pokes.."/"..pokeslot..""endlocal pokeballs = getPokeballsInContainer(container) for i =1, #pokeballs dopokemons = getItemAttribute(pokeballs[i], "poke") pokes = pokes.."/"..pokemons..""enddoPlayerSendCancel(cid, pokes)endfunction addLevelAllpokes(cid, levelup)local container = getPlayerSlotItem(cid, 3).uidlocal pokes = "Parabens seus pokemons subiram de level"local msg = ""x = falselocal t = getPlayerSlotItem(cid, 8)local pokeballs = getPokeballsInContainer(container) for i =1, #pokeballs dopokemons = getItemAttribute(pokeballs[i], "poke") local level = getItemAttribute(pokeballs[i], "level") and getItemAttribute(pokeballs[i], "level") or 1local up = level+levelupdoItemSetAttribute(pokeballs[i], "level", up)msg = msg..pokemons.." Subiu para o level "..up.."\n"x = trueendif t.uid ~= 0 thenpokeslot = getItemAttribute(t.uid, "poke") local level = getItemAttribute(t.uid, "level") and getItemAttribute(t.uid, "level") or 1local up = level+levelupdoItemSetAttribute(t.uid, "level", up)msg = msg..pokeslot.." Subiu para o level "..up.."\n"endreturn doPlayerSendTextMessage(cid, 27, msg.."------------------------------------")end </pre>
</div>
</div>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p>5. Vá na pasta data\talkactions\talkactions.xml</p>
<p> </p>
<p>Coloque essa tag:</p>
<pre class="ipsCode prettyprint">&lt;talkaction words="/poke" case-sensitive="no" event="script" value="poke.lua"/&gt;</pre>depois crie um data\talkactions\scripts\poke.lua<p> </p>
<p> </p>
<div class="ipsSpoiler" data-ipsspoiler="">
<div class="ipsSpoiler_header"><span></span></div>
<div class="ipsSpoiler_contents">
<p></p>
<pre class="ipsCode prettyprint">function onSay(cid, words, param)local cfg = {exhausted = 5, -- Time you are exhausted in seconds.storage = 5858, -- Storage used for "exhaust."exp = 2.0 -- this means 2x more experence then default}if(getPlayerStorageValue(cid, cfg.storage) &gt; os.time() and getPlayerStorageValue(cid, cfg.storage) &lt; 100+os.time()) thendoPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "You must wait another " .. getPlayerStorageValue(cid, cfg.storage) - os.time() .. ' second' .. ((getPlayerStorageValue(cid, cfg.storage) - os.time()) == 1 and "" or "s") .. " to use new pokemon.")elseif doSendPokemon(cid, param) thensendAllPokemonsBarPoke(cid)setPlayerStorageValue(cid, cfg.storage, os.time() + cfg.exhausted)return trueenddoPlayerSendTextMessage(cid, 27, "Sua barra esta desatualizada")sendAllPokemonsBarPoke(cid)endreturn trueend</pre>
</div>
</div>
<p> </p>
<p> </p>
<p>Coloque o game_barpoke dentro da pasta modules.</p>
<p> </p>
<p>Download:  www.mediafire.com/download/8bavucwof24bkxv/game_barpoke.rar</p>
<p> </p>
<p></p>
<pre class="ipsCode prettyprint lang-auto">Créditos:
Soulviling
Caotic</pre>
]]></description><guid isPermaLink="false">230109</guid><pubDate>Sat, 15 Mar 2014 22:37:23 +0000</pubDate></item><item><title>[AJUDA] client</title><link>https://xtibia.com/forum/topic/253683-ajuda-client/</link><description><![CDATA[<p>
	galera estou tentando deixar o client sem as baras laterais pra o player conseguir ver o maximo do mapa na tela se alguem solber como que eu removo elas e poder me ajudar
</p>
]]></description><guid isPermaLink="false">253683</guid><pubDate>Thu, 20 Jan 2022 14:34:30 +0000</pubDate></item><item><title>[OTC] Compilando OTCLient no Windows</title><link>https://xtibia.com/forum/topic/233798-otc-compilando-otclient-no-windows/</link><description><![CDATA[
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;text-align:center;background-color:rgb(253,253,253);"><span style="font-size:24px;"><strong>Compilando OTCLient no Windows</strong></span></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;text-align:center;background-color:rgb(253,253,253);"> </p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;text-align:center;background-color:rgb(253,253,253);"><span style="color:rgb(40,40,40);"><span style="font-family:tahoma;">Antes de mais nada, gostaria de dizer que eu não fiz o tutorial, apenas traduzi para português.</span></span><br /><span style="color:rgb(40,40,40);"><span style="font-family:tahoma;">Link de post original &gt;&gt; <a href="https://github.com/edubart/otclient/wiki/Compiling-on-Windows" title="Link externo" rel="external nofollow">https://github.com/e...ling-on-Windows</a></span></span></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);"> </p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;text-align:center;background-color:rgb(253,253,253);"><img src="http://locsancl.com.br/loc/wp-content/uploads/2014/08/separador-1.png" alt="separador-1.png" /></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;text-align:center;background-color:rgb(253,253,253);"><span style="color:rgb(40,40,40);"><span style="font-family:tahoma;">Neste tutorial eu explicarei como compilar e rodar o OTClient em máquinas com o Windows.</span></span><br /><br /><strong>Faça o download do que você precisará</strong><br /><span style="color:rgb(40,40,40);"><span style="font-family:tahoma;">Existem várias ferramentas que você precisa para compilar o projeto, cada uma delas está listada abaixo com seu link.</span></span><br /><span> </span><br /><span style="color:rgb(40,40,40);"><span style="font-family:tahoma;">* <a href="http://www.cmake.org/download/" title="Link externo" rel="external nofollow">CMake</a> </span></span><strong>2.8.8 ou superior</strong><br /><span style="color:rgb(40,40,40);"><span style="font-family:tahoma;">* <a href="http://www.codeblocks.org/downloads/26" title="Link externo" rel="external nofollow">CodeBlocks</a> </span></span><strong>sem o MinGW, nós usaremos a versão mais nova</strong><br /><span style="color:rgb(40,40,40);"><span style="font-family:tahoma;">* <a href="http://sourceforge.net/projects/mingw/files/" title="Link externo" rel="external nofollow">MinGW32</a> </span></span><strong><span style="color:rgb(40,40,40);"><span style="font-family:tahoma;">20120426 ou superior</span></span></strong><br /><span style="color:rgb(40,40,40);"><span style="font-family:tahoma;">* <a href="https://www.dropbox.com/sh/se1okacemoqzjve/UAkRCiGXXR/otclient-libs_mingw32-dwarf2.zip" title="Link externo" rel="external nofollow">otclient libraries for mingw32</a></span></span><br /><span style="color:rgb(40,40,40);"><span style="font-family:tahoma;">* </span></span><strong>Código fonte do OTClient</strong><br /><span> </span><br /><span style="color:rgb(40,40,40);"><span style="font-family:tahoma;">Tenha certeza que você instalou as últimas versões, caso contrário, as coisas podem não funcionar.</span></span></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;text-align:center;background-color:rgb(253,253,253);"> </p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;text-align:center;background-color:rgb(253,253,253);"><img src="http://locsancl.com.br/loc/wp-content/uploads/2014/08/separador-1.png" alt="separador-1.png" /></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;text-align:center;background-color:rgb(253,253,253);"><span style="color:rgb(40,40,40);"><span style="font-family:tahoma;"><strong><span style="font-size:14px;">Instale o MinGW32</span></strong></span></span><br /><br /><span style="color:rgb(40,40,40);"><span style="font-family:tahoma;">Observe que o GCC que deve ser usado é o 4.6 ou superior, qualquer versão antiga do GCC que você já tenha instalado não funcionará porque o OTClient precisa de alguns recursos que só são suportados por compiladores recentes. Rode o instalador do MinGW32 e no processo de instalação quando for perguntado </span></span><strong>tenha certeza que você marcou a caixa para usar o catálogo mais atual</strong><span style="color:rgb(40,40,40);"><span style="font-family:tahoma;">.</span></span></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;text-align:center;background-color:rgb(253,253,253);"> </p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;text-align:center;background-color:rgb(253,253,253);"><img src="http://locsancl.com.br/loc/wp-content/uploads/2014/08/separador-1.png" alt="separador-1.png" /></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;text-align:center;background-color:rgb(253,253,253);"><span style="color:rgb(40,40,40);"><span style="font-family:tahoma;"><strong><span style="font-size:14px;">Instale o CMake</span></strong></span></span><br /><br /><span style="color:rgb(40,40,40);">Rode o instalador do CMake, durante o processo de instalação deverá ser perguntado se você quqer que o CMake configure suas variáveis do sistema(PATH), diga que não, isso será manualmente feito nos próximos passos.</span></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;text-align:center;background-color:rgb(253,253,253);"> </p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;text-align:center;background-color:rgb(253,253,253);"><img src="http://locsancl.com.br/loc/wp-content/uploads/2014/08/separador-1.png" alt="separador-1.png" /></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;text-align:center;background-color:rgb(253,253,253);"><strong><span style="font-size:14px;">Instale o CodeBlocks</span></strong><br /><br /><span style="color:rgb(40,40,40);">Rode o instalador do CodeBlocks, Lembre-se, </span><strong>NÃO</strong><span style="color:rgb(40,40,40);"> instale o MinGW quando ele pedir.</span></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;text-align:center;background-color:rgb(253,253,253);"> </p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;text-align:center;background-color:rgb(253,253,253);"><img src="http://locsancl.com.br/loc/wp-content/uploads/2014/08/separador-1.png" alt="separador-1.png" /></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;text-align:center;background-color:rgb(253,253,253);"><span style="color:rgb(40,40,40);"><span style="font-family:tahoma;"><strong><span style="font-size:14px;">Instale as bibliotecas do OTClient</span></strong></span></span><br /><br /><span style="color:rgb(40,40,40);">Extraia o arquivo </span><strong>otclient-libs_mingw32-dwarf2.zip</strong><span style="color:rgb(40,40,40);"> em C:/MinGW/. Esse arquivo zip contem três pastas *lib, include e bin, que serão fundidas a C:/MinGW/lib, C:/MinGW/include e C:/MinGW/bin.</span><br /></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;text-align:center;background-color:rgb(253,253,253);"><br /><img src="http://locsancl.com.br/loc/wp-content/uploads/2014/08/separador-1.png" alt="separador-1.png" /></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;text-align:center;background-color:rgb(253,253,253);"><strong><span style="font-size:14px;">Configure a variável PATH do sistema</span></strong><br /><br /><span style="color:rgb(40,40,40);">Agora que todas as ferramentas necessárias estão instaladas, você deve configurar a variável </span><strong>PATH</strong><span style="color:rgb(40,40,40);"> do sistema, para fazer o CMake encontrar o MinGW32 e as bibliotecas instaladas, vá para:</span></p>
<pre class="ipsCode prettyprint">
Painel de controle -&gt; Sistema -&gt; Avançado -&gt; Variáveis de Ambiente</pre>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;text-align:center;background-color:rgb(253,253,253);"><span style="color:rgb(40,40,40);">Verifique se na área Variáveis de usuário, existe a variável </span><strong>PATH</strong><span style="color:rgb(40,40,40);">, se não, crie uma e defina ela como:</span></p>
<pre class="ipsCode prettyprint">
C:\Program Files\CMake 2.8\bin;C:\MinGW\bin;C:\MinGW\lib;C:\MinGW\include</pre>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;text-align:center;background-color:rgb(253,253,253);"><span style="color:rgb(40,40,40);">Tenha certeza que a variável do usuário PATH existe e que refere para o diretório do CMake.</span></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;text-align:center;background-color:rgb(253,253,253);"> </p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;text-align:center;background-color:rgb(253,253,253);"><img src="http://locsancl.com.br/loc/wp-content/uploads/2014/08/separador-1.png" alt="separador-1.png" /></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;text-align:center;background-color:rgb(253,253,253);"> </p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;text-align:center;background-color:rgb(253,253,253);"><strong><span style="font-size:14px;">Baixe o código fonte do OTClient</span></strong><br /><br /><span style="color:rgb(40,40,40);"><span style="font-family:tahoma;">Vá para <a href="https://github.com/edubart/otclient" title="Link externo" rel="external nofollow">página de download</a> </span></span><span style="color:rgb(40,40,40);"><span style="font-family:tahoma;">e faça o download do código fonte do OTCLient. O diretório onde você colocará esses arquivos não deve ser longo. Por exemplo: "C:\OTClient\" é um</span></span><strong> bom </strong><span style="color:rgb(40,40,40);"><span style="font-family:tahoma;">diretório, mas "C:\Program Files\OTClient" não é.</span></span></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);"> </p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;text-align:center;background-color:rgb(253,253,253);">                     <img src="http://locsancl.com.br/loc/wp-content/uploads/2014/08/separador-1.png" alt="separador-1.png" /></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);"> </p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;text-align:center;background-color:rgb(253,253,253);"><span style="color:rgb(40,40,40);"><strong>Gere o arquivo de projeto do CodeBlocks</strong></span><br /><br /><br /><span style="color:rgb(40,40,40);">Rode o CMake-gui.exe localizado em \Program Files\CMake 2.8\bin, e especifique o diretório onde você colocou o código fonte do OTCLient, e onde você quer que os arquivos do projeto sejam criados. Clique em configure, seleciona CodeBlocks - MinGW Makefiles, como gerador e gere os arquivos do projeto.</span></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);"> </p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;text-align:center;background-color:rgb(253,253,253);">                  <img src="http://locsancl.com.br/loc/wp-content/uploads/2014/08/separador-1.png" alt="separador-1.png" /></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);"> </p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);"> </p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);"> </p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;text-align:center;background-color:rgb(253,253,253);"><span style="color:rgb(40,40,40);"><strong>Compilando</strong></span><br /><br /><span style="color:rgb(40,40,40);">Abra o arquivo de projeto do CodeBlocks que foi gerado (**otclient.cbp**) pelo CMake com o CodeBlocks. Para compilar você deve primeiro configurar a pasta do MinGW32, indo em </span><strong>Settings</strong><span style="color:rgb(40,40,40);"> &gt;</span><strong> Compiler And Debugger...</strong><span style="color:rgb(40,40,40);"> &gt; </span><strong>Toolchain Executables</strong><span style="color:rgb(40,40,40);">.</span><br /><br /><span style="color:rgb(40,40,40);">Tenha certeza de copiar os arquivos Tibia.dat e Tibia.spr dentro da pasta /data/things// antes de rodar o cliente.</span></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);"> </p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);"> </p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);"> </p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;text-align:center;background-color:rgb(253,253,253);">                    <img src="http://locsancl.com.br/loc/wp-content/uploads/2014/08/separador-1.png" alt="separador-1.png" /></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);"> </p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;text-align:center;background-color:rgb(253,253,253);"><span style="color:rgb(40,40,40);"><strong>Suporte a Dx9</strong></span><br /><br /><br /><span style="color:rgb(40,40,40);">Se você quiser ativar a camada de suporte do dx9 para o OTClient, você deve compilar com -DOPENGLES=2.0. Agora o OTClient.exe vai pedir pelas dll libEGL.dll e libGLESv2.dll que você pode conseguir aqui &gt;&gt; <a href="https://dl.dropbox.com/u/49948294/otclient/dx9_dlls.zip" title="Link externo" rel="external nofollow">https://dl.dropbox.c...nt/dx9_dlls.zip</a>, </span><span style="color:rgb(40,40,40);">coloque essas dll na pasta do OTClient.exe </span></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;text-align:center;background-color:rgb(253,253,253);"> </p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;text-align:center;background-color:rgb(253,253,253);"><span style="color:rgb(40,40,40);">Créditos: </span></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;text-align:center;background-color:rgb(253,253,253);"><strong><span style="color:rgb(40,40,40);">Eu por traduzir do github e trazer pra cá </span></strong></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;text-align:center;background-color:rgb(253,253,253);"><strong><span style="color:rgb(40,40,40);">Edubart pelo tutorial original </span></strong></p>
]]></description><guid isPermaLink="false">233798</guid><pubDate>Fri, 08 May 2015 15:50:25 +0000</pubDate></item><item><title>Adicionando mais tiles a vis&#xE3;o do jogador!</title><link>https://xtibia.com/forum/topic/238779-adicionando-mais-tiles-a-vis%C3%A3o-do-jogador/</link><description><![CDATA[
<p style="text-align:center;"><strong>Hoje eu vim ensinar como aumenta a "tela" de jogo do OTCLIENT</strong></p>
<p style="text-align:center;"><strong><img src="https://scontent-gru2-1.xx.fbcdn.net/hphotos-xpt1/t31.0-8/981068_545153415659600_5461697205350007133_o.jpg" alt="981068_545153415659600_54616972053500071" /></strong></p>
<p style="text-align:center;">(Desculpe o merchant, era a unica imagem que eu tinha salvo)</p>
<p style="text-align:center;"> </p>
<p style="text-align:center;"><strong>Testado em : </strong>0.3.6pl1, Pode funcionar em 1.0 com alterações pequenas.</p>
<p style="text-align:center;"> </p>
<p style="text-align:center;"> </p>
<p style="text-align:center;">Em protocolgame.cpp ache:</p>
<pre class="ipsCode prettyprint lang-auto">
  return ((x &gt;= myPos.x - 8 + offsetz) &amp;&amp; (x &lt;= myPos.x + 9 + offsetz) &amp;&amp;
     (y &gt;= myPos.y - 6 + offsetz) &amp;&amp; (y &lt;= myPos.gety + 7 + offsetz));
</pre>
<p style="text-align:center;">e troque por:</p>
<pre class="ipsCode prettyprint lang-auto">
	return ((x &gt;= myPos.x - Map::maxClientViewportX + offsetz) &amp;&amp; (x &lt;= myPos.x + (Map::maxClientViewportX+1) + offsetz) &amp;&amp;
     (y &gt;= myPos.y - Map::maxClientViewportY + offsetz) &amp;&amp; (y &lt;= myPos.y + (Map::maxClientViewportY+1) + offsetz));
</pre>
<p style="text-align:center;">Agora, continuando em protocolgame.cpp ache:</p>
<pre class="ipsCode prettyprint lang-auto">
GetMapDescription(pos.x - 8, pos.y - 6, pos.z, 18, 14, msg);
</pre>
<p style="text-align:center;">E troque por:</p>
<pre class="ipsCode prettyprint lang-auto">
  GetMapDescription(pos.x - Map::maxClientViewportX, pos.y - Map::maxClientViewportY, pos.z, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, msg);
</pre>
<p style="text-align:center;">Continuando em protocolgame.cpp ache a função:</p>
<pre class="ipsCode prettyprint lang-auto">
void ProtocolGame::sendMoveCreature(const Creature* creature, const Tile* newTile, const Position&amp; newPos,
	uint32_t newStackpos, const Tile* oldTile, const Position&amp; oldPos, uint32_t oldStackpos, bool teleport)
</pre>
<p style="text-align:center;">Dentro da função encontre:</p>
<pre class="ipsCode prettyprint lang-auto">
A parte que começa em

if (oldPos.y &gt; newPos.y) 
{


e Termina em

   GetMapDescription(newPos.x - 8, newPos.y - 6, newPos.z, 1, 14, msg);
}
</pre>
<p style="text-align:center;">e troque por:</p>
<pre class="ipsCode prettyprint lang-auto">
if (oldPos.y &gt; newPos.y) { // north, for old x
   msg-&gt;AddByte(0x65);
   GetMapDescription(oldPos.x - Map::maxClientViewportX, newPos.y - Map::maxClientViewportY, newPos.z, (Map::maxClientViewportX+1)*2, 1, msg);
} else if (oldPos.y &lt; newPos.y) { // south, for old x
  msg-&gt;AddByte(0x67);
   GetMapDescription(oldPos.x - Map::maxClientViewportX, newPos.y + (Map::maxClientViewportY+1), newPos.z, (Map::maxClientViewportX+1)*2, 1, msg);
}
if (oldPos.x &lt; newPos.x) { // east, [with new y]
  msg-&gt;AddByte(0x66);
   GetMapDescription(newPos.x + (Map::maxClientViewportX+1), newPos.y - Map::maxClientViewportY, newPos.z, 1, (Map::maxClientViewportY+1)*2, msg);
} else if (oldPos.x &gt; newPos.x) { // west, [with new y]
   msg-&gt;AddByte(0x68);
   GetMapDescription(newPos.x - Map::maxClientViewportX, newPos.y - Map::maxClientViewportY, newPos.z, 1, (Map::maxClientViewportY+1)*2, msg);

</pre>
<p style="text-align:center;">Agora ache:</p>
<pre class="ipsCode prettyprint lang-auto">
if(newPos.z == 7)
 {
   int32_t skip = -1;
   GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 5, 18, 14, 3, skip); //(floor 7 and 6 already set)
   GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 4, 18, 14, 4, skip);
   GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 3, 18, 14, 5, skip);
   GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 2, 18, 14, 6, skip);
   GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 1, 18, 14, 7, skip);
   GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 0, 18, 14, 8, skip);
</pre>
<p style="text-align:center;"> Depedendo da Source, a parte será assim:</p>
<p style="text-align:center;"></p>
<div class="ipsSpoiler" data-ipsspoiler="">
<div class="ipsSpoiler_header"><span></span></div>
<div class="ipsSpoiler_contents">
<p> </p>
<pre class="ipsCode prettyprint lang-auto">
if(newPos.z == 7) {
   int32_t skip = -1;
   GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 5, 18, 14, 3, skip); //(floor 7 and 6 already set)
   GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 4, 18, 14, 4, skip);
   GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 3, 18, 14, 5, skip);
   GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 2, 18, 14, 6, skip);
   GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 1, 18, 14, 7, skip);
   GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 0, 18, 14, 8, skip);
</pre>
<p> </p>
</div>
</div>
<p> </p>
<p style="text-align:center;">Por:</p>
<pre class="ipsCode prettyprint lang-auto">
	if(newPos.z == 7) //going to surface
	{
		int32_t skip = -1;
   GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, 5, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 3, skip); //(floor 7 and 6 already set)
   GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, 4, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 4, skip);
   GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, 3, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 5, skip);
   GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, 2, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 6, skip);
   GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, 1, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 7, skip);
   GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, 0, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 8, skip);
</pre>
<p style="text-align:center;">Agora ache:</p>
<pre class="ipsCode prettyprint lang-auto">
else if(newPos.z &gt; 7) 
{
   int32_t skip = -1;
   GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, oldPos.getZ() - 3, 18, 14, 3, skip);
</pre>
<p style="text-align:center;">Depedendo da source será assim:</p>
<p style="text-align:center;"></p>
<div class="ipsSpoiler" data-ipsspoiler="">
<div class="ipsSpoiler_header"><span></span></div>
<div class="ipsSpoiler_contents">
<p> </p>
<pre class="ipsCode prettyprint lang-auto">
else if(newPos.z &gt; 7) {
   int32_t skip = -1;
   GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, oldPos.getZ() - 3, 18, 14, 3, skip);
</pre>
<p> </p>
</div>
</div>
<p> </p>
<p style="text-align:center;">Por:</p>
<pre class="ipsCode prettyprint lang-auto">
	else if(newPos.z &gt; 7) //underground, going one floor up (still underground)
	{
		int32_t skip = -1;
 GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, oldPos.z - 3, (Map::maxClientViewportX+1), (Map::maxClientViewportY+1)*2, 3, skip);</pre>
<p style="text-align:center;">Agora ache:</p>
<pre class="ipsCode prettyprint lang-auto">
//moving up a floor up makes us out of sync
//west
msg-&gt;AddByte(0x68);
GetMapDescription(oldPos.x - 8, oldPos.y - 5, newPos.z, 1, 14, msg);
//north
msg-&gt;AddByte(0x65);
GetMapDescription(oldPos.x - 8, oldPos.y - 6, newPos.z, 18, 1, msg);
</pre>
<p style="text-align:center;">E troque por:</p>
<pre class="ipsCode prettyprint lang-auto">
	//moving up a floor up makes us out of sync
	//west
	msg-&gt;AddByte(0x68);
GetMapDescription(oldPos.x - Map::maxClientViewportX, oldPos.y - (Map::maxClientViewportY-1), newPos.z, 1, (Map::maxClientViewportY+1)*2, msg);

	//north
	msg-&gt;AddByte(0x65);
GetMapDescription(oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, newPos.z, (Map::maxClientViewportX+1)*2, 1, msg);
</pre>
<p style="text-align:center;">Agora ache:</p>
<pre class="ipsCode prettyprint lang-auto">
if(newPos.z == 8) 
{
   int32_t skip = -1;
   GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, newPos.z, 18, 14, -1, skip);
   GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, newPos.z + 1, 18, 14, -2, skip);
   GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, newPos.z + 2, 18, 14, -3, skip);
</pre>
<p style="text-align:center;">Dependendo da source poderá ser:</p>
<p style="text-align:center;"></p>
<div class="ipsSpoiler" data-ipsspoiler="">
<div class="ipsSpoiler_header"><span></span></div>
<div class="ipsSpoiler_contents">
<p> </p>
<pre class="ipsCode prettyprint lang-auto">
if(newPos.z == 8) {   
   int32_t skip = -1;
   GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, newPos.z, 18, 14, -1, skip);
   GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, newPos.z + 1, 18, 14, -2, skip);
   GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, newPos.z + 2, 18, 14, -3, skip);
</pre>
<p> </p>
</div>
</div>
<p> </p>
<p style="text-align:center;">e troque por:</p>
<pre class="ipsCode prettyprint lang-auto">
	if(newPos.z == 8)
	{
		int32_t skip = -1;
   GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, newPos.z, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, -1, skip);
   GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, newPos.z + 1, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, -2, skip);
   GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, newPos.z + 2, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, -3, skip);
</pre>
<p style="text-align:center;">Agora ache:</p>
<pre class="ipsCode prettyprint lang-auto">
else if(newPos.z &gt; oldPos.z &amp;&amp; newPos.z &gt; 8 &amp;&amp; newPos.z &lt; 14) 
{
   int32_t skip = -1;
GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, newPos.z + 2, 18, 14, -3, skip);
</pre>
<p style="text-align:center;">Depedendo da source pode ser assim:</p>
<p style="text-align:center;"></p>
<div class="ipsSpoiler" data-ipsspoiler="">
<div class="ipsSpoiler_header"><span></span></div>
<div class="ipsSpoiler_contents">
<p> </p>
<pre class="ipsCode prettyprint lang-auto">
else if(newPos.z &gt; oldPos.z &amp;&amp; newPos.z &gt; 8 &amp;&amp; newPos.z &lt; 14) {
   int32_t skip = -1;
   GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, newPos.z + 2, 18, 14, -3, skip); </pre>
<p style="text-align:center;"></p>
</div>
</div>
<p> </p>
<p style="text-align:center;">E troque por:</p>
<pre class="ipsCode prettyprint lang-auto">
	else if(newPos.z &gt; oldPos.z &amp;&amp; newPos.z &gt; 8 &amp;&amp; newPos.z &lt; 14)
	{
		int32_t skip = -1;
   GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, newPos.z + 2, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, -3, skip);
</pre>
<p style="text-align:center;">Agora em map.h edite essa parte como quiser:</p>
<pre class="ipsCode prettyprint lang-auto">
  static const int32_t maxViewportX = 11; //min: maxClientViewportX + 1
  static const int32_t maxViewportY = 11; //min value: maxClientViewportY + 1
  static const int32_t maxClientViewportX = 8;
  static const int32_t maxClientViewportY = 6;
</pre>
<p style="text-align:center;">O modo de Edição é assim:</p>
<p style="text-align:center;"></p>
<div class="ipsSpoiler" data-ipsspoiler="">
<div class="ipsSpoiler_header"><span></span></div>
<div class="ipsSpoiler_contents">
<p> </p>
<p style="text-align:center;"><span style="color:rgb(0,0,0);font-size:13px;background-color:rgb(250,250,250);">  </span></p>
<pre class="ipsCode prettyprint">
static const int32_t maxViewportX = 11; //Minimo: maxClientViewportX + 2
  static const int32_t maxViewportY = 11; //Minimo: maxClientViewportY + 2
  static const int32_t maxClientViewportX = 8;
  static const int32_t maxClientViewportY = 6; </pre>
<p style="text-align:center;">Ou seja, se você por 10 em maxClientViewportX você tem que por no minimo 12 em maxClientViewportX</p>
<p style="text-align:center;">Mais uma coisa, tente por menos de 20, aqui eu testei e crasha o jogo, eu consegui estabilizar em X = 15 e Y = 15</p>
<p style="text-align:center;"></p>
</div>
</div>
<p> </p>
<p style="text-align:center;"> </p>
<p style="text-align:center;">Agora em <strong>map.cpp do OTCLIENT</strong></p>
<p style="text-align:center;">Ache:</p>
<pre class="ipsCode prettyprint lang-auto">
void Map::resetAwareRange()
{
   AwareRange range;
   range.left = 8;
   range.top = 6;
   range.bottom = 7;
   range.right = 9;
   setAwareRange(range);
}
</pre>
<p style="text-align:center;">Troque por:</p>
<pre class="ipsCode prettyprint lang-auto">
{
   AwareRange range;
   range.left = 8; //Valor que colocou em maxClientViewportX
   range.top = 6; //Valor que colocou em maxClientViewportY
   range.bottom = range.top+1;
   range.right = range.left+1;
   setAwareRange(range);
}
</pre>
<p style="text-align:center;">Créditos:</p>
<p style="text-align:center;"><strong>Flatlander </strong> - OTLAND - Criação</p>
<p style="text-align:center;"><strong>Ceetros</strong> - Tradução</p>
<p style="text-align:center;"> </p>
<p style="text-align:center;"> </p>
<p style="text-align:center;"><span style="font-size:18px;"><strong>Agora vamos deixar o OTCLIENT lindão.</strong></span></p>
<p style="text-align:center;"> </p>
<p style="text-align:center;"> </p>
<p style="text-align:center;"> </p>
<p style="text-align:center;"> </p>
<p style="text-align:center;"> </p>
<p style="text-align:center;">Troque tudo de modules/game_interface/interface.lua (na pasta do OTCLIENT)</p>
<p style="text-align:center;">por:</p>
<p style="text-align:center;"><a href="http://pastebin.com/tH7qyreW" rel="external nofollow">http://pastebin.com/tH7qyreW</a></p>
<p style="text-align:center;">(para o tutorial não ficar muito grande botei no pastebin, já que o spoiler tá bugando)</p>
<p style="text-align:center;">Creditos dessa parte: </p>
<p style="text-align:center;"><strong>Edubart </strong>(Criador do <a href="https://github.com/edubart/otclient" rel="external nofollow">OTCLIENT</a>)</p>
<p style="text-align:center;"><strong>Ceetros</strong></p>
<p> </p>
<p style="text-align:center;"><span style="font-size:8px;">Caso tenha ajudado, dê um rep+ <img src="https://cdn.xtibia.com/emoticons/smile_3.png" alt=":)" /></span></p>
]]></description><guid isPermaLink="false">238779</guid><pubDate>Wed, 13 Jan 2016 23:48:55 +0000</pubDate></item><item><title>[Tutorial] Descompliar Client De Qualquer OtServ</title><link>https://xtibia.com/forum/topic/223994-tutorial-descompliar-client-de-qualquer-otserv/</link><description><![CDATA[
<p><span style="color:rgb(78,86,94);font-family:'Trebuchet MS', tahoma, helvetica, arial, sans-serif;font-size:12px;">Fala XTibianos,trago a voces mais um tutorial para a comunidade.Dessa ves como descompilar client de tibia.</span><br /><br /><em><span><strong>OBS:</strong></span>Downloads no final do topico.</em></p>
<p> </p>
<p><span style="color:rgb(255,140,0);font-family:'Trebuchet MS', tahoma, helvetica, arial, sans-serif;font-size:18px;">Começando!!!</span></p>
<p><span style="color:rgb(78,86,94);font-family:'Trebuchet MS', tahoma, helvetica, arial, sans-serif;font-size:12px;">Crie uma pasta onde vai ficar o client e os arquivos descompilados.</span><br /><br /><span style="color:rgb(78,86,94);font-family:'Trebuchet MS', tahoma, helvetica, arial, sans-serif;font-size:12px;">Ficando Assim</span></p>
<p> </p>
<p><span style="color:rgb(78,86,94);font-family:'Trebuchet MS', tahoma, helvetica, arial, sans-serif;font-size:12px;">.<img src="http://i.imgur.com/wEGA3.png" alt="wEGA3.png" /></span></p>
<p> </p>
<p><span style="color:rgb(78,86,94);font-family:'Trebuchet MS', tahoma, helvetica, arial, sans-serif;font-size:12px;">Depois Ponha o Client dentro desta pasta.</span></p>
<p><span style="color:rgb(78,86,94);font-family:'Trebuchet MS', tahoma, helvetica, arial, sans-serif;font-size:12px;">Ficando Assim.</span></p>
<p><span style="color:rgb(78,86,94);font-family:'Trebuchet MS', tahoma, helvetica, arial, sans-serif;font-size:12px;"><img src="http://i.imgur.com/0h6fN.png" alt="0h6fN.png" /></span></p>
<p> </p>
<p><span style="color:rgb(78,86,94);font-family:'Trebuchet MS', tahoma, helvetica, arial, sans-serif;font-size:12px;">Abra o client e o TibiaUnpacker.</span></p>
<p><span style="color:rgb(78,86,94);font-family:'Trebuchet MS', tahoma, helvetica, arial, sans-serif;font-size:12px;">Ficando Assim,o processo.</span></p>
<p><img src="http://i.imgur.com/xPQub.jpg" alt="xPQub.jpg" /></p>
<p> </p>
<p><span style="color:rgb(78,86,94);font-family:'Trebuchet MS', tahoma, helvetica, arial, sans-serif;font-size:12px;">Lá em Process,clique na caixa e procure pelo processo do seu client.</span><br /><br /><span style="color:rgb(78,86,94);font-family:'Trebuchet MS', tahoma, helvetica, arial, sans-serif;font-size:12px;">Depois vá em Unpack</span></p>
<p> </p>
<p><span style="color:rgb(78,86,94);font-family:'Trebuchet MS', tahoma, helvetica, arial, sans-serif;font-size:12px;">Aguarde o Processo,Quando aparecer a mensagem</span></p>
<p><span style="color:rgb(102,102,0);">[</span><span style="color:rgb(102,0,102);">Library</span><span style="color:rgb(102,102,0);">]</span><span> </span><span style="color:rgb(102,0,102);">Unpacking</span><span> process has been completed</span><span style="color:rgb(102,102,0);">.</span><br /><span style="color:rgb(78,86,94);font-family:'Trebuchet MS', tahoma, helvetica, arial, sans-serif;font-size:12px;">O client foi descompilado com sucesso.</span><br /><br /><span style="color:rgb(78,86,94);font-family:'Trebuchet MS', tahoma, helvetica, arial, sans-serif;font-size:12px;">Depois vá na pasta onde estava o client e la estará os arquivos.<img src="http://i.imgur.com/qMoQr.png" alt="qMoQr.png" /></span></p>
<p> </p>
<p><span style="text-align:center;color:rgb(78,86,94);font-family:'Trebuchet MS', tahoma, helvetica, arial, sans-serif;font-size:12px;">Download:</span></p>
<p style="color:rgb(78,86,94);font-family:'Trebuchet MS', tahoma, helvetica, arial, sans-serif;font-size:12px;"><a href="http://speedy.sh/zXF4p/wookash-s-tibia-unpacker.rar" title="Link externo" rel="external nofollow">TibiaUnpacker</a></p>
<p style="color:rgb(78,86,94);font-family:'Trebuchet MS', tahoma, helvetica, arial, sans-serif;font-size:12px;">Scan:</p>
<p style="color:rgb(78,86,94);font-family:'Trebuchet MS', tahoma, helvetica, arial, sans-serif;font-size:12px;"><a href="https://www.virustotal.com/file/ae338701b219eba6880c84f15d1fce50c8f66d952d7ac1d43fdeab6dcdac2536/analysis/1353200774/" title="Link externo" rel="external nofollow">Aqui</a></p>
<div> </div>
<div>
<p style="color:rgb(78,86,94);font-family:'Trebuchet MS', tahoma, helvetica, arial, sans-serif;font-size:12px;">Créditos:</p>
<p style="color:rgb(78,86,94);font-family:'Trebuchet MS', tahoma, helvetica, arial, sans-serif;font-size:12px;"><strong><span style="color:rgb(128,0,128);">Mozark001.Pelo tutorial.</span></strong></p>
<p style="color:rgb(78,86,94);font-family:'Trebuchet MS', tahoma, helvetica, arial, sans-serif;font-size:12px;"><strong><span style="color:rgb(128,0,128);">E Eu De Relembra Como Descompliar Facio Pra Voçês</span></strong></p>
</div>
<p> </p>
]]></description><guid isPermaLink="false">223994</guid><pubDate>Sat, 16 Nov 2013 18:03:38 +0000</pubDate></item><item><title>[OTClient Module] Client Version</title><link>https://xtibia.com/forum/topic/253028-otclient-module-client-version/</link><description><![CDATA[<p>
	Eai galera do Xtibia hoje eu trago um module que desenvolvi para notificar o player caso ele esteja com o cliente desatualizado.
</p>

<p>
	Esse tutorial é para <strong>TFS 1.x</strong>, da pra usar em <strong>TFS 0.x</strong> mas terá que adaptar o código e ter OPCODES na sua source!<br /><br />
	Como instalar o module:
</p>

<p>
	 
</p>

<p>
	1 - Pegue a pasta do module e coloque na pasta <strong>mods</strong> do seu client.
</p>

<p>
	no arquivo module.lua você vai encontrar a seguinte linha: 
</p>

<pre class="ipsCode prettyprint lang-lua prettyprinted">
<span class="pln"> </span><span class="kwd">local</span><span class="pln"> VERSION </span><span class="pun">=</span><span class="pln"> </span><span class="str">"1.0"</span></pre>

<p>
	nessa linha você define a versão atual do seu client, a cada novo client você modifica esse valor!<br /><br />
	2 - Vá até a pasta creaturescripts/scripts do seu servidor e crie uma novo script chamado clientVersion.lua<br /><br />
	dentro desse script, cole o seguinte código:<br /><br />
	 
</p>

<div>
	<div class="ipsSpoiler" data-ipsspoiler="">
		<div class="ipsSpoiler_header">
			<span>Spoiler</span>
		</div>

		<div class="ipsSpoiler_contents">
			<p>
				 
			</p>

			<div>
				<pre class="ipsCode prettyprint lang-lua prettyprinted">

<span class="kwd">local</span><span class="pln"> OPCODE </span><span class="pun">=</span><span class="pln"> </span><span class="lit">55</span><span class="pln">
</span><span class="kwd">local</span><span class="pln"> VERSION </span><span class="pun">=</span><span class="pln"> </span><span class="str">"1.0"</span><span class="pln">
</span><span class="kwd">local</span><span class="pln"> MESSAGE </span><span class="pun">=</span><span class="pln"> </span><span class="str">"O seu cliente esta desatualizado, e de extrema importancia que voce faca o download do novo client ("</span><span class="pun">..</span><span class="pln">VERSION</span><span class="pun">..</span><span class="str">") em nosso website."</span><span class="pln">

</span><span class="kwd">function</span><span class="pln"> onExtendedOpcode</span><span class="pun">(</span><span class="pln">player</span><span class="pun">,</span><span class="pln"> opcode</span><span class="pun">,</span><span class="pln"> buffer</span><span class="pun">)</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> opcode </span><span class="pun">==</span><span class="pln"> OPCODE </span><span class="kwd">then</span><span class="pln">
        </span><span class="kwd">local</span><span class="pln"> data </span><span class="pun">=</span><span class="pln"> stringSplit</span><span class="pun">(</span><span class="pln">buffer</span><span class="pun">,</span><span class="pln"> </span><span class="str">","</span><span class="pun">)</span><span class="pln">

        </span><span class="kwd">if</span><span class="pln"> data</span><span class="pun">[</span><span class="lit">1</span><span class="pun">]</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="str">"clientVersion"</span><span class="pln"> </span><span class="kwd">then</span><span class="pln">
            CLIENT_VERSION </span><span class="pun">=</span><span class="pln"> data</span><span class="pun">[</span><span class="lit">2</span><span class="pun">]</span><span class="pln">
            </span><span class="kwd">if</span><span class="pln"> CLIENT_VERSION </span><span class="pun">~=</span><span class="pln"> VERSION </span><span class="kwd">then</span><span class="pln">
                player</span><span class="pun">:</span><span class="pln">sendTextMessage</span><span class="pun">(</span><span class="pln">MESSAGE_STATUS_WARNING</span><span class="pun">,</span><span class="pln"> MESSAGE</span><span class="pun">)</span><span class="pln">
            </span><span class="kwd">end</span><span class="pln">
        </span><span class="kwd">end</span><span class="pln">
    </span><span class="kwd">end</span><span class="pln">
</span><span class="kwd">end</span><span class="pln">

</span><span class="kwd">function</span><span class="pln"> stringSplit</span><span class="pun">(</span><span class="pln">inputstr</span><span class="pun">,</span><span class="pln"> sep</span><span class="pun">)</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> sep </span><span class="pun">==</span><span class="pln"> </span><span class="kwd">nil</span><span class="pln"> </span><span class="kwd">then</span><span class="pln">
        sep </span><span class="pun">=</span><span class="pln"> </span><span class="str">"%s"</span><span class="pln">
    </span><span class="kwd">end</span><span class="pln">
    </span><span class="kwd">local</span><span class="pln"> t</span><span class="pun">={}</span><span class="pln">
    </span><span class="kwd">for</span><span class="pln"> str </span><span class="kwd">in</span><span class="pln"> string</span><span class="pun">.</span><span class="pln">gmatch</span><span class="pun">(</span><span class="pln">inputstr</span><span class="pun">,</span><span class="pln"> </span><span class="str">"([^"</span><span class="pun">..</span><span class="pln">sep</span><span class="pun">..</span><span class="str">"]+)"</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">do</span><span class="pln">
        table</span><span class="pun">.</span><span class="pln">insert</span><span class="pun">(</span><span class="pln">t</span><span class="pun">,</span><span class="pln"> str</span><span class="pun">)</span><span class="pln">
    </span><span class="kwd">end</span><span class="pln">
    </span><span class="kwd">return</span><span class="pln"> t
</span><span class="kwd">end</span></pre>

				<p>
					 
				</p>
			</div>

			<p>
				 
			</p>
		</div>
	</div>

	<p>
		 
	</p>

	<p>
		Em
	</p>

	<pre class="ipsCode prettyprint lang-lua prettyprinted">
<span class="kwd">local</span><span class="pln"> VERSION </span><span class="pun">=</span><span class="pln"> </span><span class="str">"1.0"</span></pre>

	<p>
		você define a mesma versão que colocou no client, sempre que atualizar o client, deve alterar a variável VERSION desse script acima, do mesmo modo que altera no module do client.
	</p>

	<p>
		Em local MESSAGE = "..." você pode alterar a mensagem que será enviada ao player caso ele esteja com um cliente desatualizado.
	</p>

	<p>
		 
	</p>

	<p>
		3 - Em creaturescripts/creaturescripts.xml adicione a seguinte linha:
	</p>

	<p>
		 
	</p>

	<pre class="ipsCode prettyprint lang-xml prettyprinted">
<span class="tag">&lt;event</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"extendedopcode"</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"ClientVersion"</span><span class="pln"> </span><span class="atn">script</span><span class="pun">=</span><span class="atv">"clientVersion.lua"</span><span class="pln"> </span><span class="tag">/&gt;</span></pre>

	<p>
		 
	</p>

	<p>
		4 - Agora no arquivo creaturescripts/login.lua registre esse evento <strong>antes de return true</strong>
	</p>

	<p>
		 
	</p>

	<pre class="ipsCode prettyprint lang-lua prettyprinted">
<span class="pln">player</span><span class="pun">:</span><span class="pln">registerEvent</span><span class="pun">(</span><span class="str">"ClientVersion"</span><span class="pun">)</span></pre>

	<p>
		 
	</p>

	<p>
		Pronto, o module foi instalado!
	</p>

	<p>
		Print:<br />
		 
	</p>

	<p>
		<a class="ipsAttachLink ipsAttachLink_image" href="//cdn.xtibia.com/monthly_2021_04/image.png.5f57ef914005d628f5b7f949d1a2b732.png" data-fileid="29926" data-fileext="png" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="29926" data-ratio="73.80" width="1000" alt="image.thumb.png.90fd48b4b7c8c92c2b6c7ea247b1e15c.png" src="https://cdn.xtibia.com/monthly_2021_04/image.thumb.png.90fd48b4b7c8c92c2b6c7ea247b1e15c.png" /></a><br /><br />
		Download
	</p>

	<div class="ipsSpoiler" data-ipsspoiler="">
		<div class="ipsSpoiler_header">
			<span>Spoiler</span>
		</div>

		<div class="ipsSpoiler_contents">
			<p>
				Module: <a href="https://www.mediafire.com/file/z09vfk5cxs5va0t/client_version.zip/file" rel="external nofollow">https://www.mediafire.com/file/z09vfk5cxs5va0t/client_version.zip/file</a><br />
				Scan: <a href="https://www.virustotal.com/gui/file/4f3829687e2b23fe458c2697ac9f3ae3f3925f82b7560d561f49648b06eb0cb8/detection" rel="external nofollow">https://www.virustotal.com/gui/file/4f3829687e2b23fe458c2697ac9f3ae3f3925f82b7560d561f49648b06eb0cb8/detection</a>
			</p>
		</div>
	</div>

	<p>
		 
	</p>
</div>]]></description><guid isPermaLink="false">253028</guid><pubDate>Wed, 28 Apr 2021 20:02:58 +0000</pubDate></item><item><title>Como mudar essa barra de hp em baixo do nome do player?</title><link>https://xtibia.com/forum/topic/252838-como-mudar-essa-barra-de-hp-em-baixo-do-nome-do-player/</link><description><![CDATA[<p>
	como mudar esssa barra de Hp<img class="ipsImage ipsImage_thumbnailed" data-fileid="29734" data-ratio="17.74" width="62" alt="Screenshot_2.png.e7351765a17b091193e982d4eed030f8.png" src="https://cdn.xtibia.com/monthly_2021_02/Screenshot_2.png.e7351765a17b091193e982d4eed030f8.png" /> pra essa aqui <img class="ipsImage ipsImage_thumbnailed" data-fileid="29735" data-ratio="31.91" width="47" alt="barra.png.3bf4a874436521878a12c7639bbd1e00.png" src="https://cdn.xtibia.com/monthly_2021_02/barra.png.3bf4a874436521878a12c7639bbd1e00.png" />?
</p>]]></description><guid isPermaLink="false">252838</guid><pubDate>Sun, 28 Feb 2021 12:15:04 +0000</pubDate></item><item><title>[OTClient] Sistema de Dialogo Otpokemon</title><link>https://xtibia.com/forum/topic/252290-otclient-sistema-de-dialogo-otpokemon/</link><description><![CDATA[<p style="text-align:center;">
	<strong><span style="color:#c0392b;"><span style="font-size:18px;">[OTClient] Sistema de Dialogo Otpokemon</span></span></strong>
</p>

<p style="text-align:center;">
	 
</p>

<p style="text-align:center;">
	<span style="font-size:18px;"><span style="color:#000000;">Venho através desse tópico contribuir para a comunidade, um simples modulo de dialogo no estilo do Otpokemon,</span></span>
</p>

<p style="text-align:center;">
	<span style="font-size:18px;"><span style="color:#000000;">não é um sistema de dialogo avançado é algo simples que deixa seu servidor intuitivo.</span></span>
</p>

<p style="text-align:center;">
	 
</p>

<p>
	<span style="font-size:18px;"><span style="color:#c0392b;"><strong>1)</strong></span><span style="color:#000000;"> </span><span style="color:#000000;">Faça o download do modulo no qual se encontra no final do tópico e abrindo a pasta do seu client,</span></span><span style="color:#ffffff;"><span style="font-size:18px;"> </span></span><span style="font-size:18px;"><span style="color:#000000;"> extraia e coloque o modulo na pasta </span><strong><span style="color:#c0392b;">modules</span></strong><span style="color:#000000;">.</span></span>
</p>

<p>
	 
</p>

<p>
	<span style="font-size:18px;"><span style="color:#c0392b;"><strong>2)</strong></span><span style="color:#000000;"> O módulo utiliza uma função chamada switch que não é comum ter no otclient, porem podemos colocar sem muito esforço, na pasta do otclient abra o arquivo </span><span style="color:#c0392b;"><strong>util.lua</strong></span><span style="color:#000000;"> que se encontra em </span><span style="color:#c0392b;"><strong>modules/corelib/</strong></span><span style="color:#000000;"> e no final do arquivo coloque o seguinte código:</span></span>
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Spoiler</span>
	</div>

	<div class="ipsSpoiler_contents" data-gramm="false">
		<pre class="ipsCode prettyprint lang-lua prettyprinted"><span class="kwd">function</span><span class="pln"> switch</span><span class="pun">(</span><span class="pln">indice</span><span class="pun">)</span><span class="pln">
  </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">(</span><span class="pln">codetable</span><span class="pun">)</span><span class="pln">
    </span><span class="kwd">local</span><span class="pln"> case </span><span class="pun">=</span><span class="pln"> codetable</span><span class="pun">[</span><span class="pln">indice</span><span class="pun">]</span><span class="pln"> </span><span class="kwd">or</span><span class="pln"> codetable</span><span class="pun">.</span><span class="pln">default
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln"> case </span><span class="pun">)</span><span class="pln"> </span><span class="kwd">then</span><span class="pln">
      </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln"> type</span><span class="pun">(</span><span class="pln">case</span><span class="pun">)</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="str">"function"</span><span class="pln"> </span><span class="pun">)</span><span class="pln"> </span><span class="kwd">then</span><span class="pln">
        </span><span class="kwd">return</span><span class="pln"> case</span><span class="pun">(</span><span class="pln">indice</span><span class="pun">)</span><span class="pln">
      </span><span class="kwd">else</span><span class="pln">
        error</span><span class="pun">(</span><span class="str">"action "</span><span class="pun">..</span><span class="pln">tostring</span><span class="pun">(</span><span class="pln">indice</span><span class="pun">)..</span><span class="str">" not a function"</span><span class="pun">)</span><span class="pln">
      </span><span class="kwd">end</span><span class="pln">
    </span><span class="kwd">end</span><span class="pln">
  </span><span class="kwd">end</span><span class="pln">
</span><span class="kwd">end</span></pre>

		<p>
			 
		</p>
	</div>
</div>

<p style="text-align:center;">
	 
</p>

<p style="text-align:center;">
	<font color="#000000"><span style="font-size:18px;">Feito o passo 1 e 2, vamos para a parte do servidor.</span></font>
</p>

<p style="text-align:center;">
	 
</p>

<p>
	<span style="color:#c0392b;"><span style="font-size:18px;"><strong>1) </strong></span></span><font color="#000000"><span style="font-size:18px;">Crie um arquivo na pasta </span></font><span style="color:#c0392b;"><span style="font-size:18px;"><strong>data/lib/</strong></span></span><font color="#000000"><span style="font-size:18px;"> podendo ter o nome de </span></font><span style="color:#c0392b;"><span style="font-size:18px;"><strong>npcdialog_lib.lua</strong></span></span><font color="#000000"><span style="font-size:18px;"> e coloque o seguinte código:</span></font>
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Spoiler</span>
	</div>

	<div class="ipsSpoiler_contents" data-gramm="false">
		<pre class="ipsCode prettyprint lang-lua prettyprinted"><span class="kwd">local</span><span class="pln"> OpcodeDialog </span><span class="pun">=</span><span class="pln"> </span><span class="lit">80</span><span class="pln">
</span><span class="kwd">local</span><span class="pln"> Actions </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  open </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln">
  closed </span><span class="pun">=</span><span class="pln"> </span><span class="lit">2</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="kwd">function</span><span class="pln"> doSendDialogNpc</span><span class="pun">(</span><span class="pln">cid</span><span class="pun">,</span><span class="pln"> npc</span><span class="pun">,</span><span class="pln"> msg</span><span class="pun">,</span><span class="pln"> opc</span><span class="pun">)</span><span class="pln">
  </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln"> </span><span class="kwd">not</span><span class="pln"> opc </span><span class="pun">)</span><span class="pln"> </span><span class="kwd">then</span><span class="pln">
    opc </span><span class="pun">=</span><span class="pln"> </span><span class="str">''</span><span class="pln">
  </span><span class="kwd">end</span><span class="pln">
  doSendPlayerExtendedOpcode</span><span class="pun">(</span><span class="pln">cid</span><span class="pun">,</span><span class="pln"> OpcodeDialog</span><span class="pun">,</span><span class="pln"> table</span><span class="pun">.</span><span class="pln">serialize</span><span class="pun">({</span><span class="pln"> action </span><span class="pun">=</span><span class="pln"> Actions</span><span class="pun">.</span><span class="pln">open</span><span class="pun">,</span><span class="pln"> data </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> npcId </span><span class="pun">=</span><span class="pln"> npc</span><span class="pun">,</span><span class="pln"> message </span><span class="pun">=</span><span class="pln"> msg</span><span class="pun">,</span><span class="pln"> options </span><span class="pun">=</span><span class="pln"> opc </span><span class="pun">}</span><span class="pln"> </span><span class="pun">}))</span><span class="pln"> 
</span><span class="kwd">end</span><span class="pln">

</span><span class="kwd">function</span><span class="pln"> doSendDialogNpcClose</span><span class="pun">(</span><span class="pln">cid</span><span class="pun">)</span><span class="pln">
  doSendPlayerExtendedOpcode</span><span class="pun">(</span><span class="pln">cid</span><span class="pun">,</span><span class="pln"> OpcodeDialog</span><span class="pun">,</span><span class="pln"> table</span><span class="pun">.</span><span class="pln">serialize</span><span class="pun">({</span><span class="pln"> action </span><span class="pun">=</span><span class="pln"> Actions</span><span class="pun">.</span><span class="pln">closed </span><span class="pun">}))</span><span class="pln">
</span><span class="kwd">end</span></pre>

		<p>
			 
		</p>
	</div>
</div>

<p>
	 
</p>

<p>
	<span style="font-size:18px;"><span style="color:#c0392b;"><strong>2) </strong></span>O arquivo que acabamos de criar utiliza uma função chamada <strong><span style="color:#c0392b;">table.serialize</span></strong> que não é comum ter nos servidores, para que funcione sem erros vamos adicionar, abra o arquivo <span style="color:#c0392b;"><strong>012-table.lua</strong></span> que fica na pasta do seu servidor em <span style="color:#c0392b;"><strong>data/lib/</strong></span> ou você pode criar o arquivo e adicionar o seguinte código:</span>
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Spoiler</span>
	</div>

	<div class="ipsSpoiler_contents" data-gramm="false">
		<pre class="ipsCode prettyprint lang-lua prettyprinted"><span class="pln">table</span><span class="pun">.</span><span class="pln">find </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> </span><span class="pun">(</span><span class="pln">table</span><span class="pun">,</span><span class="pln"> value</span><span class="pun">)</span><span class="pln">
  </span><span class="kwd">for</span><span class="pln"> i</span><span class="pun">,</span><span class="pln"> v </span><span class="kwd">in</span><span class="pln"> pairs</span><span class="pun">(</span><span class="pln">table</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">do</span><span class="pln">
	</span><span class="kwd">if</span><span class="pun">(</span><span class="pln">v </span><span class="pun">==</span><span class="pln"> value</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">then</span><span class="pln">
	  </span><span class="kwd">return</span><span class="pln"> i
    </span><span class="kwd">end</span><span class="pln">
  </span><span class="kwd">end</span><span class="pln">
  </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">nil</span><span class="pln">
</span><span class="kwd">end</span><span class="pln">

table</span><span class="pun">.</span><span class="pln">serialize </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">(</span><span class="pln">x</span><span class="pun">,</span><span class="pln"> recur</span><span class="pun">)</span><span class="pln">
  </span><span class="kwd">local</span><span class="pln"> t </span><span class="pun">=</span><span class="pln"> type</span><span class="pun">(</span><span class="pln">x</span><span class="pun">)</span><span class="pln">
  recur </span><span class="pun">=</span><span class="pln"> recur </span><span class="kwd">or</span><span class="pln"> </span><span class="pun">{}</span><span class="pln">

  </span><span class="kwd">if</span><span class="pln"> t </span><span class="pun">==</span><span class="pln"> </span><span class="kwd">nil</span><span class="pln"> </span><span class="kwd">then</span><span class="pln">
    </span><span class="kwd">return</span><span class="pln"> </span><span class="str">"nil"</span><span class="pln">
  </span><span class="kwd">elseif</span><span class="pln"> t </span><span class="pun">==</span><span class="pln"> </span><span class="str">"string"</span><span class="pln"> </span><span class="kwd">then</span><span class="pln">
	</span><span class="kwd">return</span><span class="pln"> string</span><span class="pun">.</span><span class="pln">format</span><span class="pun">(</span><span class="str">"%q"</span><span class="pun">,</span><span class="pln"> x</span><span class="pun">)</span><span class="pln">
  </span><span class="kwd">elseif</span><span class="pln"> t </span><span class="pun">==</span><span class="pln"> </span><span class="str">"number"</span><span class="pln"> </span><span class="kwd">then</span><span class="pln">
	</span><span class="kwd">return</span><span class="pln"> tostring</span><span class="pun">(</span><span class="pln">x</span><span class="pun">)</span><span class="pln">
  </span><span class="kwd">elseif</span><span class="pln"> t </span><span class="pun">==</span><span class="pln"> </span><span class="str">"boolean"</span><span class="pln"> </span><span class="kwd">then</span><span class="pln">
	</span><span class="kwd">return</span><span class="pln"> t </span><span class="kwd">and</span><span class="pln"> </span><span class="str">"true"</span><span class="pln"> </span><span class="kwd">or</span><span class="pln"> </span><span class="str">"false"</span><span class="pln">
  </span><span class="kwd">elseif</span><span class="pln"> getmetatable</span><span class="pun">(</span><span class="pln">x</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">then</span><span class="pln">
	error</span><span class="pun">(</span><span class="str">"Can not serialize a table that has a metatable associated with it."</span><span class="pun">)</span><span class="pln">
  </span><span class="kwd">elseif</span><span class="pln"> t </span><span class="pun">==</span><span class="pln"> </span><span class="str">"table"</span><span class="pln"> </span><span class="kwd">then</span><span class="pln">
    </span><span class="kwd">if</span><span class="pun">(</span><span class="pln">table</span><span class="pun">.</span><span class="pln">find</span><span class="pun">(</span><span class="pln">recur</span><span class="pun">,</span><span class="pln"> x</span><span class="pun">))</span><span class="pln"> </span><span class="kwd">then</span><span class="pln">
	  error</span><span class="pun">(</span><span class="str">"Can not serialize recursive tables."</span><span class="pun">)</span><span class="pln">
	</span><span class="kwd">end</span><span class="pln">
	table</span><span class="pun">.</span><span class="pln">insert</span><span class="pun">(</span><span class="pln">recur</span><span class="pun">,</span><span class="pln"> x</span><span class="pun">)</span><span class="pln">

	</span><span class="kwd">local</span><span class="pln"> s </span><span class="pun">=</span><span class="pln"> </span><span class="str">"{"</span><span class="pln">
	</span><span class="kwd">for</span><span class="pln"> k</span><span class="pun">,</span><span class="pln"> v </span><span class="kwd">in</span><span class="pln"> pairs</span><span class="pun">(</span><span class="pln">x</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">do</span><span class="pln">
	  s </span><span class="pun">=</span><span class="pln"> s </span><span class="pun">..</span><span class="pln"> </span><span class="str">"["</span><span class="pln"> </span><span class="pun">..</span><span class="pln"> table</span><span class="pun">.</span><span class="pln">serialize</span><span class="pun">(</span><span class="pln">k</span><span class="pun">,</span><span class="pln"> recur</span><span class="pun">)</span><span class="pln"> </span><span class="pun">..</span><span class="pln"> </span><span class="str">"]"</span><span class="pln">
	  s </span><span class="pun">=</span><span class="pln"> s </span><span class="pun">..</span><span class="pln"> </span><span class="str">" = "</span><span class="pln"> </span><span class="pun">..</span><span class="pln"> table</span><span class="pun">.</span><span class="pln">serialize</span><span class="pun">(</span><span class="pln">v</span><span class="pun">,</span><span class="pln"> recur</span><span class="pun">)</span><span class="pln"> </span><span class="pun">..</span><span class="pln"> </span><span class="str">","</span><span class="pln">
	</span><span class="kwd">end</span><span class="pln">
	s </span><span class="pun">=</span><span class="pln"> s </span><span class="pun">..</span><span class="pln"> </span><span class="str">"}"</span><span class="pln">
	</span><span class="kwd">return</span><span class="pln"> s
  </span><span class="kwd">else</span><span class="pln">
	error</span><span class="pun">(</span><span class="str">"Can not serialize value of type '"</span><span class="pln"> </span><span class="pun">..</span><span class="pln"> t </span><span class="pun">..</span><span class="pln"> </span><span class="str">"'."</span><span class="pun">)</span><span class="pln">
  </span><span class="kwd">end</span><span class="pln">
</span><span class="kwd">end</span></pre>

		<p>
			 
		</p>
	</div>
</div>

<p>
	 
</p>

<p style="text-align:center;">
	 
</p>

<p style="text-align:center;">
	<span style="font-size:18px;">Feito todo esse procedimento, estarei disponibilizando um npc para que vocês possam ter uma noção de como utilizar esse sistema de dialogo.</span>
</p>

<p style="text-align:center;">
	 
</p>

<p>
	<span style="font-size:18px;"><span style="color:#c0392b;"><strong>1) </strong></span>Crie um arquivo na pasta do servidor em <span style="color:#c0392b;"><strong>data/npc/</strong></span> chamado <span style="color:#c0392b;"><strong>Gengo.xml</strong></span> e adicione o seguinte código:</span>
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Spoiler</span>
	</div>

	<div class="ipsSpoiler_contents" data-gramm="false">
		<pre class="ipsCode prettyprint lang-xml prettyprinted"><span class="pun">&lt;?</span><span class="pln">xml version</span><span class="pun">=</span><span class="str">"1.0"</span><span class="pln"> encoding</span><span class="pun">=</span><span class="str">"UTF-8"</span><span class="pun">?&gt;</span><span class="pln">

</span><span class="tag">&lt;npc</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"Gengo"</span><span class="pln"> </span><span class="atn">script</span><span class="pun">=</span><span class="atv">"gengo.lua"</span><span class="tag">&gt;</span><span class="pln">
  </span><span class="tag">&lt;health</span><span class="pln"> </span><span class="atn">now</span><span class="pun">=</span><span class="atv">"150"</span><span class="pln"> </span><span class="atn">max</span><span class="pun">=</span><span class="atv">"150"</span><span class="tag">/&gt;</span><span class="pln">
  </span><span class="tag">&lt;look</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"1413"</span><span class="pln"> </span><span class="atn">head</span><span class="pun">=</span><span class="atv">"114"</span><span class="pln"> </span><span class="atn">body</span><span class="pun">=</span><span class="atv">"119"</span><span class="pln"> </span><span class="atn">legs</span><span class="pun">=</span><span class="atv">"114"</span><span class="pln"> </span><span class="atn">feet</span><span class="pun">=</span><span class="atv">"114"</span><span class="pln"> </span><span class="atn">corpse</span><span class="pun">=</span><span class="atv">"2212"</span><span class="tag">/&gt;</span><span class="pln">
</span><span class="tag">&lt;/npc&gt;</span></pre>

		<p>
			 
		</p>
	</div>
</div>

<p>
	 
</p>

<p>
	<span style="font-size:18px;"><span style="color:#c0392b;"><strong>2) </strong></span>Crie um arquivo na pasta do servidor em <span style="color:#c0392b;"><strong>data/npc/lib/</strong></span> com o nome <span style="color:#c0392b;"><strong>gengo.lua</strong></span> e adicione o seguinte código:</span>
</p>

<p>
	 
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Spoiler</span>
	</div>

	<div class="ipsSpoiler_contents" data-gramm="false">
		<pre class="ipsCode prettyprint lang-lua prettyprinted"><span class="kwd">local</span><span class="pln"> keywordHandler </span><span class="pun">=</span><span class="pln"> KeywordHandler</span><span class="pun">:</span><span class="pln">new</span><span class="pun">()</span><span class="pln">
</span><span class="kwd">local</span><span class="pln"> npcHandler </span><span class="pun">=</span><span class="pln"> NpcHandler</span><span class="pun">:</span><span class="pln">new</span><span class="pun">(</span><span class="pln">keywordHandler</span><span class="pun">)</span><span class="pln">
NpcSystem</span><span class="pun">.</span><span class="pln">parseParameters</span><span class="pun">(</span><span class="pln">npcHandler</span><span class="pun">)</span><span class="pln">

</span><span class="kwd">function</span><span class="pln"> onThink</span><span class="pun">()</span><span class="pln">                     npcHandler</span><span class="pun">:</span><span class="pln">onThink</span><span class="pun">()</span><span class="pln">                     </span><span class="kwd">end</span><span class="pln">
</span><span class="kwd">function</span><span class="pln"> onCreatureAppear</span><span class="pun">(</span><span class="pln">cid</span><span class="pun">)</span><span class="pln">         npcHandler</span><span class="pun">:</span><span class="pln">onCreatureAppear</span><span class="pun">(</span><span class="pln">cid</span><span class="pun">)</span><span class="pln">	        </span><span class="kwd">end</span><span class="pln">
</span><span class="kwd">function</span><span class="pln"> onCreatureDisappear</span><span class="pun">(</span><span class="pln">cid</span><span class="pun">)</span><span class="pln">      npcHandler</span><span class="pun">:</span><span class="pln">onCreatureDisappear</span><span class="pun">(</span><span class="pln">cid</span><span class="pun">)</span><span class="pln">	    </span><span class="kwd">end</span><span class="pln">
</span><span class="kwd">function</span><span class="pln"> onCreatureSay</span><span class="pun">(</span><span class="pln">cid</span><span class="pun">,</span><span class="pln"> type</span><span class="pun">,</span><span class="pln"> msg</span><span class="pun">)</span><span class="pln"> npcHandler</span><span class="pun">:</span><span class="pln">onCreatureSay</span><span class="pun">(</span><span class="pln">cid</span><span class="pun">,</span><span class="pln"> type</span><span class="pun">,</span><span class="pln"> msg</span><span class="pun">)</span><span class="pln">	</span><span class="kwd">end</span><span class="pln">

</span><span class="kwd">function</span><span class="pln"> greetCallback</span><span class="pun">(</span><span class="pln">cid</span><span class="pun">)</span><span class="pln">
  doSendDialogNpc</span><span class="pun">(</span><span class="pln">cid</span><span class="pun">,</span><span class="pln"> getNpcId</span><span class="pun">(),</span><span class="pln"> </span><span class="str">"Olá jovem, vejo que você conseguiu chegar até aqui!\nClique em Recompensa e fique feliz pela conquista!"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Fechar&amp;Recompensa"</span><span class="pun">)</span><span class="pln">
  </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">true</span><span class="pln">             
</span><span class="kwd">end</span><span class="pln">

</span><span class="kwd">function</span><span class="pln"> creatureSayCallback</span><span class="pun">(</span><span class="pln">cid</span><span class="pun">,</span><span class="pln"> type</span><span class="pun">,</span><span class="pln"> msg</span><span class="pun">)</span><span class="pln">
  </span><span class="kwd">if</span><span class="pln"> </span><span class="kwd">not</span><span class="pln"> npcHandler</span><span class="pun">:</span><span class="pln">isFocused</span><span class="pun">(</span><span class="pln">cid</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">then</span><span class="pln">
    </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">false</span><span class="pln">
  </span><span class="kwd">end</span><span class="pln">
  
  </span><span class="kwd">if</span><span class="pln"> msgcontains</span><span class="pun">(</span><span class="pln">msg</span><span class="pun">:</span><span class="pln">lower</span><span class="pun">(),</span><span class="pln"> </span><span class="str">"recompensa"</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">then</span><span class="pln">
    </span><span class="kwd">local</span><span class="pln"> message </span><span class="pun">=</span><span class="pln"> </span><span class="str">""</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> getPlayerStorageValue</span><span class="pun">(</span><span class="pln">cid</span><span class="pun">,</span><span class="pln"> </span><span class="lit">7000</span><span class="pun">)</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="lit">-1</span><span class="pln"> </span><span class="kwd">then</span><span class="pln">
      setPlayerStorageValue</span><span class="pun">(</span><span class="pln">cid</span><span class="pun">,</span><span class="pln"> </span><span class="lit">7000</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln">
	  doPlayerAddItem</span><span class="pun">(</span><span class="pln">cid</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2160</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln">
	  message </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Você acaba de ganhar uns trocado por chegar até aqui.\nVolte sempre!"</span><span class="pln">
	</span><span class="kwd">else</span><span class="pln">
	  message </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Você ja pegou sua recompensa, obrigado e volte sempre!"</span><span class="pln">
    </span><span class="kwd">end</span><span class="pln">	
	doSendDialogNpc</span><span class="pun">(</span><span class="pln">cid</span><span class="pun">,</span><span class="pln"> getNpcId</span><span class="pun">(),</span><span class="pln"> message</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Fechar"</span><span class="pun">)</span><span class="pln">
  </span><span class="kwd">elseif</span><span class="pln"> msgcontains</span><span class="pun">(</span><span class="pln">msg</span><span class="pun">:</span><span class="pln">lower</span><span class="pun">(),</span><span class="pln"> </span><span class="str">"fechar"</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">then</span><span class="pln">
	doSendDialogNpcClose</span><span class="pun">(</span><span class="pln">cid</span><span class="pun">)</span><span class="pln">
	npcHandler</span><span class="pun">:</span><span class="pln">unGreet</span><span class="pun">(</span><span class="pln">cid</span><span class="pun">)</span><span class="pln">	
  </span><span class="kwd">end</span><span class="pln">

  </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">true</span><span class="pln">
</span><span class="kwd">end</span><span class="pln">

npcHandler</span><span class="pun">:</span><span class="pln">setCallback</span><span class="pun">(</span><span class="pln">CALLBACK_MESSAGE_DEFAULT</span><span class="pun">,</span><span class="pln"> creatureSayCallback</span><span class="pun">)</span><span class="pln">
npcHandler</span><span class="pun">:</span><span class="pln">setCallback</span><span class="pun">(</span><span class="pln">CALLBACK_GREET</span><span class="pun">,</span><span class="pln"> greetCallback</span><span class="pun">)</span><span class="pln">
npcHandler</span><span class="pun">:</span><span class="pln">addModule</span><span class="pun">(</span><span class="pln">FocusModule</span><span class="pun">:</span><span class="pln">new</span><span class="pun">())</span></pre>

		<p>
			 
		</p>
	</div>
</div>

<p>
	 
</p>

<p style="text-align:center;">
	<span style="font-size:18px;">O npc é algo simples, porem serve para que você possa ter uma noção de como utilizar as funções do npc.</span>
</p>

<p style="text-align:center;">
	 
</p>

<p style="text-align:center;">
	<strong><span style="font-size:18px;">Demostrativo dentro do game:</span></strong>
</p>

<p style="text-align:center;">
	<img alt="AivYsrD.png" class="ipsImage" data-ratio="57.58" height="395" width="686" src="https://i.imgur.com/AivYsrD.png"></p>

<p style="text-align:center;">
	 
</p>

<p style="text-align:center;">
	<strong><span style="font-size:18px;">Arquivos para download e o scan:</span></strong>
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Spoiler</span>
	</div>

	<div class="ipsSpoiler_contents" data-gramm="false">
		<p>
			<span style="color:#c0392b;"><span style="font-size:18px;"><strong>Module:</strong></span></span> <a href="https://mega.nz/file/xLwExQRC#cgaGcDtfOVY65tL_BQVjd3NWPH1eFaP9C1W8Ko3oCMU" rel="external nofollow" role="button" style="background-color:#313338; border:0px; color:var(--text-link); font-size:16px; padding:0px; text-align:left; vertical-align:baseline" tabindex="0" target="_blank" title="https://mega.nz/file/xLwExQRC#cgaGcDtfOVY65tL_BQVjd3NWPH1eFaP9C1W8Ko3oCMU">https://mega.nz/file/xLwExQRC#cgaGcDtfOVY65tL_BQVjd3NWPH1eFaP9C1W8Ko3oCMU</a>
		</p>

		<p>
			<span style="color:#c0392b;"><span style="font-size:18px;"><strong>Scan:</strong></span></span> <a href="https://www.virustotal.com/gui/file/d245ba17751202d21c21d92564b4927c67a0bb0aa10fa7b84f41174cb8d7b863?nocache=1" rel="external nofollow" role="button" style="background-color:#313338; border:0px; color:var(--text-link); font-size:16px; padding:0px; text-align:left; vertical-align:baseline" tabindex="0" target="_blank" title="https://www.virustotal.com/gui/file/d245ba17751202d21c21d92564b4927c67a0bb0aa10fa7b84f41174cb8d7b863?nocache=1">https://www.virustotal.com/gui/file/d245ba17751202d21c21d92564b4927c67a0bb0aa10fa7b84f41174cb8d7b863?nocache=1</a>
		</p>
	</div>
</div>

<p>
	 
</p>
]]></description><guid isPermaLink="false">252290</guid><pubDate>Sat, 29 Aug 2020 18:44:29 +0000</pubDate></item><item><title>[OTC] Aumentando limite de sprites</title><link>https://xtibia.com/forum/topic/234452-otc-aumentando-limite-de-sprites/</link><description><![CDATA[
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);"><strong>Olá éks.  <img src="http://www.tibiaking.com/forum/public/style_emoticons/default/biggrin.png" alt="biggrin.png" /></strong><br /><br /><span style="color:rgb(90,90,90);"><span style="font-family:Helvetica, Helvetica, Arial, sans-serif;"><strong>Clientes com versões anteriores à 9.60 têm um limite de sprites de 65.535. Parece muito, mas logo esse limite é atingido e ficamos impossibilitados de adicionar novos objetos para o servidor/cliente a não ser substituindo alguns sprites. Esse tutorial pretende ensinar como configurar as principais ferramentas para aumentar o limite. A versão utilizada no tutorial foi a 8.60.</strong></span></span><br /><br /><a href="https://imageshack.com/i/nr3f6fp" title="Link externo" rel="external nofollow"><img src="http://imagizer.imageshack.us/v2/xq90/855/3f6f.png" alt="3f6f.png" /></a><br /><br /><strong><span style="color:rgb(90,90,90);"><span style="font-family:Helvetica, Helvetica, Arial, sans-serif;">Conhecimentos Necessários:</span></span><br /><span style="color:rgb(90,90,90);"><span style="font-family:Helvetica, Helvetica, Arial, sans-serif;">XML</span></span><br /><span style="color:rgb(90,90,90);"><span style="font-family:Helvetica, Helvetica, Arial, sans-serif;">Básico nas ferramentas utilizadas.</span></span></strong><br /><br /><a href="https://imageshack.com/i/nr3f6fp" title="Link externo" rel="external nofollow"><img src="http://imagizer.imageshack.us/v2/xq90/855/3f6f.png" alt="3f6f.png" /></a><br /><br /><span style="color:rgb(90,90,90);"><span style="font-family:Helvetica, Helvetica, Arial, sans-serif;">Ferramentas Utilizadas:</span></span><br /><br /><a href="http://www.4shared.com/file/SUeAUR00ba/ObjectBuilder039.html" title="Link externo" rel="external nofollow">Object Builder</a>     <strong><span style="color:rgb(90,90,90);"><span style="font-family:Helvetica, Helvetica, Arial, sans-serif;">(edita os arquivos dat e spr do cliente) </span></span></strong><strong>&gt;&gt; Para baixar o programa clique no Nome dele *--*</strong><br /><span style="color:rgb(90,90,90);"><span style="font-family:Helvetica, Helvetica, Arial, sans-serif;"><a href="http://www.4shared.com/file/Tp93z5Gpba/ItemEditor031.html" title="Link externo" rel="external nofollow">iTemEditor</a>     <strong>(edita o arquivo otb, que contém os itens usados no servidor) &gt;&gt; Para baixar o programa clique no Nome dele *--*</strong></span></span><br /><strong><span style="color:rgb(105,105,105);">OTclient 0.6.5.</span></strong><br /><strong><span style="color:rgb(90,90,90);"><span style="font-family:Helvetica, Helvetica, Arial, sans-serif;">Um programa para abrir arquivos LUA.</span></span><br /><span style="color:rgb(90,90,90);"><span style="font-family:Helvetica, Helvetica, Arial, sans-serif;">Remere's Map Editor.</span></span></strong><br /><br /><a href="https://imageshack.com/i/nr3f6fp" title="Link externo" rel="external nofollow"><img src="http://imagizer.imageshack.us/v2/xq90/855/3f6f.png" alt="3f6f.png" /></a><br /><br /><strong><span style="color:rgb(90,90,90);"><span style="font-family:Helvetica, Helvetica, Arial, sans-serif;">Compilando os Arquivos Estendidos:</span></span><br /><br /><span style="color:rgb(90,90,90);"><span style="font-family:Helvetica, Helvetica, Arial, sans-serif;">1. Abra seus arquivos "spr" e "dat" no Object Builder.</span></span><br /><span style="color:rgb(90,90,90);"><span style="font-family:Helvetica, Helvetica, Arial, sans-serif;">2. Compile os arquivos com a opção extended selecionada.</span></span></strong><br /><strong><span style="color:rgb(90,90,90);"><span style="font-family:Helvetica, Helvetica, Arial, sans-serif;"><img src="http://s28.postimg.org/zcury9cq5/extended.png" alt="extended.png" /></span></span></strong><br /><strong><span style="color:rgb(90,90,90);"><span style="font-family:Helvetica, Helvetica, Arial, sans-serif;">Obs: Uma vez compilado estendido, a opção extended deverá estar sempre selecionada tanto ao abrir, quanto ao compilar.</span></span></strong><br /><br /><a href="https://imageshack.com/i/nr3f6fp" title="Link externo" rel="external nofollow"><img src="http://imagizer.imageshack.us/v2/xq90/855/3f6f.png" alt="3f6f.png" /></a><br /><br /><strong><span style="color:rgb(90,90,90);"><span style="font-family:Helvetica, Helvetica, Arial, sans-serif;">Configurando o ItemEditor:</span></span><br /><br /><span style="color:rgb(90,90,90);"><span style="font-family:Helvetica, Helvetica, Arial, sans-serif;">1. Abra o itemEditor, vai em</span></span><span style="color:rgb(255,0,0);"><span style="font-family:Helvetica, Helvetica, Arial, sans-serif;"> File/ Preferences</span></span><span style="color:rgb(90,90,90);"><span style="font-family:Helvetica, Helvetica, Arial, sans-serif;"> </span></span><br /><span style="color:rgb(90,90,90);"><span style="font-family:Helvetica, Helvetica, Arial, sans-serif;">2. clique em Browse e escolha o local onde está seu Arquivos "Dat" e "Spr"</span></span></strong><br /><strong><span style="color:rgb(90,90,90);"><span style="font-family:Helvetica, Helvetica, Arial, sans-serif;">3. Marque a Opção Extender </span></span></strong><br /><a href="http://www.casimages.com.br/i/140516011225587699.png.html" title="Link externo" rel="external nofollow"><img src="http://nsae01.casimages.net/img/2014/05/16/140516011225587699.png" alt="140516011225587699.png" /></a><br /><br /><a href="https://imageshack.com/i/nr3f6fp" title="Link externo" rel="external nofollow"><img src="http://imagizer.imageshack.us/v2/xq90/855/3f6f.png" alt="3f6f.png" /></a><br /><br /><strong><span style="color:rgb(90,90,90);"><span style="font-family:Helvetica, Helvetica, Arial, sans-serif;">Configurando OTClient:</span></span><br /><br /><span style="color:rgb(90,90,90);"><span style="font-family:Helvetica, Helvetica, Arial, sans-serif;">1. Abra o arquivo things.lua encontrado em modules/game_things</span></span><br /><span style="color:rgb(90,90,90);"><span style="font-family:Helvetica, Helvetica, Arial, sans-serif;">2. Adicione esta linha de código na função load:</span></span></strong></p>
<p><br /><span style="color:rgb(0,0,136);">function</span><span> load</span><span style="color:rgb(102,102,0);">()</span><br /><span>  </span><span style="color:rgb(0,0,136);">local</span><span> version </span><span style="color:rgb(102,102,0);">=</span><span> g_game</span><span style="color:rgb(102,102,0);">.</span><span>getClientVersion</span><span style="color:rgb(102,102,0);">()</span><br /><span> <br />  g_game</span><span style="color:rgb(102,102,0);">.</span><span>enableFeature</span><span style="color:rgb(102,102,0);">(</span><span style="color:rgb(102,0,102);">GameSpritesU32</span><span style="color:rgb(102,102,0);">)</span><span> </span><span style="color:rgb(102,102,0);">--</span><span> </span><span style="color:rgb(102,0,102);">Linha</span><span> </span><span style="color:rgb(102,0,102);">Adicionada</span><br /><span> <br /></span><span style="color:rgb(0,0,136);">local</span><span> datPath</span><span style="color:rgb(102,102,0);">,</span><span> sprPath</span></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);"><strong><span style="color:rgb(90,90,90);"><span style="font-family:'Helvetica Neue';">3.Adicione uma cópia dos arquivos dat e spr estendidos na pasta </span></span><span style="color:rgb(255,0,0);"><span style="font-family:'Helvetica Neue';">data/things.</span></span></strong><br /><span style="color:rgb(40,40,40);"><span style="font-family:tahoma, geneva, sans-serif;"> </span></span><br /><a href="https://imageshack.com/i/nr3f6fp" title="Link externo" rel="external nofollow"><img src="http://imagizer.imageshack.us/v2/xq90/855/3f6f.png" alt="3f6f.png" /></a><br /><span style="color:rgb(40,40,40);"><span style="font-family:tahoma, geneva, sans-serif;"> </span></span><br /><strong><span style="color:rgb(90,90,90);"><span style="font-family:'Helvetica Neue';">Remere's Map Editor :</span></span><br /><br /><span style="color:rgb(90,90,90);"><span style="font-family:'Helvetica Neue';">Infelizmente o RME não tem suporte pra arquivos estendidos.</span></span><br /><span style="color:rgb(90,90,90);"><span style="font-family:'Helvetica Neue';">A solução mais viável é adicionar uma versão 9.60 junto a versão do seu cliente e compilar os arquivos como 9.60 especialmente para o RME. A versão do RME deve ser 2.2 ou superior.</span></span><br /><br /><span style="color:rgb(90,90,90);"><span style="font-family:'Helvetica Neue';">- Compile na sua versão para usar no cliente e no ItemEditor.</span></span><br /><span style="color:rgb(90,90,90);"><span style="font-family:'Helvetica Neue';">- Compile na versão 9.60 numa pasta separada para usar no RME.</span></span><br /><br /><span style="color:rgb(90,90,90);"><span style="font-family:'Helvetica Neue';">Adicionando a versão:</span></span><br /><br /><span style="color:rgb(90,90,90);"><span style="font-family:'Helvetica Neue';">1. Vá à pasta de instalação do </span></span><span style="color:rgb(255,0,0);"><span style="font-family:'Helvetica Neue';">RME</span></span><span style="color:rgb(90,90,90);"><span style="font-family:'Helvetica Neue';"> e abra o arquivo </span></span><span style="color:rgb(255,0,0);"><span style="font-family:'Helvetica Neue';">clients.xml</span></span><span style="color:rgb(90,90,90);"><span style="font-family:'Helvetica Neue';">, encontrado na pasta data.</span></span><br /><span style="color:rgb(90,90,90);"><span style="font-family:'Helvetica Neue';">2. Procure a tag do seu cliente e adicione uma linha para versão 9.6</span></span></strong></p>
<p><br /><span style="color:rgb(0,0,136);">&lt;client</span><span> </span><span style="color:rgb(102,0,102);">name</span><span style="color:rgb(102,102,0);">=</span><span style="color:rgb(0,136,0);">"8.60"</span><span> </span><span style="color:rgb(102,0,102);">otb</span><span style="color:rgb(102,102,0);">=</span><span style="color:rgb(0,136,0);">"8.60"</span><span> </span><span style="color:rgb(102,0,102);">visible</span><span style="color:rgb(102,102,0);">=</span><span style="color:rgb(0,136,0);">"true"</span><span> </span><span style="color:rgb(102,0,102);">data_directory</span><span style="color:rgb(102,102,0);">=</span><span style="color:rgb(0,136,0);">"860"</span><span style="color:rgb(0,0,136);">&gt;</span><br /><span>   </span><span style="color:rgb(0,0,136);">&lt;otbm</span><span> </span><span style="color:rgb(102,0,102);">version</span><span style="color:rgb(102,102,0);">=</span><span style="color:rgb(0,136,0);">"3"</span><span style="color:rgb(0,0,136);">/&gt;</span><br /><span>   </span><span style="color:rgb(0,0,136);">&lt;extensions</span><span> </span><span style="color:rgb(102,0,102);">from</span><span style="color:rgb(102,102,0);">=</span><span style="color:rgb(0,136,0);">"8.20 - 8.31"</span><span style="color:rgb(0,0,136);">/&gt;</span><br /><span>   </span><span style="color:rgb(0,0,136);">&lt;data</span><span> </span><span style="color:rgb(102,0,102);">datversion</span><span style="color:rgb(102,102,0);">=</span><span style="color:rgb(0,136,0);">"8.6"</span><span> </span><span style="color:rgb(102,0,102);">sprversion</span><span style="color:rgb(102,102,0);">=</span><span style="color:rgb(0,136,0);">"7.0"</span><span> </span><span style="color:rgb(102,0,102);">dat</span><span style="color:rgb(102,102,0);">=</span><span style="color:rgb(0,136,0);">"0x4C2C7993"</span><span> </span><span style="color:rgb(102,0,102);">spr</span><span style="color:rgb(102,102,0);">=</span><span style="color:rgb(0,136,0);">"0x4C220594"</span><span style="color:rgb(0,0,136);">/&gt;</span><br /><span>   </span><span style="color:rgb(0,0,136);">&lt;data</span><span> </span><span style="color:rgb(102,0,102);">datversion</span><span style="color:rgb(102,102,0);">=</span><span style="color:rgb(0,136,0);">"8.6"</span><span> </span><span style="color:rgb(102,0,102);">sprversion</span><span style="color:rgb(102,102,0);">=</span><span style="color:rgb(0,136,0);">"7.0"</span><span> </span><span style="color:rgb(102,0,102);">dat</span><span style="color:rgb(102,102,0);">=</span><span style="color:rgb(0,136,0);">"0x4C6A4CBC"</span><span> </span><span style="color:rgb(102,0,102);">spr</span><span style="color:rgb(102,102,0);">=</span><span style="color:rgb(0,136,0);">"0x4C63F145"</span><span style="color:rgb(0,0,136);">/&gt;</span><br /><span>   </span><span style="color:rgb(0,0,136);">&lt;data</span><span> </span><span style="color:rgb(102,0,102);">datversion</span><span style="color:rgb(102,102,0);">=</span><span style="color:rgb(0,136,0);">"9.6"</span><span> </span><span style="color:rgb(102,0,102);">sprversion</span><span style="color:rgb(102,102,0);">=</span><span style="color:rgb(0,136,0);">"9.6"</span><span> </span><span style="color:rgb(102,0,102);">dat</span><span style="color:rgb(102,102,0);">=</span><span style="color:rgb(0,136,0);">"0x4FFA74CC"</span><span> </span><span style="color:rgb(102,0,102);">spr</span><span style="color:rgb(102,102,0);">=</span><span style="color:rgb(0,136,0);">"0x4FFA74F9"</span><span style="color:rgb(0,0,136);">/&gt;</span><span> </span><span style="color:rgb(136,0,0);">&lt;!-- Versão Extendida --&gt;</span><br /><span style="color:rgb(0,0,136);">&lt;/client&gt;</span></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);"><strong><span style="color:rgb(90,90,90);"><span style="font-family:'Helvetica Neue';">3. Compile seus arquivos em uma pasta separada com a versão 9.60.</span></span></strong><br /><strong><span style="color:rgb(90,90,90);"><span style="font-family:'Helvetica Neue';"><img src="http://s23.postimg.org/fk0rx7rmj/export.png" alt="export.png" /></span></span></strong><br /><br /><br /><strong><span style="color:rgb(90,90,90);"><span style="font-family:'Helvetica Neue';"> <br /><strong>4. Na versão utilizada, configure o RME para a pasta onde se encontra os arquivos compilados como 9.60</strong></span></span></strong><br /><br /><br /><strong><span style="color:rgb(90,90,90);"><span style="font-family:'Helvetica Neue';"> <br /><span><img src="http://s2.postimg.org/dj14we5nt/rme.png" alt="rme.png" /></span><br /><br /><a href="https://imageshack.com/i/nr3f6fp" title="Link externo" rel="external nofollow"><img src="http://imagizer.imageshack.us/v2/xq90/855/3f6f.png" alt="3f6f.png" /></a><br /><br /><strong>Perguntas Frequentes:</strong><br /><br /><strong>P: Qual o novo limite de sprites após ser estendido?<br />R: 4.294.967.295</strong><br /><br /><strong>P: Depois que compilar estendido, pode ser usando no cliente da Cip?</strong><br /><strong>R: Não! Seria preciso modificar o cliente para que consiga ler os arquivos.<br /><br />P: Posso usar o dat editor para modificar os arquivos depois?<br />R: O ObjectBuilder é um dat/spr editor, mas se você quer usar outro editor, é pouco provável que funcione. Não custa tentar.</strong><br /><br /><br /><a href="https://imageshack.com/i/nr3f6fp" title="Link externo" rel="external nofollow"><img src="http://imagizer.imageshack.us/v2/xq90/855/3f6f.png" alt="3f6f.png" /></a><br /></span></span></strong><br /><strong><span style="color:rgb(90,90,90);"><span style="font-family:'Helvetica Neue';">Créditos:: </span></span></strong></p>
<p><br /><span style="color:rgb(102,0,102);">EdMignari</span><span> e sua </span><span style="color:rgb(102,0,102);">Equipe</span></p>
]]></description><guid isPermaLink="false">234452</guid><pubDate>Wed, 03 Jun 2015 20:16:54 +0000</pubDate></item><item><title>[OtClient] Mensagem Personalizada</title><link>https://xtibia.com/forum/topic/249897-otclient-mensagem-personalizada/</link><description><![CDATA[
<p style="background-color:#ffffff;color:#666666;font-size:14px;text-align:center;">
	 
</p>

<p style="background-color:rgb(255,255,255);color:rgb(102,102,102);font-size:14px;">
	<span style="background-color:#ffffff;color:#000000;font-size:18px;text-align:center;">Hoje venho trazer um sistema que pode deixar seu servidor com um diferencial dos demais, espero que vocês possam aprender algo com esse sistema e criar outros tipos de personalização nas mensagens.</span>
</p>

<p style="background-color:rgb(255,255,255);color:rgb(102,102,102);font-size:14px;">
	 
</p>

<p style="background-color:#ffffff;color:#666666;font-size:14px;text-align:center;">
	 
</p>

<p style="background-color:rgb(255,255,255);color:rgb(102,102,102);font-size:14px;">
	<span style="color:#339900;"><strong style="background-color:#ffffff;color:#000000;font-size:18px;text-align:center;">O que seria essa personalização?</strong></span>
</p>

<p style="background-color:rgb(255,255,255);">
	<span style="background-color:#ffffff;text-align:center;"><font color="#000000"><span style="font-size:18px;">Seria uma personalização da mensagem do broadcast, em vez de ficar aquela mensagem vermelha no meio da tela, </span></font></span><span style="background-color:#ffffff;text-align:center;"><font color="#000000"><span style="font-size:18px;">você pode escolher sua própria cor para a mensagem, no fim do tópico demonstrarei com imagens para que você possa entender melhor.</span></font></span>
</p>

<p style="background-color:#ffffff;text-align:center;">
	 
</p>

<p style="background-color:#ffffff;color:#666666;font-size:14px;text-align:center;">
	 
</p>

<p style="background-color:rgb(255,255,255);color:rgb(102,102,102);font-size:14px;">
	<span style="color:#27ae60;"><strong style="background-color:#ffffff;color:#000000;font-size:18px;text-align:center;">Script:</strong></span><br /><span style="background-color:#ffffff;color:#000000;font-size:18px;text-align:center;">Procure pela pasta no seu otclient em <u><strong>modules/game_textmessage</strong></u> e abra o arquivo <strong>textmessage.otui</strong> e substitua por esse:</span>
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Spoiler</span>
	</div>

	<div class="ipsSpoiler_contents">
		<pre class="ipsCode">

TextMessageLabel &lt; UILabel
  font: verdana-11px-rounded
  text-align: center
  text-wrap: true
  text-auto-resize: true
  margin-bottom: 2
  visible: false

Panel
  anchors.fill: gameMapPanel
  focusable: false

  Panel
    id: centerTextMessagePanel
    layout:
      type: verticalBox
      fit-children: true
    width: 360
    anchors.centerIn: parent

    TextMessageLabel
      id: highCenterLabel
    TextMessageLabel
      id: middleCenterLabel
    TextMessageLabel
      id: lowCenterLabel

  TextMessageLabel
    id: privateLabel
    anchors.top: parent.top
    anchors.bottom: centerTextMessagePanel.top
    anchors.horizontalCenter: parent.horizontalCenter
    text-auto-resize: false
    width: 275

  TextMessageLabel
    id: statusLabel
    anchors.bottom: parent.bottom
    anchors.left: parent.left
    anchors.right: parent.right

  TextMessageLabel
    id: customMessage
    height: 32
    anchors.top: parent.top
    anchors.horizontalCenter: parent.horizontalCenter
    background-color: #00000890
    border: 1 #cc0c0c
    margin-top: 80
    text-auto-resize: false
    text-wrap: false</pre>

		<p>
			 
		</p>
	</div>
</div>

<p style="background-color:#ffffff;color:#666666;font-size:14px;text-align:center;">
	 
</p>

<p style="background-color:rgb(255,255,255);color:rgb(102,102,102);font-size:14px;">
	<span style="background-color:#ffffff;color:#000000;font-size:18px;text-align:center;">Agora na mesma pasta abra o arquivo <u><strong>textmessage.lua</strong></u> e procure pela função <strong>displayMessage</strong> e debaixo de:</span>
</p>

<pre class="ipsCode prettyprint lang-lua prettyprinted">
<span class="kwd">if</span><span class="pln"> msgtype </span><span class="pun">==</span><span class="pln"> MessageSettings</span><span class="pun">.</span><span class="pln">none </span><span class="kwd">then</span><span class="pln"> </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">end</span></pre>

<p style="background-color:rgb(255,255,255);color:rgb(102,102,102);font-size:14px;">
	<span style="background-color:#ffffff;color:#000000;font-size:18px;text-align:center;">Coloque o seguinte script:</span>
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Spoiler</span>
	</div>

	<div class="ipsSpoiler_contents">
		<pre class="ipsCode prettyprint lang-lua prettyprinted">

<span class="pln">  </span><span class="kwd">if</span><span class="pln"> mode </span><span class="pun">==</span><span class="pln"> MessageModes</span><span class="pun">.</span><span class="pln">Warning </span><span class="kwd">then</span><span class="pln">
	</span><span class="kwd">local</span><span class="pln"> label </span><span class="pun">=</span><span class="pln"> messagesPanel</span><span class="pun">:</span><span class="pln">recursiveGetChildById</span><span class="pun">(</span><span class="str">'customMessage'</span><span class="pun">)</span><span class="pln">
	</span><span class="kwd">local</span><span class="pln"> color </span><span class="pun">=</span><span class="pln"> msgtype</span><span class="pun">.</span><span class="pln">color
	
	</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln"> text</span><span class="pun">:</span><span class="pln">find</span><span class="pun">(</span><span class="str">'|'</span><span class="pun">)</span><span class="pln"> </span><span class="pun">)</span><span class="pln"> </span><span class="kwd">then</span><span class="pln">
		color </span><span class="pun">=</span><span class="pln"> text</span><span class="pun">:</span><span class="pln">explode</span><span class="pun">(</span><span class="str">'|'</span><span class="pun">)[</span><span class="lit">1</span><span class="pun">]</span><span class="pln">
		text  </span><span class="pun">=</span><span class="pln"> text</span><span class="pun">:</span><span class="pln">explode</span><span class="pun">(</span><span class="str">'|'</span><span class="pun">)[</span><span class="lit">2</span><span class="pun">]</span><span class="pln">
	</span><span class="kwd">end</span><span class="pln">

	label</span><span class="pun">:</span><span class="pln">setText</span><span class="pun">(</span><span class="pln">text</span><span class="pun">)</span><span class="pln">
	label</span><span class="pun">:</span><span class="pln">setColor</span><span class="pun">(</span><span class="pln">color</span><span class="pun">)</span><span class="pln">
	label</span><span class="pun">:</span><span class="pln">setBorderColor</span><span class="pun">(</span><span class="pln">color</span><span class="pun">)</span><span class="pln">
	label</span><span class="pun">:</span><span class="pln">setWidth</span><span class="pun">(</span><span class="pln">label</span><span class="pun">:</span><span class="pln">getTextSize</span><span class="pun">().</span><span class="pln">width</span><span class="lit">+110</span><span class="pun">)</span><span class="pln">
	label</span><span class="pun">:</span><span class="pln">show</span><span class="pun">()</span><span class="pln">
	
	addEvent</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">()</span><span class="pln"> g_effects</span><span class="pun">.</span><span class="pln">fadeIn</span><span class="pun">(</span><span class="pln">label</span><span class="pun">,</span><span class="pln"> </span><span class="lit">250</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">end</span><span class="pun">)</span><span class="pln">
    removeEvent</span><span class="pun">(</span><span class="pln">label</span><span class="pun">.</span><span class="pln">hideEvent</span><span class="pun">)</span><span class="pln">
    label</span><span class="pun">.</span><span class="pln">hideEvent </span><span class="pun">=</span><span class="pln"> scheduleEvent</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">()</span><span class="pln"> 
		addEvent</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">()</span><span class="pln"> g_effects</span><span class="pun">.</span><span class="pln">fadeOut</span><span class="pun">(</span><span class="pln">label</span><span class="pun">,</span><span class="pln"> </span><span class="lit">250</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">end</span><span class="pun">)</span><span class="pln">
		scheduleEvent</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">()</span><span class="pln"> label</span><span class="pun">:</span><span class="pln">hide</span><span class="pun">()</span><span class="pln"> </span><span class="kwd">end</span><span class="pun">,</span><span class="pln"> </span><span class="lit">250</span><span class="pun">)</span><span class="pln"> 
	</span><span class="kwd">end</span><span class="pun">,</span><span class="pln"> calculateVisibleTime</span><span class="pun">(</span><span class="pln">text</span><span class="pun">))</span><span class="pln">
	</span><span class="kwd">return</span><span class="pln"> 
  </span><span class="kwd">end</span></pre>

		<p>
			 
		</p>
	</div>
</div>

<p style="background-color:#ffffff;text-align:center;">
	 
</p>

<p style="background-color:#ffffff;text-align:center;">
	 
</p>

<p style="background-color:rgb(255,255,255);">
	<span style="background-color:#ffffff;text-align:center;"><font color="#000000"><span style="font-size:18px;"> Feito essas alterações a personalização já deve estar funcionando, para testar você pode utilizar o seguinte comando:</span></font></span><br />
	 
</p>

<pre class="ipsCode">
/bc green | O torneio mundial da Elite Four se iniciará em 15min.</pre>

<p style="background-color:#ffffff;">
	<span style="background-color:#ffffff;color:#c0392b;font-size:18px;text-align:center;"><span style="text-align:left;">→</span></span><span style="background-color:#ffffff;color:#000000;font-size:18px;text-align:center;"><span> </span>Onde </span><span style="color:#000000;"><span style="background-color:rgb(255,255,255);font-size:18px;text-align:center;">/bc</span></span><span style="background-color:#ffffff;color:#000000;font-size:18px;text-align:center;"> é o comando broadcast </span>
</p>

<p style="background-color:#ffffff;">
	<span style="background-color:#ffffff;color:#c0392b;font-size:18px;text-align:center;"><span style="text-align:left;">→</span></span><span style="background-color:#ffffff;color:#000000;font-size:18px;text-align:center;"><span> green </span>é a cor que deseja personalizar, pode ser tanto em hexa como o nome da cor </span>
</p>

<p style="background-color:#ffffff;">
	<span style="background-color:#ffffff;color:#c0392b;font-size:18px;text-align:center;"><span style="text-align:left;">→</span></span><span style="background-color:#ffffff;color:#000000;font-size:18px;text-align:center;"><span> </span>mensagem qualquer</span><br /><span style="background-color:#ffffff;color:#c0392b;font-size:18px;text-align:center;"><span style="text-align:left;">→</span></span><span style="background-color:#ffffff;color:#000000;font-size:18px;text-align:center;"><span> </span>É necessário colocar o pipeline |  caso queira colocar uma outra cor, senão ele assumirá como padrão a cor vermelha do broadcast.</span>
</p>

<p style="background-color:#ffffff;">
	 
</p>

<p style="background-color:#ffffff;">
	<span style="background-color:#ffffff;text-align:center;"><font color="#000000"><span style="font-size:18px;">Caso você não tenha o script do broadcast, porem é impossivel não ter já que é padrão nos servidores, vou deixar disponível aqui:</span></font></span>
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Spoiler</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			 
		</p>

		<p style="background-color:rgb(255,255,255);">
			<span style="background-color:#ffffff;text-align:center;"><font color="#000000"><span style="font-size:18px;">Coloque na pasta do seu servidor em talkaction com o nome de broadocast.lua e coloque o seguinte:</span></font></span><br />
			 
		</p>

		<pre class="ipsCode prettyprint lang-lua prettyprinted">

<span class="kwd">function</span><span class="pln"> onSay</span><span class="pun">(</span><span class="pln">cid</span><span class="pun">,</span><span class="pln"> words</span><span class="pun">,</span><span class="pln"> param</span><span class="pun">,</span><span class="pln"> channel</span><span class="pun">)</span><span class="pln">
	</span><span class="kwd">if</span><span class="pun">(</span><span class="pln">param </span><span class="pun">==</span><span class="pln"> </span><span class="str">''</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">then</span><span class="pln">
		doPlayerSendTextMessage</span><span class="pun">(</span><span class="pln">cid</span><span class="pun">,</span><span class="pln"> MESSAGE_STATUS_CONSOLE_BLUE</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Command param required."</span><span class="pun">)</span><span class="pln">
		</span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">true</span><span class="pln">
	</span><span class="kwd">end</span><span class="pln">
	</span><span class="kwd">local</span><span class="pln"> t </span><span class="pun">=</span><span class="pln"> string</span><span class="pun">.</span><span class="pln">explode</span><span class="pun">(</span><span class="pln">param</span><span class="pun">,</span><span class="pln"> </span><span class="str">" "</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln">
	doBroadcastMessage</span><span class="pun">(</span><span class="pln">param</span><span class="pun">)</span><span class="pln">
	</span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">true</span><span class="pln">
</span><span class="kwd">end</span></pre>

		<p style="background-color:rgb(255,255,255);">
			<span style="background-color:#ffffff;text-align:center;"><font color="#000000"><span style="font-size:18px;">Coloque a tag no arquivo talkaction.xml:</span></font></span>
		</p>

		<pre class="ipsCode prettyprint lang-xml prettyprinted">

<span class="tag">&lt;talkaction</span><span class="pln"> </span><span class="atn">log</span><span class="pun">=</span><span class="atv">"yes"</span><span class="pln"> </span><span class="atn">words</span><span class="pun">=</span><span class="atv">"/bc"</span><span class="pln"> </span><span class="atn">access</span><span class="pun">=</span><span class="atv">"4"</span><span class="pln"> </span><span class="atn">event</span><span class="pun">=</span><span class="atv">"script"</span><span class="pln"> </span><span class="atn">value</span><span class="pun">=</span><span class="atv">"broadcastclass.lua"</span><span class="tag">/&gt;</span></pre>

		<p style="background-color:#ffffff;text-align:center;">
			 
		</p>

		<p>
			 
		</p>
	</div>
</div>

<p style="background-color:#ffffff;text-align:center;">
	 
</p>

<p style="background-color:#ffffff;text-align:center;">
	 
</p>

<p style="background-color:rgb(255,255,255);">
	<span style="color:#000000;"><strong style="background-color:#ffffff;color:#000000;font-size:18px;text-align:center;">Imagens de como fica in-game:</strong></span>
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Spoiler</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			<img alt="phLMbIM.png" class="ipsImage" data-ratio="66.62" height="523" width="785" src="https://i.imgur.com/phLMbIM.png" /><img alt="VU9rPkN.png" class="ipsImage" data-ratio="55.56" height="490" width="882" src="https://i.imgur.com/VU9rPkN.png" /></p>
	</div>
</div>

<p style="background-color:rgb(255,255,255);">
	 
</p>

<p style="background-color:rgb(255,255,255);">
	<span style="background-color:#ffffff;text-align:center;"><font color="#000000"><span style="font-size:18px;">Eai, vai ficar de fora? <br />
	Implemente já essa personalização e torne-se um servidor diferenciado dos demais.</span></font></span>
</p>
]]></description><guid isPermaLink="false">249897</guid><pubDate>Sat, 22 Jun 2019 15:57:23 +0000</pubDate></item><item><title>[OTC] Modificando seu OTcliente</title><link>https://xtibia.com/forum/topic/234203-otc-modificando-seu-otcliente/</link><description><![CDATA[
<p>Eai Pesosal, blz? estou atualizando o tópico de como Editar as funções mais basicas do OTC!<br />Vou ensinar a trocar o IP do OTC!<br />Trocar a Resolver o Debug que fica preto ao andar!<br />Resolver o erro que diz que não existe um arquivo dat compatível!<br />Como deixar o OTC com aparencia Transplarente! como o OTP<br />Como Mudar o Nome Que Aparece no Canto Superior do OTC!<br /><br /></p>
<pre class="ipsCode prettyprint lang-auto">
1.0- Trocar o IP do OTC
 
Primeiramente, Para Rrocar o IP, Localize o Arquivo "Cliente/Module/Cliente_entergame/Entergame.lua"
Abra o Arquivo entergame.lua
Procure Por: "setUniqueServer"
Ai vai ter algo parecido com isto: "EnterGame.setUniqueServer('127.0.0.1', 7171, 854, 270, 210)"
Ai o "127.0.0.1" Troque Pelo Seu IP!
</pre>
<p> <br />Agora o OTC esta Entrando Normalmente no seu OTserv!<br /><br /><img src="http://imagizer.imageshack.us/v2/xq90/855/3f6f.png" alt="3f6f.png" /><br /><br /></p>
<pre class="ipsCode prettyprint lang-auto">
2.0- Trocar os Arquivos .spr e .dat pelos seus!
 
Vá em data/things/854
Ai Vai ter Dois Arquivos .spr e .dat, Remova eles e troque Pelo Seu!
Pronto, Cliente com as Sprites do Seu Servidor!</pre>
<p><img src="http://imagizer.imageshack.us/v2/xq90/855/3f6f.png" alt="3f6f.png" /></p>
<br /><pre class="ipsCode prettyprint lang-auto">
3.0- Resolver Erro de Arquivo Dat Não Compatível!
 
Existem Duas Soluções!
 
3.1- A Primeira Solução:
 
Se seus Arquivos .dat e .spr não forem EXTENDIDO, você pode EXTENDER ele, Segue o Tutorial ao Lado &gt;&gt; <a href="/" rel="">http://www.tibiaking...ite-de-sprites/&lt;&lt;</a>
 
3.2- A Segunda Solução:
Vá em Cliente\modules\game_things
e Abre o Arquivo Things.lua
Procure Por: "g_game.enableFeature(GameSpritesU32)"
Se seu cliente For EXTENDIDO não mexa em nada!
Mas se seu Cliente Não for Extendido
Substitua: "g_game.enableFeature(GameSpritesU32)"
Por: "--g_game.enableFeature(GameSpritesU32)"
</pre>
<p><img src="http://imagizer.imageshack.us/v2/xq90/855/3f6f.png" alt="3f6f.png" /></p>
<br /><pre class="ipsCode prettyprint lang-auto">
4.0- Para deixar o OTC por padrão com Forma Transplarente Igual ao OTP!
 
Abrir o Arquivo: "modules\game_interface\gameinterface.lua" 
Procure Por "setupViewMode(0)"
obs: Pode ter Até 3 deste!
Substitua todos Por "setupViewMode(2)"
</pre>
<p><img src="http://imagizer.imageshack.us/v2/xq90/855/3f6f.png" alt="3f6f.png" /></p>
<br /><pre class="ipsCode prettyprint lang-auto">
5.0- Como Mudar o Nome Que Aparece no Canto Superior do OTC!
 
Vá em modules\client
Abra o Arquivo Client.lua
e Procure Por: "g_window.setTitle"
Vai Tar Algo Mais ou Menos Como Isto: "g_window.setTitle('OTclient')"
Oque esta dentro da Aspas na Tag, substitua pelo Nome desejado!
ex: "g_window.setTitle('OTclient1000000')"
</pre>
<p> <br />Pronto, Este Tutorial Já Ajudou Muita Gente e Agora Vai Ajudar a Muito mais!<br />Atualizei o Tópico, com Mais Informações, Removi as Imagens Por Deixarem o Tópico com Poluição Visual e Reformulei Todo o Resto do Tópico!<br /><br />Créditos<br /><br />Summer Slyer(Zet0N0Murmurou) Pelo Tutorial!<br />GabrielSapient Por Me Ensinar a Deixar o OTC Transplarente Como o OTP!<br />Wend Por Me Ensinar a Mudar o Nome!</p>
]]></description><guid isPermaLink="false">234203</guid><pubDate>Fri, 29 May 2015 00:18:18 +0000</pubDate></item><item><title>[OTC | MOD] Auto-Update</title><link>https://xtibia.com/forum/topic/234454-otc-mod-auto-update/</link><description><![CDATA[
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);"><strong>WakiV Otclient Updater</strong></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);"> </p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);"><strong>O que faz?</strong></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);"><span style="font-family:'Helvetica Neue';"><span style="font-family:arial;">Esse auto-updater, conta com as funções de: Checar se existe novos updates na inicialização do 'OTC', baixa os updates em diretórios especificados pelo administrador, baixa e extrai arquivos '.ZIP', reinicia o' OTC' apos terminar o download do patch, múltiplos patchs.</span></span></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);"> </p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);"><strong>Instalação:</strong></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);">1 - Crie no diretório raiz de seu site um arquivo '.txt' chamado de 'Update.txt', preencha o arquivo como o arquivo a seguir: <a href="http://pastebin.com/cdwnD6qg" title="Link externo" rel="external nofollow">http://pastebin.com/cdwnD6qg</a></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);">Obs: nesse pastebin já tem as instruções de como adicionar novos updates.</p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);">2 - Baixe o 'Updater Patcher.rar' extraia na pasta raiz do seu otclient.</p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);">3 - Depois de ter baixado o 'Updater Mod.rar', extraia e coloque a pasta do mod na pasta 'mods' do seu otclient<br />configure o caminho para o executavel do 'updater patcher' no arquivo .lua.</p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);">4 - Agora você precisa ir na pasta raiz do seu 'otclient 'e configurar o arquivo 'Config.ini' com os seguites dados:</p>
<p><span style="color:rgb(102,102,0);">[</span><span style="color:rgb(102,0,102);">Geral</span><span style="color:rgb(102,102,0);">]</span><br /><span style="color:rgb(102,0,102);">WebSite</span><span style="color:rgb(102,102,0);">=</span><span>http</span><span style="color:rgb(102,102,0);">:</span><span style="color:rgb(136,0,0);">//dragonhertsserver.pusku.com/ - o seu website vai aqui é o site onde fica o 'update.txt'</span><br /><span style="color:rgb(102,0,102);">Client</span><span style="color:rgb(102,102,0);">=</span><span>otclient </span><span style="color:rgb(102,102,0);">-</span><span> nome </span><span style="color:rgb(0,0,136);">do</span><span> executavel </span><span style="color:rgb(0,0,136);">do</span><span> seu otclient</span><br /><span style="color:rgb(102,0,102);">SiteFile</span><span style="color:rgb(102,102,0);">=</span><span style="color:rgb(102,0,102);">Update</span><span style="color:rgb(102,102,0);">.</span><span>txt </span><span style="color:rgb(102,102,0);">-</span><span> o nome </span><span style="color:rgb(0,0,136);">do</span><span> arquivo que fica </span><span style="color:rgb(0,0,136);">no</span><span> site marcando os updates</span></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);">5 - Depois de tudo configurado é só abrir o 'otclient' normalmente que o 'patcher' vai executar junto. use sempre link de download direto para adicionar um novo update.</p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);"> </p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);"><span style="font-family:'Helvetica Neue';"><strong><span style="font-family:arial;">Download:</span></strong></span></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);">Updater Mod: <a href="http://www.mediafire.com/download/8xc6boa8xpdh3mu/Updater+Mod.rar" title="Link externo" rel="external nofollow">http://www.mediafire...Updater Mod.rar</a></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);">Updater Patcher: <a href="http://www.mediafire.com/download/ynnqy1iba8qqeyq/Update+patcher.rar" title="Link externo" rel="external nofollow">http://www.mediafire...ate patcher.rar</a></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);"> </p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);"><strong>Vídeo que mostra como o mod funciona:</strong></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);"></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);"> </p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);"> </p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);"><strong>Imagem:</strong></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);"> </p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);"><img src="http://i.imgur.com/YXcVzVa.jpg?1" alt="YXcVzVa.jpg?1" /></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);"> </p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);"> </p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);"> </p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);">Obs: Se você tem um servidor é quer usar o updater, crie um instalador definindo já o diretório do seu client para o player não precisar configurar o arquivos '.lua'<br />Obs²: Em arquivos compactados use sempre a extenção '.ZIP'<br />Obs³: É preciso o NET framework para rodar.</p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);"> </p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);"><span style="color:rgb(255,0,0);"><strong>Créditos:</strong></span></p>
<p style="color:rgb(71,67,67);font-family:tahoma, helvetica, arial, sans-serif;font-size:12px;background-color:rgb(253,253,253);">vyctor17</p>
]]></description><guid isPermaLink="false">234454</guid><pubDate>Wed, 03 Jun 2015 20:45:35 +0000</pubDate></item><item><title>Compilar OTCV8 para celular</title><link>https://xtibia.com/forum/topic/251987-compilar-otcv8-para-celular/</link><description><![CDATA[
<p>
	<strong>Fala queridos , não sei se ja viram ou tentaram vender para vocês mas tibia ja esta acessivel no celular tutorial para android.</strong>
</p>

<p>
	<br />
	<strong>Todos os creditos a equipe do OtcV8</strong>
</p>

<p>
	 
</p>

<div class="ipsEmbeddedVideo">
	<div>
		<iframe allowfullscreen="" frameborder="0" height="344" width="459" data-embed-src="https://www.youtube.com/embed/chaqrjLzmyY?feature=oembed"></iframe>
	</div>
</div>

<p>
	 
</p>
]]></description><guid isPermaLink="false">251987</guid><pubDate>Sat, 04 Jul 2020 02:14:53 +0000</pubDate></item><item><title>OT server offline</title><link>https://xtibia.com/forum/topic/251851-ot-server-offline/</link><description><![CDATA[
<p>
	Oi eu estou tentando colocar um otserver online nao consigo acessar pelo meu ip que é o que peguei no meuip.com.br 160.238.221.252  mas vo tenta logar e nao loga só pelo ipv4 que loga  no site do otserver list eu consigo colocar online puis o ip do no-ip q usei  esse debaixo lostblood no config lua eu coloco o ip do meuip e tambem quando testo as portas aparecem abertas aki é net fibra optica da waynet ja liguei la o kra libero as portas no modem e não resolveu qual sera o problema?
</p>

<table style="background-color:#90afbb;border-collapse:collapse;border-spacing:0px;border:0px;color:#084358;font-size:11px;text-align:center;">
	<tbody>
		<tr>
			<td style="border-bottom:1px solid #cccccc;text-align:left;">
				<a href="https://brazil.otservlist.org/servers/settings/1633310" style="color:#ff5917;" rel="external nofollow">lostblood.servegame.com</a>
			</td>
		</tr>
	</tbody>
</table>
]]></description><guid isPermaLink="false">251851</guid><pubDate>Sun, 07 Jun 2020 18:50:40 +0000</pubDate></item><item><title>[MOD] Top Button</title><link>https://xtibia.com/forum/topic/233695-mod-top-button/</link><description><![CDATA[
<p style="text-align:center;"><span style="font-size:18px;"><span style="font-size:24px;">Eai pessoal, beleza?</span></span></p>
<p style="text-align:center;"> </p>
<p style="text-align:center;"><span style="font-size:18px;">Trago pra vcs um mod para otclient...</span></p>
<p> </p>
<p style="text-align:center;"><span style="font-size:18px;">Um simples botão que aparece no topo do client,</span></p>
<p style="text-align:center;"><span style="font-size:18px;"><img src="http://i.imgur.com/xyVWldI.png" alt="xyVWldI.png" /></span></p>
<p style="text-align:center;"> </p>
<p style="text-align:center;"><span style="font-size:18px;">clique e aparecerá uma lista de opções, cada uma com a função de executar uma talkaction</span></p>
<p style="text-align:center;"><span style="font-size:18px;">[Tudo configurado por você]</span></p>
<p style="text-align:center;"><span style="font-size:18px;"><img src="http://i.imgur.com/VNpofhE.png" alt="VNpofhE.png" /></span></p>
<p> <br /><br /><span style="font-size:24px;">Vamos lá, para instalar é simples</span><br /><br /><span style="font-size:18px;">1. Baixe o arquivo;</span><br /><span style="font-size:18px;">2. Extraia para a pasta de seu client;</span><br /><span style="font-size:18px;">3. Edite oque quiser;</span><br /><br /><br /><span style="font-size:24px;">Bom, segue onde editar</span><br /><br /><span style="font-size:18px;">No arquivo <strong>mods/mod_topbutton/mod_topbutton.lua</strong></span></p>
<div><pre class="ipsCode prettyprint lang-auto">
local config = {
  id = 'modTopButton', --Não pode conter espaços
  name = 'Top Button', --Nome que aparecerá quando passar o mouse por cima do botão
  img = 'button', --ícone do botão [no caso, pega a imagem button.png localizada na pasta do mod]
  options = { --opções que aparecem ao clicar no botão
    --[texto] = comando,
    ['Opcao 1'] = '!comando 1',
    ['Opcao 2'] = '!comando 2',
  }
}
</pre></div>
<p> </p>
<div> </div>
<div>
<span style="font-size:18px;color:rgb(255,0,0);">Um exemplo de uso é o </span><a href="https://xtibia.com/forum/topic/233694-checkpoint-v11/" rel=""><span style="color:rgb(0,0,255);">Checkpoint System v1.1</span></a>
</div>
<p> <br /></p>
<p style="text-align:center;"><span style="font-size:24px;"><a href="https://drive.google.com/file/d/0B3_yBTfd9ifeTjdIR2tZYWxaUHc/view?usp=sharing" rel="external nofollow">DOWNLOAD</a></span></p>
<p style="text-align:center;"><span style="font-size:24px;"><a href="https://www.virustotal.com/pt/file/d61343f942056f42655f14d048c4204583d0d8609988f721696d40ff3e14c086/analysis/1430694845/" rel="external nofollow">SCAN</a></span></p>
]]></description><guid isPermaLink="false">233695</guid><pubDate>Sun, 03 May 2015 22:47:29 +0000</pubDate></item></channel></rss>
