Welcome to xTibia - Sua comunidade de Otserv e Tibia

Registre-se para utilizar nossas ferramentas e baixar conteúdos. Quando registrado e logado em sua conta, lhe garantimos uma experiência incrível em nossa comunidade!

  • Anúncios

    • Administrador

      Seja Patrocinado, veja os benefícios:   12-06-2016

        PROJETOS PATROCINADOS Leia abaixo para entender como funciona o nosso patrocínio:
      CICLO ENTRE PARCEIROS
      O xTibia caminha ao lado de outros dois projetos importantes, o nosso parceiro de berço OTPanel.com e a OTServlist.me. É notável ressaltar que através dessa parceria formulamos regras para convivência dos projetos dentro da nossa comunidade. De certo modo, as normas presentes nesta resolução acompanham as definições já em funcionamento (disponíveis nas regras gerais da comunidade).

      A IMPORTÂNCIA DO PATROCÍNIO
      Os projetos patrocinados pelo xTibia já contribuíram muitas vezes mais que vice-versa. O objetivo principal desta resolução visa aumentar as chances de crescimento desses projetos que possuem potencial.

      PORQUE SER PATROCINADO?
      Estão previstos aqui, além de normas de conduta ou execução administrativa dos projetos, normas para benefícios e incentivo aos projetos. Sendo estas:

      • Fórum
      O projeto ganhará um fórum acessível por um menu no topo do site e localizado na primeira categoria da index. Este fórum poderá conter categorias e sub-categorias, prefixos, background próprio e logo própria. Os membros parceiros terão poderes administrativos neste fórum. Os projetos também poderão solicitar fóruns privados, acessíveis com senha. Estes fóruns farão parte do SEO do xTibia, sendo acessado por centenas de membros todos os dias.

      • Operação
      Visto que queremos incentivar os projetos a interagirem com a comunidade, os parceiros terão direitos a benefícios extras. Os membros participantes do projeto patrocinado terão o limite de mensagens privadas triplicado, assim como o limite de upload de arquivos. Ainda falando em limite, estes poderão trocar o nome em 50% menos tempo que membros comuns. Também serão donos de um rank de identificação diferenciado do padrão de membros da comunidade, junto a medalha exclusiva para a categoria. Tudo isso visando dar ênfase aos desenvolvedores parceiros dentro da comunidade.  
      • Expansão
      A área de interação para com o público do projeto aumentará com a permissão para membros parceiros publicarem artigos na biblioteca do xtibia. Também terão apoio direto da equipe do xTibia, que deverá, acima de tudo, promover o incentivo ao publico para que acompanhe os conteúdos ou composições do projeto em discussão, do mesmo modo que incentivem diretamente estas ações.

      • Social
      O projeto quando patrocinado receberá total cobertura a seus conteúdos, principalmente nos meios sociais.

      • Promoção
      Todos os projetos terão direito a um sorteio para utilização de um slot de anúncio vago na comunidade, isto será válido entre um intervalo de 60 dias após o uso do benefício. Os projetos também participarão de sorteios mensais envolvendo nossos parceiros, OTPanel.com e OTServlist.me.

      • Facilidade
      Projetos patrocinados tem direito a 10% de desconto exclusivo na compra de anúncios no xTibia e na OTServlist.me (em qualquer slot).

      • Eventos
      Será discutido com os projetos, quinzenalmente, e juntamente com o coordenador de eventos da comunidade, a criação e execução de eventos entre os dois parceiros, visando beneficiar ambos.

      TENHA UMA CHANCE
      Qualquer projeto fundado em conceitos objetivos, com potencial para cumpri-los e executá-los ao longo do tempo poderá receber os benefícios. Mas não haverá espaço para projetos que não concordem com os termos primários, para manter tal parceria. Sendo estes:
        O projeto parceiro não deve divulgar outras empresas. Os membros do projeto deverão assumir um compromisso com a comunidade. Devem postar diariamente e participar desta. Deve ser adicionado 1 banner do xtibia no site do projeto.     Para proceder, cliquei aqui e mostre-nos seu projeto!

Leaderboard


Popular Content

Showing content with the highest reputation since 17-09-2017 in all areas

  1. 63 points
    OTXServer Global Full OtherWorld + Events + War Anti-Entrosa [CLIENTS COMPATÍVEIS] 10.97, 10.98, 11.00 E FLASH. [bUGS E DOWNLOAD] BAIXEM E REPORTEM EM: https://github.com/malucooo/Otxserver-New [FEATURES] NEW DEPOT, NEW SPAWN, NEW CAST SYSTEM, NEW NPC SYSTEM VIA BANK BALANCE, NEW CRITICAL BOOST SYSTEM, NEW POTIONS, REWARD SYSTEM [MAPA] FULL GLOBAL MAP WITH OTHERWORLD TODAS CIDADES E NOVAS AREAS TODAS QUESTS FUNCIONANDO! [EVENTS] WAR-ANTIENTROSA, BATTLEFIELD, CAPTURE THE FLAG, LAST STANDING MAN AND ZOOMBIE EVENT. [AGRADECIMENTO] ### PELO ESPAÇO CONCEDIDO, TODOS QUE COLABORARAM MOSTRANDO OS BUGS, AOS AMIGOS QUE TRABALHARAM COMIGO: MATTYX14, MURILAO, MARCELOP, ANDREEYYY, SAMXXT, DARKJAV, AOS CRIADORES DO THE FORGOTTEN SERVER E PRINCIPALMENTE E MAIS UMA VEZ A TODOS QUE ACREDITARAM E ACREDITAM NO PROJETO. [PUBLICIDADE] DATAPACK DISPONIBILIZADO EXCLUSIVAMENTE PARA COMUNIDADE ### POR ERICK NUNES(MALUCOOO). [CONTATO] SKYPE: onjogos WHATSAPP: (66) 9645-2743. [Créditos]Tfs 1.2 Developers -Zbizu - Pitis91 - MatheusMkalo - Gesior - Lundrial - M4G0 - Fish04k - Printer - Djarek - Ninjalulz - Slavidodo - Thexamx - Socket2810 - Ciroc -Absolute - Gordonbay - Mitsuig - Alissonfgp - Gunz - Bruno Minervino - Comedinha -Hirako - Maya - Mattyx14 – Darkjav - Viking Tibia
  2. 36 points
    cristofermartins

    Spr Editor [ 8.54/9.81 ][ versão 1.3 ]

    Olá, meu nome é Cristofer Martins, sou programador e gameDesigner e atualmente faço parte da equipe Digimon Adventure Online. Estou aqui para apresentar o meu Spr Editor, que desenvolvi para a equipe por que outros editores não eram funcionais/simples o suficiente. Alem disso, vi que não há sprite editores para as novas versões do Tibia, dificultando a inserção/remoção/edição/exportação de Sprites dos novos arquivos SPRs.Alem disso, um outro motivo foi que tive uma pessima experiencia com o Demonic Editor, tentei exportar as Sprites do nosso SPR para uma pasta umas 20 vezes e sempre dava algum erro no meio do caminho. Por isso desenvolvi um Editor eu mesmo. [center][img]http://www.havencrest.co.uk/images/page-divider%202.jpg[/img][/center] [center][b]Preview:[/b][/center] [center][img]http://i.imgur.com/oUHmlPo.png[/img][/center] [center][img]http://www.havencrest.co.uk/images/page-divider%202.jpg[/img][/center] [center][b]Funções( no menu ):[/b][/center] [b]-Add[/b]: Adiciona n sprites ao editor. Basta clicar no add que irá aparecer a janela para você seleciona todas as sprites que você quiser( multi seleção ). Essas sprites serão adicionadas no final da lista de sprites. OBS: As imagens devem ser PNG e o fundo das sprites deve ser transparente, e não rosa, como é de costume. [b]-Replace[/b]: Substitui n sprites no editor. Selecione com Ctrl ou até com o Shift as sprites no editor que você quer substituir, depois clique no menu em Replace. Irá aparecer uma janela aonde você seleciona as imagens PNG para serem substituidas. As sprites serão substituidas na sequencia, a primeira Sprite selecionada no editor vai ser substituida com a primeira imagem selecionada na pasta. O progresso do replace pode ser visto na barra de progresso. [b]-Delete: [/b]"Deleta" n sprites da lista.Selecione com Ctrl ou até com o Shift as sprites no editor que você quer deletar, depois clique no menu em Delete. Essas IDs das sprites que são deletadas vão aparecer "D:" e o ID delas, elas são sprites vazias, sem conteudo que você substiuir com novas imagens e assim aproveitar essas IDS que não estão servindo para nada. [b]Export:[/b] Exporta n Sprites. Basta selecionar com Ctrl ou com Shift ou clicando na sprite que o editor irá exportar essa sprite com fundo transparente. Você pode facilmente exportar todas as sprites para uma pasta ou apenas aquelas que lhe interessam. O progresso da exportação pode ser visto na barra de progresso. [b]Clear:[/b] Limpa a lista de sprites e remove as imagens da memoria. Util para criar um arquivo SPR do zero, por exemplo. Exemplo multi select( para deletar, substituir ou exportar ): [center][img]http://i.imgur.com/oqMo5xO.png[/img] [/center] [center][b]Abas Extract/Compile[/b][/center] [b]Extract: [/b]Nessa aba você clica em SPR file para abrir o arquivo SPR, escolhe a versão dessa SPR ali no "menu" do lado daonde tá escrito "version" e clica em Extract. O programa vai começar a extrair as sprites e adiciona-las a lista( as vezes a lista fica estatica basta clicar nela que ela atualiza com as sprites novas ) e o progresso da extração pode ver na barra de progresso. [b]Compile[/b]: Nessa aba você compila as Sprites da lista para um arquivo SPR. Para isso basta clicar em "save" e escolher o arquivo SPR que vai ser salvo, escolher a versão desse arquivo SPR como feito em Extract e clicar em "Compile!". O progresso da compilação pode ser visto na barra de progresso. [center][b]Outros[/b][/center] Search by ID: Pesquisa uma sprite pelo ID. Caso essa id exista na lista, a lista se move até a a sprite. [center][img]http://www.havencrest.co.uk/images/page-divider%202.jpg[/img][/center] [center][b]Download:[/b][/center] [center][url="http://www.4shared.com/archive/BYQgxaDt/SprEditor.html"]SPREditor[/url][/center] [center][b]Scan:[/b][/center] [center][url="https://www.virustotal.com/pt/file/b0bedf1a43e5012d0bfecb3559e59dbb0c3f3bc0c44e31e243669a459fff2275/analysis/1361771552/"]Virus Total[/url][/center] [center][img]http://www.havencrest.co.uk/images/page-divider%202.jpg[/img][/center] Caso você encontre algum bug, reporte nesse topico por favor. Aceito sugestões. Caso exista alguma versão que não seja aceita no editor e você tem a signiture(assinatura) do arquivo spr, poste aqui que eu atualizo o version.ini. [center] [img]http://www.xtibia.com/forum/public/style_images/21nl25z.png[/img][/center]
  3. 19 points
    Olá comunidade, O meu nome é Lucas Melo, conhecido como LuquitossML, eu recebo muitas mensagens aqui no fórum de membros que gostariam de auxilio para a criação/edição de uma sprite e outros com interesse de aprender a spritear, como eu não tenho tempo para ajudar todo mundo, decidi fazer um tutorial, neste tutorial eu vou compilar tudo aquilo que você precisa saber para começar a arte da perspectiva 45°. Aqui nós vamos aprender passo a passo para a criação de uma sprite. Tutorial Básico sobre quase tudo aquilo que você precisa saber. Introdução: Definição Geral. No Tibia, assim como todos os jogos, os elementos gráficos são chamados de Sprites. Para criar estes sprites, utilizamos uma técnica de design gráfico conhecida pelo nome de Pixel Art. Pouca gente conhece essa arte, que surgiu com os primeiros videogames. Pixel art significa fazer Arte através da utilização de Pixels. Pixel são os pequenos quadrados que compõe as imagens gráficas de qualquer sistema televisual. A organização correta de pixels pode gerar formas que podem ser reconhecidas como animais, objetivos, fotografias, plantas, animações variadas, etc.   Técnicas de pixel art Pixel art conta com algumas técnicas diferentes de qualquer outro tipo de arte, por ser uma arte de baixa resolução. Dithering: É o uso de padrões de pixels para se criar a ilusão de que existem mais cores do que realmente se estão sendo usadas. Também é usado para se fazer texturas. Anti-Alias (ou AA): Técnica para se suavisar linhas, usando tons médios para reduzir o contraste entre a cor da linha e a cor que envolve a linha. Sombreamento: O sombreamento em pixel art deve ser feito como em objetos reais, com base em uma fonte de luz. Sombrear a figura das bordas para o centro é um erro bastante comum, chamado de Pillow Shading (ou sombreamento 'travesseiro') Salvando deu Trabalho: Para se salvar um trabalho seu no computador, deve-se usar o formato correto.     JPG é um formato que usa um tipo de compressão bom apenas para imagens suaves e contínuas. Se usado no pixel art, causa uma enorme perda de qualidade BMP é um formato que apesar de manter a qualidade, acaba resultando em um arquivo muito pesado GIF e PNG são os formatos mais apropriados. GIF, com uma paleta limitada a 256 cores, é o formato ideal, já que é o menor e dificilmente o pixel art terá tantas cores. Se você usa o programa Paint para fazer pixel art, salve como PNG, pois quando o Paint salva como GIF, ele usa uma paleta de cores padrão, e causará alterações de cores no seu pixel art. Categorias: Pixel art é normalmente dividido em duas categorias. Isométrico é o pixel art que imita uma visão em 3 dimensões, mas que não possui perspectiva. Não-isométrico é qualquer outro tipo de visão como Front View (frente) ou Top View (de cima) Como começar a fazer Pixel Art? Existem vários programas para se fazer Pixel art. O mais simples deles é o conhecido Microsoft Paint, ou como dizem: MS Paint. A interface do Paint, é muito muito simples, e com o tempo você entenderá cada uma das funções que ele é capaz de realizar. Ferramentas Básicas: LUPA - Amplia ou reduz o CANVAS (Área onde se desenha ou Área selecionada). LÁPIS - Ferramente capaz de pintar um pixel por vez. BORRACHA - Apaga o que foi desenhado. LATA DE TINTA - Preenche formas com cores. Controles Básicos. CTRL + A = Seleciona todo o Canvas. CTRL + C = Copiar Canvas. CTRL + E = Abre a Janela de Atributos do Canvas. CTRL + F = Fullscreen CTRL + G = Cria uma grade de pixels nos aumentos de 6x e 8x da LUPA CTRL + R = Abre Janela de Inverter ou Girar o Canvas. CTRL + T = Ocultar Barra de Ferramentas. CTRL + V = Colar Canvas. CTRL + Z = Desfazer ação.   Desenvolvimento: Agora que já temos uma abordagem geral sobre o tema, vamos aprofundar nossos estudos. Luz e Sombra na perspectiva 45°. Para quem está começando é essencial ter noção de como a luz se comporta na perspectiva que focamos. De modo simples, a luz tem sua fonte a 45 graus acima do objeto, ou seja, a parte "noroeste" do sprite precisa sempre estar mais iluminado do que a parte "sudeste". Vejamos:   Obs: Virar a sprite horizontalmente permite verificar se a luz está se comportando da maneira correta (Vindo de uma fonte que está a esquerda e acima do sprite - ou seja, a noroeste ) Lembrem-se de sempre considerar que a parte sudeste não é totalmente escura. Pois a parte da luz que vem do noroeste e chega até sudeste cruzando o sprite, pode refletir/refracionar e iluminar a parte sudeste, mas lógicamente, essa luminosidade será menor.     Uma das regras mais importantes e obrigatórias caso seu intuito seja seguir o padrão Tibia: A luz vem do noroeste, mas mesmo assim, ainda existe luz vinda das demais fontes naturais e refletidas pelas superfícies. Sendo assim, seu sprite recebe luz de todas as direções, mas preferencialmente pelo Noroeste. Anti-Aliasing (AA). Quando trabalhamos com pixels percebemos que as bordas dos desenhos costumam aparentar muito o fato de que os pixels são de fato quadrados. O problema de muitos desenvolvedores gráficos no começo do pixel art, foi justamente no momento em que precisavam desenhar elementos que não seguissem o padrão quadrado dos pixels, como por exemplo Círculos, Esferas, e bordas redondas. Para muitos, a solução desse problema surgiu com a criação da ténica de Anti-Aliasing ou simplesmente AA. O AA foi um grande avanço no desenho de formas esféricas ou outras que precisassem passar a idéia de uma superfícia lisa, sem irregularidades. Mas como isto é possível se todo sistema televisual utiliza PIXELS para formar gráficos? A resposta é simples: O AA utiliza pixels que misturam as linhas com o plano de fundo em que elas estão. Quando isto é feito, nossos olhos não conseguem distinguir as irregularidades dos pixels. Em primeiro lugar devido ao tamanho dos pixels e segundo lugar devido a uma boa suavização de bordas. Vejam no exemplo: http://img507.imageshack.us/img507/8484/aaexampleok2zl9.png   Obs: Créditos da imagem: Galiant Na esquerda da 2° imagem, vemos o circulo formado de vários pixels pretos. Suas bordas estão "cruas" e sem AA. Assim, mesmo no aumento menor é possível perceber as falhas de suas bordas redondas. Na direita da imagem vemos o mesmo circulo após a aplicação da técnica de Anti-Aliasing. E agora, no aumento menor, não se pode mais ver as falhas das bordas. Como fazer Anti-Aliasing? O Anti aliasing é simples apesar de não parecer. Tudo se baseia em 3 passos: 1 - Observar primeiro o desenho que se quer suavizar. 2 - Observar o fundo no qual este desenho está inserido. 3 - Adicionar cores que simbolizam a mistura das cores do desenho, com o seu fundo. No exemplo acima (dos circulos) tinhamos um circulo PRETO, num fundo BRANCO, então apenas adicionamos tons de CINZA (PRETO + BRANCO) para suavizar a borda. No caso de uma sprite, o AA é feito internamente, ou seja, é feito dentro do outline/lineart da sprite, isso é feito utilizando no caso tons mais escuros nas partes cerrilhadas da sprite. Vejamos:   Como podem ver na direita, a disposição dos pixels escuros nas partes mais cerrilhadas é o chamado AA, não é necessário que seja utilizado apenas preto para se fazer o Anti-Aliasing. Exemplo: "Ahh luquitos, eu quero fazer algo roxo, como eu faço AA nele?" Simples, apenas faça os passos iniciais para se fazer uma sprite: Faça um outline (contorno do sprite) Comece a pintar. comece a fazer o AA. (no caso do meu amigo da sprite roxa, utilize tons roxos escuros nas partes cerrilhadas da sprite) Logo depois do AA pronto faça a Iluminação, no caso, Luz e Sombra. Depois de todos esses passos, veja se não há mais nada para arrumar e "Voilá" Sua sprite está pronta. Conclusão: O Investimento do Tempo e Esforço. Trabalho em pixel art é demorado e muitas vezes de difícil processo. Quanto mais tempo você gasta trabalhando, e, em seguida, um pedaço de refino, Melhor será sua aparência. Isso muitas vezes pode levar horas, mas as recompensas valem a pena. Se você não está preparado para investir o tempo em seu trabalho, Ele não ira fluir, independentemente do número de tutoriais que você lê. Nada da certo na primeira vez? As primeiras interações com o seu outline/lineart ou imagem (sprite) sombreada pode muitas vezes ser frustrantes. Não desanime, mesmo os erros aparentemente mais hediondos podem ser editados em algo decente. Uma vez que a última versão de sua sprite é completa, sentar e dar uma boa olhada nela é essencial. Este reajuste geralmente divide-se em um simples ciclo de 3 etapas: 1 - O que aparentemente há de errado? 2 - Como posso corrigir? 3 - A fixação dele. O uso de referências. Muitas vezes, você pode compensar a falta de conhecimento sobre algum objeto através de imagens. Estes podem ser encontrados a partir de uma variedade de fontes, a mais imediata a ser através de um motor de busca na internet.Você também pode encontrar cores novas e interessantes a partir de fotografias e arte dos outros pixel. Lembre-se que o plágio direto, incluindo a edição do trabalho de outras pessoas, é distintamente ilegal. Espero que o tutorial tenha sido útil para alguém, caso o tutorial tenha uma grande repercussão e o pessoal mais duvidas, eu irei continuar atualizando ele com um conteúdo mais aprofundado sobre o tema. Obrigado a equipe do Xtibia pelo espaço.   Atenciosamente, LuquitossML.
  4. 18 points
    Animal Pak

    [8.54] Naruto Legend

    [center][size=5][color=#006400][i][b][8.54] Naruto Legend[/b][/i][/color][/size] [i]Estou aqui para disponibilizar o download do melhor servidor de Narutibia da atualidade :)[/i] [color=#006400][i][b]Informações:[/b][/i][/color] [i]10 Novos monstros Mapa 100% refeito Teleports Sharingan Itens 100% Akatsuk Vocs 100% Jutsus 100% Mapa RPG. Organizações 100% Vocações 100% 3 Vilas Configurei o server para o sistema sqlite :) E Mais[/i] [color=#006400][i][b]Screens:[/b][/i][/color] [spoiler][img]http://img24.imageshack.us/img24/8803/temploo.png[/img] [img]http://img856.imageshack.us/img856/8015/tps.png[/img] [img]http://img26.imageshack.us/img26/7503/monstrosnovos.png[/img] [img]http://img703.imageshack.us/img703/6859/trainermx.png[/img] [img]http://img225.imageshack.us/img225/2631/susano.png[/img] [img]http://img691.imageshack.us/img691/5164/rasengan.png[/img] [img]http://img824.imageshack.us/img824/8477/jutsu4.png[/img] [img]http://img827.imageshack.us/img827/7057/jutsu2.png[/img][/spoiler] [color=#006400][i][b]Downloads:[/b][/i][/color] [url="http://www.4shared.com/file/B0qbVbKq/naruto_legend.html"]Server - 4 Shared[/url] [url="http://virusscan.jotti.org/pt-br/scanresult/6139d53aa935d6ebbea59c26ae28b1d4a58e15e9"]Scan[/url] [i]Esses 3 virus encontrados são dlls não reconhecidas.[/i] [url="http://www.mediafire.com/?bcyyv2so2nsvcwj"]Client[/url][/center] [center][color=#006400][i][b]Spr e Dat:[/b][/i][/color][/center] [center][url="http://www.4shared.com/rar/1B6Q2gDD/Naruto_Legend_Spr_Dat_e_Pic.html"]http://www.4shared.c..._Dat_e_Pic.html[/url][/center] [center] [color=#006400][i][b]Créditos:[/b][/i][/color] [i]SmoOkeR[/i][/center] [center][i]Bianco Nazito[/i][/center]
  5. 17 points
    GOD Vitor

    [OPEN SOURCE] otPokémon Imperium V1

    Como muios sabem, um tempinho atrás eu estava trabalhando na terceira versão do projeto Pokémon Paraíso, mas infelizmente ocorreram alguns problemas que impediram que eu seguisse com o projeto, mas talvez futuramente darei continuidade ao projeto. Há pouco tempo estava com um servidor online, durou apenas 2 meses, ele é baseado no otPokémon. Infelizmente desisti do projeto e então desisti disponibilizar. Façam bom uso! INFORMAÇÕES *Addon System *Tournament System *Open Source *Base Shiny *Sistema de Profissão funcionando perfeitamente (Basta configurar a criação dos itens). *Promotion System através do NPC 'Mestre Pokémon' localizado em Singer (Área VIP). *4 Continentes disponíveis. *OLD e NEW Client. *XP por RATES. *Diversas novas quests exclusivas e algumas semelhantes as do otPokémon. *BASE otPokémon Revolution. *SHOP System através de talkactions (!SHOP). *Bike System (SLOT). *Shiny Stone System *Boost Stone System *Level Reward *Sistema de tutorial exclusivo. ERROS *Quando põe o pokémon pra dentro ou fora da pokebola dá um erro na distro é por causa do language system, basta desativar. *Alguns debugs acontecem em alguns locais como por exemplo na Pesadelo Quest, Boost Hell, Boost Ice e entre outros. *Alguns erros as vezes se manifestam na distro como por exemplo o exp2.lua e o move1.lua, até então não descobri o que causa isso, provavelmente esses erros causam lag ou algo do tipo. Até então os erros que descobri não são tão graves, infelizmente não me recordo de todos. SCREENSHOTS DOWNLOADS Servidor (WINDOWS): Clique aqui para baixar. NEW Client: Clique aqui para baixar. NEW Client (Backup): Clique aqui para baixar. OLD Client: Clique aqui para baixar. Sources: Clique aqui para baixar. Caso tenha algum problema em baixar algum dos clientes, clique aqui para acessar a área de downloads com mais duas opções de sites. SCANS Servidor: Clique aqui para analisar. NEW Client: Clique aqui para analisar. OLD Client: Clique aqui para analisar. Sources: Clique aqui para analisar. AVISO: Como pode ver, há algumas acusações no OLD Client e no Servidor, isso é normal por causa das DLLS, mas não são ofensivas. CRÉDITOS *GOD Vitor / Zoom*Ibiza TEAM*Marshmello*Robson Silva*ADM Bella*Swich*Vinicius Clel / Sr. Pikachu Espero que gostem, até a próxima! Atenciosamente, GOD Vitor.
  6. 17 points
    Como o Xtibia mudou seu site, e o modo de edição de tópico colocarei resumido.. Global Compacto Versão 8.60 Links com DLL e Sem DLL http://www.mediafire.com/?651yyaal4lklfbb http://www.mediafire.com/?wkwwote6edvcv4o
  7. 17 points
    renansdc

    [Resolvido] Como Tirar Pz Rme

    [u]É simples brother:[/u] No map editor, selecione o tile de PZ e vá passando em cima da onde você quer retirar a PZ segurando CTRL.
  8. 15 points
    valakas

    Pokemon Dash v6 reupload by Valakinhas

      • Menu: ├ Informações; ├ Prints; ├ Download; └ Creditos.     • Informações Basicas •   [spoiler] Experience Stage 100% para configurar vai em data/xml/stage.xml nurse helando todos os pokemons Open Source Servidor Sem Level ordem --- 100% Catch --- 100% Fly --- 100% Surf --- 100% Ride --- 100% Rock --- Smash 100% Cut --- 100% Teleport --- 100% ( !h "nome da cidade) Control Mind 100% Goback --- 100% Portrait --- 100% Pokedex --- 100% pokemon fica mais fortes seus atk e life a cada lvl do play ditto --- 70% ainda da erro em alguns move evolução por stone --- 80% pokemon ainda morre pokemons 1 geracão somente Old client 100% sem debug pescaria 80% pesca instantânea  Todas as remakes pokemons e arvores  menos tauros   Items do otpokemon no dat e spr, falta registrar com os nomes no items.xml [/spoiler] • print screen • [spoiler] [/spoiler]   • download+scan •   client/serve/source: http://www.mediafire.com/download/7zuy27ymn7nhnj7/dash+v6+reupload.rar scan:  https://www.virustotal.com/pt/file/f8cd451fecabccc09b683e5928a0f186ec11f278628ab0c81e157628f91c6826/analysis/1436901745/     • Creditos •   brun123   n lembro o resto
  9. 14 points
    guedes20

    [Talk] Deathlist [Fixed/no Crash]

    Atualizado V1.0: Mostra últimas mortes do servidor: você pode usar o comando !deathlist NOME ex: !deathlist Carlin: in your db execute this query: CREATE TABLE death_list ( id INTEGER NOT NULL, player_id INTEGER NOT NULL, date INTEGER NOT NULL, level INTEGER NOT NULL, killer_name INTEGER NOT NULL, PRIMARY KEY ( id ) ); creaturescript death_list.lua function onDeath(cid, corpse, deathList) local str = "" for _, pid in ipairs(deathList) do if isCreature(pid) == true then str = str.."".. (str == "" and "" or ",") ..""..getCreatureName(pid) else str = str.."".. (str == "" and "" or ",") .." a field item" end end str = str.."." death = str .. " ".. (getPlayerBlessing(cid, 5) and "[Blessed]" or getPlayerSlotItem(cid, 2).itemid == 2173 and "[AOL]" or "") db.executeQuery("INSERT INTO `death_list` (`player_id`, `date`, `level`, `killer_name`) VALUES ('".. getPlayerGUID(cid).."', '".. os.time() .."', '".. getPlayerLevel(cid) .."', '".. death .."');") return true end creaturescript.xml <event type="death" name="DeathList" event="script" value="death_list.lua"/> creaturescript/script/login.lua registerCreatureEvent(cid, "DeathList") talkactions deathlist.lua limit = 5 function onSay(cid, words, param, channel) str = "" if param == "" then local qry = db.getResult("SELECT `player_id`, `date`, `level`, `killer_name` FROM `death_list` ORDER BY `date` DESC LIMIT 0, " .. limit) if(qry:getID() ~= -1) then repeat str = str .."\n "..os.date("%d %B %Y %X ", qry:getDataInt("date")).." "..getPlayerNameByGUID(qry:getDataString("player_id")).." died at level "..qry:getDataInt("level").." by:\n"..qry:getDataString("killer_name") until not(qry:next()) qry:free() else str = "Não há mortes no servidor." end doPlayerPopupFYI(cid, "Last Deaths:\n\n" .. str) return true end local getGuid = getPlayerGUIDByName(param:lower()) if not getGuid then doPlayerSendCancel(cid, "Este Player não existe.") return true end local qry = db.getResult("SELECT `id`, `date`, `level`, `killer_name` FROM `death_list` WHERE `player_id` = " .. getGuid .." ORDER BY `date` DESC LIMIT 0, " .. limit) if(qry:getID() ~= -1) then repeat str = str .."\n "..os.date("%d %B %Y %X ", qry:getDataInt("date")).." died at level "..qry:getDataInt("level").." by:\n"..qry:getDataString("killer_name") until not(qry:next()) qry:free() else str = "Não há mortes." end doPlayerPopupFYI(cid, "Last Deaths of: " .. param .. ".\n\n" .. str) return true end talkactions.xml <talkaction words="!deathlist" script="deathlist.lua"/>
  10. 14 points
    Punchlines Nemmo

    Pokemon Mythology RPG!

    Bom vou estou parando com o projeto mythology entao venho trazer pra voces lembrando baixa quem quer nao dou suporte e nao vou ficar de mimimi com ngm ai no chat somente colocando minha base pra dowload ai em baixo se puderem me dar 1 rep+ agradeço bastante O mapa foi feito por mim e adicionado algumas hunts de alguns servidores • systemas que tem no servidor eu adicionei poucos sistemas porem foquei mesmo no mapa e nos bugs que nao deixava o servidor ficar online • IMAGENS • VIDEOS tem algumas coisas que eu removi entre aspas estao desativadas basta voce ativar fis isso pois tem muitos otadmins por ai que so querem se aproveitar entao ja sabem ne • DOWLOAD Scan Cliente Servidor se quiser saber melhor sobre a MYTOLOGY da uma passada na pagina oficial https://www.facebook.com/PokemonMythologi/ Seu avast pode detectar virus mais podem ficar tranquilo pois sao as dlls e so escanear com o mesmo e marcar reparar assim como na print do scan do servidor E se for postar em outro forum deixem os devidos creditos > CREDITOS < Sr.Pikachu ( EU ) Prometheus Kairon lugh Helton junior Valdemir junior Gerson da silva Morphred Maper Elias alves
  11. 13 points
    Ceetros

    Adicionando mais tiles a visão do jogador!

    Hoje eu vim ensinar como aumenta a "tela" de jogo do OTCLIENT (Desculpe o merchant, era a unica imagem que eu tinha salvo)   Testado em : 0.3.6pl1, Pode funcionar em 1.0 com alterações pequenas.     Em protocolgame.cpp ache: return ((x >= myPos.x - 8 + offsetz) && (x <= myPos.x + 9 + offsetz) && (y >= myPos.y - 6 + offsetz) && (y <= myPos.gety + 7 + offsetz)); e troque por: return ((x >= myPos.x - Map::maxClientViewportX + offsetz) && (x <= myPos.x + (Map::maxClientViewportX+1) + offsetz) && (y >= myPos.y - Map::maxClientViewportY + offsetz) && (y <= myPos.y + (Map::maxClientViewportY+1) + offsetz)); Agora, continuando em protocolgame.cpp ache: GetMapDescription(pos.x - 8, pos.y - 6, pos.z, 18, 14, msg); E troque por: GetMapDescription(pos.x - Map::maxClientViewportX, pos.y - Map::maxClientViewportY, pos.z, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, msg); Continuando em protocolgame.cpp ache a função: void ProtocolGame::sendMoveCreature(const Creature* creature, const Tile* newTile, const Position& newPos, uint32_t newStackpos, const Tile* oldTile, const Position& oldPos, uint32_t oldStackpos, bool teleport) Dentro da função encontre: A parte que começa em if (oldPos.y > newPos.y) { e Termina em GetMapDescription(newPos.x - 8, newPos.y - 6, newPos.z, 1, 14, msg); } e troque por: if (oldPos.y > newPos.y) { // north, for old x msg->AddByte(0x65); GetMapDescription(oldPos.x - Map::maxClientViewportX, newPos.y - Map::maxClientViewportY, newPos.z, (Map::maxClientViewportX+1)*2, 1, msg); } else if (oldPos.y < newPos.y) { // south, for old x msg->AddByte(0x67); GetMapDescription(oldPos.x - Map::maxClientViewportX, newPos.y + (Map::maxClientViewportY+1), newPos.z, (Map::maxClientViewportX+1)*2, 1, msg); } if (oldPos.x < newPos.x) { // east, [with new y] msg->AddByte(0x66); GetMapDescription(newPos.x + (Map::maxClientViewportX+1), newPos.y - Map::maxClientViewportY, newPos.z, 1, (Map::maxClientViewportY+1)*2, msg); } else if (oldPos.x > newPos.x) { // west, [with new y] msg->AddByte(0x68); GetMapDescription(newPos.x - Map::maxClientViewportX, newPos.y - Map::maxClientViewportY, newPos.z, 1, (Map::maxClientViewportY+1)*2, msg); Agora ache: 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);  Depedendo da Source, a parte será assim: [spoiler] 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); [/spoiler] Por: 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); Agora ache: else if(newPos.z > 7) { int32_t skip = -1; GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, oldPos.getZ() - 3, 18, 14, 3, skip); Depedendo da source será assim: [spoiler] else if(newPos.z > 7) { int32_t skip = -1; GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, oldPos.getZ() - 3, 18, 14, 3, skip); [/spoiler] Por: else if(newPos.z > 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); Agora ache: //moving up a floor up makes us out of sync //west msg->AddByte(0x68); GetMapDescription(oldPos.x - 8, oldPos.y - 5, newPos.z, 1, 14, msg); //north msg->AddByte(0x65); GetMapDescription(oldPos.x - 8, oldPos.y - 6, newPos.z, 18, 1, msg); E troque por: //moving up a floor up makes us out of sync //west msg->AddByte(0x68); GetMapDescription(oldPos.x - Map::maxClientViewportX, oldPos.y - (Map::maxClientViewportY-1), newPos.z, 1, (Map::maxClientViewportY+1)*2, msg); //north msg->AddByte(0x65); GetMapDescription(oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, newPos.z, (Map::maxClientViewportX+1)*2, 1, msg); Agora ache: 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); Dependendo da source poderá ser: [spoiler] 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); [/spoiler] e troque por: 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); Agora ache: else if(newPos.z > oldPos.z && newPos.z > 8 && newPos.z < 14) { int32_t skip = -1; GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, newPos.z + 2, 18, 14, -3, skip); Depedendo da source pode ser assim: [spoiler] else if(newPos.z > oldPos.z && newPos.z > 8 && newPos.z < 14) { int32_t skip = -1; GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, newPos.z + 2, 18, 14, -3, skip);  [/spoiler] E troque por: else if(newPos.z > oldPos.z && newPos.z > 8 && newPos.z < 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); Agora em map.h edite essa parte como quiser: 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; O modo de Edição é assim: [spoiler]   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;  Ou seja, se você por 10 em maxClientViewportX você tem que por no minimo 12 em maxClientViewportX Mais uma coisa, tente por menos de 20, aqui eu testei e crasha o jogo, eu consegui estabilizar em X = 15 e Y = 15 [/spoiler]   Agora em map.cpp do OTCLIENT Ache: void Map::resetAwareRange() { AwareRange range; range.left = 8; range.top = 6; range.bottom = 7; range.right = 9; setAwareRange(range); } Troque por: { 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); } Créditos: Flatlander  - OTLAND - Criação Ceetros - Tradução     Agora vamos deixar o OTCLIENT lindão.           Troque tudo de modules/game_interface/interface.lua (na pasta do OTCLIENT) por: http://pastebin.com/tH7qyreW (para o tutorial não ficar muito grande botei no pastebin, já que o spoiler tá bugando) Creditos dessa parte:  Edubart (Criador do OTCLIENT) Ceetros   Caso tenha ajudado, dê um rep+ :)
  12. 13 points
    Nogard

    Curso Desenvolvedor de Sprites - This Is Spriting

    Desenvolvedor de Sprites - This Is Spriting Descrição: O curso Desenvolvedor de Sprites tem como objetivo introduzir e preparar o aluno para o mundo do desenvolvimento de games, abordando técnicas utilizadas por profissionais. O aluno formado pelo curso estará apto a planejar, desenvolver e finalizar sprites, sendo possível atuar como Artista Gráfico, Ilustrador, Animador ou Spriter, de forma independente ou prestando serviços para jogos eletrônicos. O diferencial do curso são as aulas em vídeo, facilitando o aprendizado dos alunos com explicações detalhadas. Gratuito! Módulos: ? Início: 17/08 Se você tem o desejo de fazer sprites, essa é sua chance! [Módulo I] Aula 1 (o áudio está um pouco baixo, recomendo que usem fone de ouvido)
  13. 12 points
    XZero

    Pokemon Evolution [DxP]

    Fala ai Galera vim postar um servidor aqui que passei algum tempo editando , porem um membro da equipe roubou e para que ele não tenha lucro nenhum irei estar postando liberando aqui no XTibia. Contém: Tv System Ditto e Shiny Ditto Ditto Memory System Catch com exp. Pokedex Mostra status dos pokes. (Adaptada ao Sistema novo de Wildlvl) Wildlvl Ajustado para dar mais força ao pokemon (Antes so dava HP) Bike System Shop Unico (Ametista Shop) Mega Evolution System (Adicione pokémons X e Y e todos os Megas da 1 e 2 geração) Mapa Unico Npc Daily Box 1 ao 7 Helds Funcionando 100% Client Custom Outland Saffari Unica Varias PokeBalls Icone System Novos Shinys Dungeons System Varias Shiny Box. Varias Box Boosted Held Box - 1 ao 7 Varias Ilhas Sistema de Npc Que te leva as ilhas. Vários Bugs da DxP Corrigidas Porem não foram todas. Foram Removidas Varias armadilhas e são 11 no total para quem não sabe , O Disto Adaptado pelo meu amigo programador para funcionar no DxP era oque eu usava porem ele não permitiu a postagem desse Distro e nem das Sources , Por motivos pessoais. Prints: Aproveitando á oportunidade esse [ADM] Jobson que roubou :v Download Server + Client : Download Site Original da DxP: Download Scan Client Descompilado : Download Observação: 4Shared já faz scan. Creditos: Criadores do DXP Smoke (Eu) Error 404 Se Curtiu deixa pelo menos um Rep ++ Ai :]
  14. 10 points
    Ceetros

    The Poke Server - Base Poketibia Unificada

    Um projeto incentivado pelo xTibia! Antes de começar a apresentação eu quero fazer uns agradecimentos. Bom, primeiro eu agradeço ao @Frenvius por acreditar no TPS. Em segundo lugar eu quero agradecer a todas pessoas que orefeceram ajuda, e creio que irão ajudar. @DarkWore @Jair Kevick @KyoGron, caso tenha mais algum, por favor comenta aqui, minha memoria está falha. Agora sobre o servidor: The Poke-Server é um servidor comunitário unificado. Ou seja, nós temos em mente em fazer uma base global para poketibia, como o TFS é para o tibia. Baseado no TFS 1.4 para tibia client 8.54 Alguns sistemas já prontos estão listados no github! Nós estamos precisando de ajuda da comunidade, caso algum desenvolvedor queira nos ajudar, eu irei adicionar como contribuidor no github, porém temos uma politica de 3 erros, ou seja, a cada erro, seja uma armadilha, ou um sistema já feito, eu irei desfazer a contribuição, caso iss ocorra novamente 3 vezes eu irei remover o usuario de contribuidor, e adicionar na blacklist. Link do github: https://github.com/xtibia/The-Poke-Server Nós também precisamos de pessoas para escrever os tutoriais. Link dos tutoriais: https://github.com/xtibia/The-Poke-Server/wiki Caso alguem queira apoiar, sem saber programar, mappear, ou algo do genero, pode usar o banner para divulgar o topico
  15. 9 points
    Fala galera, eu resolvi criar esse sistema aonde os montros tem seu dano / defesa / vida definidos pelo level / atributo que são configurados no XML, e eu fiz esse sistema em stream para mostrar um pouco de como trabalhar nas source do TFS 1.2, no sistema trabalhamos editando o MonsterType, Monster, Combat e a estrutura do xml dos monsters, é bastante conteúdo e vale apena conferir, uma boa fonte de aprendizado. LINK DO REPOSITÓRIO COM A VERSÃO APRIMORADA DOS SISTEMAS: https://bitbucket.org/eduardovicente/pokemo-new-era Video Essa é uma versão resumida e com uma melhor qualidade no audio - https://youtu.be/izHAhv8kioo Playlist passo a passo Criando na hora. [ 13 vídeos ] - https://www.youtube.com/playlist?list=PL8Y03xmWSNVX2TD5-ZBl2q1CwPxAOiQTm Imagens
  16. 9 points
    HadesBR

    Yurots 1.2 (sem edição)

    Yurots 1.2 Não tem muito o que falar do server, mapa simples, Yurots versão 8.10 atualizado para versão 8.60 sem editar, A distro é TFS 0.4 mas coloquei o download só da pasta data caso queira usar outra, quem ja jogou conhece, quem não viu, vale a pena conferir. Ótimo para editar pois é bem leve, apesar de alguns bugs no mapa que são simples. Download completo Download (somente a pasta Data) Creditos: •TFS Team •God Bon
  17. 8 points
    Skulls

    Sincronizando BasicInfo Cliente/Servidor

    Boa tarde galera. Hoje trago um pequeno fix de compatibilidade na troca de informação básica do player entre tfs 1.2 e OTC. O que acontece é que o TFS envia uma coisa e o OTC está preparado para receber outras. A solução prevista aqui não foi testada em cipclients, portanto, não me responsabilizo. Envios que o ptc não utilizava e recebimentos que o tfs não enviava foram deletados. Chega de falar, mãos a obras. Primeiro passo: vá na source do OTC, no arquivo protocolgameparse.cpp, e altere a função void ProtocolGame::parsePlayerInfo(const InputMessagePtr& msg) pela mostrada abaixo: void ProtocolGame::parsePlayerInfo(const InputMessagePtr& msg) { bool premium = msg->getU8(); // premium int vocation = msg->getU8(); // vocation m_localPlayer->setPremium(premium); m_localPlayer->setVocation(vocation); } Segundo passo: agora no servidor, va em ProtocolGame.cpp, procure por void ProtocolGame::sendBasicData() e substitua por: void ProtocolGame::sendBasicData() { NetworkMessage msg; msg.addByte(0x9F); msg.addByte(player->isPremium() ? 0x01 : 0x00); msg.addByte(player->getVocation()->getClientId()); writeToOutputBuffer(msg); } Bom galera, por hoje é só. Espero que ajude. Abraços
  18. 7 points
    DarkWore

    DarkWore - Show Off

    Olá, eu sou DarkWore e hoje venho mostrar através desse tópico alguns sistemas que já desenvolvi e dar um comunicado. Não atuo mais como freelancer. IA - Corina/Software de Inteligência Artificial em .NET: Tibia API/DLL De Criptografia de OLD Client: Proteção de Sprites do OLD Client: Code/Decode - Software de Codificação de Texto em Binário ou Vice Versa em .NET: Tenho mais coisas... mas isso é algo bem cansativo de postar (faço das palavras do Porai as minhas, huehuehue) Queria Agradecer á todos que de alguma forma fizeram esses 7 anos serem muito bons eu posso estar parando com o desenvolvimento de otserv, mais estarei continuando aqui no fórum, na moderação ajudando todos os membros com todas as dúvidas possíveis e que estiverem ao meu alcance só estou parando com freelancer. Obrigado á Todos: Smoke/XZero Up Jair Kevick Drazyn Walox (Vini) Misty Hammer Mauro Cpt Lojider Lara Asmita Suggest Deadpool Frenvius Beeny Stigal Mudrock Victor Poccn Andrew Dudox Morph Tking Breno Polones Deadpool Porai Kyogron Sam Vanderley Brunds Louis Maicon Ceetros Valdemir Deglorio Stylo Fire Lossavaro Joao Vitor Gri Pedro Kttallan Tony Araujo (Orochi) Slicer SmiX Lucas Elias Vitor (Pepsi) Lexy Baxx Txu Marsh Wog Eu Poderia ficar aqui até amanha e ainda esqueceria de alguns, Obrigado á Todos que dê alguma forma fizeram esses 7 anos serem um dos melhores que já tive e que fizeram eu crescer como pessoa. Vocês sempre estarão na memória <3 Att DarkWore
  19. 7 points
    Hail Xtibianos. Eu fiz esse sistema como pedido de um membro há um bom tempo, mas nunca tinha postado ele e diversos sistemas que uso no meu ot server; agora resolvi postá-los. Esse é o sistema que impede dos players da mesma party se atacarem ou, também dos membros da mesma guild. Em config.lua adicione: noDamageToGuildMates = false noDamageToPartyMembers = true Em creaturescripts.xml adicione: <event type="combat" name="combat" script="combat.lua"/> Em creaturescripts/scripts/login.lua adicione: registerCreatureEvent(cid, "combat") Na mesma pasta, crie um arquivo lua chamado combat e adicione isso nele: --[[> Marcryzius <]]-- function onCombat(cid, target) if(isPlayer(cid) and isPlayer(target)) then if(getConfigValue("noDamageToGuildMates") and getPlayerGuildId(cid) > 0 and getPlayerGuildId(cid) == getPlayerGuildId(target)) then return false elseif(getConfigValue("noDamageToPartyMembers") and isInParty(target) and getPartyLeader(target) == getPartyLeader(cid)) then return false end end return true end Qualquer duvida ou erro deixe nos comentários.
  20. 7 points
    CaioSilva99

    Quest pesadelo otp

    Olá caros amigos do XTIBIA. Hoje eu trago pra vocês meu primeiro conteudo pro site que é: O mapa da quest Pesadelo do Otpokemon.com Obs: Teleport's não editados pois não sei em qual coordenada (x,y e z) você vai coloca-lás. Obs2: Para recortar essas partes utilize o botão SHIFT, aquela seta encima do Ctrl, ele vai te dar um esquema para selecionar e enquadre a parte que quer aperte crtl+c, para copiar, e ctrl+v, para colar no seu mapa, é necessário aperta o ENTER duas vezes para que seja aceita a alteração. Prints Minimapa Sala inicial A quest por si só <<<<<<<<<<<<<<<<LINK>>>>>>>>>>>> http://www.mediafire.com/download/190bx8c67h9e8ee/pesadelo%282%29.otbm <<<<<<<<<<<<<<<<<SCAN>>>>>>>>>>>> https://virustotal.com/pt/file/a41039503e0d99d04631a566e51e83f8505d9e6ce2dd91361cdc561d9b627d68/analysis/1461954924/
  21. 6 points
    Ceetros

    Ceetros - ShowOff

    Bom, hoje eu vim mostrar alguns de meus sistemas/feitos em servidores e clients tibia. De inicio irei mostrar o OTCLIENT: Sistema de Profissão, Diário e Canais Canais com alerta de mensagens novas Npcs com quests e Pokémons Shinys: Barra de EXP e HP diferenciados para LocalPlayer e target pxg Um OTCLIENT totalmente voltado para poketibia: Estou utilizando nos meus projetos atuais. Algumas alterações na interface do OTCLIENT Base Poketibia Unificada (TPS) Irei atualizar esse post sempre que tiver algo útil para por.
  22. 6 points
    CaioSilva99

    MAPA QUEST SPECIALIST OTP

    Eae galera Hoje trago para vocês o mapa da quest specialist do OTP. Então o mapa contém os teleports e o caminho. ~LINK~ http://www.mediafire.com/file/c6c3tpcjo2mjgui/SPECIALIST.rar ~SCAN~ https://www.virustotal.com/en/file/dd4b757e639b4933b285e015b154bb08fef7a07d35d4c1ae9c38622f2e6df137/analysis/1487353385/ ~Print~ OBS:Meu pc não abre nenhuma base então se alguem puder tira uma ingame e mandar eu aceito kkkkkjkjk. ~QUEST REAL~
  23. 5 points
    KyoGron

    [DxP] Pokémon Eternium

    • DarkXPoke Eternium ficou online por um tempo pois uns amigos pediram, a principio era base Huatson, mas eu tive a brilhante idéia de futucar diversas coisas nessa base, mas sempre tive nojo, (obs: Aconselho não usar isso, é bem melhor começar a estudar e montar seu pokémon do 0) • • Menu: ├ Informações; ├ Bugs; ├ Prints; ├ Download; └ Créditos. • Informações Basicas • • Duel System. • Nick System. • TV System.(Com problemas, recomendo desativar isso) • Autoloot System.(Retirado pois estava clonando items e decidi deixar sem) • Block Respaw System.(Foi retirado pois isso estava incompleto) • Mega Evolution foi refeita pois a original me dava muita dor de cabeça, então decidi refazer. • Auto Stacking System. • Player passa por dentro de outros Players(Não sei o nome deste sistema kk). • Ditto Memory System. • Player pode usar potions, revive, soltar poke andando sem parar. • Limite de efeitos aumentados nas sources até 1500 • Transparência. • Sistemas básicos como fly, ride, surf, order etc. • Held System(Não tem todos, falta fazer alguns, ja tem o x-luck). • Fishing trocando o outfit automaticamente. • Icone System. • Varias Pokeballs novas. • Task System. • Guild System. • Andar em diagonal optimizado, agora você se move sem o lag chato, porém muito mais rápido que deveria(Foi minha primeira vez mexendo com isso) E muito+, não testei o servidor todo. podem ter sistemas no server que eu esqueci de colocar aqui na lista. • Bugs • Irei postar os que eu sei, podem haver mais. • Foi retirado o problema com o /reload monsters e Spells, aconselho não dar reload monsters(Muito menos spells) pois isso derrubava o servidor. • Não sei dizer quais os bugs atuais, visando que a base esteve online e pegou 300horas online sem problema algum. • Informações do OTClient• • Diagonal está com delay menor, embora esteja 90% pronto. • Máximo 2 mensagens acima do player (Igual PokeXGames). • Há algumas outras features que são meio que únicas "Em questão de divulgação, neste OTClient algumas que só eu mexi". • Download • • DEIXO CLARO QUE, NÃO ESTAREI DANDO SUPORTE A ESTE SERVIDOR, EU ODEIO DXP E SÓ MEXI POR CAUSA DE UNS COLEGAS, OS MESMOS ME ABANDONARAM E TIVE QUE FICAR OLHANDO ESSA PORRA ONLINE • • Créditos • •CipSoft •Nintendo •TFS Team •Dark X Poke •PXG •Tom Lukz (Smix) •Allan Harlen (Kttallan/lordsorte) •Eduardo Meskita (FuuinFake) •Noninhouh •Tony Araujo •Taiger/Dudu •Drakopoulos •Justiceiro751 •Techrlz •RicardoRox •Eu liendo Kyogron •Lucas Neves(PokeMiw Administrator) E a todos que tiveram alguma participação em sistemas, server, site, cliente etc.
  24. 5 points
    AVISO: 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 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.
  25. 4 points
    FlamesAdmin

    Reformulaçao Do Level Das Magias e Level Dos Pokemons

    Fala galera, fiz aqui a reformulaçao de alguns pokemons desde a ultima atualizaçao do PxG.   Pokemon Moves:   localizado no configuration.lua Fiz do Bulbasaur ate Rapidash. [spoiler] ["Bulbasaur"] = {move1 = {name = "Quick Attack", level = 20, cd = 15, dist = 1, target = 1, f = 40, t = "normal"},          move2 = {name = "Razor Leaf", level = 20, cd = 10, dist = 6, target = 1, f = 33, t = "grass"},          move3 = {name = "Vine Whip", level = 20, cd = 15, dist = 1, target = 0, f = 65, t = "grass"},          move4 = {name = "Headbutt", level = 20, cd = 15, dist = 1, target = 1, f = 70, t = "normal"},          move5 = {name = "Leech Seed", level = 22, cd = 15, dist = 6, target = 1, f = 1, t = "grass"},          move6 = {name = "Solar Beam", level = 30, cd = 45, dist = 1, target = 0, f = 95, t = "grass"},          move7 = {name = "Sleep Powder", level = 28, cd = 80, dist = 1, target = 0, f = 0, t = "grass"},          move8 = {name = "Stun Spore", level = 26, cd = 45, dist = 1, target = 0, f = 0, t = "grass"},          move9 = {name = "Poison Powder", level = 24, cd = 15, dist = 1, target = 0, f = 0, t = "grass"},          }, ["Ivysaur"] =   {move1 = {name = "Quick Attack", level = 40, cd = 15, dist = 1, target = 1, f = 40, t = "normal"},          move2 = {name = "Razor Leaf", level = 40, cd = 10, dist = 6, target = 1, f = 33, t = "grass"},          move3 = {name = "Vine Whip", level = 40, cd = 20, dist = 1, target = 0, f = 65, t = "grass"},          move4 = {name = "Headbutt", level = 40, cd = 15, dist = 1, target = 1, f = 70, t = "normal"},          move5 = {name = "Leech Seed", level = 40, cd = 60, dist = 6, target = 1, f = 1, t = "grass"},          move6 = {name = "Bullet Seed", level = 45, cd = 35, dist = 1, target = 0, f = 75, t = "grass"},          move7 = {name = "Solar Beam", level = 50, cd = 45, dist = 1, target = 0, f = 95, t = "grass"},          move8 = {name = "Sleep Powder", level = 44, cd = 80, dist = 1, target = 0, f = 0, t = "grass"},          move9 = {name = "Stun Spore", level = 40, cd = 45, dist = 1, target = 0, f = 0, t = "grass"},          move10 = {name = "Poison Powder", level = 40, cd = 15, dist = 1, target = 0, f = 0, t = "grass"},          }, ["Venusaur"] =  {move1 = {name = "Tackle", level = 80, cd = 15, dist = 1, target = 1, f = 50, t = "normal"},          move2 = {name = "Razor Leaf", level = 80, cd = 10, dist = 6, target = 1, f = 33, t = "grass"},          move3 = {name = "Vine Whip", level = 80, cd = 20, dist = 1, target = 0, f = 65, t = "grass"}, --65          move4 = {name = "Headbutt", level = 80, cd = 15, dist = 1, target = 1, f = 70, t = "normal"},          move5 = {name = "Leech Seed", level = 80, cd = 20, dist = 6, target = 1, f = 1, t = "grass"},          move6 = {name = "Bullet Seed", level = 80, cd = 35, dist = 1, target = 0, f = 95, t = "grass"},          move7 = {name = "Solar Beam", level = 80, cd = 50, dist = 1, target = 0, f = 135, t = "grass"},          move8 = {name = "Giga Drain", level = 85, cd = 50, dist = 1, target = 1, f = 80, t = "grass"},          move9 = {name = "Sleep Powder", level = 80, cd = 50, dist = 1, target = 0, f = 0, t = "normal"},          move10 = {name = "Poison Powder", level = 80, cd = 20, dist = 1, target = 0, f = 0, t = "normal"},          move11 = {name = "Leaf Storm", level = 90, cd = 80, dist = 1, target = 0, f = 120, t = "grass"},          }, ["Charmander"] = {move1 = {name = "Scratch", level = 20, cd = 15, dist = 1, target = 1, f = 40, t = "normal"},           move2 = {name = "Ember", level = 20, cd = 10, dist = 6, target = 1, f = 42, t = "fire"},           move3 = {name = "Flamethrower", level = 20, cd = 20, dist = 1, target = 0, f = 80, t = "fire"},           move4 = {name = "Fireball", level = 24, cd = 20, dist = 6, target = 1, f = 75, t = "fire"},           move5 = {name = "Fire Fang", level = 22, cd = 20, dist = 1, target = 1, f = 65, t = "fire"},           move6 = {name = "Fire Blast", level = 30, cd = 45, dist = 1, target = 0, f = 95, t = "fire"},           move7 = {name = "Rage", level = 30, cd = 40, dist = 1, target = 0, f = 0, t = "dragon"},          }, ["Charmeleon"] = {move1 = {name = "Scratch", level = 40, cd = 15, dist = 1, target = 1, f = 40, t = "normal"},           move2 = {name = "Ember", level = 40, cd = 10, dist = 6, target = 1, f = 42, t = "fire"},           move3 = {name = "Flamethrower", level = 40, cd = 20, dist = 1, target = 0, f = 80, t = "fire"},           move4 = {name = "Fireball", level = 40, cd = 25, dist = 6, target = 1, f = 75, t = "fire"},           move5 = {name = "Fire Fang", level = 40, cd = 20, dist = 1, target = 1, f = 65, t = "fire"},           move6 = {name = "Flame Burst", level = 45, cd = 30, dist = 1, target = 0, f = 100, t = "fire"},           move7 = {name = "Fire Blast", level = 50, cd = 45, dist = 1, target = 0, f = 95, t = "fire"},           move8 = {name = "Rage", level = 40, cd = 40, dist = 1, target = 0, f = 0, t = "dragon"},          }, ["Charizard"] =  {move1 = {name = "Ember", level = 80, cd = 10, dist = 6, target = 1, f = 42, t = "fire"},           move2 = {name = "Flamethrower", level = 80, cd = 20, dist = 1, target = 0, f = 80, t = "fire"},           move3 = {name = "Fireball", level = 80, cd = 25, dist = 6, target = 1, f = 75, t = "fire"},           move4 = {name = "Fire Fang", level = 80, cd = 20, dist = 1, target = 1, f = 65, t = "fire"},           move5 = {name = "Flame Burst", level = 80, cd = 35, dist = 1, target = 0, f = 100, t = "fire"},           move6 = {name = "Fire Blast", level = 80, cd = 50, dist = 1, target = 0, f = 115, t = "fire"},           move7 = {name = "Air Slash", level = 83, cd = 30, dist = 1, target = 0, f = 55, t = "flying"},           move8 = {name = "Wing Attack", level = 85, cd = 35, dist = 1, target = 0, f = 75, t = "flying"},           move9 = {name = "Magma Storm", level = 90, cd = 70, dist = 1, target = 0, f = 95, t = "fire"},           move10 = {name = "Scary Face", level = 82, cd = 40, dist = 1, target = 0, f = 0, t = "ghost"},           move11 = {name = "Rage", level = 80, cd = 40, dist = 1, target = 0, f = 0, t = "dragon"},          }, ["Squirtle"] =   {move1 = {name = "Headbutt", level = 20, cd = 15, dist = 1, target = 1, f = 70, t = "normal"},           move2 = {name = "Bubbles", level = 20, cd = 10, dist = 6, target = 1, f = 40, t = "water"},           move3 = {name = "Water Gun", level = 20, cd = 20, dist = 1, target = 0, f = 55, t = "water"},           move4 = {name = "Waterball", level = 24, cd = 25, dist = 6, target = 1, f = 65, t = "water"},           move5 = {name = "Aqua Tail", level = 22, cd = 20, dist = 1, target = 1, f = 50, t = "water"},           move6 = {name = "Hydro Cannon", level = 30, cd = 45, dist = 1, target = 0, f = 95, t = "water"},           move7 = {name = "Harden", level = 28, cd = 27, dist = 1, target = 0, f = 0, t = "normal"},          }, ["Wartortle"] =  {move1 = {name = "Headbutt", level = 40, cd = 15, dist = 1, target = 1, f = 70, t = "normal"},           move2 = {name = "Bubbles", level = 40, cd = 10, dist = 6, target = 1, f = 40, t = "water"},           move3 = {name = "Water Gun", level = 40, cd = 20, dist = 1, target = 0, f = 55, t = "water"},           move4 = {name = "Waterball", level = 40, cd = 25, dist = 6, target = 1, f = 65, t = "water"},           move5 = {name = "Aqua Tail", level = 40, cd = 20, dist = 1, target = 1, f = 50, t = "water"},           move6 = {name = "Brine", level = 45, cd = 40, dist = 1, target = 0, f = 100, t = "water"},           move7 = {name = "Hydro Cannon", level = 50, cd = 45, dist = 1, target = 0, f = 95, t = "water"},           move8 = {name = "Harden", level = 40, cd = 27, dist = 1, target = 0, f = 0, t = "normal"},          }, ["Blastoise"] =  {move1 = {name = "Headbutt", level = 80, cd = 15, dist = 1, target = 1, f = 70, t = "normal"},           move2 = {name = "Bubbles", level = 80, cd = 10, dist = 6, target = 1, f = 40, t = "water"},           move3 = {name = "Water Gun", level = 80, cd = 20, dist = 1, target = 0, f = 55, t = "water"},           move4 = {name = "Waterball", level = 80, cd = 25, dist = 6, target = 1, f = 65, t = "water"},           move5 = {name = "Aqua Tail", level = 80, cd = 20, dist = 1, target = 1, f = 50, t = "water"},           move6 = {name = "Brine", level = 80, cd = 40, dist = 1, target = 0, f = 100, t = "water"},           move7 = {name = "Hydro Cannon", level = 80, cd = 50, dist = 1, target = 0, f = 95, t = "water"},           move8 = {name = "Skull Bash", level = 85, cd = 45, dist = 1, target = 0, f = 85, t = "normal"},           move9 = {name = "Hydropump", level = 90, cd = 70, dist = 1, target = 0, f = 125, t = "water"},           move10 = {name = "Harden", level = 80, cd = 40, dist = 1, target = 0, f = 0, t = "normal"},                }, ["Caterpie"] =   {move1 = {name = "Headbutt", level = 1, cd = 10, dist = 1, target = 1, f = 70, t = "normal"},           move2 = {name = "String Shot", level = 1, cd = 8, dist = 6, target = 1, f = 0, t = "bug"},           move3 = {name = "Bug Bite", level = 1, cd = 5, dist = 1, target = 1, f = 45, t = "bug"},          }, ["Metapod"] =    {move1 = {name = "String Shot", level = 10, cd = 10, dist = 6, target = 1, f = 0, t = "bug"},           move2 = {name = "Headbutt", level = 10, cd = 10, dist = 1, target = 1, f = 70, t = "normal"},           move3 = {name = "Harden", level = 10, cd = 15, dist = 1, target = 0, f = 0, t = "normal"},           move4 = {name = "Bug Bite", level = 10, cd = 10, dist = 1, target = 1, f = 45, t = "bug"},          }, ["Butterfree"] = {move1 = {name = "Super Sonic", level = 30, cd = 15, dist = 6, target = 1, f = 0, t = "normal"},           move2 = {name = "Silver Wind", level = 30, cd = 25, dist = 6, target = 1, f = 70, t = "bug"},  --alterado v1.8           move3 = {name = "Whirlwind", level = 32, cd = 25, dist = 1, target = 0, f = 80, t = "flying"},           move4 = {name = "Confusion", level = 34, cd = 30, dist = 1, target = 0, f = 50, t = "psychic"},           move5 = {name = "Psybeam", level = 36, cd = 15, dist = 1, target = 0, f = 75, t = "psychic"},           move6 = {name = "Air Cutter", level = 38, cd = 30, dist = 1, target = 0, f = 30, t = "flying"},           move7 = {name = "Sleep Powder", level = 30, cd = 60, dist = 1, target = 0, f = 0, t = "grass"},           move8 = {name = "Safeguard", level = 40, cd = 40, dist = 1, target = 0, f = 0, t = "normal"},           move9 = {name = "Poison Powder", level = 30, cd = 20, dist = 1, target = 0, f = 0, t = "grass"},          }, ["Weedle"] =     {move1 = {name = "Horn Attack", level = 1, cd = 10, dist = 1, target = 1, f = 55, t = "normal"},           move2 = {name = "String Shot", level = 1, cd = 10, dist = 3, target = 1, f = 0, t = "normal"},           move3 = {name = "Poison Sting", level = 1, cd = 1, dist = 2, target = 1, f = 40, t = "poison"},          }, ["Kakuna"] =     {move1 = {name = "String Shot", level = 10, cd = 10, dist = 6, target = 1, f = 0, t = "normal"},           move2 = {name = "Headbutt", level = 10, cd = 8, dist = 1, target = 1, f = 70, t = "normal"},           move3 = {name = "Harden", level = 10, cd = 25, dist = 1, target = 0, f = 0, t = "normal"},           move4 = {name = "Bug Bite", level = 10, cd = 9, dist = 1, target = 1, f = 45, t = "bug"},          }, ["Beedrill"] =   {move1 = {name = "String Shot", level = 30, cd = 15, dist = 6, target = 1, f = 0, t = "bug"},           move2 = {name = "Poison Jab", level = 30, cd = 20, dist = 6, target = 1, f = 85, t = "poison"},           move3 = {name = "Poison Sting", level = 30, cd = 15, dist = 1, target = 1, f = 40, t = "poison"},           move4 = {name = "Fury Cutter", level = 35, cd = 20, dist = 1, target = 0, f = 65, t = "bug"},           move4 = {name = "Pin Missile", level = 35, cd = 20, dist = 1, target = 0, f = 80, t = "bug"},           move5 = {name = "Toxic Spikes", level = 32, cd = 25, dist = 6, target = 1, f = 50, t = "poison"},           move5 = {name = "Rage", level = 30, cd = 25, dist = 1, target = 0, f = 0, t = "dragon"},           move6 = {name = "Strafe", level = 38, cd = 25, dist = 1, target = 0, f = 0, t = "normal"},           passive1 = {name = "Evasion", level = 1, cd = 0, dist = 1, target = 1, f = 45, t = "fighting"},          }, ["Pidgey"] =     {move1 = {name = "Quick Attack", level = 1, cd = 5, dist = 1, target = 1, f = 40, t = "normal"},           move2 = {name = "Sand Attack", level = 1, cd = 10, dist = 1, target = 0, f = 0, t = "ground"},           move3 = {name = "Gust", level = 3, cd = 15, dist = 1, target = 0, f = 65, t = "flying"},           move4 = {name = "Drill Peck", level = 8, cd = 12, dist = 1, target = 1, f = 35, t = "flying"},          }, ["Pidgeotto"] =  {move1 = {name = "Quick Attack", level = 20, cd = 10, dist = 4, target = 1, f = 40, t = "normal"},           move2 = {name = "Sand Attack", level = 20, cd = 15, dist = 1, target = 0, f = 0, t = "ground"},           move3 = {name = "Whirlwind", level = 20, cd = 22, dist = 1, target = 0, f = 80, t = "flying"},           move4 = {name = "Drill Peck", level = 20, cd = 20, dist = 1, target = 1, f = 35, t = "flying"},           move5 = {name = "Wing Attack", level = 25, cd = 25, dist = 1, target = 0, f = 75, t = "flying"},           move6 = {name = "Aeroblast", level = 30, cd = 40, dist = 1, target = 0, f = 100, t = "flying"},          }, ["Pidgeot"] =    {move1 = {name = "Quick Attack", level = 80, cd = 5, dist = 1, target = 1, f = 40, t = "normal"},           move2 = {name = "Sand Attack", level = 80, cd = 15, dist = 1, target = 0, f = 0, t = "ground"},           move3 = {name = "Whirlwind", level = 80, cd = 15, dist = 1, target = 0, f = 80, t = "flying"},           move4 = {name = "Drill Peck", level = 80, cd = 15, dist = 1, target = 1, f = 35, t = "flying"},           move5 = {name = "Wing Attack", level = 82, cd = 25, dist = 1, target = 0, f = 75, t = "flying"},           move6 = {name = "Aeroblast", level = 84, cd = 50, dist = 1, target = 0, f = 100, t = "flying"},           move7 = {name = "Hurricane", level = 90, cd = 60, dist = 1, target = 0, f = 15, t = "flying"},           move8 = {name = "Agility", level = 80, cd = 25, dist = 1, target = 0, f = 0, t = "flying"},           move9 = {name = "Roost", level = 85, cd = 65, dist = 1, target = 0, f = 0, t = "flying"},          }, ["Rattata"] =    {move1 = {name = "Quick Attack", level = 1, cd = 15, dist = 4, target = 1, f = 40, t = "normal"},           move2 = {name = "Bite", level = 1, cd = 15, dist = 1, target = 1, f = 50, t = "dark"},           move3 = {name = "Scratch", level = 1, cd = 15, dist = 1, target = 1, f = 40, t = "normal"},           move4 = {name = "Super Fang", level = 12, cd = 45, dist = 1, target = 1, f = 65, t = "normal"},          }, ["Raticate"] =   {move1 = {name = "Quick Attack", level = 30, cd = 8, dist = 1, target = 1, f = 40, t = "normal"},           move2 = {name = "Bite", level = 30, cd = 8, dist = 1, target = 1, f = 50, t = "dark"},           move3 = {name = "Scratch", level = 30, cd = 8, dist = 1, target = 1, f = 40, t = "normal"},           move4 = {name = "Pursuit", level = 30, cd = 10, dist = 6, target = 1, f = 65, t = "dark"},           move5 = {name = "Super Fang", level = 30, cd = 15, dist = 1, target = 1, f = 65, t = "normal"},           move6 = {name = "Scary Face", level = 32, cd = 35, dist = 1, target = 0, f = 0, t = "ghost"},           passive1 = {name = "Dragon Fury", level = 1, cd = 0, dist = 6, target = 0, f = 55, t = "dragon"},          }, ["Spearow"] =    {move1 = {name = "Quick Attack", level = 10, cd = 10, dist = 1, target = 1, f = 40, t = "normal"},           move2 = {name = "Sand Attack", level = 10, cd = 10, dist = 1, target = 0, f = 0, t = "ground"},           move3 = {name = "Gust", level = 12, cd = 15, dist = 1, target = 0, f = 65, t = "flying"},           move4 = {name = "Drill Peck", level = 10, cd = 16, dist = 1, target = 1, f = 35, t = "flying"},           move5 = {name = "Agility", level = 10, cd = 25, dist = 1, target = 0, f = 0, t = "flying"},          }, ["Fearow"] =     {move1 = {name = "Peck", level = 50, cd = 10, dist = 1, target = 1, f = 30, t = "flying"},           move2 = {name = "Sand Attack", level = 50, cd = 15, dist = 1, target = 0, f = 0, t = "ground"},           move3 = {name = "Drill Peck", level = 50, cd = 20, dist = 1, target = 1, f = 30, t = "flying"},           move4 = {name = "Whirlwind", level = 50, cd = 20, dist = 1, target = 0, f = 50, t = "flying"},           move5 = {name = "Air Cutter", level = 50, cd = 30, dist = 1, target = 0, f = 65, t = "flying"},           move6 = {name = "Wing Attack", level = 52, cd = 25, dist = 1, target = 0, f = 50, t = "flying"},           move7 = {name = "Aerial Ace", level = 50, cd = 45, dist = 1, target = 0, f = 75, t = "flying"},           move8 = {name = "Agility", level = 50, cd = 30, dist = 1, target = 0, f = 0, t = "flying"},          }, ["Ekans"] =      {move1 = {name = "Bite", level = 10, cd = 5, dist = 1, target = 1, f = 50, t = "dark"},           move2 = {name = "Poison Fang", level = 10, cd = 10, dist = 1, target = 1, f = 65, t = "poison"},           move3 = {name = "Sting Gun", level = 12, cd = 12, dist = 1, target = 1, f = 65, t = "poison"},           move4 = {name = "Acid", level = 15, cd = 7, dist = 6, target = 1, f = 45, t = "poison"},           move5 = {name = "Fear", level = 20, cd = 20, dist = 1, target = 0, f = 0, t = "ghost"},          }, ["Arbok"] = {move1 = {name = "Bite", level = 40, cd = 10, dist = 1, target = 1, f = 50, t = "dark"},           move2 = {name = "Poison Fang", level = 40, cd = 15, dist = 1, target = 1, f = 65, t = "poison"},           move3 = {name = "Sting Gun", level = 40, cd = 15, dist = 1, target = 1, f = 65, t = "poison"},           move4 = {name = "Wrap", level = 40, cd = 20, dist = 6, target = 1, f = 0, t = "normal"},           move5 = {name = "Pin Missile", level = 43, cd = 25, dist = 1, target = 0, f = 80, t = "bug"},           move6 = {name = "Acid", level = 40, cd = 15, dist = 6, target = 1, f = 45, t = "poison"},           move7 = {name = "Iron Tail", level = 45, cd = 15, dist = 1, target = 1, f = 70, t = "steel"},           move8 = {name = "Poison Jab", level = 40, cd = 16, dist = 6, target = 1, f = 85, t = "poison"},          }, ["Pikachu"] =    {move1 = {name = "Mega Kick", level = 40, cd = 40, dist = 1, target = 1, f = 85, t = "fighting"},           move2 = {name = "Thunder Shock", level = 40, cd = 10, dist = 6, target = 1, f = 55, t = "electric"},           move3 = {name = "Thunder Bolt", level = 40, cd = 20, dist = 6, target = 1, f = 33, t = "electric"},           move4 = {name = "Thunder Wave", level = 40, cd = 25, dist = 1, target = 0, f = 70, t = "electric"},           move5 = {name = "Thunder Punch", level = 40, cd = 30, dist = 1, target = 1, f = 75, t = "electric"},           move5 = {name = "Iron Tail", level = 40, cd = 20, dist = 1, target = 1, f = 70, t = "steel"},           move6 = {name = "Thunder", level = 50, cd = 60, dist = 1, target = 0, f = 100, t = "electric"},           move7 = {name = "Electric Storm", level = 55, cd = 50, dist = 1, target = 0, f = 105, t = "electric"},           move8 = {name = "Agility", level = 50, cd = 40, dist = 1, target = 0, f = 0, t = "flying"},           passive1 = {name = "Electric Charge", level = 1, cd = 0, dist = 6, target = 0, f = 15, t = "electric"},          }, ["Raichu"] =     {move1 = {name = "Mega Kick", level = 80, cd = 40, dist = 1, target = 1, f = 85, t = "fighting"},           move2 = {name = "Thunder Shock", level = 80, cd = 10, dist = 6, target = 1, f = 55, t = "electric"},           move3 = {name = "Thunder Bolt", level = 80, cd = 20, dist = 6, target = 1, f = 33, t = "electric"},           move4 = {name = "Thunder Wave", level = 80, cd = 25, dist = 1, target = 0, f = 70, t = "electric"},           move5 = {name = "Thunder Punch", level = 80, cd = 40, dist = 1, target = 1, f = 75, t = "electric"},           move6 = {name = "Iron Tail", level = 80, cd = 20, dist = 1, target = 1, f = 70, t = "steel"},           move7 = {name = "Body Slam", level = 85, cd = 15, dist = 1, target = 1, f = 80, t = "normal"},           move7 = {name = "Thunder", level = 80, cd = 60, dist = 1, target = 0, f = 100, t = "electric"},           move8 = {name = "Electric Storm", level = 90, cd = 50, dist = 1, target = 0, f = 105, t = "electric"},           move9 = {name = "Agility", level = 80, cd = 35, dist = 1, target = 0, f = 0, t = "flying"},           passive1 = {name = "Electric Charge", level = 1, cd = 0, dist = 6, target = 0, f = 20, t = "electric"},          }, ["Sandshrew"] =  {move1 = {name = "Sand Attack", level = 20, cd = 15, dist = 1, target = 0, f = 0, t = "ground"},           move2 = {name = "Mud Shot", level = 20, cd = 15, dist = 6, target = 1, f = 40, t = "ground"},           move3 = {name = "Scratch", level = 20, cd = 5, dist = 1, target = 1, f = 40, t = "normal"},           move4 = {name = "Rollout", level = 25, cd = 30, dist = 1, target = 0, f = 15, t = "rock"},           move5 = {name = "Bulldoze", level = 30, cd = 50, dist = 1, target = 0, f = 90, t = "ground"},          }, ["Sandslash"] =  {move1 = {name = "Sand Attack", level = 70, cd = 10, dist = 1, target = 0, f = 0, t = "ground"},           move2 = {name = "Mud Shot", level = 70, cd = 15, dist = 6, target = 1, f = 40, t = "ground"},           move3 = {name = "Scratch", level = 70, cd = 10, dist = 1, target = 1, f = 40, t = "normal"},           move4 = {name = "Rollout", level = 70, cd = 25, dist = 1, target = 0, f = 15, t = "rock"},           move5 = {name = "Bulldoze", level = 70, cd = 45, dist = 1, target = 0, f = 90, t = "ground"},           move6 = {name = "Fury Cutter", level = 75, cd = 20, dist = 1, target = 0, f = 65, t = "bug"},           move7 = {name = "Earth Power", level = 73, cd = 45, dist = 1, target = 0, f = 75, t = "ground"},           move8 = {name = "Earthquake", level = 80, cd = 65, dist = 1, target = 0, f = 10, t = "ground"},           move9 = {name = "Defense Curl", level = 70, cd = 55, dist = 1, target = 0, f = 0, t = "normal"},          }, ["Nidoran Female"] = {move1 = {name = "Quick Attack", level = 10, cd = 4, dist = 4, target = 1, f = 40, t = "normal"},           move2 = {name = "Bite", level = 10, cd = 15, dist = 1, target = 1, f = 50, t = "dark"},           move3 = {name = "Horn Attack", level = 12, cd = 20, dist = 2, target = 1, f = 55, t = "normal"},           move4 = {name = "Poison Sting", level = 10, cd = 15, dist = 2, target = 1, f = 40, t = "poison"},           move5 = {name = "Poison Fang", level = 15, cd = 15, dist = 1, target = 1, f = 65, t = "poison"},          }, ["Nidorina"] =   {move1 = {name = "Quick Attack", level = 30, cd = 10, dist = 1, target = 1, f = 40, t = "normal"},           move2 = {name = "Horn Attack", level = 30, cd = 15, dist = 1, target = 1, f = 55, t = "normal"},           move3 = {name = "Poison Jab", level = 30, cd = 16, dist = 6, target = 1, f = 85, t = "poison"},           move4 = {name = "Earth Power", level = 30, cd = 45, dist = 1, target = 0, f = 75, t = "ground"},           move5 = {name = "Poison Fang", level = 32, cd = 15, dist = 1, target = 1, f = 65, t = "poison"},           move6 = {name = "Cross Poison", level = 32, cd = 40, dist = 1, target = 0, f = 70, t = "poison"},           move7 = {name = "Agility", level = 30, cd = 20, dist = 1, target = 0, f = 0, t = "normal"},          }, ["Nidoqueen"] =  {move1 = {name = "Quick Attack", level = 70, cd = 8, dist = 1, target = 1, f = 40, t = "normal"},           move2 = {name = "Horn Attack", level = 70, cd = 15, dist = 1, target = 1, f = 55, t = "normal"},           move3 = {name = "Sand Tomb", level = 70, cd = 35, dist = 1, target = 0, f = 50, t = "ground"},           move4 = {name = "Poison Jab", level = 70, cd = 16, dist = 6, target = 1, f = 85, t = "poison"},           move5 = {name = "Earth Power", level = 70, cd = 45, dist = 1, target = 0, f = 75, t = "ground"},           move6 = {name = "Toxic Spikes", level = 72, cd = 12, dist = 4, target = 1, f = 50, t = "poison"},           move7 = {name = "Cross Poison", level = 72, cd = 40, dist = 1, target = 0, f = 70, t = "poison"},           move8 = {name = "Earthquake", level = 76, cd = 60, dist = 1, target = 0, f = 75, t = "ground"},           move9 = {name = "Agility", level = 70, cd = 20, dist = 1, target = 0, f = 0, t = "normal"},          }, ["Nidoran Male"] = {move1 = {name = "Quick Attack", level = 10, cd = 10, dist = 4, target = 1, f = 40, t = "normal"},           move2 = {name = "Bite", level = 10, cd = 10, dist = 1, target = 1, f = 50, t = "dark"},           move3 = {name = "Horn Attack", level = 12, cd = 15, dist = 2, target = 1, f = 55, t = "normal"},           move4 = {name = "Poison Sting", level = 10, cd = 15, dist = 2, target = 1, f = 40, t = "poison"},           move5 = {name = "Poison Fang", level = 15, cd = 15, dist = 1, target = 1, f = 65, t = "poison"},          }, ["Nidorino"] =   {move1 = {name = "Quick Attack", level = 30, cd = 10, dist = 1, target = 1, f = 40, t = "normal"},           move2 = {name = "Horn Attack", level = 30, cd = 15, dist = 1, target = 1, f = 55, t = "normal"},           move3 = {name = "Poison Jab", level = 30, cd = 16, dist = 6, target = 1, f = 85, t = "poison"},           move4 = {name = "Earth Power", level = 30, cd = 45, dist = 1, target = 0, f = 75, t = "ground"},           move5 = {name = "Poison Fang", level = 32, cd = 15, dist = 1, target = 1, f = 65, t = "poison"},           move6 = {name = "Cross Poison", level = 32, cd = 40, dist = 1, target = 0, f = 70, t = "poison"},           move7 = {name = "Rage", level = 30, cd = 20, dist = 1, target = 0, f = 0, t = "normal"},          }, ["Nidoking"] =   {move1 = {name = "Quick Attack", level = 70, cd = 8, dist = 1, target = 1, f = 40, t = "normal"},           move2 = {name = "Horn Attack", level = 70, cd = 12, dist = 6, target = 1, f = 55, t = "normal"},           move3 = {name = "Poison Jab", level = 70, cd = 16, dist = 6, target = 1, f = 85, t = "poison"},   --alterado v1.7 achu q eh assim kk           move4 = {name = "Poison Fang", level = 70, cd = 12, dist = 1, target = 1, f = 65, t = "poison"},           move5 = {name = "Toxic Spikes", level = 72, cd = 16, dist = 6, target = 1, f = 50, t = "poison"},           move6 = {name = "Sludge Wave", level = 74, cd = 28, dist = 1, target = 0, f = 80, t = "poison"},           move7 = {name = "Cross Poison", level = 72, cd = 40, dist = 1, target = 0, f = 70, t = "poison"},           move8 = {name = "Fear", level = 76, cd = 24, dist = 1, target = 0, f = 0, t = "ghost"},           move9 = {name = "Rage", level = 70, cd = 16, dist = 1, target = 0, f = 0, t = "dragon"},          }, ["Clefairy"] =   {move1 = {name = "DoubleSlap", level = 40, cd = 5, dist = 1, target = 1, f = 25, t = "normal"},           move2 = {name = "Body Slam", level = 44, cd = 40, dist = 1, target = 1, f = 80, t = "normal"},           move3 = {name = "Sing", level = 40, cd = 55, dist = 0, target = 0, f = 0, t = "normal"},           move4 = {name = "Multislap", level = 40, cd = 25, dist = 1, target = 0, f = 35, t = "normal"},           move5 = {name = "Great Love", level = 47, cd = 45, dist = 1, target = 0, f = 50, t = "normal"},           move6 = {name = "Healarea", level = 45, cd = 65, dist = 1, target = 0, f = 0, t = "normal"},           move7 = {name = "Metronome", level = 40, cd = 40, dist = 1, target = 0, f = 0, t = "normal"},           move8 = {name = "Defense Curl", level = 40, cd = 35, dist = 1, target = 0, f = 0, t = "normal"},          }, ["Clefable"] =  {move1 = {name = "DoubleSlap", level = 70, cd = 5, dist = 1, target = 1, f = 25, t = "normal"},           move2 = {name = "Body Slam", level = 74, cd = 40, dist = 1, target = 1, f = 80, t = "normal"},           move3 = {name = "Sing", level = 70, cd = 55, dist = 1, target = 0, f = 0, t = "normal"},           move4 = {name = "Multislap", level = 70, cd = 25, dist = 1, target = 0, f = 35, t = "normal"},           move5 = {name = "Meteor Smash", level = 74, cd = 25, dist = 6, target = 1, f = 65, t = "normal"},           move6 = {name = "Great Love", level = 77, cd = 45, dist = 1, target = 0, f = 50, t = "normal"},           move7 = {name = "Healarea", level = 75, cd = 65, dist = 1, target = 0, f = 0, t = "normal"},           move8 = {name = "Metronome", level = 70, cd = 35, dist = 1, target = 0, f = 0, t = "normal"},           move9 = {name = "Defense Curl", level = 70, cd = 35, dist = 1, target = 0, f = 0, t = "normal"},          }, ["Vulpix"] =     {move1 = {name = "Quick Attack", level = 20, cd = 10, dist = 1, target = 1, f = 40, t = "normal"},           move2 = {name = "Iron Tail", level = 20, cd = 15, dist = 1, target = 1, f = 70, t = "steel"},           move3 = {name = "Ember", level = 20, cd = 15, dist = 6, target = 1, f = 42, t = "fire"},           move4 = {name = "Flamethrower", level = 22, cd = 20, dist = 1, target = 0, f = 80, t = "fire"},           move5 = {name = "Flame Wheel", level = 24, cd = 26, dist = 1, target = 0, f = 85, t = "fire"},           move6 = {name = "Fire Blast", level = 30, cd = 45, dist = 1, target = 0, f = 85, t = "fire"},          }, ["Ninetales"] =  {move1 = {name = "Quick Attack", level = 70, cd = 10, dist = 1, target = 1, f = 40, t = "normal"},           move2 = {name = "Iron Tail", level = 70, cd = 15, dist = 1, target = 1, f = 70, t = "steel"},           move3 = {name = "Ember", level = 70, cd = 15, dist = 6, target = 1, f = 42, t = "fire"},           move4 = {name = "Flamethrower", level = 70, cd = 20, dist = 1, target = 0, f = 80, t = "fire"},           move5 = {name = "Flame Wheel", level = 70, cd = 20, dist = 1, target = 0, f = 85, t = "fire"},           move6 = {name = "Fireball", level = 70, cd = 20, dist = 6, target = 1, f = 75, t = "fire"},           move7 = {name = "Confuse Ray", level = 70, cd = 25, dist = 6, target = 1, f = 65, t = "ghost"},           move8 = {name = "Fire Blast", level = 74, cd = 65, dist = 1, target = 0, f = 105, t = "fire"},           move9 = {name = "Magma Storm", level = 78, cd = 75, dist = 1, target = 0, f = 100, t = "fire"},           move10 = {name = "Safeguard", level = 80, cd = 40, dist = 1, target = 0, f = 0, t = "normal"},          }, ["Jigglypuff"] = {move1 = {name = "DoubleSlap", level = 40, cd = 5, dist = 1, target = 1, f = 25, t = "normal"},           move2 = {name = "Body Slam", level = 44, cd = 20, dist = 1, target = 1, f = 80, t = "normal"},           move3 = {name = "Sing", level = 40, cd = 22, dist = 1, target = 0, f = 0, t = "normal"},           move4 = {name = "Hyper Voice", level = 40, cd = 20, dist = 1, target = 0, f = 65, t = "normal"},           move5 = {name = "Multislap", level = 40, cd = 20, dist = 1, target = 0, f = 35, t = "normal"},           move6 = {name = "Echoed Voice", level = 45, cd = 30, dist = 1, target = 0, f = 85, t = "normal"},           move7 = {name = "Softboiled", level = 45, cd = 40, dist = 1, target = 0, f = 0, t = "normal"},           move8 = {name = "Lovely Kiss", level = 40, cd = 20, dist = 6, target = 1, f = 0, t = "normal"},           passive1 = {name = "Melody", level = 1, cd = 0, dist = 6, target = 0, f = 0, t = "normal"},          }, ["Wigglytuff"] = {move1 = {name = "DoubleSlap", level = 70, cd = 5, dist = 1, target = 1, f = 25, t = "normal"},           move2 = {name = "Body Slam", level = 74, cd = 20, dist = 1, target = 1, f = 80, t = "normal"},           move3 = {name = "Sing", level = 70, cd = 22, dist = 1, target = 0, f = 0, t = "normal"},           move4 = {name = "Hyper Voice", level = 70, cd = 15, dist = 1, target = 0, f = 65, t = "normal"},           move5 = {name = "Multislap", level = 70, cd = 20, dist = 1, target = 0, f = 35, t = "normal"},           move6 = {name = "Rock n'Roll", level = 74, cd = 60, dist = 1, target = 0, f = 65, t = "normal"},  --alterado v1.5           move7 = {name = "Echoed Voice", level = 75, cd = 30, dist = 1, target = 0, f = 85, t = "normal"},           move8 = {name = "Softboiled", level = 75, cd = 80, dist = 1, target = 0, f = 0, t = "normal"},           move9 = {name = "Charm", level = 70, cd = 20, dist = 6, target = 1, f = 0, t = "normal"},           passive1 = {name = "Melody", level = 1, cd = 0, dist = 6, target = 0, f = 0, t = "normal"},          }, ["Zubat"] =      {move1 = {name = "Super Sonic", level = 10, cd = 25, dist = 6, target = 1, f = 0, t = "normal"},           move2 = {name = "Bite", level = 10, cd = 10, dist = 1, target = 1, f = 50, t = "dark"},           move3 = {name = "Poison Fang", level = 10, cd = 25, dist = 1, target = 1, f = 65, t = "poison"},           move4 = {name = "Absorb", level = 12, cd = 22, dist = 1, target = 1, f = 40, t = "grass"},           move5 = {name = "Toxic", level = 15, cd = 20, dist = 1, target = 0, f = 50, t = "poison"},           passive1 = {name = "Lifesteal", level = 1, cd = 0, dist = 1, target = 0, f = 15, t = "poison"},          }, ["Golbat"] =     {move1 = {name = "Super Sonic", level = 40, cd = 15, dist = 6, target = 1, f = 0, t = "normal"},           move2 = {name = "Bite", level = 40, cd = 10, dist = 1, target = 1, f = 50, t = "dark"},           move3 = {name = "Poison Fang", level = 40, cd = 10, dist = 1, target = 1, f = 65, t = "poison"},           move4 = {name = "Toxic", level = 40, cd = 20, dist = 1, target = 0, f = 50, t = "poison"},           move5 = {name = "Whirlwind", level = 40, cd = 22, dist = 1, target = 0, f = 80, t = "flying"},           move6 = {name = "Wing Attack", level = 40, cd = 30, dist = 1, target = 0, f = 75, t = "flying"},           move7 = {name = "Air Cutter", level = 44, cd = 30, dist = 1, target = 0, f = 80, t = "flying"},           passive1 = {name = "Lifesteal", level = 1, cd = 0, dist = 1, target = 0, f = 15, t = "poison"},          }, ["Oddish"] =     {move1 = {name = "Absorb", level = 7, cd = 20, dist = 1, target = 1, f = 40, t = "grass"},           move2 = {name = "Acid", level = 1, cd = 15, dist = 6, target = 1, f = 45, t = "poison"},           move3 = {name = "Leech Seed", level = 1, cd = 20, dist = 6, target = 1, f = 1, t = "grass"},           move4 = {name = "Sleep Powder", level = 9, cd = 80, dist = 1, target = 0, f = 0, t = "grass"},           move5 = {name = "Stun Spore", level = 8, cd = 60, dist = 1, target = 0, f = 0, t = "grass"},           move6 = {name = "Poison Powder", level = 8, cd = 10, dist = 1, target = 0, f = 0, t = "grass"},           passive1 = {name = "Mega Drain", level = 1, cd = 0, dist = 6, target = 0, f = 20, t = "grass"},           passive2 = {name = "Spores Reaction", level = 1, cd = 0, dist = 6, target = 0, f = 0, t = "grass"},          }, ["Gloom"] =      {move1 = {name = "Absorb", level = 30, cd = 20, dist = 1, target = 1, f = 40, t = "grass"},           move2 = {name = "Leech Seed", level = 30, cd = 20, dist = 6, target = 1, f = 1, t = "grass"},           move3 = {name = "Acid", level = 30, cd = 10, dist = 6, target = 1, f = 45, t = "poison"},           move4 = {name = "Poison Bomb", level = 33, cd = 20, dist = 6, target = 1, f = 70, t = "poison"},           move5 = {name = "Poison Gas", level = 37, cd = 25, dist = 1, target = 0, f = 5, t = "poison"},           move6 = {name = "Sleep Powder", level = 30, cd = 80, dist = 1, target = 0, f = 0, t = "grass"},           move7 = {name = "Stun Spore", level = 30, cd = 25, dist = 1, target = 0, f = 0, t = "grass"},           move8 = {name = "Poison Powder", level = 30, cd = 20, dist = 1, target = 0, f = 0, t = "grass"},           passive1 = {name = "Mega Drain", level = 1, cd = 0, dist = 6, target = 0, f = 20, t = "grass"},           passive2 = {name = "Spores Reaction", level = 1, cd = 0, dist = 6, target = 0, f = 0, t = "grass"},          }, ["Vileplume"] =  {move1 = {name = "Absorb", level = 50, cd = 20, dist = 1, target = 1, f = 40, t = "grass"},           move2 = {name = "Leech Seed", level = 50, cd = 20, dist = 6, target = 1, f = 1, t = "grass"},           move3 = {name = "Acid", level = 50, cd = 10, dist = 6, target = 1, f = 45, t = "poison"},           move4 = {name = "Poison Bomb", level = 50, cd = 20, dist = 6, target = 1, f = 70, t = "poison"},           move5 = {name = "Poison Gas", level = 50, cd = 25, dist = 1, target = 0, f = 5, t = "poison"},           move6 = {name = "Petal Dance", level = 55, cd = 20, dist = 1, target = 0, f = 70, t = "grass"},           move7 = {name = "Solar Beam", level = 60, cd = 50, dist = 1, target = 0, f = 135, t = "grass"},           move8 = {name = "Sleep Powder", level = 50, cd = 80, dist = 1, target = 0, f = 0, t = "grass"},           move9 = {name = "Stun Spore", level = 50, cd = 25, dist = 1, target = 0, f = 0, t = "grass"},           move10 = {name = "Poison Powder", level = 50, cd = 20, dist = 1, target = 0, f = 0, t = "grass"},           passive1 = {name = "Mega Drain", level = 1, cd = 0, dist = 6, target = 0, f = 20, t = "grass"},           passive2 = {name = "Spores Reaction", level = 1, cd = 0, dist = 6, target = 0, f = 0, t = "grass"},          }, ["Paras"] =      {move1 = {name = "Scratch", level = 1, cd = 10, dist = 1, target = 1, f = 40, t = "normal"},           move2 = {name = "Poison Sting", level = 1, cd = 10, dist = 2, target = 1, f = 40, t = "poison"},           move3 = {name = "Slash", level = 1, cd = 15, dist = 1, target = 1, f = 60, t = "normal"},           move4 = {name = "Stun Spore", level = 6, cd = 25, dist = 1, target = 0, f = 0, t = "grass"},           move5 = {name = "Poison Powder", level = 4, cd = 15, dist = 1, target = 0, f = 0, t = "grass"},           move6 = {name = "Sleep Powder", level = 8, cd = 80, dist = 1, target = 0, f = 0, t = "grass"},          }, ["Parasect"] =   {move1 = {name = "Absorb", level = 50, cd = 15, dist = 1, target = 1, f = 40, t = "grass"},           move2 = {name = "Leech Life", level = 55, cd = 20, dist = 6, target = 1, f = 40, t = "grass"},           move3 = {name = "Poison Sting", level = 50, cd = 10, dist = 2, target = 1, f = 40, t = "poison"},           move4 = {name = "Slash", level = 50, cd = 15, dist = 1, target = 1, f = 60, t = "normal"},           move5 = {name = "Poison Bomb", level = 50, cd = 20, dist = 6, target = 1, f = 70, t = "poison"},           move6 = {name = "Stun Spore", level = 50, cd = 25, dist = 1, target = 0, f = 0, t = "grass"},           move7 = {name = "Poison Powder", level = 50, cd = 20, dist = 1, target = 0, f = 0, t = "grass"},           move8 = {name = "Sleep Powder", level = 50, cd = 80, dist = 1, target = 0, f = 0, t = "grass"},           move9 = {name = "Fury Cutter", level = 56, cd = 25, dist = 1, target = 0, f = 65, t = "bug"},           move10 = {name = "X-Scissor", level = 58, cd = 25, dist = 1, target = 0, f = 65, t = "bug"},           passive1 = {name = "Mega Drain", level = 1, cd = 0, dist = 6, target = 0, f = 20, t = "grass"},           passive2 = {name = "Spores Reaction", level = 1, cd = 0, dist = 6, target = 0, f = 0, t = "grass"},          }, ["Venonat"] =    {move1 = {name = "Absorb", level = 20, cd = 15, dist = 1, target = 1, f = 40, t = "grass"},           move2 = {name = "Bug Bite", level = 20, cd = 10, dist = 1, target = 1, f = 45, t = "bug"},           move3 = {name = "Super Sonic", level = 20, cd = 15, dist = 6, target = 1, f = 0, t = "normal"},           move4 = {name = "Psychic", level = 30, cd = 20, dist = 1, target = 0, f = 90, t = "psychic"},           move5 = {name = "Poison Fang", level = 20, cd = 15, dist = 1, target = 1, f = 65, t = "poison"},           move6 = {name = "Sleep Powder", level = 35, cd = 60, dist = 1, target = 0, f = 0, t = "grass"},           move7 = {name = "Poison Powder", level = 30, cd = 20, dist = 1, target = 0, f = 0, t = "grass"},           move8 = {name = "Stun Spore", level = 25, cd = 25, dist = 1, target = 0, f = 0, t = "grass"},          }, ["Venomoth"] =   {move1 = {name = "Super Sonic", level = 50, cd = 15, dist = 6, target = 1, f = 0, t = "normal"},           move2 = {name = "Psybeam", level = 50, cd = 15, dist = 1, target = 0, f = 75, t = "psychic"},           move3 = {name = "Silver Wind", level = 50, cd = 25, dist = 6, target = 1, f = 70, t = "bug"},           move4 = {name = "Confusion", level = 56, cd = 25, dist = 1, target = 0, f = 50, t = "psychic"},           move5 = {name = "Psychic", level = 50, cd = 20, dist = 1, target = 0, f = 90, t = "psychic"},           move6 = {name = "Poison Fang", level = 50, cd = 15, dist = 1, target = 1, f = 65, t = "poison"},           move7 = {name = "Bug Buzz", level = 54, cd = 20, dist = 1, target = 0, f = 70, t = "bug"},           move8 = {name = "Sleep Powder", level = 50, cd = 60, dist = 1, target = 0, f = 0, t = "normal"},           move9 = {name = "Poison Powder", level = 50, cd = 20, dist = 1, target = 0, f = 0, t = "normal"},          }, ["Diglett"] =    {move1 = {name = "Sand Attack", level = 10, cd = 15, dist = 1, target = 0, f = 0, t = "ground"},           move2 = {name = "Slash", level = 10, cd = 10, dist = 1, target = 1, f = 60, t = "normal"},           move3 = {name = "Mud Shot", level = 10, cd = 15, dist = 6, target = 1, f = 40, t = "ground"},              move4 = {name = "Mud Slap", level = 12, cd = 20, dist = 6, target = 1, f = 50, t = "ground"},           move5 = {name = "Earth Power", level = 15, cd = 40, dist = 1, target = 0, f = 75, t = "ground"},          }, ["Dugtrio"] =    {move1 = {name = "Sand Attack", level = 40, cd = 15, dist = 1, target = 0, f = 0, t = "ground"},           move2 = {name = "Slash", level = 40, cd = 10, dist = 1, target = 1, f = 60, t = "normal"},           move3 = {name = "Mud Shot", level = 40, cd = 15, dist = 6, target = 1, f = 40, t = "ground"},           move4 = {name = "Mud Slap", level = 40, cd = 20, dist = 6, target = 1, f = 50, t = "ground"},           move5 = {name = "Earth Power", level = 40, cd = 40, dist = 1, target = 0, f = 75, t = "ground"},           move6 = {name = "Bulldoze", level = 42, cd = 35, dist = 1, target = 0, f = 90, t = "ground"},           move7 = {name = "Earthquake", level = 47, cd = 60, dist = 1, target = 0, f = 10, t = "ground"},           move8 = {name = "Rage", level = 50, cd = 30, dist = 1, target = 0, f = 0, t = "dragon"},          }, ["Meowth"] =     {move1 = {name = "Slash", level = 20, cd = 10, dist = 1, target = 1, f = 60, t = "normal"},           move2 = {name = "Scratch", level = 20, cd = 8, dist = 1, target = 1, f = 40, t = "normal"},           move3 = {name = "Bite", level = 20, cd = 15, dist = 1, target = 1, f = 50, t = "dark"},           move4 = {name = "Night Slash", level = 20, cd = 15, dist = 1, target = 0, f = 60, t = "dark"},           move5 = {name = "Pay Day", level = 30, cd = 20, dist = 6, target = 1, f = 50, t = "normal"},           passive1 = {name = "Dragon Fury", level = 1, cd = 0, dist = 6, target = 0, f = 55, t = "dragon"},          }, ["Persian"] =    {move1 = {name = "Slash", level = 50, cd = 10, dist = 1, target = 1, f = 60, t = "normal"},           move2 = {name = "Scratch", level = 50, cd = 10, dist = 1, target = 1, f = 40, t = "normal"},           move3 = {name = "Bite", level = 50, cd = 15, dist = 1, target = 1, f = 50, t = "dark"},           move4 = {name = "Night Slash", level = 50, cd = 15, dist = 1, target = 0, f = 60, t = "dark"},           move5 = {name = "Pay Day", level = 60, cd = 15, dist = 6, target = 1, f = 50, t = "normal"},           move6 = {name = "Fury Cutter", level = 60, cd = 20, dist = 1, target = 0, f = 65, t = "bug"},           move7 = {name = "Fear", level = 55, cd = 40, dist = 1, target = 0, f = 0, t = "ghost"},           passive1 = {name = "Dragon Fury", level = 1, cd = 0, dist = 6, target = 0, f = 55, t = "dragon"},          }, ["Psyduck"] =    {move1 = {name = "Water Gun", level = 24, cd = 15, dist = 1, target = 0, f = 55, t = "water"},           move2 = {name = "Aqua Tail", level = 20, cd = 15, dist = 1, target = 1, f = 50, t = "water"},           move3 = {name = "Waterball", level = 24, cd = 20, dist = 4, target = 1, f = 65, t = "water"},           move4 = {name = "Confusion", level = 28, cd = 25, dist = 1, target = 0, f = 50, t = "psychic"},           move5 = {name = "Headbutt", level = 20, cd = 15, dist = 1, target = 1, f = 70, t = "normal"},           passive1 = {name = "Stunning Confusion", level = 1, cd = 6, dist = 6, target = 0, f = 10, t = "psychic"},          }, ["Golduck"] =    {move1 = {name = "Water Gun", level = 70, cd = 20, dist = 1, target = 0, f = 55, t = "water"},           move2 = {name = "Aqua Tail", level = 70, cd = 15, dist = 1, target = 1, f = 50, t = "water"},           move3 = {name = "Waterball", level = 70, cd = 20, dist = 4, target = 1, f = 65, t = "water"},           move4 = {name = "Confusion", level = 70, cd = 30, dist = 1, target = 0, f = 50, t = "psychic"},           move5 = {name = "Psychic", level = 70, cd = 20, dist = 1, target = 0, f = 75, t = "psychic"},           move6 = {name = "Psywave", level = 70, cd = 15, dist = 1, target = 0, f = 75, t = "psychic"},           move7 = {name = "Hydropump", level = 80, cd = 35, dist = 1, target = 1, f = 85, t = "water"},           passive1 = {name = "Stunning Confusion", level = 1, cd = 0, dist = 6, target = 0, f = 10, t = "psychic"},          }, ["Mankey"] =     {move1 = {name = "Scratch", level = 10, cd = 10, dist = 1, target = 1, f = 40, t = "normal"},           move2 = {name = "Triple Kick", level = 10, cd = 15, dist = 1, target = 1, f = 60, t = "fighting"},           move3 = {name = "Karate Chop", level = 13, cd = 20, dist = 1, target = 1, f = 50, t = "fighting"},           move4 = {name = "Cross Chop", level = 15, cd = 15, dist = 1, target = 0, f = 80, t = "fighting"},           move5 = {name = "Rage", level = 17, cd = 20, dist = 1, target = 0, f = 0, t = "dragon"},          }, ["Primeape"] =   {move1 = {name = "Scratch", level = 50, cd = 10, dist = 1, target = 1, f = 40, t = "normal"},           move2 = {name = "Triple Kick", level = 50, cd = 15, dist = 1, target = 1, f = 60, t = "fighting"},              move3 = {name = "Karate Chop", level = 50, cd = 25, dist = 1, target = 1, f = 50, t = "fighting"},           move4 = {name = "Cross Chop", level = 54, cd = 20, dist = 1, target = 0, f = 80, t = "fighting"},           move5 = {name = "Mega Punch", level = 56, cd = 20, dist = 1, target = 1, f = 85, t = "fighting"},           move6 = {name = "Mega Kick", level = 58, cd = 20, dist = 1, target = 1, f = 85, t = "fighting"},           move7 = {name = "Rage", level = 50, cd = 25, dist = 1, target = 0, f = 0, t = "dragon"},           move8 = {name = "Fear", level = 50, cd = 25, dist = 1, target = 0, f = 0, t = "ghost"},          }, ["Growlithe"] =  {move1 = {name = "Roar", level = 33, cd = 20, dist = 1, target = 0, f = 0, t = "normal"},           move2 = {name = "Bite", level = 30, cd = 10, dist = 1, target = 1, f = 50, t = "dark"},           move3 = {name = "Ember", level = 30, cd = 15, dist = 6, target = 1, f = 42, t = "fire"},           move4 = {name = "Flamethrower", level = 30, cd = 20, dist = 1, target = 0, f = 80, t = "fire"},           move5 = {name = "Fireball", level = 32, cd = 20, dist = 6, target = 1, f = 75, t = "fire"},           move6 = {name = "Fire Fang", level = 30, cd = 25, dist = 1, target = 1, f = 65, t = "fire"},           move9 = {name = "Heat Wave", level = 34, cd = 45, dist = 1, target = 0, f = 90, t = "fire"},           move10 = {name = "War Dog", level = 36, cd = 30, dist = 1, target = 0, f = 0, t = "normal"},          }, ["Arcanine"] =   {move1 = {name = "Roar", level = 100, cd = 20, dist = 1, target = 0, f = 0, t = "normal"},           move2 = {name = "Bite", level = 90, cd = 10, dist = 1, target = 1, f = 50, t = "dark"},           move3 = {name = "Ember", level = 90, cd = 15, dist = 6, target = 1, f = 42, t = "fire"},           move4 = {name = "Flamethrower", level = 90, cd = 20, dist = 1, target = 0, f = 80, t = "fire"},           move5 = {name = "Fireball", level = 90, cd = 20, dist = 6, target = 1, f = 75, t = "fire"},           move6 = {name = "Fire Fang", level = 90, cd = 25, dist = 1, target = 1, f = 65, t = "fire"},           move7 = {name = "ExtremeSpeed", level = 90, cd = 20, dist = 6, target = 1, f = 65, t = "normal"},           move8 = {name = "Fire Blast", level = 92, cd = 60, dist = 1, target = 0, f = 120, t = "fire"},           move9 = {name = "Heat Wave", level = 94, cd = 45, dist = 1, target = 0, f = 90, t = "fire"},           move10 = {name = "War Dog", level = 96, cd = 30, dist = 1, target = 0, f = 0, t = "normal"},          }, ["Poliwag"] =    {move1 = {name = "DoubleSlap", level = 1, cd = 5, dist = 1, target = 1, f = 25, t = "normal"},           move2 = {name = "Bubbles", level = 1, cd = 10, dist = 6, target = 1, f = 40, t = "water"},           move3 = {name = "Water Gun", level = 6, cd = 15, dist = 1, target = 0, f = 55, t = "water"},           move4 = {name = "Aqua Tail", level = 3, cd = 15, dist = 1, target = 1, f = 50, t = "water"},           move5 = {name = "Hypnosis", level = 8, cd = 20, dist = 6, target = 1, f = 0, t = "psychic"},          }, ["Poliwhirl"] =  {move1 = {name = "Mud Shot", level = 30, cd = 15, dist = 6, target = 1, f = 40, t = "ground"},           move2 = {name = "DoubleSlap", level = 30, cd = 10, dist = 1, target = 1, f = 25, t = "normal"},           move3 = {name = "Bubbles", level = 30, cd = 15, dist = 6, target = 1, f = 40, t = "water"},           move4 = {name = "Water Gun", level = 30, cd = 20, dist = 1, target = 0, f = 55, t = "water"},           move5 = {name = "Ice Beam", level = 30, cd = 25, dist = 1, target = 0, f = 95, t = "ice"},           move6 = {name = "Brick Break", level = 32, cd = 20, dist = 1, target = 1, f = 85, t = "fighting"},           move7 = {name = "Dizzy Punch", level = 40, cd = 25, dist = 1, target = 1, f = 75, t = "normal"},           move8 = {name = "Hypnosis", level = 30, cd = 25, dist = 6, target = 1, f = 0, t = "psychic"},          }, ["Poliwrath"] =  {move1 = {name = "Mud Shot", level = 70, cd = 15, dist = 6, target = 1, f = 40, t = "ground"},           move2 = {name = "DoubleSlap", level = 70, cd = 10, dist = 1, target = 1, f = 25, t = "normal"},           move3 = {name = "Bubbles", level = 70, cd = 15, dist = 6, target = 1, f = 40, t = "water"},           move4 = {name = "Water Gun", level = 70, cd = 20, dist = 1, target = 0, f = 55, t = "water"},           move5 = {name = "Ice Beam", level = 70, cd = 25, dist = 1, target = 0, f = 95, t = "ice"},           move6 = {name = "Brick Break", level = 75, cd = 20, dist = 1, target = 1, f = 85, t = "fighting"},           move7 = {name = "Dizzy Punch", level = 80, cd = 25, dist = 1, target = 1, f = 75, t = "normal"},           move8 = {name = "Focus Blast", level = 78, cd = 20, dist = 1, target = 1, f = 85, t = "fighting"},           move9 = {name = "Hypnosis", level = 70, cd = 25, dist = 6, target = 1, f = 0, t = "psychic"},          }, ["Abra"] =       {move1 = {name = "Restore", level = 15, cd = 85, dist = 1, target = 0, f = 0, t = "normal"},           move2 = {name = "Psy Pulse", level = 10, cd = 15, dist = 6, target = 1, f = 35, t = "psychic"},           move3 = {name = "Psychic", level = 20, cd = 40, dist = 1, target = 0, f = 90, t = "psychic"},           move4 = {name = "Calm Mind", level = 13, cd = 50, dist = 1, target = 0, f = 0, t = "psychic"},          }, ["Kadabra"] =    {move1 = {name = "Psybeam", level = 40, cd = 15, dist = 1, target = 0, f = 75, t = "psychic"},           move2 = {name = "Psywave", level = 40, cd = 20, dist = 1, target = 0, f = 75, t = "psychic"},           move3 = {name = "Psy Pulse", level = 40, cd = 10, dist = 6, target = 1, f = 35, t = "psychic"},           move4 = {name = "Confusion", level = 40, cd = 35, dist = 1, target = 0, f = 50, t = "psychic"},           move5 = {name = "Psychic", level = 42, cd = 35, dist = 1, target = 0, f = 90, t = "psychic"},           move6 = {name = "Calm Mind", level = 40, cd = 35, dist = 1, target = 0, f = 0, t = "psychic"},           move7 = {name = "Hypnosis", level = 40, cd = 65, dist = 6, target = 1, f = 0, t = "psychic"},           move8 = {name = "Reflect", level = 55, cd = 45, dist = 1, target = 0, f = 0, t = "psychic"},           move9 = {name = "Restore", level = 45, cd = 75, dist = 1, target = 0, f = 0, t = "normal"},           move10 = {name = "Miracle Eye", level = 40, cd = 15, dist = 1, target = 0, f = 0, t = "psychic"},          }, ["Alakazam"] =   {move1 = {name = "Psybeam", level = 80, cd = 15, dist = 1, target = 0, f = 75, t = "psychic"},           move2 = {name = "Psywave", level = 80, cd = 20, dist = 1, target = 0, f = 75, t = "psychic"},           move3 = {name = "Psy Pulse", level = 80, cd = 10, dist = 6, target = 1, f = 35, t = "psychic"},           move4 = {name = "Confusion", level = 80, cd = 35, dist = 1, target = 0, f = 50, t = "psychic"},           move5 = {name = "Psychic", level = 80, cd = 35, dist = 1, target = 0, f = 90, t = "psychic"},           move6 = {name = "Psyusion", level = 95, cd = 65, dist = 1, target = 0, f = 70, t = "psychic"},           move7 = {name = "Calm Mind", level = 80, cd = 35, dist = 1, target = 0, f = 0, t = "psychic"},           move8 = {name = "Hypnosis", level = 80, cd = 65, dist = 6, target = 1, f = 0, t = "psychic"},           move9 = {name = "Reflect", level = 85, cd = 45, dist = 1, target = 0, f = 0, t = "psychic"},           move10 = {name = "Restore", level = 85, cd = 75, dist = 1, target = 0, f = 0, t = "normal"},           move11 = {name = "Miracle Eye", level = 80, cd = 15, dist = 1, target = 0, f = 0, t = "psychic"},          }, ["Machop"] =     {move1 = {name = "Triple Punch", level = 20, cd = 10, dist = 1, target = 1, f = 60, t = "fighting"},           move2 = {name = "Mega Punch", level = 20, cd = 15, dist = 1, target = 1, f = 85, t = "fighting"},           move3 = {name = "Karate Chop", level = 24, cd = 15, dist = 1, target = 1, f = 50, t = "fighting"},           move4 = {name = "Focus Blast", level = 28, cd = 15, dist = 1, target = 0, f = 100, t = "fighting"},           move5 = {name = "Agility", level = 30, cd = 20, dist = 1, target = 0, f = 0, t = "normal"},          }, ["Machoke"] =    {move1 = {name = "Triple Punch", level = 42, cd = 10, dist = 1, target = 1, f = 60, t = "fighting"},           move2 = {name = "Mega Punch", level = 40, cd = 15, dist = 1, target = 1, f = 85, t = "fighting"},           move3 = {name = "Mega Kick", level = 44, cd = 15, dist = 1, target = 1, f = 85, t = "fighting"},           move4 = {name = "Karate Chop", level = 40, cd = 20, dist = 1, target = 1, f = 50, t = "fighting"},           move5 = {name = "Focus Blast", level = 40, cd = 20, dist = 1, target = 0, f = 100, t = "fighting"},           move6 = {name = "Fist Machine", level = 45, cd = 25, dist = 1, target = 0, f = 105, t = "fighting"},           move7 = {name = "Agility", level = 48, cd = 20, dist = 1, target = 0, f = 0, t = "normal"},          }, ["Machamp"] =    {move1 = {name = "Triple Punch", level = 80, cd = 10, dist = 1, target = 1, f = 60, t = "fighting"},           move2 = {name = "Karate Chop", level = 80, cd = 15, dist = 1, target = 1, f = 50, t = "fighting"},           move3 = {name = "Mega Punch", level = 92, cd = 22, dist = 1, target = 1, f = 85, t = "fighting"},           move4 = {name = "Focus Blast", level = 80, cd = 40, dist = 1, target = 0, f = 100, t = "fighting"},           move5 = {name = "Fist Machine", level = 86, cd = 30, dist = 1, target = 0, f = 105, t = "fighting"},           move6 = {name = "Vital Throw", level = 88, cd = 20, dist = 1, target = 0, f = 90, t = "fighting"},           move7 = {name = "DynamicPunch", level = 90, cd = 30, dist = 1, target = 0, f = 105, t = "fighting"},           move8 = {name = "Agility", level = 80, cd = 30, dist = 1, target = 0, f = 0, t = "normal"},           passive1 = {name = "Foresight", level = 1, cd = 0, dist = 1, target = 1, f = 45, t = "fighting"},          }, ["Bellsprout"] = {move1 = {name = "Razor Leaf", level = 6, cd = 10, dist = 6, target = 1, f = 33, t = "grass"},             move2 = {name = "Vine Whip", level = 8, cd = 12, dist = 1, target = 0, f = 65, t = "grass"},           move3 = {name = "Acid", level = 4, cd = 10, dist = 6, target = 1, f = 45, t = "poison"},           move4 = {name = "Slash", level = 1, cd = 15, dist = 1, target = 1, f = 60, t = "normal"},          }, ["Weepinbell"] = {move1 = {name = "Razor Leaf", level = 30, cd = 10, dist = 6, target = 1, f = 33, t = "grass"},           move2 = {name = "Vine Whip", level = 30, cd = 15, dist = 1, target = 0, f = 65, t = "grass"},           move3 = {name = "Acid", level = 30, cd = 12, dist = 6, target = 1, f = 45, t = "poison"},           move4 = {name = "Poison Bomb", level = 30, cd = 20, dist = 6, target = 1, f = 70, t = "poison"},           move5 = {name = "Slash", level = 30, cd = 20, dist = 1, target = 1, f = 60, t = "normal"},           move6 = {name = "Stun Spore", level = 30, cd = 25, dist = 1, target = 0, f = 0, t = "grass"},           move7 = {name = "Poison powder", level = 30, cd = 20, dist = 1, target = 0, f = 0, t = "grass"},           move8 = {name = "Sleep Powder", level = 35, cd = 55, dist = 1, target = 0, f = 0, t = "grass"},           move9 = {name = "Leaf Storm", level = 40, cd = 60, dist = 1, target = 0, f = 75, t = "grass"},          }, ["Victreebel"] = {move1 = {name = "Razor Leaf", level = 50, cd = 10, dist = 6, target = 1, f = 33, t = "grass"},           move2 = {name = "Vine Whip", level = 50, cd = 15, dist = 1, target = 0, f = 65, t = "grass"},           move3 = {name = "Acid", level = 50, cd = 12, dist = 6, target = 1, f = 45, t = "poison"},           move4 = {name = "Poison Bomb", level = 50, cd = 20, dist = 6, target = 1, f = 70, t = "poison"},           move5 = {name = "Slash", level = 50, cd = 20, dist = 1, target = 1, f = 60, t = "normal"},           move6 = {name = "Stun Spore", level = 50, cd = 25, dist = 1, target = 0, f = 0, t = "grass"},           move7 = {name = "Poison powder", level = 50, cd = 20, dist = 1, target = 0, f = 0, t = "grass"},           move8 = {name = "Sleep Powder", level = 55, cd = 70, dist = 1, target = 0, f = 0, t = "grass"},           move9 = {name = "Leaf Storm", level = 60, cd = 60, dist = 1, target = 0, f = 100, t = "grass"},           move10 = {name = "Giga Drain", level = 55, cd = 50, dist = 1, target = 1, f = 80, t = "grass"},          }, ["Tentacool"] =  {move1 = {name = "Super Sonic", level = 16, cd = 21, dist = 6, target = 1, f = 0, t = "normal"},           move2 = {name = "Wrap", level = 10, cd = 20, dist = 6, target = 1, f = 0, t = "normal"},           move3 = {name = "Bubbles", level = 10, cd = 10, dist = 6, target = 1, f = 40, t = "water"},           move4 = {name = "Poison Jab", level = 10, cd = 16, dist = 6, target = 1, f = 85, t = "poison"},           move5 = {name = "Acid", level = 10, cd = 15, dist = 6, target = 1, f = 45, t = "poison"},           move6 = {name = "Waterball", level = 10, cd = 20, dist = 6, target = 1, f = 65, t = "water"},          }, ["Tentacruel"] = {move1 = {name = "Super Sonic", level = 80, cd = 12, dist = 6, target = 1, f = 0, t = "normal"},           move2 = {name = "Wrap", level = 80, cd = 20, dist = 6, target = 1, f = 0, t = "normal"},           move3 = {name = "Bubbles", level = 80, cd = 10, dist = 6, target = 1, f = 40, t = "water"},           move4 = {name = "Poison Jab", level = 80, cd = 16, dist = 6, target = 1, f = 85, t = "poison"},           move5 = {name = "Waterball", level = 80, cd = 16, dist = 6, target = 1, f = 65, t = "water"},           move6 = {name = "BubbleBeam", level = 80, cd = 20, dist = 6, target = 1, f = 40, t = "water"},           move7 = {name = "Acid", level = 80, cd = 12, dist = 6, target = 1, f = 45, t = "poison"},           move8 = {name = "Poison Bomb", level = 80, cd = 20, dist = 6, target = 1, f = 70, t = "poison"},           move9 = {name = "Mortal Gas", level = 88, cd = 45, dist = 1, target = 0, f = 90, t = "poison"},           move10 = {name = "Hydropump", level = 90, cd = 54, dist = 1, target = 0, f = 120, t = "water"},          }, ["Geodude"] =    {move1 = {name = "Rock Throw", level = 10, cd = 10, dist = 6, target = 1, f = 55, t = "rock"},           move2 = {name = "Rock Slide", level = 10, cd = 15, dist = 6, target = 1, f = 35, t = "rock"},           move3 = {name = "Stone Edge", level = 13, cd = 20, dist = 1, target = 1, f = 85, t = "rock"},           move4 = {name = "Earth Power", level = 20, cd = 45, dist = 1, target = 0, f = 75, t = "ground"},           move5 = {name = "Harden", level = 15, cd = 35, dist = 1, target = 0, f = 0, t = "normal"},          }, ["Graveler"] =   {move1 = {name = "Rock Throw", level = 40, cd = 10, dist = 6, target = 1, f = 55, t = "rock"},           move2 = {name = "Rock Slide", level = 40, cd = 15, dist = 6, target = 1, f = 35, t = "rock"},           move3 = {name = "Stone Edge", level = 40, cd = 30, dist = 1, target = 1, f = 85, t = "rock"},           move4 = {name = "Earth Power", level = 40, cd = 45, dist = 1, target = 0, f = 75, t = "ground"},           move5 = {name = "Falling Rocks", level = 50, cd = 45, dist = 1, target = 0, f = 135, t = "rock"},           move6 = {name = "Harden", level = 45, cd = 50, dist = 1, target = 0, f = 0, t = "normal"},           move7 = {name = "Selfdestruction", level = 52, cd = 120, dist = 1, target = 0, f = 0, t = "normal"},          }, ["Golem"] =      {move1 = {name = "Rock Throw", level = 70, cd = 10, dist = 6, target = 1, f = 55, t = "rock"},           move2 = {name = "Rock Slide", level = 70, cd = 15, dist = 6, target = 1, f = 35, t = "rock"},           move3 = {name = "Stone Edge", level = 70, cd = 20, dist = 6, target = 1, f = 33, t = "rock"},           move4 = {name = "Earth Power", level = 70, cd = 45, dist = 1, target = 0, f = 75, t = "ground"},           move5 = {name = "Falling Rocks", level = 75, cd = 65, dist = 1, target = 0, f = 135, t = "rock"},           move6 = {name = "Harden", level = 70, cd = 30, dist = 1, target = 0, f = 0, t = "normal"},           move7 = {name = "Rollout", level = 70, cd = 60, dist = 1, target = 0, f = 15, t = "rock"},           move8 = {name = "Selfdestruction", level = 75, cd = 120, dist = 1, target = 0, f = 0, t = "normal"},          }, ["Ponyta"] =     {move1 = {name = "Quick Attack", level = 20, cd = 15, dist = 1, target = 1, f = 40, t = "normal"},           move2 = {name = "Ember", level = 20, cd = 10, dist = 6, target = 1, f = 40, t = "fire"},           move3 = {name = "Flamethrower", level = 26, cd = 20, dist = 1, target = 0, f = 80, t = "fire"},           move4 = {name = "Fireball", level = 23, cd = 25, dist = 6, target = 1, f = 75, t = "fire"},           move5 = {name = "Stomp", level = 28, cd = 35, dist = 1, target = 0, f = 90, t = "ground"},          }, ["Rapidash"] =   {move1 = {name = "Horn Attack", level = 70, cd = 15, dist = 4, target = 1, f = 40, t = "normal"},           move2 = {name = "Ember", level = 70, cd = 10, dist = 6, target = 1, f = 40, t = "fire"},           move3 = {name = "Stomp", level = 78, cd = 35, dist = 1, target = 0, f = 90, t = "ground"},           move4 = {name = "Fireball", level = 73, cd = 20, dist = 6, target = 1, f = 75, t = "fire"},           move5 = {name = "Flamethrower", level = 76, cd = 20, dist = 1, target = 0, f = 80, t = "fire"},           move6 = {name = "Fire Blast", level = 70, cd = 45, dist = 1, target = 0, f = 95, t = "fire"},           move7 = {name = "Inferno", level = 80, cd = 80, dist = 1, target = 0, f = 125, t = "fire"},           move8 = {name = "Megahorn", level = 77, cd = 40, dist = 1, target = 0, f = 90, t = "bug"},             }, [/spoiler]   Pokes:    Ate Rapidash Tbm. [spoiler] ["Bulbasaur"] = {offense = 5, defense = 6, specialattack = 7, vitality = 7, agility = 250, exp = 10, level = 20, wildLvl = 20, type = "grass", type2 = "poison"}, ["Ivysaur"] = {offense = 8, defense = 8, specialattack = 10, vitality = 8, agility = 250, exp = 50, level = 40, wildLvl = 40, type = "grass", type2 = "poison"}, ["Venusaur"] = {offense = 11, defense = 11.5, specialattack = 12, vitality = 10, agility = 250, exp = 100, level = 80, wildLvl = 80, type = "grass", type2 = "poison"}, ["Charmander"] = {offense = 5, defense = 6, specialattack = 7, vitality = 7, agility = 250, exp = 10, level = 20, wildLvl = 20, type = "fire", type2 = "no type"}, ["Charmeleon"] = {offense = 8, defense = 9, specialattack = 10, vitality = 8, agility = 250, exp = 50, level = 40, wildLvl = 40, type = "fire", type2 = "no type"}, ["Charizard"] = {offense = 11, defense = 11.5, specialattack = 12, vitality = 10, agility = 250, exp = 100, level = 80, wildLvl = 80, type = "fire", type2 = "flying"}, ["Squirtle"] = {offense = 5, defense = 6, specialattack = 7, vitality = 7, agility = 250, exp = 10, level = 20, wildLvl = 20, type = "water", type2 = "no type"}, ["Wartortle"] = {offense = 8, defense = 9, specialattack = 12, vitality = 8, agility = 250, exp = 50, level = 40, wildLvl = 40, type = "water", type2 = "no type"}, ["Blastoise"] = {offense = 11, defense = 11.5, specialattack = 12, vitality = 10, agility = 250, exp = 100, level = 80, wildLvl = 80, type = "water", type2 = "no type"}, ["Caterpie"] = {offense = 5, defense = 4, specialattack = 4, vitality = 5, agility = 250, exp = 5, level = 1, wildLvl = 1, type = "bug", type2 = "no type"}, ["Metapod"] = {offense = 6, defense = 6, specialattack = 6, vitality = 6, agility = 250, exp = 25, level = 10, wildLvl = 10, type = "bug", type2 = "no type"}, ["Butterfree"] = {offense = 8, defense = 8, specialattack = 8, vitality = 9, agility = 250, exp = 35, level = 30, wildLvl = 30, type = "bug", type2 = "flying"}, ["Weedle"] = {offense = 5, defense = 4, specialattack = 4, vitality = 5, agility = 250, exp = 5, level = 1, wildLvl = 1, type = "bug", type2 = "poison"}, ["Kakuna"] = {offense = 6, defense = 6, specialattack = 6, vitality = 6, agility = 250, exp = 25, level = 10, wildLvl = 10, type = "bug", type2 = "poison"}, ["Beedrill"] = {offense = 8, defense = 8, specialattack = 8, vitality = 9, agility = 250, exp = 35, level = 30, wildLvl = 30, type = "bug", type2 = "poison"}, ["Pidgey"] = {offense = 5, defense = 4, specialattack = 4, vitality = 5, agility = 250, exp = 5, level = 1, wildLvl = 1, type = "normal", type2 = "flying"}, ["Pidgeotto"] = {offense = 7, defense = 7, specialattack = 7, vitality = 7, agility = 250, exp = 25, level = 20, wildLvl = 20, type = "normal", type2 = "flying"}, ["Pidgeot"] = {offense = 10, defense = 9, specialattack = 10, vitality = 10, agility = 300, exp = 50, level = 80, wildLvl = 80, type = "normal", type2 = "flying"}, ["Rattata"] = {offense = 8, defense = 5, specialattack = 4, vitality = 5, agility = 250, exp = 5, level = 1, wildLvl = 1, type = "normal", type2 = "no type"}, ["Raticate"] = {offense = 10, defense = 8, specialattack = 6, vitality = 8, agility = 250, exp = 25, level = 30, wildLvl = 30, type = "normal", type2 = "no type"}, ["Spearow"] = {offense = 10, defense = 5, specialattack = 4, vitality = 6, agility = 250, exp = 5, level = 10, wildLvl = 10, type = "normal", type2 = "flying"}, ["Fearow"] = {offense = 10, defense = 7.5, specialattack = 9.5, vitality = 10, agility = 300, exp = 25, level = 50, wildLvl = 50, type = "normal", type2 = "flying"}, ["Ekans"] = {offense = 7, defense = 6, specialattack = 5, vitality = 6, agility = 250, exp = 5, level = 10, wildLvl = 10, type = "poison", type2 = "no type"}, ["Arbok"] = {offense = 9, defense = 8, specialattack = 7.5, vitality = 8, agility = 250, exp = 15, level = 40, wildLvl = 40, type = "poison", type2 = "no type"}, ["Pikachu"] = {offense = 7, defense = 7.5, specialattack = 7, vitality = 7.5, agility = 250, exp = 25, level = 40, wildLvl = 40, type = "electric", type2 = "no type"}, ["Raichu"] = {offense = 10, defense = 10, specialattack = 10, vitality = 10, agility = 250, exp = 60, level = 80, wildLvl = 80, type = "electric", type2 = "no type"}, ["Sandshrew"] = {offense = 7, defense = 7.5, specialattack = 7, vitality = 7.5, agility = 250, exp = 10, level = 20, wildLvl = 20, type = "ground", type2 = "no type"}, ["Sandslash"] = {offense = 10, defense = 11.5, specialattack = 10, vitality = 10, agility = 250, exp = 50, level = 70, wildLvl = 70, type = "ground", type2 = "no type"}, ["Nidoran Female"] = {offense = 5, defense = 6, specialattack = 5.5, vitality = 6.5, agility = 250, exp = 10, level = 10, wildLvl = 10, type = "poison", type2 = "no type"}, ["Nidorina"] = {offense = 7, defense = 7, specialattack = 7.5, vitality = 8, agility = 250, exp = 20, level = 30, wildLvl = 30, type = "poison", type2 = "no type"}, ["Nidoqueen"] = {offense = 10, defense = 10, specialattack = 10, vitality = 10, agility = 250, exp = 40, level = 70, wildLvl = 70, type = "poison", type2 = "ground"}, ["Nidoran Male"] = {offense = 6, defense = 6, specialattack = 5.5, vitality = 6.5, agility = 250, exp = 10, level = 10, wildLvl = 10, type = "poison", type2 = "no type"}, ["Nidorino"] = {offense = 8, defense = 7.5, specialattack = 7.5, vitality = 8, agility = 250, exp = 20, level = 30, wildLvl = 30, type = "poison", type2 = "no type"}, ["Nidoking"] = {offense = 10.5, defense = 10.5, specialattack = 10.5, vitality = 10.5, agility = 250, exp = 195, level = 70, wildLvl = 70, type = "poison", type2 = "ground"}, ["Clefairy"] = {offense = 6, defense = 6, specialattack = 6.5, vitality = 8.5, agility = 250, exp = 20, level = 40, wildLvl = 40, type = "normal", type2 = "no type"}, ["Clefable"] = {offense = 8, defense = 5, specialattack = 9.5, vitality = 10, agility = 250, exp = 50, level = 70, wildLvl = 70, type = "normal", type2 = "no type"}, ["Vulpix"] = {offense = 5, defense = 5, specialattack = 6, vitality = 5, agility = 250, exp = 20, level = 20, wildLvl = 20, type = "fire", type2 = "no type"}, ["Ninetales"] = {offense = 9.5, defense = 8.5, specialattack = 10, vitality = 9.5, agility = 250, exp = 50, level = 70, wildLvl = 70, type = "fire", type2 = "no type"}, ["Jigglypuff"] = {offense = 6, defense = 6, specialattack = 6.5, vitality = 8.5, agility = 250, exp = 20, level = 40, wildLvl = 40, type = "normal", type2 = "no type"}, ["Wigglytuff"] = {offense = 8, defense = 6.5, specialattack = 9.5, vitality = 13, agility = 250, exp = 50, level = 70, wildLvl = 70, type = "normal", type2 = "no type"}, ["Zubat"] = {offense = 5, defense = 4.5, specialattack = 4.5, vitality = 5, agility = 250, exp = 20, level = 10, wildLvl = 10, type = "poison", type2 = "flying"}, ["Golbat"] = {offense = 10, defense = 8.5, specialattack = 7.5, vitality = 8, agility = 250, exp = 50, level = 40, wildLvl = 40, type = "poison", type2 = "flying"}, ["Oddish"] = {offense = 6, defense = 6, specialattack = 8, vitality = 7.5, agility = 250, exp = 20, level = 1, wildLvl = 1, type = "grass", type2 = "poison"}, ["Gloom"] = {offense = 7.5, defense = 7.5, specialattack = 9, vitality = 9.5, agility = 250, exp = 50, level = 30, wildLvl = 30, type = "grass", type2 = "poison"}, ["Vileplume"] = {offense = 8, defense = 8.5, specialattack = 10, vitality = 10.5, agility = 250, exp = 100, level = 50, wildLvl = 50, type = "grass", type2 = "poison"}, ["Paras"] = {offense = 7.5, defense = 6, specialattack = 6, vitality = 6.5, agility = 250, exp = 10, level = 1, wildLvl = 1, type = "bug", type2 = "grass"}, ["Parasect"] = {offense = 10, defense = 9.5, specialattack = 9.5, vitality = 10, agility = 250, exp = 30, level = 50, wildLvl = 50, type = "bug", type2 = "grass"}, ["Venonat"] = {offense = 7, defense = 6, specialattack = 6, vitality = 7.5, agility = 250, exp = 10, level = 20, wildLvl = 20, type = "bug", type2 = "poison"}, ["Venomoth"] = {offense = 9, defense = 7, specialattack = 9, vitality = 9.5, agility = 250, exp = 30, level = 50, wildLvl = 50, type = "bug", type2 = "poison"}, ["Diglett"] = {offense = 7, defense = 6, specialattack = 6, vitality = 6, agility = 250, exp = 10, level = 10, wildLvl = 10, type = "ground", type2 = "no type"}, ["Dugtrio"] = {offense = 9, defense = 7, specialattack = 8, vitality = 7.5, agility = 250, exp = 30, level = 40, wildLvl = 40, type = "ground", type2 = "no type"}, ["Meowth"] = {offense = 6.5, defense = 5.5, specialattack = 5, vitality = 6, agility = 250, exp = 10, level = 20, wildLvl = 20, type = "normal", type2 = "no type"}, ["Persian"] = {offense = 8.5, defense = 7.5, specialattack = 7.5, vitality = 8.5, agility = 250, exp = 30, level = 50, wildLvl = 50, type = "normal", type2 = "no type"}, ["Psyduck"] = {offense = 7, defense = 7, specialattack = 7, vitality = 7, agility = 250, exp = 20, level = 20, wildLvl = 20, type = "water", type2 = "no type"}, ["Golduck"] = {offense = 9, defense = 9, specialattack = 10, vitality = 10, agility = 250, exp = 50, level = 70, wildLvl = 70, type = "water", type2 = "no type"}, ["Mankey"] = {offense = 8, defense = 5.5, specialattack = 5.5, vitality = 6, agility = 250, exp = 20, level = 10, wildLvl = 10, type = "fighting", type2 = "no type"}, ["Primeape"] = {offense = 11.5, defense = 11.5, specialattack = 11.5, vitality = 8, agility = 250, exp = 50, level = 50, wildLvl = 50, type = "fighting", type2 = "no type"}, ["Growlithe"] = {offense = 9.5, defense = 6.5, specialattack = 7.5, vitality = 7.5, agility = 250, exp = 20, level = 30, wildLvl = 30, type = "fire", type2 = "no type"}, ["Arcanine"] = {offense = 12, defense = 14, specialattack = 13, vitality = 11, agility = 250, exp = 50, level = 90, wildLvl = 90, type = "fire", type2 = "no type"}, ["Poliwag"] = {offense = 6, defense = 6, specialattack = 6, vitality = 7, agility = 250, exp = 10, level = 1, wildLvl = 1, type = "water", type2 = "no type"}, ["Poliwhirl"] = {offense = 7.5, defense = 7.5, specialattack = 7.5, vitality = 8.5, agility = 250, exp = 20, level = 30, wildLvl = 30, type = "water", type2 = "no type"}, ["Poliwrath"] = {offense = 10, defense = 10, specialattack = 10, vitality = 11.5, agility = 250, exp = 50, level = 70, wildLvl = 70, type = "water", type2 = "fighting"}, ["Abra"] = {offense = 6, defense = 5.5, specialattack = 11.5, vitality = 7.5, agility = 250, exp = 20, level = 15, wildLvl = 15, type = "psychic", type2 = "no type"}, ["Kadabra"] = {offense = 8.5, defense = 7.5, specialattack = 15, vitality = 10, agility = 250, exp = 40, level = 40, wildLvl = 40, type = "psychic", type2 = "no type"}, ["Alakazam"] = {offense = 10, defense = 10, specialattack = 17, vitality = 12, agility = 250, exp = 80, level = 80, wildLvl = 80, type = "psychic", type2 = "no type"}, ["Machop"] = {offense = 10, defense = 7, specialattack = 8, vitality = 8.5, agility = 250, exp = 20, level = 20, wildLvl = 20, type = "fighting", type2 = "no type"}, ["Machoke"] = {offense = 12, defense = 9, specialattack = 10, vitality = 10, agility = 250, exp = 40, level = 40, wildLvl = 40, type = "fighting", type2 = "no type"}, ["Machamp"] = {offense = 15, defense = 15, specialattack = 15, vitality = 13, agility = 250, exp = 80, level = 80, wildLvl = 80, type = "fighting", type2 = "no type"}, ["Bellsprout"] = {offense = 8, defense = 7, specialattack = 8, vitality = 8, agility = 250, exp = 20, level = 1, wildLvl = 1, type = "grass", type2 = "poison"}, ["Weepinbell"] = {offense = 9.5, defense = 8, specialattack = 9.5, vitality = 8.5, agility = 250, exp = 40, level = 30, wildLvl = 30, type = "grass", type2 = "poison"}, ["Victreebel"] = {offense = 11.5, defense = 9.5, specialattack = 11, vitality = 11, agility = 250, exp = 80, level = 50, wildLvl = 50, type = "grass", type2 = "poison"}, ["Tentacool"] = {offense = 8, defense = 7, specialattack = 8, vitality = 8, agility = 250, exp = 20, level = 10, wildLvl = 10, type = "water", type2 = "poison"}, ["Tentacruel"] = {offense = 11, defense = 9.5, specialattack = 11, vitality = 11, agility = 250, exp = 60, level = 80, wildLvl = 80, type = "water", type2 = "poison"}, ["Geodude"] = {offense = 8, defense = 10, specialattack = 7, vitality = 5.5, agility = 250, exp = 20, level = 10, wildLvl = 10, type = "rock", type2 = "ground"}, ["Graveler"] = {offense = 10, defense = 12, specialattack = 8.5, vitality = 8.5, agility = 250, exp = 40, level = 40, wildLvl = 40, type = "rock", type2 = "ground"}, ["Golem"] = {offense = 11, defense = 13, specialattack = 10, vitality = 10, agility = 250, exp = 80, level = 70, wildLvl = 70, type = "rock", type2 = "ground"}, ["Ponyta"] = {offense = 9, defense = 7, specialattack = 7, vitality = 7, agility = 250, exp = 20, level = 20, wildLvl = 20, type = "fire", type2 = "no type"}, ["Rapidash"] = {offense = 10, defense = 7.5, specialattack = 8.5, vitality = 8.5, agility = 250, exp = 50, level = 70, wildLvl = 70, type = "fire", type2 = "no type"}, [/spoiler]   Irei terminar de reformular o restante, só nao terminei pq fikei sem tempo.
  26. 4 points
    Poccnn

    #8 - Aula de Scripting Lua - Loops

    Estruturas de controle Palavras reservadas que será usado nessa aula: for, do, while, repeat, until, not, end, in Iremos tratar nesta aula sobre loops. Tomem muito cuidados ao usar loops, pois eles são a maior causa de travamento de sistemas. Será ensinado sobre as estruturas de controle: for, while e repeat. Iniciaremos pelo loop for: O loop for é composto por uma expressão de controle na qual a primeira expressão é uma variável interna e a segunda são suas atribuições que podem ser feitas para percorrer uma sequencia numérica ou uma iteração de tabela, por exemplo. Estrutura do for: for varName = primeiroValor,ultimoValor[,atribuição] do -- bloco end varName: seria o nome da variável, ou variáveis, que vai à receber a atribuição dos valores secundários. primeiroValor: seria o número que irá começar a percorrer a sequência; essa sequência tanto pode ser positiva quanto negativa. ultimoValor: seria o último valor a percorrer na sequência numérica. [,atribuição]: esse é um valor que pode ser omitido, mas quando não for, serve como atribuição de valor ao percorrer a sequência numérica; quando o loop está percorrendo a sequência numérica, esse valor é atribuído ao valor anterior da sequência; essa atribuição faz com que o loop “pule” alguns valores da sequência numérica. Por padrão, esse valor é 1 (positivo), caso esteja percorrendo valores negativos, terá que declarar como atribuição um valor negativo também. Exemplo de loop for usado para percorrer uma sequência numérica: for x = -1,-10,-2 do print(x) end >> -1 >> -3 >> -5 >> -7 >> -9 Veja que ele “pulou” os números: -2,-4,-6 e -8; Por quê? Porquê ao atribuir o valor ao valor anterior, ele deixa de seguir a sequência comum e passa a seguir segundo a atribuição. Lembrando que o valor da atribuição pode ser omitido e que ele vale +1 (um positivo). for x = 1,4 do print(x) end >> 1 >> 2 >> 3 >> 4 Outra expressão muito usada no for é o uso de funções, principalmente funções iteradoras. Como toda função pode retornar mais de um valor, na expressão da variável interna, podem-se declarar mais palavras que irão pegar os múltiplos valores retornados pela função, ou omiti-las como já foi demonstrado na aula sobre variáveis. Enquanto a expressão for verdadeira, ele continuará executando o bloco até que a expressão se torne falsa ou ele seja terminado pelo uso da palavra break ou por um return. Exemplo de um for com uma função iteradora: O loop while: Estrutura do loop while: while expressão do --bloco end Tu poderás usar qualquer tipo de expressão válida em lua. A maior diferença entre esse loop e o for é a falta da variável interna que consta no loop for. Enquanto a expressão for verdadeira, ele continuará executando o bloco até que a expressão se torne falsa ou ele seja terminado pelo uso da palavra break ou por um return. Exemplo de uso de um loop while: local ttm = 0 while (ttm < 60) do ttm = ttm + 1 end Uma pratica em programação é não por expressão no loop while, mas por algo que seja verdadeiro no lugar, forçando assim que tu tenhas que parar o loop dentro do bloco. local x = 0 while true do -- loop infinito if x > 9 then break end -- controle para parar o loop x = x + 1 end O loop repeat: O loop repeat segue o conceito oposto dos demais. Ao invés dele continuar executando enquanto a expressão for verdadeira, ele só continua executando enquanto a expressão for falsa e parando quando ela for verdadeira; ou caso seja finalizada pelo uso da palavra break ou return. A estrutura do loop repeat: repeat --bloco until expressão O loop repeat cria o bloco e sua expressão de controle fica após a palavra until que serve como “end” dos demais loops. Exemplo de uso do loop repeat: local x = 0 repeat print(x) x = x + 1 until not (x < 10) No código criado por vocês nas aulas anteriores, adicionem loops dos três tipos. Inté a próxima aula.
  27. 4 points
    Ceetros

    Ball System + Tutorial Adicionando Pokebolas [PDE]

    Hoje vou postar mais um sistema para o PDE   Sistema da vez:     Pokébolas com maior chance de catch dependendo do tipo do pokemon! Também vou ensinar a adicionar pokébolas Não pensei em um nome melhor, então vou chamar de: Ball System     Adicionando novas Pokebolas: [spoiler] Antes de tudo vocês tem que criar 4 itens: Pokébola vazia, a usada para capturar o pokemon (moveable, stackable e useable) Pokébola normal(pokebola com pokemon vivo), usada para dar use e lançar o pokemon (moveable) Pokébola usada, a que você dá use e o pokémon volta. (unmoveable) e Pokébola com pokemon morto (moveable)     Vá em data/actions/scripts/catch.lua e modifique essa tabela: local ballcatch = {   Na ultima linha antes do fim dela adicione: [IDVAZIA] = {cr = chance, on = efeitocatch-1, off = efeitofail-1, ball = {ballcompokemon, ballcompokemon}, send = efeitogoback-1, typeee = "tipo"},  Um exemplo: [15030] = {cr = 35, on = 373, off = 374, ball = {15027, 15027}, send = 367, typeee = "moon"},  Agora em actions/actions.xml ache: <action itemid="2375;11826-11837;11737-11748;10975-10977;12621-12623" event="script" value="goback.lua"/> <!-- alterado v2.9 --> <action itemid="2391-2394;12617;12971;13258" event="script" value="catch.lua" allowfaruse="1"/> <!-- alterado v2.9 --> E modifique assim: <action itemid="IDBALLNORMAL;2375;11826-11837;11737-11748;10975-10977;12621-12623" event="script" value="goback.lua"/> <!-- alterado v2.9 --> <action itemid="IDVAZIA;2391-2394;12617;12971;13258" event="script" value="catch.lua" allowfaruse="1"/> <!-- alterado v2.9 --> Agora em data/movements/movements.xml ache: <movevent type="Equip" itemid="2375;11826-11837;10975-10977;11737-11748;12972-12974;13259-13261" slot="feet" event="script" value="portrait.lua"/> <!-- alterado v2.9 --> <movevent type="DeEquip" itemid="2375;11826-11837;10975-10977;11737-11748;12972-12974;13259-13261" slot="feet" event="script" value="portrait.lua"/> <!-- alterado v2.9 --> E Edite assim: <movevent type="Equip" itemid="IDPOKEMONVIVO;IDPOKEMONMORTO;IDUSADA;2375;11826-11837;10975-10977;11737-11748;12972-12974;13259-13261" slot="feet" event="script" value="portrait.lua"/> <!-- alterado v2.9 --> <movevent type="DeEquip" itemid="IDPOKEMONVIVO;IDPOKEMONMORTO;IDUSADA;2375;11826-11837;10975-10977;11737-11748;12972-12974;13259-13261" slot="feet" event="script" value="portrait.lua"/> <!-- alterado v2.9 --> Agora em data/lib/configurations.lua ache:   pokeballs = { ["normal"] = {effect = 188, on = 11826, use = 11827, off = 11828, all = {11826,11827,11828}}, ["great"] = {effect = 189, on = 11832, use = 11833, off = 11834, all = {11832, 11833, 11834}}, ["super"] = {effect = 190, on = 11835, use = 11836, off = 11837, all = {11835, 11836, 11837}}, ["ultra"] = {effect = 191, on = 11829, use = 11830, off = 11831, all = {11829, 11830, 11831}}, ["saffari"] = {effect = 344, on = 15023, use = 15025, off = 15024, all = {15023, 15025, 15024}}, --alterado v2.9 ["love"] = {effect = 343, on = 15055, use = 15057, off = 15056, all = {15055, 15057, 15056}}, --alterado v3.1 ["dive"] = {effect = 342, on = 15063, use = 15065, off = 15064, all = {15063, 15065, 15064}}, --alterado v3.1 ["fast"] = {effect = 341, on = 15039, use = 15041, off = 15040, all = {15039, 15041, 15040}}, --alterado v3.1 ["master"] = {effect = 196, on = 11740, use = 11741, off = 11742, all = {11740, 11741, 11742}}, --alterado v3.1 ["shinynormal"] = {effect = 188, on = 11826, use = 11827, off = 11828, all = {11826, 11827, 11828}}, ["shinygreat"] = {effect = 189, on = 11832, use = 11833, off = 11834, all = {11832, 11833, 11834}}, ["shinysuper"] = {effect = 190, on = 11835, use = 11836, off = 11837, all = {11835, 11836, 11837}}, ["shinyultra"] = {effect = 191, on = 11829, use = 11830, off = 11831, all = {11829, 11830, 11831}}, ["shinysaffari"] = {effect = 195, on = 10975, use = 10976, off = 10977, all = {10975, 10976, 10977}}, ["shinylove"] = {effect = 194, on = 11737, use = 11738, off = 11739, all = {11737, 11738, 11739}}, --alterado v3.1 ["shinymaster"] = {effect = 196, on = 11740, use = 11741, off = 11742, all = {11740, 11741, 11742}}, --alterado v3.1 }  Em baixo de: ["master"] = {effect = 196, on = 11740, use = 11741, off = 11742, all = {11740, 11741, 11742}}, --alterado v3.1   Adicione: ["TIPO"] = {effect = EFEITOGOBACK-1, on = POKEBOLAVIVO, use = POKEBOLAUSADA, off = POKEBOLAMORTO, all = {POKEBOLAVIVO, POKEBOLAUSADA, POKEBOLAMORTO}},   Exemplo: ["dive"] = {effect = 342, on = 15063, use = 15065, off = 15064, all = {15063, 15065, 15064}},  [/spoiler]   Pokébolas com maior chance de catch dependendo do tipo do pokemon! [spoiler] Como exemplo vou usar a DiveBall! Como diz o Serebii.net: Dive Ball is more effective on Pokémon who are found in the water while Surfing or Fishing. When Underwater, Surfing or Fishing, the Capture Rate of the Dive Ball is 3.5. At all other times, it is 1 Tradução rápida: Dive ball é mais efetiva em pokemons achados na água enquanto surfa ou pesca, quando você estiver mergulhando, pescando ou surfando a chance será 3.5, quando não será 1. Adaptando para Poketibias, se você usa-la em um pokémon tipo Água a chance será 3.5x maior!     Vá em actions/catch.lua e encontre: catchinfo.chance = x.chance  Abaixo adicione: if item.itemid == ID DIVE and (pokes[name].type == "water" or pokes[name].type2 == "water") then catchinfo.chance = divechance end  Em actions/catch.lua antes de : local ballcatch = {  Adicione: divechance = 3.5 * x.chance  Para adicionar mais tipos é só adicionar: NOMEDABALLchance = QUANTIDADE A MAIS * x.chance   E adicionar em baixo de: if item.itemid == ID DIVE and (pokes[name].type == "water" or pokes[name].type2 == "water") then catchinfo.chance = divechance Isso aqui: elseif item.itemid == ID BALL and (pokes[name].type == "TIPO" or pokes[name].type2 == "TIPO") then catchinfo.chance = NOMEDABALLchance   Ficando: if item.itemid == ID DIVE and (pokes[name].type == "water" or pokes[name].type2 == "water") then catchinfo.chance = divechance elseif item.itemid == ID BALL and (pokes[name].type == "TIPO" or pokes[name].type2 == "TIPO") then catchinfo.chance = NOMEDABALLchance end [/spoiler]     Créditos: @Ceetros (talvez ? ) @zipter98 (tive a ideia no tópico do @[member='Bluester'], para acessar clique aqui)
  28. 3 points
    crazyboy

    Tic Tac War

    Tic Tac War [8.60] Completo O Que Contêm no Servidor: ├ Eventos Exclusivos : ├Castelo 24h ├ WoE ├ City do Baiak Totalmente Reformulada. ├ Novos Teleports e Quests ├ itens donate ├ City Donate ├ 100% balanceado ├ Novos NPC'S ├ War System. └ OTX 3.2 Deixo para voces algumas fotos do servidor ainda online, bateu record de 800 players mas STAFF actual nao sabe administrar e entao esta a cair em decadencia Alguma duvida exponham estou disponível a ajudar. ATENÇÃO! Para o MELHOR FUNCIONAMENTO DO OT, Recomendo que USEM MYSQL! peça o link de download
  29. 3 points
    BananaFight

    BananaFight Free Codes

    Fala galera, a algum tempo eu venho organizando algumas idéias e melhorando alguns sistemas que eu faço no meu tempo livre, e depois de muito pensar eu resolvi postar eles para vocês. Meu objetivo é compartilhar conhecimento de programação com vocês, e espero conseguir contribuir muito com isso. Infelizmente esses 2 sistemas iniciais que irei postar aqui não foram gravados em videos pelo fato de ser um aprimoramento de coisas que eu ja fiz, MAS para os próximos sistemas que eu criar irei fazer um videos ensinado como eu crio meus sistemas e como editar a source de modo simples e fácil. Para esses 2 primeiros sistemas estarei apenas disponibilizando o DIFF, não vou ensinar como instalar na source porque não é meu objetivo, com o DIFF disponivel e um pouco de esforço vocês conseguirão seguir e implementar nos seus próprios servidores. OS SISTEMAS A BAIXO ESTÃO NA VERSÃO DE DESENVOLVIMENTO PODENDO APRESENTAR FALHAS E NÃO ESTÃO 100% FINALIZADOS. --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Monster System V 1.0 O sistema não é aprova de falhas e não foi bem testado, essa é a versão 1.0 e pode conter bugs. Esse sistema foi feito para dar vida aos monstros do jogo, adicionando status e level para aumentar a dificuldade e a diversidade de coisas a se fazerem dentro do jogo adicionando mais RPG e dinâmica ao mesmo. Monster System DIFF https://pastebin.com/zZjHPMLR O sistema conta com um sistema de level ja funcionando para os monstros do jogo aonde eles ganham experiencia ao matar outros monstros, quando passam de level eles tem seus status base aumentados. Esse é um sistema mais complexo e por isso não vou dar muita descrição dele, pois ainda esta na V1 e tem muita coisa que não esta pronta, mas ja é um bom começo para dar uma diversificada nos monstros do seu servidor. --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Pokeball System V 1.0 O sistema não é aprova de falhas e não foi bem testado, essa é a versão 1.0 e pode conter bugs. Esse sistema foi feito criando uma nova classe chamada "Pokeball" e ela estende a classe "Item", o Objetivo dessa classe é organizar e facilitar a manutenção do código, e agilizar futuras interações do cliente com o servidor ( Enviar para o client a vida do pokemon que esta na ball e etc. ) Pokeball System DIFF https://pastebin.com/F36pcf5Y O Sistem conta com os seguintes atributos std::string name = ""; std::string nick = ""; < Não esta sendo usado Ainda uint32_t level = 1; uint64_t experience = 100; int32_t health = 100; int32_t healthMax = 100; PokemonStatus status; < Não esta sendo usado Ainda E foram criados os seguintes métodos para serem usados no Lua // Pokeball static int luaPokeballCreate(lua_State* L); static int luaPokeballGetPokemonName(lua_State* L); static int luaPokeballSetPokemonName(lua_State* L); static int luaPokeballGetLevel(lua_State* L); static int luaPokeballSetLevel(lua_State* L); static int luaPokeballGetExperience(lua_State* L); static int luaPokeballSetExperience(lua_State* L); static int luaPokeballGetHealth(lua_State* L); static int luaPokeballSetHealth(lua_State* L); static int luaPokeballGetMaxHealth(lua_State* L); static int luaPokeballSetMaxHealth(lua_State* L); --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Proximo Passo: Reformular formulas de ataques e spells
  30. 3 points
    Noninhouh

    [Tutorial] Ajustando andar diagonal

    Bom, vou mostrar a vocês como editar o andar diagonal no otclient da maneira que vocês preferirem... Atualmente, creio que quando você anda diagonalmente, tem um delay até que você possa andar novamente. Vou ensinar tirar esse delay, e deixar a velocidade ao gosto de vocês. Em creature.cpp do server, procure pela linha: if(std::abs(newPos.x - oldPos.x) >= 1 && std::abs(newPos.y - oldPos.y) >= 1) lastStepCost = 3; Esse lastStepCost será a velocidade que o player terá ao andar diagonalmente, em relação a velocidade de quando ele anda em uma direção reta, por exemplo, um player que demora 1 segundo para andar 1 sqm, demoraria 3 segundos para andar diagonalmente. Edite esse valor ao seu gosto! Em creature.cpp do client, procure as linhas que tem isso: getStepDuration(true) E deixe assim: getStepDuration() Agora procure por: float factor = 3; if(g_game.getClientVersion() <= 810) factor = 2; Apague essa parte Logo mais abaixo tem: if(!ignoreDiagonal && (m_lastStepDirection == Otc::NorthWest || m_lastStepDirection == Otc::NorthEast || m_lastStepDirection == Otc::SouthWest || m_lastStepDirection == Otc::SouthEast)) interval *= factor; Em factor, deixe o mesmo valor que você deixou em lastStepCost no servidor. Agora em localplayer.cpp no client, novamente procure por: getStepDuration(true) E troque por: getStepDuration() Pronto, seu personagem andará diagonalmente mais suave, e com a velocidade que você escolheu.
  31. 3 points
    KyoGron

    Limitar quantidade de mensagens em cima do player

    Olá pessoal, bom não costumo postar nessa area, mas como eu estive futucando esses dias um pouco em OTClient e sou um pouco curioso, acabei descobrindo umas coisas bem legais =) statictext.cpp procure por: else if(m_messages.size() > 10) { m_messages.pop_front(); m_updateEvent->cancel(); m_updateEvent = nullptr; } Explicação: O Número 10 representa a quantidade de mensagens máximas que irá aparecer em cima do player, No caso se eu colocar o valor 1, irá aparecer no máximo 2 mensagens acima do player (Como acontece no OTCliente da PxG) então fica por conta de quem quiser fazer as alterações escolher a quantidade máxima.
  32. 3 points
    Ceetros

    creature:soltaMagia("name") PARA TFS 1.x

    Olá, hoje eu vim postar a função creature:soltaMagia("nomedamagia") Para o TFS 1.X. Bom, eu estou fazendo um Poketibia com base no TFS 1.3 e vou postar essa função para quem quiser seguir o mesmo. Segue um exemplo de uso: Em LUASCRIPT.CPP Abaixo de registerMethod("Player", "addExperience", LuaScriptInterface::luaPlayerAddExperience); Adicione: registerMethod("Creature", "soltaMagia", LuaScriptInterface::luaSoltaMagia); Logo abaixo da função: int LuaScriptInterface::luaCreatureGetEvents(lua_State* L) Adicione: int LuaScriptInterface::luaSoltaMagia(lua_State* L) { //creature:soltaMagia("name") const std::string& spellName = getString(L, 2); if(Creature* creature = getUserdata<Creature>(L, 1)) { InstantSpell* spell = g_spells->getInstantSpellByName(spellName); if(!spell) { lua_pushboolean(L, false); return 1; } Creature* target = creature->getAttackedCreature(); if(target) spell->castSpell(creature, target); else spell->castSpell(creature, creature); lua_pushboolean(L, true); } else { lua_pushboolean(L, false); } return 1; } Em luascript.h registre: static int luaSoltaMagia(lua_State* L); static int luaSoltaMagia(lua_State* L); Agora é só compilar a proveitar
  33. 3 points
    miupinho

    Custom Map - 10.77

    Bem, pequena cidade de partida, talvez você possa torná-lo útil. Capturas de tela: Nota: Não há spawns, apenas casas. Link:
  34. 3 points
    wougoplex

    Curso Desenvolvedor de Sprites - This Is Spriting

    Esperando o 2 Módulo
  35. 3 points
    rohfagundes

    Barra de vida e mana

    Mudei o visual da barra de vida e adicionei a barra de mana o q acharam?
  36. 3 points
    Hi im Mell

    Layout site Dragon Ball [Show-Off]

    Iae pessoal, eu to desenvolvendo um layout bem bacana para meu projeto de dragon ball, espero que gostem. Por enquanto só tem essa imagem, provavelmente posto como vai ficar mais frente.
  37. 3 points
    Marshmello

    Quest Misterius OTP

    Ola Pessoal Hoje Venho Trazar Quest Misterius iGual a do OTP Quest Misterius.rar
  38. 3 points
    Bruno

    Npc dando recompensa

    Feito: [spoiler]local config = { storage = 9900, -- STORAGE magias = {"Berserk", "Hell's Core", "Rage of the Skies", "Strong Ice Wave", "Wrath of Nature"} -- MAGIAS } local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function creatureSayCallback(cid, type, msg) local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if not npcHandler:isFocused(cid) then return false end if msgcontains(msg, "recompensa") then if getPlayerStorageValue(cid, 15232) == -1 then selfSay('Voce precisa terminar a task de dragons para poder pegar sua recompensa.', cid) return true elseif getPlayerStorageValue(cid, config.storage) > 0 then selfSay('Voce ja pegou sua recompensa.', cid) return true end selfSay("Voce esta pronto para pegar sua recompensa ?", cid) talkState[talkUser] = 1 elseif (msgcontains(msg, "sim") or msgcontains(msg, "yes")) and talkState[talkUser] == 1 then local rand = math.random(1, #config.magias) local magia = config.magias[rand] doPlayerLearnInstantSpell(cid, magia) selfSay("Parabens, voce aprendeu magia " .. magia .. ", aproveite.", cid) setPlayerStorageValue(cid, config.storage, 1) talkState[talkUser] = 0 end return true end function onThink() npcHandler:onThink() end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())[/spoiler] Tópico movido para a seção de dúvidas e pedidos resolvidos.
  39. 3 points
    Ed'Specter

    Como fasso porta com level?

    vai em data / actions / scripts .. cria um arquivo.lua e coloca isso dentro.   e depois vai em actions.xml  e coloca a tag. <action actionid="1001" script="NomeDoArquivo.lua" /> actionid = coloca uma action id.. vai no RME e coloca a actionid na porta.   e onde ta local level no script é o level que pode entrar na porta. bom , provavelmente o primeiro script vai bugar então usa esse..   function onUse(cid, item, topos)                local level = 100 -- level que pode passar na porta .                  if getPlayerLevel(cid) >= level then            doTeleportThing(cid, topos, TRUE)          else            doPlayerSendCancel(cid, "Você não pode passar aki.")         end          return true end
  40. 2 points
    KyoGron

    [DLL] Extende seu OLD CLIENT

    Não sei por que, mas sempre quando olho o DeadPool fazendo escandalo no post do PokeCamp, e olha essa minha dll aqui postada e ele dizendo que foi um "Colega" que mandou pra ele, me dá mais nojo ainda, Agora entendi por que ninguém gosta de ajudar em mais nada, Sempre tem um cara que se tem uma oportunidade, Pega algo que você postou em outro fórum e assume autoria, Antes que venha falar, não sou dono, apenas postei a mesma em outro fórum, no qual você pegou e falou que um "amigo" postou, Jair Kevick, Wore e você, são todos iguais, não vão mudar, pega algo que é dos outros, muda uma linha e vem correndo para cá postar, no seu caso, nesta dll apenas mudou o "texto" e pronto, é seu.
  41. 2 points
    KarlKalvin

    [0.3.6] Price System Pokémon e Loot

    Bom, o título do tópico já diz quase tudo né? Muitos tópicos tem price só de loot, ou só de pokémon e com códigos contendo coisas desnecessárias então... Não vou falar muito, nem prolongar. A base que usei é DxP então ela funciona 100% com a base. Primeiro vá no look.lua adicione essa tabela no começo do script: Agora no mesmo arquivo, procure: Você vai remover essa função toda até o local boost e vai trocar por essa... Agora vamos ao LOOT, procure pelo ultimo : E adicione em cima dele: Para editar as tabelas fica no arquivo data/lib/107-main tables.lua. Créditos: Kalvin Karl Favor não postar em outro fórum sem os créditos... (:
  42. 2 points
    Taiger

    PokeXTibia(PField) Projeto comunitário Open Source

    Salve Xtibianos, como vocês estão? Eu estou bem! Como todos sabem existem milhares de servidores de poketibia para download aqui no fórum, mas nenhum esta 100%, quando eu falo 100% é dos sistemas principais e não das edições. Então resolvi pegar uma base PField OpenSource aqui do fórum mesmo e começar um projeto comunitário totalmente aberto, para tentarmos deixar a base 100% com os sistemas principais de um servidor de poketibia para quem quiser começar um projeto serio usar este server como base. Mas porque eu escolhi a base PField? Simples, por ela ser uma base mais antiga e mais limpa, sem todas as gambiarras, armadilhas e menos poluída. A minha meta é trabalharmos no server opensource, cliente com as sources criado do 0 tambem, e todos se ajudarem para quando ficar com os sistemas básicos 100% dai a galera começar a fazer suas edições ATENÇÃO: Não sou programador, sou meia boca em quase tudo e tenho esperança que com a ajuda de todos conseguiremos deixar a base perfeita para futuros projetos. Peço que não briguem aqui no tópico por causa de créditos, reps etc. Caso alguém tenha autoria em algo e não estiver nos créditos me avise que estarei adicionando. Não quero reputação, apenas quero fazer algo bom para a comunidade com a ajuda de vocês. Inicialmente estaremos corrigindo os bugs e adicionando os sistemas principais deixando a base mais atualizada, quem quiser pegar a base e já ir editando não fique perguntando aqui no tópico, porque como eu disse a prioridade inicial são os sistemas básicos. • Menu: ├ Informações; ├ Bugs; ├ Prints; ├ Download; └ Créditos. • Informações Basicas • Eu adicionei nas sources os sistemas de auto stacking, player passar por dentro de player, retirei o codigo do black list, pokemons selvagens nao resetam os moves quando o player fica soltando e voltando seu poke, removi alguns erros na distro. Quem quiser ver os sistemas podem verificar no post do JairKevick. Bike System: 100% Caught System: 100% Evolution System: 100% Go-Back System: 100% Gerações 1: 100% Gerações 2: 100% Limite de 6 Pokemons na Bag: 100% Moves System: 100% Portrait System: 100% Pokedex System: 100% Ride System: 100% Sem Level System! fly System: 100% Surf System: 100% Teleport System: 100% Auto Stacking. Player canWalkthrough. ETC... O que falta: Adicionar sistema de clã. Sistema de nick. Sistema de duel. Sistema de gym esta parcial, ainda conte bugs. Player soltar poke/usar revive andando. Pokedex. Fishing. ETC... Tem muita coisa faltando, mas a intenção deste tópico é justamente essa, adicionar os sistemas e corrigir os bugs, como essa base é bem limpa sera mais fácil de trabalharmos. Pesso a ajuda de todos, porque assim como eu, muitos sentem falta de uma base boa para começar um projeto. • Bugs • O autor do post original não disponibilizou a source com o código do opencode, e compilando a source aparece um erro na distro com relação a isso. Vou dar mais uma revisada no server e postarei os bugs que eu encontrar, e os que vocês acharem postem aqui para eu atualizar a lista. • Prints • As prints sao do tópico original, ainda colocarei mais conforme ir atualizando o server. • Downloads Download Server. Download Sources. Download Cliente. Download Ferramentas. Baixem este item editor que ja esta configurado o signature do cliente, eu esqueci de modificar no que vem com o arquivo das ferramentas: ItemEditor.7z Itens inclusos nas ferramentas: Remere's Map Editor. ObjectBuilder. Item editor. Xampp. Cliente PxG Maio 2016. Compilador Samuel Dev C++. Notepad++. 7Zip. Scan Sources. Scan Server. Scan Cliente. Não consegui fazer o scan das ferramentas por ele ter mais de 128mb, se alguém conseguir fazer ai pra mim eu agradeço. • Créditos • •Kevick •Aberos •Avronex •Lordbaxx •CipSoft •PxG •Nintendo Se faltar algum me avisem. Se tiver algo errado no tópico me avisem, não tenho muita experiencia em posts.
  43. 2 points
    Ceetros

    Pokemon Dash Evolution ~> Projeto Comunitário <~

    Peço para a administração do ékz entrar em contato comigo, irei atualizar o PDE, porém quero algo exclusivo de algum forum Nova atualização (PDE v3): Atualizado para OTX 3 (tfs 1.3 @ tibia8.54) Adicionado funções exclusivas. Refeito TODOS SISTEMAS! Sem Level System (Ou com, só por "true" ou "1" no config.lua) Irei postar após a administração entrar em contato
  44. 2 points
    Nogard

    Nogard Graphic Gallery

    Quem aí já foi assistir "It"? Recomendo, filmão!
  45. 2 points
    KyoGron

    PokeXTibia(PField) Projeto comunitário Open Source

    Lá vou eu dando minha contribuição "Básica" para o OTCliente. statictext.cpp procure por: else if(m_messages.size() > 10) { m_messages.pop_front(); m_updateEvent->cancel(); m_updateEvent = nullptr; } Explicação: O Número 10 representa a quantidade de mensagens máximas que irá aparecer em cima do player, No caso se eu colocar o valor 1, irá aparecer no máximo 2 mensagens acima do player (Como acontece no OTCliente da PxG) então fica por conta de quem quiser fazer as alterações escolher a quantidade máxima.
  46. 2 points
    markindoot

    Mapa AT ServerProject ShowOff

    Bom dia pessoal! Estou um tempo sem postar por aqui, mas queria a opinião de vocês. Fiz esse map para um projeto e junto do mesmo, vou criar uma história. Vai ser um pouco puxado, mas quando tiver mais adiantado eu explico para vocês como vai funcionar esse AT Server e as propostas e idéias que estou organizando. Essa imagem seria a Cidade, ou melhor, templo do ORC King "Rei dos Orc's" Estarei colocando sem cortes para poderem observar com todos os detalhes. Galera, quaisquer erros no map ou criticas no mesmo, erros encontrados na escrita do texto... sintam-se livres para dizer. Obrigado a atenção de vocês! Map 1: Salão do Rei Map 2: Seria um caminho para acessara área descrita acima A Imagem editada ficou com uma resolução não muito boa, mas já acompanha o inicio da história de Barasgn, o Rei dos ORC's do Vilarejo das Pedras.
  47. 2 points
    kaleudd

    Concursos no Fórum.

    Tava na hora
  48. 2 points
    Brunds

    [Nto New Season] Falando sobre o closed alpha, etc...

    Falando a respeito do closed alpha, elementos, items, vocações obs: Data do closed alpha prevista para o começo do mês que vem CASO TUDO OCORRER COMO O PLANEJADO Prévia do closed alpha: Items até level 500 Max level 500 Hunts limitadas Jutsus limitados até o level 500 Ao decorrer do closed alpha sexta-feira,sábado e domingo será free premium e double exp Todos e quaisquer bugs reportados serão recompensados no jogo na hora e no lançamento oficial também Todos os jutsus serão modificados do level 1 ao level 500 Tudo dentro do jogo será liberado para os players poderem testar Elemento inicial será o Neutro(aumenta o dano físico e proteção do mesmo) Sets até level 500 incluindo os sets elementais
  49. 2 points
    grigacuin

    [Vídeo Aula] Como Criar Seu Client Próprio

    [~Olá Xtibianos~] Hoje eu vim aqui com uma video-aula de como fazer um client 100% proprio tirando a parte de traduzir, editar .dat .spr Aqui eu ensino como criar seu proprio client, Editamos o IP proprio, mudamos o ícone do programa (tibia.exe geralmente), mudamos a imagem de fundo do programa, e tambem ensinei como mudar a cor do botao do client (so da um Export, muda, e da Import, com o novo) E como fazer um instalador, Download no fim do tópico... Se nao entendeu o que eu disse no video, é que meu microfone está meio ruim, aqui está o tutorial escrito, com imagens: [Aprenda A Fazer Seu Próprio Client] Videos [media]http://www.youtube.com/watch?v=O4U78Lvevkc[/media] [media]http://www.youtube.com/watch?v=bG-E4CZXPI0[/media] ~ícones do client~ Arquivos necessários.... Downloads
  50. 2 points
    cristofermartins

    Spr Editor [ 8.54/9.81 ][ versão 1.3 ]

    Versão 1.2 lançada. Um bug foi corrigido.