Líderes
-
Saymon Kopolsky
MembroPontos216Total de itens -
xWhiteWolf
HéroiPontos3605Total de itens -
-
Zayon Owatari
HéroiPontos26Total de itens
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 04/22/17 em todas áreas
-
Easy Mapper 2.0 (Remeres 8.60 Customizado) FINAL [Atualizado 22/06/17]
Easy Mapper 2.0 (Remeres 8.60 Customizado) FINAL [Atualizado 22/06/17]
vedovi e 2 outros reagiu a Saymon Kopolsky por uma resposta no tópico
3 pontosAVISO: Faça backup (cópia) dos arquivos para evitar dor de cabeça. Eu customizei esse map editor para uso pessoal, mas resolvi postar porque a comunidade OT precisa de mais conteúdo. Eu não fiz isso tudo sozinho, tem varias extensões de outros fóruns, os créditos aos usuários estão descritos nelas. Scan: Clique aqui (1.0) Download: Clique aqui Como Instalar: Pressione a tecla com bandeira do windows + r, digite %appdata%, provavelmente você vai está na pasta roaming, delete a pasta remeres que estiver ai, se não tiver, apenas copie a pasta Remere's Map Editor que está dentro do arquivo winrar que você baixou, agora vá em arquivos de programas (C:\Program Files (x86) e crie uma pasta com o nome Remere's Map Editor e cole os outros arquivos estão dentro do arquivo rar.3 pontos -
[8.6] Tibia Harry Potter
[8.6] Tibia Harry Potter
mattei123 reagiu a johnmlkzika por uma resposta no tópico
1 pontoHARRY POTTER ONLINE Servidor TIBIA HARRY POTTER Alguma vez voce pensou que poderia ser um aluno de HOGWARTS? Agora é sua chance! Venha para o Harry Potter Online e fassa amigos, pegue varinhas, voe de vassoura e muito mais! Estou disponibilizando o servidor pois meu projeto do Harry Potter Online foi por agua abaixo, por causa de um cara que conseguiu rippar as sprites do quilante... Meu projeto já estava 90% andado, mas agora ferrou-se tudo. Então estou mandando a parte do meu projeto que está pronta, porem com sprites do quilante (Já ESTA TUDO ADAPTADO) - O QUE VOCE VAI TER QUE FAZER: Ajustar o servidor... Já estou te dando quase tudo de mao beijada, agora é só fazer alguns ajustes. Como: adicionar NPC, fazer action de compra de TOGA, e coisas simples! Bem.. é isso aproveitem! Distro Totalmente Estavel Sem bugs Sem virus Sem motherfuckingthings! Apenas alegria! -O QUE TEM NO SERVIDOR: •1 Classes: Aluno •O player ao upar um level, ganha "POINTS" para trocar por LIFE OU MANA assim torna o jogo mais sensivel •Mapa Proprio •JA EXISTE VIP E DONATES - AJUSTE PARA O NESCESSARIO -O QUE FALTA NO SERVIDOR: •AJUSTAR LIFE/HIT/LOOT DE MONSTROS - AJUSTAR OS SPRITES DAS HORCRUX (MAS O SISTEMA JA ESTA FUNCIONANDO CORRETAMENTE) -SISTEMAS: • Vassoura • Preparar poçoes (voce pega o axe [iD:2386], usa-o naqueles crystais que estaão espalhados pelo servidor, e com o crystal na backpack, use a magia "preparar", isso vai fazer com que seu caldeirão tenha carga,dai voce poderá dar USE no vial em cima do caldeirão para terminar sua poção!) -SITE HTML INCLUSO! DOWNLOAD: http://depositfiles....files/csh0uuxil http://depositfiles....files/csh0uuxil (INCLUSO: SERVIDOR, CLIENTE, SITE) SCREENS: REP+ PRA MIM POW! SCAN: https://www.virustot...sis/1342184200/ Por Virus Total CREDITOS: Beddy Erickrusha - fez a parte do mapa do entorno de HOGWARTS,obrigado man! Johnmlkzika Por Ter Compartlhado1 ponto -
Dodge System (Por Item)
Dodge System (Por Item)
NTORox OTServer reagiu a xWhiteWolf por uma resposta no tópico
1 pontoFala galera do TK, hoje vim trazer pra vocês à pedidos do grande @azzouks uma versão do meu Dodge System por equips. Explicação: É um sistema onde vc pode colocar uma % de esquiva nos itens e ao usá-los você ganha a chance de desviar dos ataques e levar somente metade do dano. Qualquer semelhança com esse > http://www.tibiaking.com/forum/topic/8223-mod-reflect-system-01/ < mod do @Aluccard não é mera coincidência, eu usei o mod dele como base pra fazer o meu *-* Sem mais delongas vamos ao script: Vá na pasta do seu server e abra uma pasta chamada "mods".. lá dentro crie um arquivo com o nome que vc quiser (sério) de extensão.xml e adicione o seguinte nele: Configurando: Se você não manja de script então eu sugiro que vcs só alterem essa parte aqui: em vermelho é o máximo que uma pessoa pode ter de dodge: se ela tiver usando um full set que deixe ela com um total de 99% de dodge ela só vai poder aproveitar 50%. Isso foi feito pra evitar um bug.. vocês podem se sentir livres pra alterar esse numero mas não coloquem nada muito grande pra evitar que seus servers explodam. em verde é a porcentagem do dano que vocês vao tomar ao desviar.. nesse caso os ataques que eu der dodge darão 50% do dano (0.5) em azul é a porcentagem inicial que todos os players vão ter. Por padrão está 0 mas se vc quiser que todos os players do seu server tenham 20% e que cada item dê 5% também é possível editando esse 0 pra 20. Feito isso vá em data\lib\function.lua e adicione essas linhas function getItemDodgePercent(itemuid) return getItemAttribute(itemuid, "dodgePercent") end function doPlayerAddDodgeItem(cid, itemid, percent) local item = doPlayerAddItem(cid, itemid) doItemSetAttribute(item, "description", "[Dodge: "..percent.."%]") doItemSetAttribute(item, "dodgePercent", percent) end Agora é só aproveitar no seu server.. toda vez que vc for usar num script vc poderá utilizar as funções getItemDodgePercent(item) e a doPlayerAddDodgeItem(cid, itemid, percent). Pra finalizar aqui tem um exemplo de uma quest que dá uma plate armor com 0.8% de dodge: Espero que gostem! EDITADO: Fiz um script de action pra ser uma pedra que vai dar dodge nos items. Ele tem muito que melhorar mas por ora ele tá 99% pronto pra ser colocado em algum server que utilize esse dodge system. function isHandItem(uid) -- NW based on Mock uid = uid or 0 if isInArray({1,2,3,4,5,6}, getItemWeaponType(uid)) then return true end return false end function getItemDodgePercent(itemuid) return getItemAttribute(itemuid, "dodgePercent") or 0 end function setItemDodgePercent(uid, percent) doItemSetAttribute(uid, "description", "[Dodge: "..percent.."%]") doItemSetAttribute(uid, "dodgePercent", percent) end function onUse(cid, item, fromPosition, itemEx, toPosition) level = 0 local upgrade = { [1] = {min = 1, max = 5, chance = 100}, [2] = {min = 5, max = 10, chance = 80}, [3] = {min = 10, max = 20, chance = 60}, [4] = {min = 20, max = 40, chance = 40}, [5] = {min = 40, max = 50, chance = 20} } function isWearing(uid) -- NW based on Mock uid = uid or 0 if isInArray({uid}, getPlayerSlotItem(cid, 1).uid) or isInArray({uid}, getPlayerSlotItem(cid, 4).uid) or isInArray({uid}, getPlayerSlotItem(cid, 7).uid) or isInArray({uid}, getPlayerSlotItem(cid, 8).uid) then return true end return false end if isHandItem(itemEx.uid) or isWearing(itemEx.uid) then local name = getItemName(itemEx.uid) local atual = math.floor(getItemDodgePercent(itemEx.uid)*10)/10 for i = 1, #upgrade do if string.find(tostring(name),"+".. i .."") then level = i end end if level >= #upgrade then doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"Your item is already on max level, you can't upgrade it any further.") return true end if math.random(0,100) <= upgrade[level + 1].chance then doRemoveItem(item.uid, 1) doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"You leveled your "..getItemNameById(itemEx.itemid).." to ".. level+1 ..".") setItemDodgePercent(itemEx.uid, atual + (math.random(upgrade[level+1].min,upgrade[level+1].max))/10) doItemSetAttribute(itemEx.uid,'name', getItemNameById(itemEx.itemid)..' +'..(level+1)) doSendMagicEffect(toPosition, math.random(28,30)) else doRemoveItem(itemEx.uid, 1) doRemoveItem(item.uid, 1) doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"Your "..getItemNameById(item.itemid).." has failed and destroyed your "..getItemNameById(itemEx.itemid).." in the process") doSendMagicEffect(toPosition, 4) end else doPlayerSendTextMessage(cid, 24,"You cant refine this item.") end return true end Note que pra colocar dodge num item ele tem que: Estar equipado se for qualquer tipo de armadura (legs, boots, helmet, armor) ou livremente (se for weapon/shield).. Necklaces, rings e pendants não são possíveis de colocar dodge.. se vc quiser que seja edita essa função dentro do script pros slots de ring e necklace mas eu não aconselharia a fazer isso. e no xml coloque: <action itemid="8306" script=upgraderock.lua"/>1 ponto -
Como adicionar uma nova outfit no seu server.
Como adicionar uma nova outfit no seu server.
jhonathan wendrell reagiu a TioDoLeite por uma resposta no tópico
1 pontoBom primeiro vá no Dat editor ou Object Builder, pegue a looktype da roupa, no meu caso vou usar 661 para a mulher e 662 para o homem. Imagem -> Depois vá até C:\Users\pc\Desktop\Server\data\XML do seu servidor e procure por outfit.xml, abra o arquivo que vai conter isso dentro: Adicione uma nova tag debaixo da ultima. -- Como Editar -- Vermelho - O id da tag no caso, se tiver um 57 na penultima tag você coloca um número a mais na tag seguinte no caso vai ficar 58. Laranja - Gender [Mulher = 0], [Homem = 1] Verde - Looktype da roupa que foi oque eu falei acima. Cyano - Nome da Roupa. (Pode ser qualquer nome) Ajudei ? Da um rep+ ai , duvidas só chamar no PM.1 ponto -
Criando instalador para Client
Criando instalador para Client
Lordoritos reagiu a Hona por uma resposta no tópico
1 pontoCriando instalador para Client Download: baixaki,mediafire,4shared Abra o aplicativo [ Install Creator ]. Depois você vera uma tela em cima do aplicativo. Click em avançar. Agora escolha os arquivos lembrando elis devem estar em uma pasta. (o programa ira copiar tudo que estiver dentro da pasta) Depois de escolher os arquivos. Escolha o idioma de sua preferencia. Escolha o nome do programa. Depois click em avançar. Agora vc escolhe se seu instalador sera full (tela cheia)ou small (pequeno). Depois click em avançar. Olhe a imagem abaixo e façam o ki estar nela. Depois de configurar click em avançar. Agora coloque tudo sobre o aplicativo que vc quer criar. Depois click em avançar. Agora coloque a descrição da sua licença. Depois click em avançar. Agora escolha o local a onde o seu jogo sera salvo depois de instalado no pc do jogador. Depois click em avançar. Agora vamos criar um atalho para seu arquivo. Procure seu arquivo .exe na pasta. Agora coloque o nome do seu atalho. Depois marque a caixa que diz: Add desktop shortcut Agora click em avançar. Aki deixe em branco. Agora click em avançar Agora selecione se quer ou não uninstaller. Depois click em avançar. Agora marque a caixa que diz do not build the install program Agora clique em concluir. Agora click em Build. Agora escolha onde vai salvar o instalador. Depois inicie o teste se ficou como vc queria. Creditos: Adriano C1 ponto -
Usando RME em 10.00/11.x
Usando RME em 10.00/11.x
rkkksalgado reagiu a Jaurez por uma resposta no tópico
1 pontoOlá galera do TK. Depois de muito sufoco que eu passei tentando fazer "funcionar" o editor de mapa 10.x, descobri pesquisando aqui mesmo no Tibia King como resolver. Só que os posts que eu acessei não descreviam, digamos, o passo a passo, então vou tentar explicar o mais resumido possível como utilizar. Tutorial em fotos. Bem, vamos lá. Sigam os 10 passos após baixarem. 1- Descompactar o arquivo (dããããã); 2- Executar o RME; 3- Vai pedir a pasta do tibia 11.40; 4- Selecione o tibia 11.40 (Vem junto com o remeres no download); 5- Clique em OK----vai dar erro ( não se preocupe com isso ); 6- Cancele a próxima janela; 7- Vai cancelando até parar de aparecer aquelas janelinhas chatas de erro; 8- Não feche o RME; 9- Clique em FILE-depois em PREFERENCES- depois em CLIENT VERSIONS, desmarque o quadrinho CHECK FILE SIGNATURES- clique APPLY-depois OK; 10- SEJA FELIZ e dê um REP bem bacana se te ajudei. Remeres compatível com as versões atuais 10.00/11x Scan: FOTOS DO PASSO A PASSO, as fotos são da outra versão mas vale pro 11.40 ATT, Jaurez1 ponto -
New Library v. 1.2
New Library v. 1.2
Underewar reagiu a xWhiteWolf por uma resposta no tópico
1 pontoFala galera, hoje vim trazer pra vocês uma nova biblioteca de funções que eu venho desenvolvendo, pretendo ir atualizando esse tópico constantemente sempre adicionando funções novas e explicando a utilização delas. Algumas funções que eu coloquei aqui estão presentes na OTAL também, porém algumas eu fiz pequenas correções de forma que essa lib poderia facilmente substituir a OTAL sem grandes problemas (pelo menos se você utilizava apenas as funções básicas da otal) Todas as funções que não tem -- nome do autor do lado dela foram feitas por mim, xWhiteWolf ou Night Wolf (NW). O restante delas são créditos dos devidos autores, apenas coloquei pois considero funções vitais no server de cada um. Crie um arquivo em data/lib chamado 075 - White Wolf Functions.lua e coloque o seguinte código dentro: Agora eu vou explicar oque cada função faz porque de nada adianta lançar uma lib e não explicar oque ela faz não é mesmo? hahaha Obs inicial: quando uma função tiver em seus parametros um [] significa que oque está dentro do colchetes não é um parâmetro obrigatório. Como usar: doShowTimeByPos(cid, getCreaturePosition(cid), 20, 20) Irá fazer uma contagem regressiva na posição que o player se encontra começando de 20 e mandando a mensagem na mesma cor da fala dos monstros. Essa função é bem útil em actions/spells para fazer contagem de tempo em runas como a magic wall e ver quanto tempo falta pra magic wall sumir) Obs: Espero que ajude bastante pessoas a entender sobre funções, eu utilizei cid como o principal uid das funções nos exemplos mas você pode muito bem utilizar outros uids, fica a critério seu. Qualquer dúvida comentem abaixo que eu vou tentar ajudar da melhor maneira. Ahhh, isso daí foi testado em 8.54 mas deve funcionar em quase todas as versões que tenham as funções básicas do TFS. EDIT: Pessoal, agora é sério, essa lib tem fácil umas 600 linhas, das quais umas 500 eu devo ter codado sozinho (na mão, linha por linha). Eu tive todo o trabalho de testar cada uma delas e oque eu peço é o mínimo de gratidão e respeito. Se eu te ajudei clique em Gostei, se você tiver alguma dúvida eu to me colocando a disposição de responder qualquer coisa relacionada ao tópico, mesmo que você não saiba nem oque é uma lib apenas venha aqui e escreva sua dúvida. EDIT 2: Duas novas funções adicionas, espero que gostem! EDIT 3: Três novas funções adicionadas juntamente com suas respectivas explicações.1 ponto -
Passagem so por NPC
Passagem so por NPC
ZoR reagiu a thelifeofpbion por uma resposta no tópico
1 pontono forum tem, é so usar a barra de pesquisa.1 ponto -
(Resolvido)Modern Acc (Erro Account)
Altere por: <?php class Character_model extends Model { function __construct() { parent::__construct(); $this->load->database(); } public function getAccountID() { $this->db->select('id'); $sql = $this->db->get_where('accounts', array('name' => $_SESSION['name']))->row_array(); return $this->db->get_where('id', $where)->result_array(); } public function getPlayersOnline() { @$world = (int)$_REQUEST['world']; @$order = $_REQUEST['sort']; $where = array('online' => 1); if(!empty($world)) $where['world_id'] = $world; $o = "level DESC"; $allowed = array('level', 'vocation', 'name'); if(!empty($order)) if(in_array($order, $allowed)) $o = "$order DESC"; $this->db->select('name, level, world_id, vocation, promotion'); $this->db->order_by($o); return $this->db->get_where('players', $where)->result_array(); } public function getCount() { $this->db->where(array('account_id' => $_SESSION['account_id'], 'deleted' => 0)); $this->db->from('players'); return $this->db->count_all_results(); } public function characterExists($name) { $this->db->select('id'); return ($this->db->get_where('players', array('name' => $name))->num_rows ? true : false); } } ?> Testa assim.1 ponto
-
Configuração mob
Configuração mob
Kazuya9629 reagiu a Tadelho por uma resposta no tópico
1 pontoSe for de alguma habilidade/magia já criada no seu servidor, no arquivo do seu Boss, configure na sessão de <attacks> o "interval" em "50000" (50 mil milissegundos -> 50 segundos) e "chance" em "100" (100 por cento de chances de efetivar o ataque). Isso fará com que a cada 50 segundos ele sempre execute o ataque que você especificou. Exemplo, se ele soltar uma magia equivalente a uma GFB em um alvo: <attacks> <attack name="fire" interval="50000" chance="100" range="7" radius="5" target="1" min="-300" max="-500"> <attribute key="shootEffect" value="fire"/> <attribute key="areaEffect" value="firearea"/> </attack> </attacks>1 ponto -
[Link Quebrado] Pokemon Evolution [DxP]
[Link Quebrado] Pokemon Evolution [DxP]
NickPerez reagiu a douglaspk123 por uma resposta no tópico
1 pontoTa dando erro sql1 ponto -
Bomberman Event
Bomberman Event
wevertonvrb reagiu a Tiodarsaa por uma resposta no tópico
1 pontoEvento esta com alguns bugs estou corrigindo assim que tiver 100% eu posto novamente. @Vodkart se quiser fechar assim que tiver rodando certinho eu coloca novamente.1 ponto -
Mega Shiny Gardevoir.
Mega Shiny Gardevoir.
Alberto Silvano reagiu a Zayon Owatari por uma resposta no tópico
1 pontoOlá! Meu nome é Zayon, sou dono e desenvolvedor do servidor PokeBETA. Hoje desenvolvi a mega shiny gardevoir, e decidi liberar o uso da mesma para vocês, que sempre me ajudam com tudo. Caso queiram curtir a nossa página e conhecer mais sobre o servidor, eu agradeceria muito ♥ https://www.facebook.com/poketibiabeta/ Att, Poy. outfit_2464.obd1 ponto -
Klailos Completa - 10.90
Klailos Completa - 10.90
Dark Of Mage reagiu a NoNaMexD por uma resposta no tópico
1 pontoEstou compartilhando, assim como fiz na otland o mapa de klailos com todos. SCAN https://www.virustotal.com/pt/file/95ef4d948aa9e7704aead6aa166b2b61abce40f9282149175aa63447eb06e7fb/analysis/1451489004/ DOWNLOAD CREDITOS: MIKII [ OTLAND QUE SOU EU ].1 ponto -
Programa de spriter tibia vers 10.37
Programa de spriter tibia vers 10.37
Mc tarapiii reagiu a Danihcv por uma resposta no tópico
1 pontoTem o Object Builder que suporta as versões até 10.5x (versão 0.3.4) eu poderia passar o link, mas estou no celular, ai complica :s1 ponto -
[Ver Gold] Checar seu balance - !mygold
Fala galera do TK trago hoje algo bem simples, um comando que checa o balance do player. Exemplo, o player está em qualquer lugar e quer verificar o seu gold na bp sem precisar ver, então ele digita: !mygold É uma simples talkaction, fácil de adaptar Vamos lá: Em data/talkactions/scripts crie um arquivo com o nome de checkgold.lua e dentro adicione: function onSay(cid, words, param, channel) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have " .. getPlayerMoney(cid) .. " gold.") return true end Em data/talkactions/talkactions.xml adicione a seguinte linha: <talkaction words="!mymoney" event="script" value="checkgold.lua"/> Pronto, adaptado em seu servidor! Script simples e útil para alguns. Dúvidas pergunte. Até o próximo sistema. Absolute.1 ponto
-
(Resolvido)[RUNA] Destroy Field Bugada
vai em actions e procura o arquivos destroyfield e troca por esse... function onUse(cid, item, frompos, item2, topos) fieldpos = topos fieldpos.stackpos = 254 fielditem = getThingfromPos(fieldpos) if getPlayerMagLevel(cid) >= 3 then if fielditem.itemid > 0 and fielditem.itemid ~= 1497 and fielditem.itemid ~= 1498 then doSendMagicEffect(topos,2) doRemoveItem(fielditem.uid,1) if item.type > 1 then doChangeTypeItem(item.uid,item.type-1) else doRemoveItem(item.uid,1) end else doSendMagicEffect(frompos,2) return 0 end else doSendMagicEffect(frompos,2) doPlayerSendCancel(cid,"You don't have the required magic level to use that rune.") end return 1 end1 ponto
-
Dodge System (Por Item)
Dodge System (Por Item)
zuzuka reagiu a xWhiteWolf por uma resposta no tópico
1 pontofunction getItemDodgePercent(itemuid) return getItemAttribute(itemuid, "dodgePercent") or 0 end function setItemDodgePercent(uid, percent) doItemSetAttribute(uid, "description", "[Dodge: "..percent.."%]") doItemSetAttribute(uid, "dodgePercent", percent) end function onUse(cid, item, fromPosition, itemEx, toPosition) level = 0 local upgrade = { [1] = {min = 1, max = 5, chance = 100}, [2] = {min = 5, max = 10, chance = 80}, [3] = {min = 10, max = 20, chance = 60}, [4] = {min = 20, max = 40, chance = 40}, [5] = {min = 40, max = 50, chance = 20} } local name = getItemName(itemEx.uid) local atual = math.floor(getItemDodgePercent(itemEx.uid)*10)/10 for i = 1, #upgrade do if string.find(tostring(name),"+".. i .."") then level = i end end if level >= #upgrade then doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"Your item is already on max level, you can't upgrade it any further.") return true end if math.random(0,100) <= upgrade[level + 1].chance then doRemoveItem(item.uid, 1) doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"You leveled your "..getItemNameById(itemEx.itemid).." to ".. level+1 ..".") setItemDodgePercent(itemEx.uid, atual + (math.random(upgrade[level+1].min,upgrade[level+1].max))/10) doItemSetAttribute(itemEx.uid,'name', getItemNameById(itemEx.itemid)..' +'..(level+1)) doSendMagicEffect(toPosition, math.random(28,30)) else doRemoveItem(item.uid, 1) doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"Your "..getItemNameById(item.itemid).." has failed in the process") doSendMagicEffect(toPosition, 4) end return true end edite aqui local upgrade = { [1] = {min = 1, max = 5, chance = 100}, [2] = {min = 5, max = 10, chance = 80}, [3] = {min = 10, max = 20, chance = 60}, [4] = {min = 20, max = 40, chance = 40}, [5] = {min = 40, max = 50, chance = 20} } [level] = {minimo que adiciona de dodge, maximo que adiciona, chance de dar certo e avançar de nivel}, << NÃO ESQUECER DA VIRGULA!! Se eu to nv 4 tem 20% de chance de eu ir pro nv 5 e ganhar de 4% a 5% de dodge a mais no item. Lembrando que se vcs forem criar leveis novos precisa colocar a virgula no final, só o ultimo que não precisa de virgula. em actions coloca: <action itemid="8306" script="other/upgraderock.lua"/> e vc pode sair por aí usando a pedra 8306 pra colocar dodge noque quiser. Esse script tá bugado porque ele permite que vc coloque dodge até na backpack e nos items ao redor do mapa, eu tenho a versão arrumada dele mas preciso fazer alguns testes a mais antes de liberar1 ponto