Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 02/24/11 em todas áreas

  1. miter

    Semente Dos Deuses

    Olá XTibianos, Resolvir criar um Script baseado no Anime Dragonball Z, a poderosa semente dos deuses, ela restaura o life e mana do player por completo. Seeds of the gods ID: 7732 Em primeiro lugar vá até a pasta actions/other copie e cole qualquer arquivo e coloque o nome de semente.lua após isso clique em editar e cole o seguinte script: -- { By Miter } -- -- { Update by DevilMoon and Vodkart } -- function onUse(cid, item, frompos, item2, topos) local config = { storage = 13298, exhaust = 10, -- Tempo para player poder usar o item novamente! (tempo em segundos) removeOnUse = "yes" -- remover quando usar ("yes" or "no") } if getPlayerStorageValue(cid, config.storage) <= os.time() then doCreatureAddHealth(cid, getCreatureMaxHealth(cid)) doCreatureAddMana(cid, getCreatureMaxMana(cid)) setPlayerStorageValue(cid, config.storage, os.time()+config.exhaust) doCreatureSay(cid,"Aaaah...", TALKTYPE_ORANGE_1) doSendMagicEffect(getCreaturePosition(cid), 12) if (config.removeOnUse == "yes") then doRemoveItem(item.uid, 1) end else doPlayerSendTextMessage(cid,22,"You are exausted for " .. config.exhaust .. " second.") end return TRUE end Pronto a 1ª etapa esta pronta agora vá em actions.XML e coloque: <action itemid="7732" event="script" value="other/semente.lua"/> Agora abra a pasta data/items e abra o arquivo "items.XML" e procure pelo itemid 7732 e substitua por: <item id="7732" name="seeds of the gods"> <attribute key="weight" value="50" /> <attribute key="description" value="The gods created the seed for humans to have super powers." /> </item> Pronto, agora você tem aquela Script simples e que todo OT gostaria de ter, e que vai ajudar muitas pessoas. Veja também a fonte da vida -> http://www.xtibia.com/forum/topic/137538-action-fonte-da-vida/ Espero que gostem Até a próxima, fiquem com Deus. Script 100% by Miter
    2 pontos
  2. Alissow OTs 4.11! Esta versão 4.11 foi meio apressada, só adicionamos as features novas do 8.6. Aproveitem. Créditos: Alissow Comedinha Luis Nirk TFS Team Viniply Xedegux Sobre o OT/Mapa: Principais quests: -Annihilator -Inquisition Quest -Pits of inferno -Demon Oak -Solar axe quest -HOTA -MPA quest -The Challenger Monstros: -Total monstros: 10292 -Total spawn: 5587+ Cidades: -12 Cidades -200 Houses+- Raids/Invasões: -Rat -Orshabaal -Ghazbaran -Giant spider/The old window -Ferumbras -Morgaroth Spells: -Magias editadas para balanceamento das vocações Changelog Atualização [3.4 BETA]: - Removido áreas não usadas no mapa, diminuindo o tamanho em MBs - Adicionado Anti Magebomb System - Corrigido bugs no npc addon - Adicionado sistema onde os npcs falam sozinhos (Igual como foi adicionado no global). First ;] - Adicionado Elf village em Venonh ( bem parecida com a do global ;]) - Potions desaparecem quando usadas - Corrigido sistema de Up - Corrigido sistema de Monster Counter - Nova dragon lair em Mirand Theraan (Subsolo) - Adicionado porta de level, que protege leveis baixos acessarem os demons da cidade de Flam - Ampliado deserto da cidade de Mirand Theraan - Adicionado Ilha de Goroma - Adicionado Forbidden islands - Ampliado floresta da cidade de alfon e colocado área de macacos parecida com Banuta. - Ligação de alfon com Mirand Theraan - Corrigido bugs reportados nas portas das casas - Corrigido posição dos buracos e escadas - Adicionado beds em todas as casas - Corrigido bugs em casas de yalahar - Adicionado Blue legs quest ( Koshei The Deathless global) - Corrigidas quase todas as areas de Yalahar - Teleports em Yalahar substituidos por NPCs de teleport do global - Corrigido pequenos erros no npc Capitao Coruja, e adicionado viagem à goroma - diminuido ataque do Eye of the seven - Ice rapier agora quebra - Corrigido npc Banker - Adicionado quase todos os items 8.5 - Adicionado medusa - Adicionado Todos os outfits novos - Corrigido NPC Banker (que dava dinheiro) Script By Ta4e - Corrigido Annihilator Quest - Adicionado Notice System - Adicionado novo distro, compilado por Comedinha Atualização nº 2 [3.4]: Otserv atualizado... Corrigido debugs frequentes Corrigido debugs na magia exevo pan Corrigido bugs nos npcs Roy e Firewalker Adicionados mais novos items 8.5, agora temos 90% dos items novos... Atualização 3.5 [06/08/2009]: - Cidade principal (dorion) totalmente reformada - corrigido blue legs quest - Corrigido alavancas de compra de potions - Adicionado alavancas de compra de runas - Corrigido npc Bank - Adicionado NPC King Arthas, que vende promotion - Adicionado npc Rashid, que vende items. - Arrumado Wild Growth rune - Arrumado Utani Hur - Magias reajustadas - Novo estilo de server save - Ilha de mystic reformulada (by Nirk) - Adicionado nova magia para knights "Exkordium". - Adicionado nova magia para mages (promoted) "Exura Seil". - Adicionado nova magia para mages (promoted) "Exevo Gran Frigo". (arrumar -> sem exhausted nem gasta mana) - Adicionados novos monstros. - Adicionado quest challenge (lvl 250) - Corrigido bug do Dead Cyclops - Bug aol Arrumado - Poi Modificada - Corrigido teleports ghouls yalahar - Modificada demon helmet quest, assim como o premio da quest - Corrigido nome do Hallowed axe - Corrigido bug das houses - Corrigido bug dos items andaveis Atualização Patch 3.5.1 [07/08/2009]: - Corrigido erro na inicialização do Ot - Bug das potions corrigido - Bug do aol corrigido (pelomenos pra mim) - Bug dos outfits corrigido - Corrigido erros nas escadas na ilha PvP - O monstro The Fastest Turtle agora não morre, se tornando um monstro apenas para atrapalhar - Retirada suposta quest dos 3 hellhounds e 1 minishabaal - Adicionado teleport de retorno na Ferumbras Tower - Corrigido posições da raid de The old widow - Corrigido bug das escadas nas minas de demons - Corrigido alguns bugs vistos no mapa Atualização 3.6 [10/08/2009]: - Arrumado bugs criticos - Arrumado comando !promote/!demote - Atualizado Items.xml - Bug das Beds arrumado - Modificações na cidade, como, nature e caves - Nova sala de treino - Adicionado comando !highscores Atualização 3.7! Beta [18/12/2009]: - Guildhall support (Elf) - Nova deathlist(Elf, OpenTibia SVN) - Frags funcionando (Elf) - Atualizado monstros e items (slawkens, KaczooH, Elf) - Novas talkactions: /commands, /wp, /storage, /config, /promote & /demote. (slawkens) - Novas funções lua - Novos creatureevents (slawkens, Elf) - Novos configuráveis (Elf, slawkens) - Modificado ataque de monstros existentes (especialmente outfits e velocidade) (Elf) - Monstros reorganizados & atualizados (Nem todos) (slawkens) - Melhorado sistema de banimentos (Elf) - Reescrita janela de Rule Violation (Elf) - Arrumado Stamina (Elf, OpenTibia SVN) - Casas agora são salvas nas modificações do dono (Elf) - Escadas de yalahar funcionando perfeitamente (Elf, Talaturen) - Sistema de nado & waterball completo (slawkens) - Monstros invisiveis não são mais mandandos ao client (anti bot) (OpenTibia SVN) - Anti-dash (OpenTibia SVN) - Sistema de leilão de casas, possibilidade de usar site para vender casas (house_actions table) (OpenTibia SVN, Elf) - Salvando bot actions para /logs/bots por cada player. Por exemplo, bot pode enviar mensagem com mais de 255 caracteres (slawkens) - Novos raid events- item spawning & disappearing and more (Elf) - Modificações no NPC system (Elf) - NPCs OutfitModule (Elf) - Completo 8.53 support, com wars (Elf) - Completo 8.54 support (Elf) - Arrumado NPC voices (Elf) - Players serão informados quando o Gamemaster logar ou ficar invisivel (slawkens) - Arrumado Player Deaths (Elf, slawkens) - Arrumado Abuso de PZ (slawkens) - Portas agora não ajudam players a entrar em PZ (slawkens) - Magic level formula (OpenTibia SVN, KaczooH) - Memory leaks (Elf) - Queries optimization (Talaturen) - Janelas podem ser abertas do lado de fora da casa- agora apenas GMs podem fazer isso (slawkens) - arrumado Efeitos para o Ghost (GM)- configuravel (slawkens) - Corrigido >> Ghost debugging players (OpenTibia SVN, Elf) - Corrigido erro na promotion (Elf) - Corrigido vários erros no console. (slawkens) - Corrigido Spam de magias (Elf) - Corrigido stamina premium (Elf) - Corrigido Clean (Elf) - Corrigido vários outfits (Elf) - Corrigido Ghost (Elf) - Todas as correções no OpenTibia SVN (Open Tibia SVN, Elf) - Corrigido Todos os crashes possiveis (Elf) - Npcs Corrigidos (Comedinha) - Distro Reformulado (comedinha) - Bugs de reports arrumados (Comedinha) - Novos outfits (Alissow) - Actions Arrumadas (Comedinha) - Libs trocadas (Comedinha) - Talkactions bugadas arrumadas (Comedinha) - Reforma na área Sul da cidade Dorion (Alissow) - Adicionado monstros 8.54 (Alissow) - Corrigido bug das potions infinitas (Alissow) Atualização 3.7 Patch 1 [27/12/2009]: - Rampa na frente da loja de foods retirada (Alissow) - Arrumado bugs de mapa em anknor (Alissow) - Bug na Lib dos npcs corrigido (Alissow) - Bug do acc manager arrumado! (Alissow) - Magias "Exkordium" e "Ice Storm" arrumadas (Alissow) - Monstros 8.54 funcionando (Alissow) - 2º Addon Yalaharian arrumado (Alissow) - Addons Warmaster adicionados no NPC Addoner (Alissow) - Pequenas modificações na cidade principal, Dorion, para melhora da jogabilidade (Alissow) - Comando /Deathlist retirado (Alissow) - Magic Wall Rune arrumada (Alissow) - Quest Annihilator arrumada (Alissow) - "Your depot contain x items" Arrumado (Alissow) - Addons reorganizados, mais facil aggora (Alissow) - Tempo de Red skull e Black skull reduzidos para 24 e 42 horas (Alissow) - Reduzida porcentagem de morte (Alissow) - Acrescentado chance de critical hits (Alissow) - ShowHealingDamage Adicionado (Alissow) - Várias partes do mapa remapeadas (Alissow) - NPCs para recarga de Soft boots & Firewalker boots arrumados [Não testado] (Alissow) - Comando !frags arrumado! (Alissow) - Agora é possivel fazer addons sem precisar do comando !buypremium (Alissow) Atualização 3.8 [17/01/2010]: - Arrumado bug nas escadas do Dlair (Alissow) - Todos os bugs nos NPCs arrumados (Comedinha) - Novas talkactions [a pedidos] (Comedinha) - Deathlist arrumada (Comedinha) - Novo Distro (Comedinha) - MySQL Atualizada (Comedinha) - Firewarker boots não é mais gasta quando não está usando (Comedinha) - Problemas com items no Rashid arrumados (Alissow, Comedinha, Comunidade) - O NPC Banker foi corrigido, mas achei mais seguro retira-lo, visto que ninguem usava e poderia causar outro tipo de bug - Ilha (Sim aqui é uma ilha) de Zao adicionada (Alissow, Barker) - Monstros 8.54 aperfeiçoados (Alissow, Markithu, Zkum) - Reduzido danos da magia Exkordium (Alissow) - Os npcs Dark Rodo e Rachel vendem Blank Runes (Alissow) - Magias que não hitavam anteriormente foram arrumadas (Alissow) - Comando !buypremium arrumado (Alissow) - Arena PVM - Mais conhecida como Arena Svargrond - FUNCIONANDO!!! (Alissow) - Magia LightChain Retirada (Alissow) - Adicionado um sisteminha legal no templo (Alissow) - NPC Rashid retirado (Alissow) Atualização 3.8 Minor Patch 1 [17/01/2010]: - Comando Deathlist retirado novamente, fizemos testes equivocados. Se você é uma das 16 pessoas que baixou a versão anterior (3.8) não precisa baixar esta, basta retirar o comando !deathlist e /deathlist do seu Talkactions.xml, Os comandos causam quedas no servidor. Atualização 3.9 [15/02/2010]: - Cidade principal (Dorion) reformada, novo templo, novo depot, novo porto, novos npcs :] (Alissow) - Adicionado Reputation System (Comedinha, Cybermaster) - Adicionado !bless system (Comedinha) - /info melhorado (Comedinha) - Jail System (Comedinha) - Bug chatinho nos tiles pretos arrumado. - Magic Wall Funcionando! (Alissow) - Agora você pode fazer bolos e pães :] (Comedinha, Jean, Ojani) - Adicionado sistema de casamento (Comedinha, ScorpiOOn93, Alissow) - Loot The Fastest Turtle diminuido (Alissow) - Loot e experiencia do Feromous mais baixo (Alissow) - Sistema de parceis para Dorion funcionando (Alissow) - Guildwar System (Comedinha) - Anti MageBomb System (Comedinha, Huggen) - Adicionado Anti Nuker - Esse funciona! (Comedinha) - Adicionado Map Marks, para os players novos (Alissow, Comedinha) Atualização 4.0 [15/02/2010]: - Cidade Mountain totalmente reformada (Alissow) - Montanha de Goblins de Dorion reformada (Alissow) - Demonic Castle de Dorion reformado (Alissow) - Cidade de Venonh modificada (Luis) - Distro atualizado, funcionando nos clients 8.54, 8.55, 8.56 e 8.57 (Comedinha) - Comando !bless retirado (Alissow) - O NPC Ermes não vende mais items de decoração (Alissow) - Arrumado bugs na Ferumbras Tower (Alissow) - O comando !AFK on agora mantem o player parado (Comedinha) - Arrumado bugs nas escadas da área de DeathFans (Alissow) - Comando !Deathlist funcionando! (Alissow, Doidinmapper, GT Thionix) - Sistema de REP atualizado (Comedinha) - Sistema de Polls (Comedinha) - Banco por comandos (Comedinha) - Novos comandos de addon e accounts (Comedinha) - Sistema de futebol completo! (Comedinha) - Sistema Antibot (Comedinha) - Magia Spared Hur modificada (Alissow, Orzeleagle) - Adicionado sistema de montaria (Alissow, unknown666) - Adicionado Canivetes (Alissow, Siramix) - Nova hunt Subaquatica (Luis) Atualização 4.11! [11/07/2010]: - Versão 8.6, todos os items, outfits e monstros novos (Comedinhasss, Fireelement) - Adicionados os novos monstros 8.6 (Alissow) - Bug das potions arrumado (Comedinha, Matheusmkalo, Gabriel linhares, Fireelement) - Erros das runas arrumado (Comedinha, Gabriel linhares, Matheusmkalo, fireelement) Download Servidor: 4shared Tamanho: 17,416 KB Download: http://www.4shared.com/file/ez8XKrju/860_Alissow_Ots_411.html Link protegido: http://lix.in/-8d4bc0 Scan VirusTotal: http://www.virustotal.com/pt/analisis/983abb574dbb957a75aa1fd29eb804065f775e6a0c43216aa277686d32bce22a-1263702373 Atenção - Acc do God: god/god - LEIA o tópico antes de postar qualquer coisa ou duvida - Reportem se houver algum bug - A database fica na pasta schemas+Database - Proibido o uso do nosso distro sem o nosso consenso, obrigado. Andei percebendo que há muitos mapas feitos por mim em outros servidores postados aqui no xtibia, eu não sei se vocês sabem, mas isso é PLÁGIO. Eu não sou uma pessoa egoista, tudo que eu posto aqui no XTibia é para ser compartilhado, mas desde que mantenham os devidos créditos. Será denunciado qualquer tipo de "roubo" sem minha autorização para beneficio próprio. Eu sei que vocês não se importam muito com isso, eu também não deveria me importar, mas é o tempo e a dedicação de outra pessoa que vocês estão roubando, então peço gentilmente aos que tem conhecimento desses mapas, que me apontem. Não tem graça trabalhar horas e horas e ser roubado em dois minutos.
    1 ponto
  3. @Edit ________________________________________________________________ No Seu Htdocs va em Config/config.php e coloque isso no final: // Sistema automatico Pagseguro by tatu_hunter // Seu email cadastrado no pagseguro $config['pagseguro']['email'] = 'seu e-mail'; // Valor unitario do produto ou seja valor de cada ponto // Exemplo de valores // 100 = R$ 1,00 // 235 = R$ 2,35 // 4254 = R$ 42,54 $config['pagseguro']['produtoValor'] = '100'; // Token gerado no painel do pagseguro $config['pagseguro']['token'] = 'SEU TOKEN PAGSEGURO AQUI'; Como ja havia dito no outro topico,crie um arquivo chamado retPagseguro.php Dentro adicione isso: <?php include('config-and-functions.php'); define('TOKEN', $config['pagseguro']['token']); // Incluindo o arquivo da biblioteca include('retorno.php'); // Função que captura os dados do retorno function retorno_automatico ( $VendedorEmail, $TransacaoID, $Referencia, $TipoFrete, $ValorFrete, $Anotacao, $DataTransacao, $TipoPagamento, $StatusTransacao, $CliNome, $CliEmail, $CliEndereco, $CliNumero, $CliComplemento, $CliBairro, $CliCidade, $CliEstado, $CliCEP, $CliTelefone, $produtos, $NumItens) { global $config; if(strtolower($StatusTransacao) == 'aprovado') { $account_logged = $ots->createObject('Account'); $account_logged->find($Referencia); if($account_logged->isLoaded()) { $pontos = $account_logged->getCustomField("premium_points"); $account_logged->setCustomField("premium_points", $pontos + $produtos[0]['ProdQuantidade']); $nome = $Referencia.'-'.date('d-m-Y',$_SERVER['REQUEST_TIME']).'.txt'; if(file_exists('logsPagseguro/'.$nome)) $nome = $Referencia.'-2-'.date('d-m-Y',$_SERVER['REQUEST_TIME']).'.txt'; $arquivo = fopen('logsPagseguro/'.$nome, "w+"); $dados = "Conta: ".$Referencia."\n"; $dados = "Email: ".$CliEmail."\n"; $dados .= "Total de Points: ".$produtos[0]['ProdQuantidade']."\n"; $dados .= "Hora da Transação: ". date('d-m-Y H:i:s', $_SERVER['REQUEST_TIME']).""; fwrite($arquivo, $dados); fclose($arquivo); } } } // A partir daqui, é só HTML: ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> </head> <body> <h1>Pedido em processamento</h1> <p>Recebemos seu pedido e estamos aguardando pela confirmação do pagamento. Obrigado por comprar conosco.</p> </body> </html> Depois crie um arquivo chamado retorno.php e adicione o seguinte: <?php if (!defined('TOKEN')) define ('TOKEN', ''); /** * RetornoPagSeguro * * Classe de manipulação para o retorno do post do pagseguro * * @package PagSeguro */ class RetornoPagSeguro { /** * _preparaDados * * Prepara os dados vindos do post e converte-os para url, adicionando * o token do usuario quando necessario. * * @internal é usado pela {@see RetornoPAgSeguro::verifica} para gerar os, * dados que serão enviados pelo PagSeguro * * @access private * * @param array $post Array contendo os posts do pagseguro * @param bool $confirmacao Controlando a adicao do token no post * @return string */ function _preparaDados($post, $confirmacao=true) { if ('array' !== gettype($post)) $post=array(); if ($confirmacao) { $post['Comando'] = 'validar'; $post['Token'] = TOKEN; } $retorno=array(); foreach ($post as $key=>$value){ if('string'!==gettype($value)) $post[$key]=''; $value=urlencode(stripslashes($value)); $retorno[]="{$key}={$value}"; } return implode('&', $retorno); } /** * _tipoEnvio * * Checa qual será a conexao de acordo com a versao do PHP * preferencialmente em CURL ou via socket * * em CURL o retorno será: * <code> array ('curl','https://pagseguro.uol.com.br/Security/NPI/Default.aspx') </code> * já em socket o retorno será: * <code> array ('fsocket', '/Security/NPI/Default.aspx', $objeto-de-conexao) </code> * se não encontrar nenhum nem outro: * <code> array ('','') </code> * * @access private * @global string $_retPagSeguroErrNo Numero de erro do pagseguro * @global string $_retPagSeguroErrStr Texto descritivo do erro do pagseguro * @return array Array com as configurações * */ function _tipoEnvio() { //Prefira utilizar a função CURL do PHP //Leia mais sobre CURL em: http://us3.php.net/curl global $_retPagSeguroErrNo, $_retPagSeguroErrStr; if (function_exists('curl_exec')) return array('curl', 'https://pagseguro.uol.com.br/Security/NPI/Default.aspx'); elseif ((PHP_VERSION >= 4.3) && ($fp = @fsockopen('ssl://pagseguro.uol.com.br', 443, $_retPagSeguroErrNo, $_retPagSeguroErrStr, 30))) return array('fsocket', '/Security/NPI/Default.aspx', $fp); elseif ($fp = @fsockopen('pagseguro.uol.com.br', 80, $_retPagSeguroErrNo, $_retPagSeguroErrStr, 30)) return array('fsocket', '/Security/NPI/Default.aspx', $fp); return array ('', ''); } /** * not_null * * Extraido de OScommerce 2.2 com base no original do pagseguro, * Checa se o valor e nulo * * @access public * * @param mixed $value Variável a ser checada se é nula * @return bool */ function not_null($value) { if (is_array($value)) { if (sizeof($value) > 0) { return true; } else { return false; } } else { if (($value != '') && (strtolower($value) != 'null') && (strlen(trim($value)) > 0)) { return true; } else { return false; } } } /** * verifica * * Verifica o tipo de conexão aberta e envia os dados vindos * do post * * @access public * * @use RetornoPagSeguro::_tipoenvio() * @global string $_retPagSeguroErrNo Numero de erro do pagseguro * @global string $_retPagSeguroErrStr Texto descritivo do erro do pagseguro * @param array $post Array contendo os posts do pagseguro * @param bool $tipoEnvio (opcional) Verifica o tipo de envio do post * @return bool */ function verifica($post, $tipoEnvio=false) { global $_retPagSeguroErrNo, $_retPagSeguroErrStr; if ('array' !== gettype($tipoEnvio)) $tipoEnvio = RetornoPagSeguro::_tipoEnvio(); $spost=RetornoPagSeguro::_preparaDados($post); if (!in_array($tipoEnvio[0], array('curl', 'fsocket'))) return false; $confirma = false; if ($tipoEnvio[0] === 'curl') { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $tipoEnvio[1]); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $spost); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $resp = curl_exec($ch); if (!RetornoPagSeguro::not_null($resp)) { curl_setopt($ch, CURLOPT_URL, $tipoEnvio[1]); $resp = curl_exec($ch); } curl_close($ch); $confirma = (strcmp ($resp, 'VERIFICADO') == 0); } elseif ($tipoEnvio[0] === 'fsocket') { if (!$tipoEnvio[2]) { die ("{$_retPagSeguroErrStr} ($_retPagSeguroErrNo)"); } else { $cabecalho = "POST {$tipoEnvio[1]} HTTP/1.0\r\n"; $cabecalho .= "Content-Type: application/x-www-form-urlencoded\r\n"; $cabecalho .= "Content-Length: " . strlen($spost) . "\r\n\r\n"; $resp = ''; fwrite ($tipoEnvio[2], "{$cabecalho}{$spost}"); while (!feof($tipoEnvio[2])) { $resp = fgets ($tipoEnvio[2], 1024); if (strcmp ($resp, 'VERIFICADO') == 0) { $confirma = (strcmp ($resp, 'VERIFICADO') == 0); $confirma=true; break; } } fclose ($tipoEnvio[2]); } } if ($confirma && function_exists('retorno_automatico')) { $itens = array ( 'VendedorEmail', 'TransacaoID', 'Referencia', 'TipoFrete', 'ValorFrete', 'Anotacao', 'DataTransacao', 'TipoPagamento', 'StatusTransacao', 'CliNome', 'CliEmail', 'CliEndereco', 'CliNumero', 'CliComplemento', 'CliBairro', 'CliCidade', 'CliEstado', 'CliCEP', 'CliTelefone', 'NumItens', ); foreach ($itens as $item) { if (!isset($post[$item])) $post[$item] = ''; if ($item=='ValorFrete') $post[$item] = str_replace(',', '.', $post[$item]); } $produtos = array (); for ($i=1;isset($post["ProdID_{$i}"]);$i++) { $produtos[] = array ( 'ProdID' => $post["ProdID_{$i}"], 'ProdDescricao' => $post["ProdDescricao_{$i}"], 'ProdValor' => (double) (str_replace(',', '.', $post["ProdValor_{$i}"])), 'ProdQuantidade' => $post["ProdQuantidade_{$i}"], 'ProdFrete' => (double) (str_replace(',', '.', $post["ProdFrete_{$i}"])), 'ProdExtras' => (double) (str_replace(',', '.', $post["ProdExtras_{$i}"])), ); } retorno_automatico ( $post['VendedorEmail'], $post['TransacaoID'], $post['Referencia'], $post['TipoFrete'], $post['ValorFrete'], $post['Anotacao'], $post['DataTransacao'], $post['TipoPagamento'], $post['StatusTransacao'], $post['CliNome'], $post['CliEmail'], $post['CliEndereco'], $post['CliNumero'], $post['CliComplemento'], $post['CliBairro'], $post['CliCidade'], $post['CliEstado'], $post['CliCEP'], $post['CliTelefone'], $produtos, $post['NumItens'] ); } return $confirma; } } if ($_POST) { RetornoPagSeguro::verifica($_POST); die(); } ?> No seu buypoints.php,basta colocar isso: <?php if(!$logged) if($action == "logout") $main_content .= '<div class="TableContainer" > <table class="Table1" cellpadding="0" cellspacing="0" > <div class="CaptionContainer" > <div class="CaptionInnerContainer" > <span class="CaptionEdgeLeftTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionBorderTop" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionVerticalLeft" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></span> <div class="Text" >Logout Successful</div> <span class="CaptionVerticalRight" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></span> <span class="CaptionBorderBottom" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionEdgeLeftBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> </div> </div> <tr> <td> <div class="InnerTableContainer" > <table style="width:100%;" ><tr><td>You have logged out of your '.$config['server']['serverName'].' account. In order to view your account you need to <a href="?subtopic=accountmanagement" >log in</a> again.</td></tr> </table> </div> </table></div></td></tr>'; else $main_content .= 'Please enter your account name and your password.<br/><a href="?subtopic=createaccount" >Create an account</a> if you do not have one yet.<br/><br/><form action="?subtopic=accountmanagement" method="post" ><div class="TableContainer" > <table class="Table1" cellpadding="0" cellspacing="0" > <div class="CaptionContainer" > <div class="CaptionInnerContainer" > <span class="CaptionEdgeLeftTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionBorderTop" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionVerticalLeft" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></span> <div class="Text" >Account Login</div> <span class="CaptionVerticalRight" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></span> <span class="CaptionBorderBottom" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionEdgeLeftBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> </div> </div> <tr> <td> <div class="InnerTableContainer" > <table style="width:100%;" ><tr><td class="LabelV" ><span >Account Name:</span></td><td style="width:100%;" ><input type="password" name="account_login" SIZE="10" maxlength="10" ></td></tr><tr><td class="LabelV" ><span >Password:</span></td><td><input type="password" name="password_login" size="30" maxlength="29" ></td></tr> </table> </div> </table></div></td></tr><br/><table width="100%" ><tr align="center" ><td><table border="0" cellspacing="0" cellpadding="0" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$layout_name.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$layout_name.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Submit" alt="Submit" src="'.$layout_name.'/images/buttons/_sbutton_submit.gif" ></div></div></td><tr></form></table></td><td><table border="0" cellspacing="0" cellpadding="0" ><form action="?subtopic=lostaccount" method="post" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$layout_name.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$layout_name.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Account lost?" alt="Account lost?" src="'.$layout_name.'/images/buttons/_sbutton_accountlost.gif" ></div></div></td></tr></form></table></td></tr></table>'; else { $main_content .= ' <form target="pagseguro" method="post" action="https://pagseguro.uol.com.br/checkout/checkout.jhtml"> <input type="hidden" name="email_cobranca" value="'. $config['pagseguro']['email']. '"> <input type="hidden" name="tipo" value="CP"> <input type="hidden" name="moeda" value="BRL"> <input type="hidden" name="item_id_1" value="1"> <input type="hidden" name="item_descr_1" value="Pontos na account de nome: '.$account_logged->getCustomField("name").'"> <input type="hidden" name="item_valor_1" value="'. $config['pagseguro']['produtoValor'] .'"> <input type="hidden" name="item_frete_1" value="0"> <input type="hidden" name="item_peso_1" value="0"> <input type="hidden" name="ref_transacao" value="'.$account_logged->getCustomField("name").'"> <table border="0" cellpadding="4" cellspacing="1" width="100%" id="#estilo"><tbody> <tr bgcolor="#505050" class="white"> <th colspan="2"><strong>Escolha a quantidade de pontos que deseja comprar</strong></th> </tr> <tr> <td width="10%">Sua conta</td> <td><strong>'.$account_logged->getCustomField("name").'</strong></td> </tr> <tr> <td width="10%">Pontos</td> <td> <input name="item_quant_1" type="text" value="1" size="5" maxlength="5"> </td> </tr> <tr> <td colspan="2"> <input type="image" src="https://p.simg.uol.com.br/out/pagseguro/i/botoes/carrinhoproprio/btnFinalizar.jpg" name="submit" alt="Pague com PagSeguro - é rápido, grátis e seguro!" /> </td> </tr> </tbody></table></form>'; } ?> Para finalizar: Adicione no seu phpmyadmin,na parte SQL,a seguinte database: CREATE TABLE `retorno_automatico` ( `TransacaoID` varchar(36) NOT NULL, `VendedorEmail` varchar(200) NOT NULL, `Referencia` varchar(200) default NULL, `TipoFrete` char(2) default NULL, `ValorFrete` decimal(10,2) default NULL, `Extras` decimal(10,2) default NULL, `Anotacao` text, `TipoPagamento` varchar(50) NOT NULL, `StatusTransacao` varchar(50) NOT NULL, `CliNome` varchar(200) NOT NULL, `CliEmail` varchar(200) NOT NULL, `CliEndereco` varchar(200) NOT NULL, `CliNumero` varchar(10) default NULL, `CliComplemento` varchar(100) default NULL, `CliBairro` varchar(100) NOT NULL, `CliCidade` varchar(100) NOT NULL, `CliEstado` char(2) NOT NULL, `CliCEP` varchar(9) NOT NULL, `CliTelefone` varchar(14) default NULL, `NumItens` int(11) NOT NULL, `Data` datetime NOT NULL, `status` tinyint(1) unsigned NOT NULL default '0', UNIQUE KEY `TransacaoID` (`TransacaoID`,`StatusTransacao`), KEY `Referencia` (`Referencia`), KEY `status` (`status`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; E essa outra aqui : CREATE TABLE `PagSeguroTransacoes` ( `TransacaoID` varchar(36) NOT NULL, `VendedorEmail` varchar(200) NOT NULL, `Referencia` varchar(200) default NULL, `TipoFrete` char(2) default NULL, `ValorFrete` decimal(10,2) default NULL, `Extras` decimal(10,2) default NULL, `Anotacao` text, `TipoPagamento` varchar(50) NOT NULL, `StatusTransacao` varchar(50) NOT NULL, `CliNome` varchar(200) NOT NULL, `CliEmail` varchar(200) NOT NULL, `CliEndereco` varchar(200) NOT NULL, `CliNumero` varchar(10) default NULL, `CliComplemento` varchar(100) default NULL, `CliBairro` varchar(100) NOT NULL, `CliCidade` varchar(100) NOT NULL, `CliEstado` char(2) NOT NULL, `CliCEP` varchar(9) NOT NULL, `CliTelefone` varchar(14) default NULL, `NumItens` int(11) NOT NULL, `Data` datetime NOT NULL, `status` tinyint(1) unsigned NOT NULL default '0', UNIQUE KEY `TransacaoID` (`TransacaoID`,`StatusTransacao`), KEY `Referencia` (`Referencia`), KEY `status` (`status`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; :XTibia_smile:
    1 ponto
  4. Doidin

    [Globalevents] Mensagens Automáticas!

    Mensagens Automáticas! Fala galerinha XTibiana, Bom agora são exatamente 03:30 da manha e eu estou sem po** nenhuma pra fazer.. =) Então resolvi fazer um sisteminha de mensagens automaticas para por no seu servidor, ele é bem simples porem bastante usado! :forward: O sistema funciona assim, você poem 5 frases e elas serão mostradas uma por uma aleatoriamente no seu servidor... Vamos aos scripts: Vá até a pasta "globalevents" entre na pasta "scripts" e faça um script chamado "mensagem.lua" e coloque este código dentro: -- [( Script created by Doidin for XTibia.com )] -- function onThink(interval, lastExecution) MENSAGEM = { "FRASE 1", "FRASE 2", "FRASE 3", "FRASE 4", "FRASE 5", } doBroadcastMessage(MENSAGEM[math.random(1,#MENSAGEM)],22) return TRUE end FRASE = Substitua pela frase que você quiser... Agora volte a pasta "globalevents" e abra o arquivo "globalevents.xml" e adicione esta tag: <globalevent name="mensagem" interval="500" script="mensagem.lua"/> Pronto agora você tem mensagens automáticas no seu servidor! =) Abraços...
    1 ponto
  5. gui56

    [Spr] Adicionando Novos Sprites

    Olá XTibianos, Galera eu vi que tinha muita gente querendo saber como colocar novos sprites no servidor, até achei alguns tutoriais mas não tinham imagens e eram muito vagos, então resolvi montar esse bem explicado e com imagens para facilitar o entendimento de vocês. Inicio: - Neste tutorial, você irá aprender como extrair, modificar e comilar o arquivo Tibia.spr. • Vamos trocar esse sprite - • Por esse - 1º Passo - Donwload e Instalação; - Após baixar o SprEditor extraia ele para uma pasta a sua escolha . - Após extrair vá na pasta do seu Tibia e copie o arquivo Tibia.spr para a mesma pasta onde esta o SprEditor. 2º Passo - Conhecendo o programa; - Para extrair as imagens do arquivo Tibia.spr clique em "Extract" e para compilar as imagens *.Bmp para *.Spr clique em "Compile"; 3º Passo - Extraindo; - No programa clique em "Extract" - Agora note q foi criada uma pasta chamada "Sprites" contendo todas as imagens. 4º Passo - Imagens e suas Propriedades; - Para mudar as imagens abra a pasta "Sprites" e note que as imagens são todas 32x32 e tem extenção *.Bmp. - A cor rosa nas imagens indica transparência. - Agora mude a imagen sem ultrapassar o limite de tamanho (32x32). - Depois de mudar e salvar as imagens que voce quiser vamos para o quinto passo; 5º Passo - Compilando; - Agora va no programa e clique em "Compile" e espere o processo terminar. - Perceba que ja esta sendo criado um arquivo chamado "MyTibia.spr" Pronto agora voce ja tem seu Tibia.spr editado e compilado pronto para usar! PS: Comentem e digam o que acharam!
    1 ponto
  6. meubk

    [Talkaction]System Moves [15/151]

    Moves System Pokemon O meu script de moves, foi atualizado, por enquanto está com esses pokemons, eu estárei adicionando os 151, aos pouco não tenha pressa e acompanhe todos dias avera atualização. Novidades : Crie um arquivo com nome de moves.lua e cole o new script : function getTime(s) local n = math.floor(s / 600) s = s - (600 * n) return n, s end function getCreaturesInRange(position, radiusx, radiusy, showMonsters, showPlayers) local creaturesList = {} for x = -radiusx, radiusx do for y = -radiusy, radiusy do if not (x == 0 and y == 0) then creature = getTopCreature({x = position.x+x, y = position.y+y, z = position.z, stackpos = STACKPOS_TOP_CREATURE}) if (creature.type == 1 and showPlayers == 1) or (creature.type == 2 and showMonsters == 1) then table.insert(creaturesList, creature.uid) end end end end return creaturesList end -- CONDITIONS function Confused(inconfuse, rounds) if rounds == 0 then return false end if not inconfuse then return false end local c = {[1] = {x = 1, y = 0}, [2] = {x = 0, y = 1}, [3] = {x = -1, y = 0}, [4] = {x = 0, y = -1}} local p = getCreaturePosition(inconfuse) doSendMagicEffect(p, 31) local s = math.random(4) doTeleportThing(inconfuse, {x = p.x + c[s].x, y = p.y + c[s].y, z = p.z}) return addEvent(Confused, 400, inconfuse, rounds-1) end local paralize = createConditionObject(CONDITION_PARALYZE) setConditionParam(paralize, CONDITION_PARAM_TICKS, 5*1000) setConditionFormula(paralize, -0.7, 0, -0.8, 0) function Paralize(inparalize) doSendAnimatedText(getCreaturePosition(inparalize), "PAZ", 210) doAddCondition(inparalize , paralize) return true end local sleep = createConditionObject(CONDITION_PARALYZE) setConditionParam(sleep, CONDITION_PARAM_TICKS, 5*1000) setConditionFormula(sleep, -1.7, 0, -1.8, 0) function Sleep(insleep) doAddCondition(insleep , sleep) p = getCreaturePosition(insleep) doSendAnimatedText(p, "SLEEP", 154) for i = 1, 5 do if i == 1 then doSendMagicEffect(p, 32) else addEvent(doSendMagicEffect, i * 1000, p, 32) end end return true end function Poison(inpoison, ef, rounds) if rounds == 0 then return false end if not inpoison then return false end local p = getCreaturePosition(inpoison) doAreaCombatHealth(pet, COMBAT_EARTHDAMAGE, p, 0, -5, -10, ef) return addEvent(Poison, 800, inpoison, ef, rounds-1) end -- END CONDITIONS function getPosToStorm(posdecay) b = {x = posdecay.x-20, y = posdecay.y-20, z = posdecay.z} return b end local area1 = createCombatArea{ {0, 1, 1, 1, 0}, {1, 1, 1, 1, 1}, {1, 1, 2, 1, 1}, {1, 1, 1, 1, 1}, {0, 1, 1, 1, 0} } local area2 = createCombatArea{ {0, 0, 0, 0, 0}, {0, 1, 1, 1, 0}, {0, 1, 2, 1, 0}, {0, 1, 1, 1, 0}, {0, 0, 0, 0, 0} } local area3 = createCombatArea{ {0, 0, 1, 0, 0}, {0, 1, 1, 1, 0}, {1, 1, 2, 1, 1}, {0, 1, 1, 1, 0}, {0, 0, 1, 0, 0} } local areadirecion1 = { [2] = createCombatArea{ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 2, 0, 0} }, [3] = createCombatArea{ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {2, 1, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0} }, [0] = createCombatArea{ {0, 0, 2, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0} }, [1] = createCombatArea{ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 1, 2}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0} } } local areadirecion2 = { [2] = createCombatArea{ {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 2, 0, 0} }, [3] = createCombatArea{ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {2, 1, 1, 1, 1}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0} }, [0] = createCombatArea{ {0, 0, 2, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0} }, [1] = createCombatArea{ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {1, 1, 1, 1, 2}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0} } } local areadirecion3 = { [2] = createCombatArea{ {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 2, 0, 0} }, [3] = createCombatArea{ {0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0}, {2, 1, 1, 1, 1, 1, 1, 1, 1}, {0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0} }, [0] = createCombatArea{ {0, 0, 2, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0} }, [1] = createCombatArea{ {0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0}, {1, 1, 1, 1, 1, 1, 1, 1, 2}, {0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0} } } local areadirecion4 = { [2] = createCombatArea{ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 1, 1, 1, 0}, {0, 0, 1, 0, 0}, {0, 0, 2, 0, 0} }, [3] = createCombatArea{ {0, 0, 0, 0, 0}, {0, 0, 1, 0, 0}, {2, 1, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 0, 0, 0} }, [0] = createCombatArea{ {0, 0, 2, 0, 0}, {0, 0, 1, 0, 0}, {0, 1, 1, 1, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0} }, [1] = createCombatArea{ {0, 0, 0, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 1, 2}, {0, 0, 1, 0, 0}, {0, 0, 0, 0, 0} } } local d = { ["Bulbasaur"] = { ["m1"] = {atk = "Quick Attack", minlvl = 20, st = 2000, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m2"] = {atk = "Razor Leaf", minlvl = 20, st = 2001, cd = 3, min = 100, max = 200, damage = COMBAT_EARTHDAMAGE, target = true, pz = false}, ["m3"] = {atk = "Vine Whip", minlvl = 20, st = 2002, cd = 3, min = 100, max = 200, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, ["m4"] = {atk = "Headbutt", minlvl = 20, st = 2003, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m5"] = {atk = "Leech Seed", minlvl = 20, st = 2004, cd = 3, min = 100, max = 200, damage = COMBAT_EARTHDAMAGE, target = true, pz = false}, ["m6"] = {atk = "Solar Beam", minlvl = 20, st = 2005, cd = 3, min = 200, max = 400, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, ["m7"] = {atk = "Stun Spore", minlvl = 20, st = 2006, cd = 3, min = 0, max = 0, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, ["m8"] = {atk = "Poison Powder", minlvl = 20, st = 2007, cd = 3, min = 0, max = 0, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, ["m9"] = {atk = "Sleep Powder", minlvl = 20, st = 2008, cd = 3, min = 0, max = 0, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, }, ["Ivysaur"] = { ["m1"] = {atk = "Quick Attack", minlvl = 40, st = 2009, cd = 3, min = 300, max = 400, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m2"] = {atk = "Razor Leaf", minlvl = 40, st = 2010, cd = 3, min = 300, max = 400, damage = COMBAT_EARTHDAMAGE, target = true, pz = false}, ["m3"] = {atk = "Vine Whip", minlvl = 40, st = 2011, cd = 3, min = 300, max = 440, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, ["m4"] = {atk = "Headbutt", minlvl = 40, st = 2012, cd = 3, min = 300, max = 400, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m5"] = {atk = "Leech Seed", minlvl = 40, st = 2013, cd = 3, min =300, max = 400, damage = COMBAT_EARTHDAMAGE, target = true, pz = false}, ["m6"] = {atk = "Solar Beam", minlvl = 40, st = 2014, cd = 3, min = 300, max = 400, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, ["m7"] = {atk = "Stun Spore", minlvl = 40, st = 2015, cd = 3, min = 0, max = 0, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, ["m8"] = {atk = "Poison Powder", minlvl = 40, st = 2016, cd = 3, min = 0, max = 0, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, ["m9"] = {atk = "Sleep Powder", minlvl = 20, st = 2017, cd = 3, min = 0, max = 0, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, }, ["Venusaur"] = { ["m1"] = {atk = "Quick Attack", minlvl = 80, st = 2018, cd = 3, min = 1000, max = 2000, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m2"] = {atk = "Razor Leaf", minlvl = 80, st = 2019, cd = 3, min = 1000, max = 2000, damage = COMBAT_EARTHDAMAGE, target = true, pz = false}, ["m3"] = {atk = "Vine Whip", minlvl = 80, st = 2020, cd = 3, min = 1000, max = 2000, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, ["m4"] = {atk = "Headbutt", minlvl = 80, st = 2021, cd = 3, min = 1000, max = 2000, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m5"] = {atk = "Leech Seed", minlvl = 80, st = 2022, cd = 3, min = 1000, max = 2000, damage = COMBAT_EARTHDAMAGE, target = true, pz = false}, ["m6"] = {atk = "Solar Beam", minlvl = 80, st = 2023, cd = 3, min = 1000, max = 2000, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, ["m7"] = {atk = "Stun Spore", minlvl = 80, st = 2024, cd = 3, min = 0, max = 0, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, ["m8"] = {atk = "Poison Powder", minlvl = 80, st = 2025, cd = 3, min = 0, max = 0, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, ["m9"] = {atk = "Sleep Powder", minlvl = 20, st = 2026, cd = 3, min = 0, max = 0, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, ["m10"] = {atk = "Leaf Storm", minlvl = 80, st = 2027, cd = 3, min = 1000, max = 2000, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, }, ["Charmander"] = { ["m1"] = {atk = "Scratch", minlvl = 20, st = 2028, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m2"] = {atk = "Ember", minlvl = 20, st = 2029, cd = 3, min = 100, max = 200, damage = COMBAT_FIREDAMAGE, target = false, pz = false}, ["m3"] = {atk = "Flamethrower", minlvl = 20, st = 2030, cd = 3, min = 100, max = 200, damage = COMBAT_FIREDAMAGE, target = false, pz = false}, ["m4"] = {atk = "Fire Ball", minlvl = 20, st = 2031, cd = 3, min = 100, max = 200, damage = COMBAT_FIREDAMAGE, target = true, pz = false}, ["m5"] = {atk = "Fire Blast", minlvl = 20, st = 2032, cd = 3, min = 100, max = 200, damage = COMBAT_FIREDAMAGE, target = false, pz = false}, ["m6"] = {atk = "Rage", minlvl = 20, st = 2033, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m7"] = {atk = "Fire Fang", minlvl = 20, st = 2034, cd = 3, min = 100, max = 200, damage = COMBAT_FIREDAMAGE, target = true, pz = false}, }, ["Charmeleon"] = { ["m1"] = {atk = "Scratch", minlvl = 40, st = 2035, cd = 3, min = 300, max = 400, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m2"] = {atk = "Ember", minlvl = 40, st = 2036, cd = 3, min = 300, max = 400, damage = COMBAT_FIREDAMAGE, target = false, pz = false}, ["m3"] = {atk = "Flamethrower", minlvl = 40, st = 2037, cd = 3, min = 400, max = 500, damage = COMBAT_FIREDAMAGE, target = false, pz = false}, ["m4"] = {atk = "Fire Ball", minlvl = 40, st = 2038, cd = 3, min = 300, max =400, damage = COMBAT_FIREDAMAGE, target = true, pz = false}, ["m5"] = {atk = "Fire Blast", minlvl = 40, st = 2039, cd = 3, min = 300, max = 400, damage = COMBAT_FIREDAMAGE, target = false, pz = false}, ["m6"] = {atk = "Rage", minlvl = 40, st = 2040, cd = 3, min = 100, max = 300, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m7"] = {atk = "Fire Fang", minlvl = 40, st = 2041, cd = 3, min = 400, max = 800, damage = COMBAT_FIREDAMAGE, target = true, pz = false}, }, ["Charizard"] = { ["m1"] = {atk = "Dragon Claw", minlvl = 80, st = 2042, cd = 3, min = 1000, max = 2000, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m2"] = {atk = "Ember", minlvl = 80, st = 2043, cd = 3, min = 1000, max = 2000, damage = COMBAT_FIREDAMAGE, target = false, pz = false}, ["m3"] = {atk = "Flamethrower", minlvl = 80, st = 2044, cd = 3, min = 1000, max = 2000, damage = COMBAT_FIREDAMAGE, target = false, pz = false}, ["m4"] = {atk = "Fire Ball", minlvl = 80, st = 2045, cd = 3, min = 1000, max = 2000, damage = COMBAT_FIREDAMAGE, target = true, pz = false}, ["m5"] = {atk = "Fire Blast", minlvl = 80, st = 2046, cd = 3, min = 1000, max = 2000, damage = COMBAT_FIREDAMAGE, target = false, pz = false}, ["m6"] = {atk = "Rage", minlvl = 80, st = 2047, cd = 3, min = 1000, max = 2000, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m7"] = {atk = "Magma Storm", minlvl = 80, st = 2048, cd = 3, min = 1000, max = 2000, damage = COMBAT_FIREDAMAGE, target = false, pz = false}, ["m8"] = {atk = "Wing Attack", minlvl = 80, st = 2049, cd = 3, min = 1000, max = 2000, damage = COMBAT_PHYSICALDAMAGE, target = false, pz = false}, }, ["Squirtle"] = { ["m1"] = {atk = "Headbutt", minlvl = 20, st = 2050, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m2"] = {atk = "Bubbles", minlvl = 20, st = 2051, cd = 3, min = 100, max = 200, damage = COMBAT_ICEDAMAGE, target = true, pz = false}, ["m3"] = {atk = "Water Gun", minlvl = 20, st = 2052, cd = 3, min = 100, max = 200, damage = COMBAT_ICEDAMAGE, target = false, pz = false}, ["m4"] = {atk = "Waterball", minlvl = 20, st = 2053, cd = 3, min = 100, max = 200, damage = COMBAT_ICEDAMAGE, target = true, pz = false}, ["m5"] = {atk = "Aqua Tail", minlvl = 20, st = 2054, cd = 3, min = 100, max = 200, damage = COMBAT_ICEDAMAGE, target = false, pz = false}, ["m6"] = {atk = "Hydro Cannon", minlvl = 20, st = 2055, cd = 3, min = 200, max = 400, damage = COMBAT_ICEDAMAGE, target = false, pz = false}, ["m7"] = {atk = "Harden", minlvl = 20, st = 2056, cd = 60, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = false, pz = true}, ["m8"] = {atk = "Surf", minlvl = 20, st = 2057, cd = 3, min = 100, max = 200, damage = COMBAT_ICEDAMAGE, target = false, pz = false}, }, ["Wartortle"] = { ["m1"] = {atk = "Headbutt", minlvl = 40, st = 2058, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m2"] = {atk = "Bubbles", minlvl = 40, st = 2059, cd = 3, min = 100, max = 200, damage = COMBAT_ICEDAMAGE, target = true, pz = false}, ["m3"] = {atk = "Water Gun", minlvl = 40, st = 2060, cd = 3, min = 100, max = 200, damage = COMBAT_ICEDAMAGE, target = false, pz = false}, ["m4"] = {atk = "Waterball", minlvl = 40, st = 2061, cd = 3, min = 100, max = 200, damage = COMBAT_ICEDAMAGE, target = true, pz = false}, ["m5"] = {atk = "Aqua Tail", minlvl = 40, st = 2062, cd = 3, min = 100, max = 200, damage = COMBAT_ICEDAMAGE, target = false, pz = false}, ["m6"] = {atk = "Hydro Cannon", minlvl = 40, st = 2063, cd = 3, min = 200, max = 400, damage = COMBAT_ICEDAMAGE, target = false, pz = false}, ["m7"] = {atk = "Harden", minlvl = 40, st = 2064, cd = 60, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = false, pz = true}, ["m8"] = {atk = "Surf", minlvl = 40, st = 2065, cd = 3, min = 100, max = 200, damage = COMBAT_ICEDAMAGE, target = false, pz = false}, }, ["Blastoise"] = { ["m1"] = {atk = "Headbutt", minlvl = 40, st = 2066, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m2"] = {atk = "Bubbles", minlvl = 40, st = 2067, cd = 3, min = 100, max = 200, damage = COMBAT_ICEDAMAGE, target = true, pz = false}, ["m3"] = {atk = "Water Gun", minlvl = 40, st = 2068, cd = 3, min = 100, max = 200, damage = COMBAT_ICEDAMAGE, target = false, pz = false}, ["m4"] = {atk = "Waterball", minlvl = 40, st = 2069, cd = 3, min = 100, max = 200, damage = COMBAT_ICEDAMAGE, target = true, pz = false}, ["m5"] = {atk = "Aqua Tail", minlvl = 40, st = 2070, cd = 3, min = 100, max = 200, damage = COMBAT_ICEDAMAGE, target = false, pz = false}, ["m6"] = {atk = "Hydro Cannon", minlvl = 40, st = 2071, cd = 3, min = 200, max = 400, damage = COMBAT_ICEDAMAGE, target = false, pz = false}, ["m7"] = {atk = "Harden", minlvl = 40, st = 2072, cd = 60, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = false, pz = true}, ["m8"] = {atk = "Surf", minlvl = 40, st = 2073, cd = 3, min = 100, max = 200, damage = COMBAT_ICEDAMAGE, target = false, pz = false}, ["m9"] = {atk = "Hydropump", minlvl = 40, st = 2074, cd = 3, min = 100, max = 200, damage = COMBAT_ICEDAMAGE, target = false, pz = false}, }, ["Caterpie"] = { ["m1"] = {atk = "Headbutt", minlvl = 1, st = 2075, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m2"] = {atk = "String Shot", minlvl = 1, st = 2076, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m3"] = {atk = "Bug Bite", minlvl = 1, st = 2077, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, }, ["Metapod"] = { ["m1"] = {atk = "Headbutt", minlvl = 10, st = 2078, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m2"] = {atk = "String Shot", minlvl = 10, st = 2079, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m3"] = {atk = "Bug Bite", minlvl = 10, st = 2080, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m4"] = {atk = "Harden", minlvl = 10, st = 2081, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = false, pz = true}, }, ["Butterfree"] = { ["m1"] = {atk = "Headbutt", minlvl = 30, st = 2082, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m2"] = {atk = "Whirlwind", minlvl = 30, st = 2083, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = false, pz = false}, ["m3"] = {atk = "Super Sonic", minlvl = 30, st = 2084, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m4"] = {atk = "Stun Spore", minlvl = 30, st = 2085, cd = 3, min = 0, max = 0, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, ["m5"] = {atk = "Poison Powder", minlvl = 30, st = 2086, cd = 3, min = 0, max = 0, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, ["m6"] = {atk = "Sleep Powder", minlvl = 30, st = 2087, cd = 3, min = 0, max = 0, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, ["m7"] = {atk = "Psybeam", minlvl = 30, st = 2088, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = false, pz = false}, ["m8"] = {atk = "Confusion", minlvl = 30, st = 2089, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = false, pz = false}, }, ["Weedle"] = { ["m1"] = {atk = "Horn Attack", minlvl = 1, st = 2090, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m2"] = {atk = "String Shot", minlvl = 1, st = 2091, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m3"] = {atk = "Poison Sting", minlvl = 1, st = 2092, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, }, ["Kakuna"] = { ["m1"] = {atk = "Bug Bite", minlvl = 10, st = 2093, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m2"] = {atk = "String Shot", minlvl = 10, st = 2094, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m3"] = {atk = "Poison Sting", minlvl = 10, st = 2095, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m4"] = {atk = "Harden", minlvl = 10, st = 2096, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = true}, }, ["Beedrill"] = { ["m1"] = {atk = "Fury Cutter", minlvl = 10, st = 2097, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m2"] = {atk = "String Shot", minlvl = 10, st = 2098, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m3"] = {atk = "Poison Sting", minlvl = 10, st = 2099, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m4"] = {atk = "Pin Missile", minlvl = 10, st = 2100, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m5"] = {atk = "Rage", minlvl = 10, st = 2101, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m6"] = {atk = "Strafe", minlvl = 10, st = 2102, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, }, } function onSay(cid, words, param) if #getCreatureSummons(cid) == 0 then return doPlayerSendCancel(cid, "You do not have any pokemon.") end local poke = d[getCreatureName(getCreatureSummons(cid)[1])][words] if not poke then return true end local storage = poke.st local exst = 16265 local cdexst = 0.5 local cd = math.ceil(poke.cd/2) local pet = getCreatureSummons(cid)[1] local target = getCreatureTarget(cid) local look = getCreatureLookDir(pet) local position = getThingPos(pet) if getTilePzInfo(getCreaturePosition(pet)) and poke.pz == false then return doPlayerSendCancel(cid, "Not Attack in protection zone.") end if getPlayerLevel(cid) < poke.minlvl then return doPlayerSendTextMessage(cid, 19, "Your need level "..poke.minlvl.." to use " ..poke.atk..".") end if os.time()-getPlayerStorageValue(cid, storage) <= cd then minutes,seconds = getTime(cd-(os.time()-getPlayerStorageValue(cid, storage))) return doPlayerSendTextMessage(cid, 27, "Wait "..seconds.." seconds to use "..poke.atk..".") end if target == 0 and poke.target then return doPlayerSendTextMessage(cid, 19, "This Pokemon Attack need any target.") end if os.time()-getPlayerStorageValue(cid, exst) <= cdexst then minutes,seconds = getTime(cdexst-(os.time()-getPlayerStorageValue(cid, exst))) return doPlayerSendCancel(cid, "Poke exhausted") end local critico = math.random(100) < 10 and 2 or 1 --ATTACKS if poke.atk == "Quick Attack" then if getDistanceBetween(getCreaturePosition(pet), getCreaturePosition(target)) > 1 then return doPlayerSendCancel(cid, "Target is far away.") end doAreaCombatHealth(pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 148) elseif poke.atk == "Razor Leaf" then if getDistanceBetween(getCreaturePosition(pet), getCreaturePosition(target)) > 5 then return doPlayerSendCancel(cid, "Target is far away.") end doSendDistanceShoot(getCreaturePosition(pet), getCreaturePosition(target), 4) doAreaCombatHealth(pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 79) elseif poke.atk == "Vine Whip" then local effects = { [0] = 80, [1] = 83, [2] = 81, [3] = 82 } doAreaCombatHealth(pet, poke.damage, getThingPos(pet), areadirecion1[look], -poke.min, -poke.max * critico, effects[look]) elseif poke.atk == "Headbutt" then if getDistanceBetween(getCreaturePosition(pet), getCreaturePosition(target)) > 1 then return doPlayerSendCancel(cid, "Target is far away.") end doAreaCombatHealth(pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 111) elseif poke.atk == "Leech Seed" then if getDistanceBetween(getCreaturePosition(pet), getCreaturePosition(target)) > 5 then return doPlayerSendCancel(cid, "Target is far away.") end doSendDistanceShoot(getCreaturePosition(pet), getCreaturePosition(target), 6) doSendAnimatedText(getCreaturePosition(target), "POISON", 66) addEvent(Poison, 500, target, 45, 5) elseif poke.atk == "Solar Beam" then local a = { [0] = {x = 0, y = -1, effect={[1]=94,[2]=93,[3]=93,[4]=95}}, [1] = {x = 1, y = 0, effect={[1]=86,[2]=88,[3]=88,[4]=87}}, [2] = {x = 0, y = 1, effect={[1]=91,[2]=93,[3]=93,[4]=92}}, [3] = {x = -1, y = 0, effect={[1]=89,[2]=88,[3]=88,[4]=90}} } for i = 1,4 do doSendMagicEffect({x = position.x + a[look].x*i, y = position.y + a[look].y*i, z = position.z}, a[look].effect[i]) end doAreaCombatHealth(pet, poke.damage, getThingPos(pet), areadirecion2[look], -poke.min, -poke.max * critico, 59) elseif poke.atk == "Stun Spore" then local d = getCreaturesInRange(getThingPos(pet), 1, 1, 1, 0) for _,pid in pairs(d) do Paralize(pid) end doAreaCombatHealth(pet, poke.damage, getThingPos(pet), area2, -poke.min, -poke.max * critico, 85) elseif poke.atk == "Poison Powder" then local d = getCreaturesInRange(getThingPos(pet), 1, 1, 1, 0) for _,pid in pairs(d) do doSendAnimatedText(getCreaturePosition(pid), "POISON", 66) Poison(pid, 8, 5) end doAreaCombatHealth(pet, poke.damage, getThingPos(pet), area2, -poke.min, -poke.max * critico, 84) elseif poke.atk == "Sleep Powder" then local d = getCreaturesInRange(getThingPos(pet), 1, 1, 1, 0) for _,pid in pairs(d) do Sleep(pid) end doAreaCombatHealth(pet, poke.damage, getThingPos(pet), area2, -poke.min, -poke.max * critico, 27) elseif poke.atk == "Leaf Storm" then local d = getCreaturesInRange(getThingPos(pet), 3, 3, 1, 0) for _,pid in pairs(d) do for i = 1, 4 do if i == 1 then addEvent(doAreaCombatHealth, 400, pet, poke.damage, getThingPos(pid), 0, -poke.min, -poke.max * critico, 79) doSendDistanceShoot(getPosToStorm(getCreaturePosition(pid)), getCreaturePosition(pid), 4) else addEvent(doAreaCombatHealth, i*800 ,pet, poke.damage, getThingPos(pid), 0, -poke.min, -poke.max * critico, 79) addEvent(doSendDistanceShoot, i*600, getPosToStorm(getCreaturePosition(pid)), getCreaturePosition(pid), 4) end end end elseif poke.atk == "Scratch" then if getDistanceBetween(getCreaturePosition(pet), getCreaturePosition(target)) > 1 then return doPlayerSendCancel(cid, "Target is far away.") end doAreaCombatHealth(pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 142) elseif poke.atk == "Ember" then doAreaCombatHealth(pet, poke.damage, getThingPos(pet), area2, -poke.min, -poke.max * critico, 15) elseif poke.atk == "Flamethrower" then local effects = { [0] = 55, [1] = 58, [2] = 56, [3] = 57 } doAreaCombatHealth(pet, poke.damage, getThingPos(pet), areadirecion1[look], -poke.min, -poke.max * critico, effects[look]) elseif poke.atk == "Fire Ball" then if getDistanceBetween(getCreaturePosition(pet), getCreaturePosition(target)) > 5 then return doPlayerSendCancel(cid, "Target is far away.") end doSendDistanceShoot(getCreaturePosition(pet), getCreaturePosition(target), 3) doAreaCombatHealth(pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 5) elseif poke.atk == "Fire Blast" then local a = { [0] = {x = 0, y = -1, effect= 60}, [1] = {x = 1, y = 0, effect= 61}, [2] = {x = 0, y = 1, effect= 62}, [3] = {x = -1, y = 0, effect= 63} } for i = 1,8 do if i == 1 then doSendMagicEffect({x = position.x + a[look].x*i, y = position.y + a[look].y*i, z = position.z}, a[look].effect) doAreaCombatHealth(pet, poke.damage, getThingPos(pet), areadirecion3[look], -poke.min, -poke.max * critico, 15) else addEvent(doSendMagicEffect, i*300, {x = position.x + a[look].x*i, y = position.y + a[look].y*i, z = position.z}, a[look].effect) addEvent(doAreaCombatHealth, i*300, pet, poke.damage, getThingPos(pet), areadirecion3[look], -poke.min, -poke.max * critico, 15) end end elseif poke.atk == "Rage" then if getDistanceBetween(getCreaturePosition(pet), getCreaturePosition(target)) > 1 then return doPlayerSendCancel(cid, "Target is far away.") end for i = 1,4 do if i == 1 then doSendMagicEffect(position, 168) doAreaCombatHealth(pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 142) else addEvent(doAreaCombatHealth, i*500, pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 142) end end elseif poke.atk == "Fire Fang" then if getDistanceBetween(getCreaturePosition(pet), getCreaturePosition(target)) > 1 then return doPlayerSendCancel(cid, "Target is far away.") end doAreaCombatHealth(pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 146) addEvent(doAreaCombatHealth, 200, pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 15) addEvent(doAreaCombatHealth, 400, pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 15) elseif poke.atk == "Dragon Claw" then if getDistanceBetween(getCreaturePosition(pet), getCreaturePosition(target)) > 1 then return doPlayerSendCancel(cid, "Target is far away.") end doAreaCombatHealth(pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 141) elseif poke.atk == "Magma Storm" then doAreaCombatHealth(pet, poke.damage, getThingPos(pet), area2, -poke.min, -poke.max * critico, 36) addEvent(doAreaCombatHealth, 800, pet, poke.damage, getThingPos(pet), area1, -poke.min, -poke.max * critico, 6) elseif poke.atk == "Wing Attack" then doAreaCombatHealth(pet, poke.damage, getThingPos(pet), area2, -poke.min, -poke.max * critico, 115) addEvent(doAreaCombatHealth, 500, pet, poke.damage, getThingPos(pet), area1, -poke.min, -poke.max * critico, 42) elseif poke.atk == "Bubbles" then if getDistanceBetween(getCreaturePosition(pet), getCreaturePosition(target)) > 5 then return doPlayerSendCancel(cid, "Target is far away.") end doSendDistanceShoot(getCreaturePosition(pet), getCreaturePosition(target), 2) doAreaCombatHealth(pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 68) elseif poke.atk == "Water Gun" then local a = { [0] = {x = 0, y = -1, effect={[1]=74,[2]=75,[3]=75,[4]=76}}, [1] = {x = 1, y = 0, effect={[1]=69,[2]=70,[3]=70,[4]=71}}, [2] = {x = 0, y = 1, effect={[1]=77,[2]=75,[3]=75,[4]=78}}, [3] = {x = -1, y = 0, effect={[1]=72,[2]=70,[3]=70,[4]=73}} } for i = 1,4 do doSendMagicEffect({x = position.x + a[look].x*i, y = position.y + a[look].y*i, z = position.z}, a[look].effect[i]) end doAreaCombatHealth(pet, poke.damage, getThingPos(pet), areadirecion2[look], -poke.min, -poke.max * critico, 59) elseif poke.atk == "Waterball" then for i = 1,5 do if i == 1 then addEvent(doAreaCombatHealth, 200 ,pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 68) doSendDistanceShoot(getPosToStorm(getCreaturePosition(target)), getCreaturePosition(target), 2) else addEvent(doAreaCombatHealth, i*700 ,pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 68) addEvent(doSendDistanceShoot, i*500, getPosToStorm(getCreaturePosition(target)), getCreaturePosition(target), 2) end end elseif poke.atk == "Aqua Tail" then doAreaCombatHealth(pet, poke.damage, getThingPos(pet), area2, -poke.min, -poke.max * critico, 160) elseif poke.atk == "Hydro Cannon" then local a = { [0] = {x = 0, y = -1, effect={[1]=74,[2]=75,[3]=75,[4]=75,[5]=75,[6]=75,[7]=75,[8]=76}}, [1] = {x = 1, y = 0, effect={[1]=69,[2]=70,[3]=70,[4]=70,[5]=70,[6]=70,[7]=70,[8]=71}}, [2] = {x = 0, y = 1, effect={[1]=77,[2]=75,[3]=75,[4]=75,[5]=75,[6]=75,[7]=75,[4]=78}}, [3] = {x = -1, y = 0, effect={[1]=72,[2]=70,[3]=70,[4]=70,[5]=70,[6]=70,[7]=70,[8]=73}} } for i = 1,8 do doSendMagicEffect({x = position.x + a[look].x*i, y = position.y + a[look].y*i, z = position.z}, a[look].effect[i]) end doAreaCombatHealth(pet, poke.damage, getThingPos(pet), areadirecion3[look], -poke.min, -poke.max * critico, 59) elseif poke.atk == "Harden" then function Harden(cid, rounds) if rounds == 0 then return false end if #getCreatureSummons(cid) == 0 then return false end doSendMagicEffect(getCreaturePosition(getCreatureSummons(cid)[1]), 144) return addEvent(Harden, 1000, cid, rounds-1) end addEvent(Harden, 500, cid, 40) elseif poke.atk == "Surf" then local a = { [0] = {x = 0, y = -1, effect= 66}, [1] = {x = 1, y = 0, effect= 67}, [2] = {x = 0, y = 1, effect= 64}, [3] = {x = -1, y = 0, effect= 65} } for i = 1,8 do if i == 1 then doSendMagicEffect({x = position.x + a[look].x*i, y = position.y + a[look].y*i, z = position.z}, a[look].effect) doAreaCombatHealth(pet, poke.damage, getThingPos(pet), areadirecion3[look], -poke.min, -poke.max * critico, 68) else addEvent(doSendMagicEffect, i*300, {x = position.x + a[look].x*i, y = position.y + a[look].y*i, z = position.z}, a[look].effect) addEvent(doAreaCombatHealth, i*300, pet, poke.damage, getThingPos(pet), areadirecion3[look], -poke.min, -poke.max * critico, 68) end end elseif poke.atk == "Hydropump" then local a = { [0] = {x = 0, y = -1, effect={[1]=74,[2]=75,[3]=75,[4]=75,[5]=75,[6]=75,[7]=75,[8]=76}}, [1] = {x = 1, y = 0, effect={[1]=69,[2]=70,[3]=70,[4]=70,[5]=70,[6]=70,[7]=70,[8]=71}}, [2] = {x = 0, y = 1, effect={[1]=77,[2]=75,[3]=75,[4]=75,[5]=75,[6]=75,[7]=75,[4]=78}}, [3] = {x = -1, y = 0, effect={[1]=72,[2]=70,[3]=70,[4]=70,[5]=70,[6]=70,[7]=70,[8]=73}} } for i = 1,8 do doSendMagicEffect({x = position.x + a[look].x*i, y = position.y + a[look].y*i, z = position.z}, a[look].effect[i]) end doAreaCombatHealth(pet, poke.damage, getThingPos(pet), areadirecion3[look], -poke.min, -poke.max * critico, 68) addEvent(doAreaCombatHealth, 400, pet, poke.damage, getThingPos(pet), areadirecion3[look], -poke.min, -poke.max * critico, 33) elseif poke.atk == "String Shot" then if getDistanceBetween(getCreaturePosition(pet), getCreaturePosition(target)) > 5 then return doPlayerSendCancel(cid, "Target is far away.") end doSendDistanceShoot(getCreaturePosition(pet), getCreaturePosition(target), 23) doAreaCombatHealth(pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 137) Paralize(target) elseif poke.atk == "Bug Bite" then if getDistanceBetween(getCreaturePosition(pet), getCreaturePosition(target)) > 1 then return doPlayerSendCancel(cid, "Target is far away.") end doAreaCombatHealth(pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 146) elseif poke.atk == "Whirlwind" then doAreaCombatHealth(pet, poke.damage, getThingPos(pet), areadirecion4[look], -poke.min, -poke.max * critico, 42) elseif poke.atk == "Super Sonic" then if getDistanceBetween(getCreaturePosition(pet), getCreaturePosition(target)) > 5 then return doPlayerSendCancel(cid, "Target is far away.") end for i = 1, 3 do if i == 1 then doSendDistanceShoot(getCreaturePosition(pet), getCreaturePosition(target), 24) else addEvent(doSendDistanceShoot, i * 200, getCreaturePosition(pet), getCreaturePosition(target), 24) end end addEvent(doSendAnimatedText, 500, getCreaturePosition(target), "CONF", 210) addEvent(Confused, 500, target, 15) elseif poke.atk == "Psybeam" then local a = { [0] = {x = 0, y = -1, effect={[1]=108,[2]=109,[3]=109,[4]=108}}, [1] = {x = 1, y = 0, effect={[1]=106,[2]=107,[3]=107,[4]=106}}, [2] = {x = 0, y = 1, effect={[1]=109,[2]=108,[3]=108,[4]=109}}, [3] = {x = -1, y = 0, effect={[1]=107,[2]=106,[3]=106,[4]=107}} } for i = 1,4 do doSendMagicEffect({x = position.x + a[look].x*i, y = position.y + a[look].y*i, z = position.z}, a[look].effect[i]) end doAreaCombatHealth(pet, poke.damage, getThingPos(pet), areadirecion2[look], -poke.min, -poke.max * critico, 59) elseif poke.atk == "Confusion" then doAreaCombatHealth(pet, poke.damage, getThingPos(pet), area3, -poke.min, -poke.max * critico, 136) elseif poke.atk == "Horn Attack" then if getDistanceBetween(getCreaturePosition(pet), getCreaturePosition(target)) > 1 then return doPlayerSendCancel(cid, "Target is far away.") end doAreaCombatHealth(pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 111) elseif poke.atk == "Poison Sting" then if getDistanceBetween(getCreaturePosition(pet), getCreaturePosition(target)) > 5 then return doPlayerSendCancel(cid, "Target is far away.") end doSendDistanceShoot(getCreaturePosition(pet), getCreaturePosition(target), 15) doAreaCombatHealth(pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 9) elseif poke.atk == "Fury Cutter" then if getDistanceBetween(getCreaturePosition(pet), getCreaturePosition(target)) > 1 then return doPlayerSendCancel(cid, "Target is far away.") end doAreaCombatHealth(pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 110) addEvent(doAreaCombatHealth, 500, pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 110) elseif poke.atk == "Pin Missile" then if getDistanceBetween(getCreaturePosition(pet), getCreaturePosition(target)) > 5 then return doPlayerSendCancel(cid, "Target is far away.") end for i = 1, 3 do if i == 1 then doSendDistanceShoot(getCreaturePosition(pet), getCreaturePosition(target), 13) doAreaCombatHealth(pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 137) else addEvent(doSendDistanceShoot, i * 200, getCreaturePosition(pet), getCreaturePosition(target), 13) addEvent(doAreaCombatHealth, i * 200, pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 137) end end elseif poke.atk == "Strafe" then if getDistanceBetween(getCreaturePosition(pet), getCreaturePosition(target)) > 1 then return doPlayerSendCancel(cid, "Target is far away.") end local dd = {142, 111, 110, 148} for i = 1,6 do af = math.random(4) if i == 1 then doAreaCombatHealth(pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, dd[af]) else addEvent(doAreaCombatHealth, i*500, pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, dd[af]) end end end -- END ATTACKS doPlayerSay(cid, getCreatureName(pet)..", use "..poke.atk..".", 1) setPlayerStorageValue(cid, storage, os.time()+cd) setPlayerStorageValue(cid, exst, os.time()+cdexst) local atknotcritic = {"Harden", "Poison Powder", "Sleep Powder", "Super Sonic", "Stun Spore"} if critico == 2 and not isInArray(atknotcritic, poke.atk) then doSendAnimatedText(getCreaturePosition(cid), "CRITICAL", 144) end return true end New Tag : <talkaction words="m1;m2;m3;m4;m5;m6;m7;m8;m9;m10;m11;m12" hide="yes" event="script" value="moves.lua"/> Pokemons Configurados [15/151] :
    1 ponto
  7. haiguri

    Talaturen's Ip Changer

    Novo Talaturen's IP Changer que funciona nos seguintes protocolos : 7,6, 7,8, 7,92, 8,0, 8,1, 8,11, 8,2, 8,21, 8,22, 8,3, 8,31, 8,4, 8,41, 8,42, 8,5, 8,52, 8,54, 8,55, 8,57, 8,61, 8,62 e 8,7. ScreenShot's: - Download : Download Aqui Scan : Scan Aqui Créditos pelos criadores do programa (Kibe e Talaturen) e a mim. Gostou? Rep + :]
    1 ponto
  8. miguel223

    Duvidas Com O /attr? Retirado

    Tópico fechado. Porque? Não uso mais Xtibia, não confiam em mim.
    1 ponto
  9. Bom galera, eu tinha postado esse script como resposta no Topico do xOtservx então um Usuario me pediu para criar um topico pra melhorar a visualização. Bom, o Script é o mesmo que o do xotservx entao qualquer Erro reporte no Topico dele. Link disponivel no Final do Topico Sobre os creditos vão 100% ao xOtservx eu só adicionei + pokemons. Então vo explicar o que fiz: Adicionei os Pokemons seguindo a Pokedex e o Nome das magias apartir de um arquivo chamado " AA - svke pokedex " Encontrado na pasta Pokedex do servidor Pokemon Dash Arquivo Anexado pra quem quiser. Aqui vai o Script agora com 147/151 Pokes: OBS - Não configurei, Cd, Atkmin, Atkmax, Damage nem nada. Só adicionei as magias aos Pokemons. Caso achen inutil ignoren o Topico Pois eu cresci sabendo que são pequenas atitudes que mudan as coisas ^^ V2 Do Script Galera Agora com 147/151 Pokes com Todos Ataques na Tabela. Agora falta adicionar as Magias restantes os Lvs, Cds, St, Atkmin e Atkmax fora o Damagetype Topico para duvidas quanto a instalação do script: Aqui AA - svke pokedex.txt
    1 ponto
  10. paulgrande

    [Arquivado]Age System

    aee meu age system fiz ele em c++ criei duas novas funçoes setold e getold intao libera muitas possibilidades
    1 ponto
  11. walefxavier

    Ajuda Aqui Por Favor E Urgente Rep++

    Olha as bolinhas é assim: <font color=black><br><div style="text-align: justify;"><img src="layouts/tibiacom/images/content/bullet.gif"> <font size="3"><b>Porque Comprar Vip ?</b></font> Na verdade é uma imagem que ja tem na pasta do Gesior.Adicione isso no lugar que colocar a bolinha... Ja o espaço acho que seria vc add uma linha assim: </div>
    1 ponto
  12. xXPaquitoXx

    Matar Player E Tirar Coração

    nao funciona em server tfs
    1 ponto
  13. Veja se esses tutoriais ajudam: Tutorial 1 Tutorial 2
    1 ponto
  14. KamuiRunt

    [Problema] Erro Dos Itens

    Na verdade é no 'mapa', por que se fosse no ot, você não conseguiria abrir ele sem os itens que você citou. Seu server da crash pois é imcompativel os itens. Muito provavelmente o item do editor está 'bugado'. Faça o seguinte: Pegue o arquivo itenx.xml do SEU SERVER e coloque na pasta do SEU EDITOR. Feito isso, o problema deve ser resolvido. Qualquer dúvida, manda um e-mail aqui no XTibia. Se te ajudei.. rep+. Abraços.
    1 ponto
  15. Crie um arquivo rep.sql e coloque isto dentro: ALTER TABLE `players` ADD COLUMN `rep` INT( 11 ) NOT NULL DEFAULT '0' COMMENT 'Cyber''s REPSystem © OTLand.net' Vá no seu Database e clique em "Importar" , selecione o arquivo que você criou que é o rep.sql e clica em Executar (:
    1 ponto
  16. Natanael Beckman

    Problema No Site

    Nesse topico aqui fala sobre ip fixo: http://www.xtibia.com/forum/topic/68920-botando-seu-servidor-online-e-colocando-ip-fixo/ Sobre o Recaptha usa o createaccount de baixo. createaccount.php
    1 ponto
  17. Não postei antes o link para evitar que falem que é virus. Ot Item Editor 8.54 Scan Virus Total Ot Item Editor - o Scan Virus Total acusa 1 virus. Dll's Ot Item Editor 8.54 Scan Virus Total² Dll's Ot Item Editor - o Scan Virus Total acusa 2 virus. Obs: Não são virus, mais o anti-virus identifica como.
    1 ponto
  18. 1877799

    [Encerrado] [Ajuda] Account Manager

    Pelo que eu saiba isso acontece quando tem muitas contas e personagens no seu database ai o Account manager não cria mais chars , exclua contas inativas e veja se resolve o problema. Eu achei esse script para SQLite: DELETE FROM `accounts` WHERE `lastday` < strftime('%s','now') - 60 * 60 * 24 * 30 Ele deleta accounts inativas por 30 dias, se quiser aumentar o tempo aonde tem o 30 é so aumentar. Para colocar ele no Database SQLite é assim, Abra o SQLite, vá em Open SQL Query Editor , cole o script que eu postei e depois clica em Execute Query ou aperta F9. - Execute Query
    1 ponto
  19. Vodkart

    Npc Saffari

    ah mal não copiei todo script rairairai local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) 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 onThink() npcHandler:onThink() end function SellItem(cid, message, keywords, parameters, node) if(not npcHandler:isFocused(cid)) then return false end local pokeball = {2146, 2147, 2150} for i = 1, #pokeball do if getPlayerItemCount(cid, pokeball[i]) >= 1 then npcHandler:say('Você não pode ser teleportado pois tem pokebolas!', cid) return true end end if doPlayerRemoveMoney(cid, parameters.price) == TRUE then doPlayerAddItem(cid,parameters.item,parameters.count) doTeleportThing(cid, parameters.teleport) else npcHandler:say('Desculpe, voce nao tem 5 hundred dollars!', cid) end npcHandler:resetNpc() return true end local node1 = keywordHandler:addKeyword({'saffari'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'voce quer ir para saffari zona com 30 ' .. getItemNameById(2150) .. 's por 5 hundred dollars?'}) node1:addChildKeyword({'yes'}, SellItem, {price = 50000,item = 2150,count = 30,teleport = {x = 1183, y = 1303, z = 7}}) node1:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Ok, then.', reset = true}) npcHandler:addModule(FocusModule:new())
    1 ponto
  20. oiacaio

    [Talkactions]Sistema M1 Do Xotservx

    Pessoal venho aqui trazer o sistema de move do xotservx, mas com todos 151 pokes(nao tem os movements dos shinys), tenho o m1 e o m2, que achei em um serve, nao sei quem fez, mas vou postar aqui pra vocês pra facilitar a edição das spells. M1: function isSummon(uid) return uid ~= getCreatureMaster(uid) or false end function doSendMagicEffectInArea(pos,effect,area,cid) -- Function by mock local centro = {} centro.y = math.floor(table.getn(area)/2)+1 for y = 1, table.getn(area) do for x = 1, table.getn(area[y]) do if area[y][x] > 0 then centro.x = math.floor(table.getn(area[y])/2)+1 if type(effect) == 'table' then doSendMagicEffect({x=pos.x+x-centro.x,y=pos.y+y-centro.y,z= pos.z},(effect[area[y][x]] or 0),cid) else doSendMagicEffect({x=pos.x+x-centro.x,y=pos.y+y-centro.y,z= pos.z},effect or 0,cid) end end end end return true end function getTime(s) -- by : Mkalo. local n = math.floor(s / 60) s = s - (60 * n) return n, s end -- AREAS -- local arr1 = { {1, 1, 1}, {1, 0, 1}, {1, 1, 1}, } local arr2 = { {0, 0, 0, 1, 0, 0, 0}, {0, 0, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 0, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 0, 0}, {0, 0, 0, 1, 0, 0, 0}, } local pokes = { ["Bulbasaur"] = {attackname = "Quick Attack", level = 1, storage = 1900, cd = 2, atkmin = 40, atkmax = 60, range = 1, typeattack = "intarget", effecta = 111, type = COMBAT_PHYSICALDAMAGE}, ["Ivysaur"] = {attackname = "Quick Attack", level = 40, storage = 1900, cd = 2, atkmin = 100, atkmax = 150, range = 1, typeattack = "intarget", effecta = 111, type = COMBAT_PHYSICALDAMAGE}, ["Venusaur"] = {attackname = "Quick Attack", level = 85, storage = 1900, cd = 2, atkmin = 160, atkmax = 210, range = 1, typeattack = "intarget", effecta = 111, type = COMBAT_PHYSICALDAMAGE}, ["Charmander"] = {attackname = "Scratch", level = 1, storage = 1901, cd = 2, atkmin = 30, atkmax = 50, range = 1, typeattack = "intarget", effecta = 142, type = COMBAT_PHYSICALDAMAGE}, ["Charmeleon"] = {attackname = "Scratch", level = 40, storage = 1901, cd = 2, atkmin = 90, atkmax = 140, range = 1, typeattack = "intarget", effecta = 142, type = COMBAT_PHYSICALDAMAGE}, ["Charizard"] = {attackname = "Scratch", level = 85, storage = 1901, cd = 2, atkmin = 150, atkmax = 200, range = 1, typeattack = "intarget", effecta = 142, type = COMBAT_PHYSICALDAMAGE}, ["Squirtle"] = {attackname = "Headbutt", level = 1, storage = 1902, cd = 2, atkmin = 40, atkmax = 60, range = 1, typeattack = "intarget", effecta = 118, type = COMBAT_PHYSICALDAMAGE}, ["Wartortle"] = {attackname = "Headbutt", level = 40, storage = 1902, cd = 2, atkmin = 100, atkmax = 150, range = 1, typeattack = "intarget", effecta = 118, type = COMBAT_PHYSICALDAMAGE}, ["Blastoise"] = {attackname = "Headbutt", level = 85, storage = 1902, cd = 2, atkmin = 160, atkmax = 210, range = 1, typeattack = "intarget", effecta = 118, type = COMBAT_PHYSICALDAMAGE}, ["Caterpie"] = {attackname = "Headbutt", level = 1, storage = 1902, cd = 2, atkmin = 5, atkmax = 15, range = 1, typeattack = "intarget", effecta = 118, type = COMBAT_PHYSICALDAMAGE}, ["Metapod"] = {attackname = "String Shot", level = 15, storage = 1903, cd = 2, atkmin = 30, atkmax = 60, range = 1, typeattack = "intarget", effecta = 137, type = COMBAT_PHYSICALDAMAGE}, ["Butterfree"] = {attackname = "String Shot", level = 35, storage = 1903, cd = 2, atkmin = 60, atkmax = 80, range = 1, typeattack = "intarget", effecta = 118, type = COMBAT_PHYSICALDAMAGE}, ["Weedle"] = {attackname = "Horn Attack", level = 1, storage = 1904, cd = 2, atkmin = 5, atkmax = 15, range = 1, typeattack = "intarget", effecta = 9, type = COMBAT_PHYSICALDAMAGE}, ["Kakuna"] = {attackname = "String Shot", level = 15, storage = 1903, cd = 2, atkmin = 30, atkmax = 60, range = 1, typeattack = "intarget", effecta = 137, type = COMBAT_PHYSICALDAMAGE}, ["Beedrill"] = {attackname = "String Shot", level = 35, storage = 1903, cd = 2, atkmin = 60, atkmax = 80, range = 1, typeattack = "intarget", effecta = 118, type = COMBAT_PHYSICALDAMAGE}, ["Pidgey"] = {attackname = "Quick Attack", level = 1, storage = 1900, cd = 2, atkmin = 5, atkmax = 15, range = 1, typeattack = "intarget", effecta = 111, type = COMBAT_PHYSICALDAMAGE}, ["Pidgeotto"] = {attackname = "Quick Attack", level = 20, storage = 1900, cd = 2, atkmin = 30, atkmax = 60, range = 1, typeattack = "intarget", effecta = 111, type = COMBAT_PHYSICALDAMAGE}, ["Pidgeot"] = {attackname = "Quick Attack", level = 65, storage = 1900, cd = 2, atkmin = 150, atkmax = 200, range = 1, typeattack = "intarget", effecta = 111, type = COMBAT_PHYSICALDAMAGE}, ["Rattata"] = {attackname = "Quick Attack", level = 1, storage = 1900, cd = 2, atkmin = 5, atkmax = 15, range = 1, typeattack = "intarget", effecta = 111, type = COMBAT_PHYSICALDAMAGE}, ["Raticate"] = {attackname = "Quick Attack", level = 25, storage = 1900, cd = 2, atkmin = 60, atkmax = 80, range = 1, typeattack = "intarget", effecta = 111, type = COMBAT_PHYSICALDAMAGE}, ["Spearow"] = {attackname = "Quick Attack", level = 1, storage = 1900, cd = 2, atkmin = 5, atkmax = 15, range = 1, typeattack = "intarget", effecta = 111, type = COMBAT_PHYSICALDAMAGE}, ["Fearow"] = {attackname = "Quick Attack", level = 50, storage = 1900, cd = 2, atkmin = 90, atkmax = 140, range = 1, typeattack = "intarget", effecta = 111, type = COMBAT_PHYSICALDAMAGE}, ["Ekans"] = {attackname = "Bite", level = 15, storage = 1905, cd = 2, atkmin = 10, atkmax = 25, range = 1, typeattack = "intarget", effecta = 138, type = COMBAT_PHYSICALDAMAGE}, ["Arbok"] = {attackname = "Bite", level = 35, storage = 1905, cd = 2, atkmin = 60, atkmax = 80, range = 1, typeattack = "intarget", effecta = 138, type = COMBAT_PHYSICALDAMAGE}, ["Pikachu"] = {attackname = "Thunder Shock", level = 20, storage = 1906, cd = 2, atkmin = 10, atkmax = 25, range = 1, typeattack = "area", arr = arr2, effecta = 207, type = COMBAT_PHYSICALDAMAGE}, ["Raichu"] = {attackname = "Thunder Shock", level = 50, storage = 1906, cd = 2, atkmin = 150, atkmax = 200, range = 1, typeattack = "area", arr = arr2, effecta = 207, type = COMBAT_PHYSICALDAMAGE}, ["Sandshrew"] = {attackname = "Sand Attack", level = 20, storage = 1907, cd = 2, atkmin = 10, atkmax = 25, range = 1, typeattack = "direcion", effectdir0 = 122, effectdir1 = 121, effectdir2 = 120, effectdir3 = 119, type = COMBAT_PHYSICALDAMAGE}, ["Sandslash"] = {attackname = "Sand Attack", level = 55, storage = 1907, cd = 2, atkmin = 150, atkmax = 200, range = 1, typeattack = "direcion", effectdir0 = 122, effectdir1 = 121, effectdir2 = 120, effectdir3 = 119, type = COMBAT_PHYSICALDAMAGE}, ["Nidoranfe"] = {attackname = "Quick Attack", level = 10, storage = 1900, cd = 2, atkmin = 10, atkmax = 25, range = 1, typeattack = "intarget", effecta = 111, type = COMBAT_PHYSICALDAMAGE}, ["Nidorina"] = {attackname = "Quick Attack", level = 30, storage = 1900, cd = 2, atkmin = 60, atkmax = 80, range = 1, typeattack = "intarget", effecta = 111, type = COMBAT_PHYSICALDAMAGE}, ["Nidoqueen"] = {attackname = "Quick Attack", level = 65, storage = 1900, cd = 2, atkmin = 150, atkmax = 200, range = 1, typeattack = "intarget", effecta = 111, type = COMBAT_PHYSICALDAMAGE}, ["Nidoranma"] = {attackname = "Quick Attack", level = 10, storage = 1900, cd = 2, atkmin = 10, atkmax = 25, range = 1, typeattack = "intarget", effecta = 111, type = COMBAT_PHYSICALDAMAGE}, ["Nidorino"] = {attackname = "Quick Attack", level = 30, storage = 1900, cd = 2, atkmin = 60, atkmax = 80, range = 1, typeattack = "intarget", effecta = 111, type = COMBAT_PHYSICALDAMAGE}, ["Nidoking"] = {attackname = "Quick Attack", level = 65, storage = 1900, cd = 2, atkmin = 150, atkmax = 200, range = 1, typeattack = "intarget", effecta = 111, type = COMBAT_PHYSICALDAMAGE}, ["Clefairy"] = {attackname = "Doubleslap", level = 20, storage = 1908, cd = 2, atkmin = 30, atkmax = 60, range = 1, typeattack = "intarget", effecta = 148, type = COMBAT_PHYSICALDAMAGE}, ["Clefable"] = {attackname = "Doubleslap", level = 45, storage = 1908, cd = 2, atkmin = 90, atkmax = 140, range = 1, typeattack = "intarget", effecta = 148, type = COMBAT_PHYSICALDAMAGE}, ["Vulpix"] = {attackname = "Quick Attack", level = 15, storage = 1900, cd = 2, atkmin = 30, atkmax = 60, range = 1, typeattack = "intarget", effecta = 111, type = COMBAT_PHYSICALDAMAGE}, ["Ninetales"] = {attackname = "Quick Attack", level = 70, storage = 1900, cd = 2, atkmin = 150, atkmax = 200, range = 1, typeattack = "intarget", effecta = 111, type = COMBAT_PHYSICALDAMAGE}, ["Jigglypuff"] = {attackname = "Doubleslap", level = 20, storage = 1908, cd = 2, atkmin = 30, atkmax = 60, range = 1, typeattack = "intarget", effecta = 148, type = COMBAT_PHYSICALDAMAGE}, ["Wigglytuff"] = {attackname = "Doubleslap", level = 45, storage = 1908, cd = 2, atkmin = 90, atkmax = 140, range = 1, typeattack = "intarget", effecta = 148, type = COMBAT_PHYSICALDAMAGE}, ["Zubat"] = {attackname = "Super Sonic", level = 15, storage = 1909, cd = 2, atkmin = 30, atkmax = 60, range = 1, typeattack = "intarget", effecta = 22, type = COMBAT_PHYSICALDAMAGE}, ["Golbat"] = {attackname = "Super Sonic", level = 35, storage = 1909, cd = 2, atkmin = 60, atkmax = 80, range = 1, typeattack = "intarget", effecta = 22, type = COMBAT_PHYSICALDAMAGE}, ["Gloom"] = {attackname = "Absorb", level = 25, storage = 1910, cd = 2, atkmin = 30, atkmax = 60, range = 1, typeattack = "intarget", effecta = 8, type = COMBAT_PHYSICALDAMAGE}, ["Vileplume"] = {attackname = "Absorb", level = 50, storage = 1910, cd = 2, atkmin = 90, atkmax = 140, range = 1, typeattack = "intarget", effecta = 8, type = COMBAT_PHYSICALDAMAGE}, ["Paras"] = {attackname = "Absorb", level = 5, storage = 1910, cd = 2, atkmin = 5, atkmax = 20, range = 1, typeattack = "intarget", effecta = 8, type = COMBAT_PHYSICALDAMAGE}, ["Parasect"] = {attackname = "Absorb", level = 50, storage = 1910, cd = 2, atkmin = 90, atkmax = 140, range = 1, typeattack = "intarget", effecta = 8, type = COMBAT_PHYSICALDAMAGE}, ["Venonat"] = {attackname = "Absorb", level = 5, storage = 1910, cd = 2, atkmin = 5, atkmax = 20, range = 1, typeattack = "intarget", effecta = 8, type = COMBAT_PHYSICALDAMAGE}, ["Venomoth"] = {attackname = "Absorb", level = 50, storage = 1910, cd = 2, atkmin = 90, atkmax = 140, range = 1, typeattack = "intarget", effecta = 8, type = COMBAT_PHYSICALDAMAGE}, ["Diglett"] = {attackname = "Sand Attack", level = 10, storage = 1907, cd = 2, atkmin = 10, atkmax = 25, range = 1, typeattack = "direcion", effectdir0 = 122, effectdir1 = 121, effectdir2 = 120, effectdir3 = 119, type = COMBAT_PHYSICALDAMAGE}, ["Dugtrio"] = {attackname = "Sand Attack", level = 35, storage = 1907, cd = 2, atkmin = 60, atkmax = 80, range = 1, typeattack = "direcion", effectdir0 = 122, effectdir1 = 121, effectdir2 = 120, effectdir3 = 119, type = COMBAT_PHYSICALDAMAGE}, ["Meowth"] = {attackname = "Slash", level = 15, storage = 1912, cd = 2, atkmin = 10, atkmax = 25, range = 1, typeattack = "intarget", effecta = 159, type = COMBAT_PHYSICALDAMAGE}, ["Persian"] = {attackname = "Slash", level = 30, storage = 1912, cd = 2, atkmin = 60, atkmax = 80, range = 1, typeattack = "intarget", effecta = 159, type = COMBAT_PHYSICALDAMAGE}, ["Psyduck"] = {attackname = "Water Gun", level = 20, storage = 1913, cd = 2, atkmin = 30, atkmax = 60, range = 1, typeattack = "intarget", effecta = 68, type = COMBAT_PHYSICALDAMAGE}, ["Golduck"] = {attackname = "Doubleslap", level = 55, storage = 1908, cd = 2, atkmin = 90, atkmax = 140, range = 1, typeattack = "intarget", effecta = 148, type = COMBAT_PHYSICALDAMAGE}, ["Mankey"] = {attackname = "Scratch", level = 15, storage = 1901, cd = 2, atkmin = 10, atkmax = 25, range = 1, typeattack = "intarget", effecta = 142, type = COMBAT_PHYSICALDAMAGE}, ["Primeape"] = {attackname = "Scratch", level = 35, storage = 1901, cd = 2, atkmin = 60, atkmax = 80, range = 1, typeattack = "intarget", effecta = 142, type = COMBAT_PHYSICALDAMAGE}, ["Growlithe"] = {attackname = "Roar", level = 20, storage = 1914, cd = 2, atkmin = 30, atkmax = 60, range = 1, typeattack = "intarget", effecta = 159, type = COMBAT_PHYSICALDAMAGE}, ["Arcanine"] = {attackname = "Roar", level = 90, storage = 1914, cd = 2, atkmin = 150, atkmax = 200, range = 1, typeattack = "intarget", effecta = 159, type = COMBAT_PHYSICALDAMAGE}, ["Poliwag"] = {attackname = "Doubleslap", level = 5, storage = 1908, cd = 2, atkmin = 5, atkmax = 20, range = 1, typeattack = "intarget", effecta = 148, type = COMBAT_PHYSICALDAMAGE}, ["Poliwhirl"] = {attackname = "MudShot", level = 25, storage = 1915, cd = 2, atkmin = 60, atkmax = 80, range = 1, typeattack = "intarget", effecta = 116, type = COMBAT_PHYSICALDAMAGE}, ["Poliwrath"] = {attackname = "MudShot", level = 65, storage = 1915, cd = 2, atkmin = 150, atkmax = 200, range = 1, typeattack = "intarget", effecta = 116, type = COMBAT_PHYSICALDAMAGE}, ["Abra"] = {attackname = "Psybeam", level = 20, storage = 1916, cd = 2, atkmin = 30, atkmax = 60, range = 1, typeattack = "direcion", effectdir0 = 108, effectdir1 = 109, effectdir2 = 108, effectdir3 = 106, effectdir4 = 107, effectdir5 = 106, effectdir6 = 108, effectdir7 = 109, effectdir8 = 108, effectdir9 = 107, effectdir10 = 106, effectdir11 = 107, type = COMBAT_PHYSICALDAMAGE}, ["Kadabra"] = {attackname = "Psybeam", level = 45, storage = 1916, cd = 2, atkmin = 90, atkmax = 140, range = 1, typeattack = "direcion", effectdir0 = 108, effectdir1 = 109, effectdir2 = 108, effectdir3 = 106, effectdir4 = 107, effectdir5 = 106, effectdir6 = 108, effectdir7 = 109, effectdir8 = 108, effectdir9 = 107, effectdir10 = 106, effectdir11 = 107, type = COMBAT_PHYSICALDAMAGE}, ["Alakazam"] = {attackname = "Psybeam", level = 80, storage = 1916, cd = 2, atkmin = 150, atkmax = 200, range = 1, typeattack = "direcion", effectdir0 = 108, effectdir1 = 109, effectdir2 = 108, effectdir3 = 106, effectdir4 = 107, effectdir5 = 106, effectdir6 = 108, effectdir7 = 109, effectdir8 = 108, effectdir9 = 107, effectdir10 = 106, effectdir11 = 107, type = COMBAT_PHYSICALDAMAGE}, ["Machop"] = {attackname = "Triple Punch", level = 20, storage = 1917, cd = 2, atkmin = 30, atkmax = 60, range = 1, typeattack = "intarget", effecta = 110, type = COMBAT_PHYSICALDAMAGE}, ["Machoke"] = {attackname = "Triple Punch", level = 47, storage = 1917, cd = 2, atkmin = 90, atkmax = 140, range = 1, typeattack = "intarget", effecta = 110, type = COMBAT_PHYSICALDAMAGE}, ["Machamp"] = {attackname = "Triple Punch", level = 70, storage = 1917, cd = 2, atkmin = 150, atkmax = 200, range = 1, typeattack = "intarget", effecta = 110, type = COMBAT_PHYSICALDAMAGE}, ["Bellsprout"] = {attackname = "Razor Leaf", level = 10, storage = 1918, cd = 2, atkmin = 10, atkmax = 25, range = 1, typeattack = "intarget", effecta = 79, type = COMBAT_PHYSICALDAMAGE}, ["Weepinbell"] = {attackname = "Razor Leaf", level = 25, storage = 1918, cd = 2, atkmin = 30, atkmax = 60, range = 1, typeattack = "intarget", effecta = 79, type = COMBAT_PHYSICALDAMAGE}, ["Victreebel"] = {attackname = "Razor Leaf", level = 50, storage = 1918, cd = 2, atkmin = 90, atkmax = 140, range = 1, typeattack = "intarget", effecta = 79, type = COMBAT_PHYSICALDAMAGE}, ["Tentacool"] = {attackname = "Acid", level = 15, storage = 1928, cd = 2, atkmin = 10, atkmax = 30, range = 1, typeattack = "intarget", effecta = 20, type = COMBAT_PHYSICALDAMAGE}, ["Tentacruel"] = {attackname = "Super Sonic", level = 75, storage = 1909, cd = 2, atkmin = 150, atkmax = 200, range = 1, typeattack = "intarget", effecta = 22, type = COMBAT_PHYSICALDAMAGE}, ["Geodude"] = {attackname = "Rock Throw", level = 15, storage = 1919, cd = 2, atkmin = 10, atkmax = 30, range = 1, typeattack = "intarget", effecta = 34, type = COMBAT_PHYSICALDAMAGE}, ["Graveler"] = {attackname = "Rock Throw", level = 40, storage = 1919, cd = 2, atkmin = 90, atkmax = 140, range = 1, typeattack = "intarget", effecta = 34, type = COMBAT_PHYSICALDAMAGE}, ["Golem"] = {attackname = "Rock Throw", level = 70, storage = 1919, cd = 2, atkmin = 150, atkmax = 200, range = 1, typeattack = "intarget", effecta = 34, type = COMBAT_PHYSICALDAMAGE}, ["Ponyta"] = {attackname = "Quick Attack", level = 20, storage = 1900, cd = 2, atkmin = 30, atkmax = 60, range = 1, typeattack = "intarget", effecta = 111, type = COMBAT_PHYSICALDAMAGE}, ["Rapidash"] = {attackname = "Quick Attack", level = 55, storage = 1900, cd = 2, atkmin = 90, atkmax = 140, range = 1, typeattack = "intarget", effecta = 111, type = COMBAT_PHYSICALDAMAGE}, ["Slowpoke"] = {attackname = "Aqua Tail", level = 20, storage = 1920, cd = 2, atkmin = 30, atkmax = 60, range = 1, typeattack = "intarget", effecta = 1, type = COMBAT_PHYSICALDAMAGE}, ["Slowbro"] = {attackname = "Aqua Tail", level = 45, storage = 1920, cd = 2, atkmin = 90, atkmax = 140, range = 1, typeattack = "intarget", effecta = 1, type = COMBAT_PHYSICALDAMAGE}, ["Magnemite"] = {attackname = "Super Sonic", level = 15, storage = 1909, cd = 2, atkmin = 10, atkmax = 25, range = 1, typeattack = "intarget", effecta = 22, type = COMBAT_PHYSICALDAMAGE}, ["Magneton"] = {attackname = "Super Sonic", level = 45, storage = 1909, cd = 2, atkmin = 90, atkmax = 140, range = 1, typeattack = "intarget", effecta = 22, type = COMBAT_PHYSICALDAMAGE}, ["Farfetch'd"] = {attackname = "Sand Attack", level = 40, storage = 1907, cd = 2, atkmin = 60, atkmax = 80, range = 1, typeattack = "direcion", effectdir0 = 122, effectdir1 = 121, effectdir2 = 120, effectdir3 = 119, type = COMBAT_PHYSICALDAMAGE}, ["Doduo"] = {attackname = "Sand Attack", level = 10, storage = 1907, cd = 2, atkmin = 10, atkmax = 25, range = 1, typeattack = "direcion", effectdir0 = 122, effectdir1 = 121, effectdir2 = 120, effectdir3 = 119, type = COMBAT_PHYSICALDAMAGE}, ["Dodrio"] = {attackname = "Sand Attack", level = 45, storage = 1907, cd = 2, atkmin = 90, atkmax = 140, range = 1, typeattack = "direcion", effectdir0 = 122, effectdir1 = 121, effectdir2 = 120, effectdir3 = 119, type = COMBAT_PHYSICALDAMAGE}, ["Seel"] = {attackname = "Headbutt", level = 20, storage = 1902, cd = 2, atkmin = 30, atkmax = 60, range = 1, typeattack = "intarget", effecta = 118, type = COMBAT_PHYSICALDAMAGE}, ["Dewgong"] = {attackname = "Aqua Tail", level = 45, storage = 1920, cd = 2, atkmin = 90, atkmax = 140, range = 1, typeattack = "intarget", effecta = 1, type = COMBAT_PHYSICALDAMAGE}, ["Grimer"] = {attackname = "Mud Shot", level = 15, storage = 1915, cd = 2, atkmin = 10, atkmax = 25, range = 1, typeattack = "intarget", effecta = 116, type = COMBAT_PHYSICALDAMAGE}, ["Muk"] = {attackname = "Mud Shot ", level = 35, storage = 1915, cd = 2, atkmin = 60, atkmax = 80, range = 1, typeattack = "intarget", effecta = 116, type = COMBAT_PHYSICALDAMAGE}, ["Shellder"] = {attackname = "Lick", level = 10, storage = 1921, cd = 2, atkmin = 10, atkmax = 25, range = 1, typeattack = "intarget", effecta = 145, type = COMBAT_PHYSICALDAMAGE}, ["Cloyster"] = {attackname = "Lick", level = 60, storage = 1921, cd = 2, atkmin = 90, atkmax = 140, range = 1, typeattack = "intarget", effecta = 145, type = COMBAT_PHYSICALDAMAGE}, ["Gastly"] = {attackname = "Lick", level = 20, storage = 1921, cd = 2, atkmin = 30, atkmax = 60, range = 1, typeattack = "intarget", effecta = 145, type = COMBAT_PHYSICALDAMAGE}, ["Haunter"] = {attackname = "Lick", level = 45, storage = 1921, cd = 2, atkmin = 90, atkmax = 140, range = 1, typeattack = "intarget", effecta = 145, type = COMBAT_PHYSICALDAMAGE}, ["Gengar"] = {attackname = "Lick", level = 80, storage = 1921, cd = 2, atkmin = 150, atkmax = 200, range = 1, typeattack = "intarget", effecta = 145, type = COMBAT_PHYSICALDAMAGE}, ["Onix"] = {attackname = "Sand Attack", level = 50, storage = 1907, cd = 2, atkmin = 90, atkmax = 140, range = 1, typeattack = "direcion", effectdir0 = 122, effectdir1 = 121, effectdir2 = 120, effectdir3 = 119, type = COMBAT_PHYSICALDAMAGE}, ["Drowzee"] = {attackname = "Headbutt", level = 25, storage = 1902, cd = 2, atkmin = 30, atkmax = 60, range = 1, typeattack = "intarget", effecta = 118, type = COMBAT_PHYSICALDAMAGE}, ["Hypno"] = {attackname = "Headbutt", level = 55, storage = 1902, cd = 2, atkmin = 90, atkmax = 140, range = 1, typeattack = "intarget", effecta = 118, type = COMBAT_PHYSICALDAMAGE}, ["Krabby"] = {attackname = "Bubbles", level = 10, storage = 1922, cd = 2, atkmin = 10, atkmax = 25, range = 1, typeattack = "intarget", effecta = 68, type = COMBAT_PHYSICALDAMAGE}, ["Kingler"] = {attackname = "Bubbles", level = 40, storage = 1922, cd = 2, atkmin = 90, atkmax = 140, range = 1, typeattack = "intarget", effecta = 68, type = COMBAT_PHYSICALDAMAGE}, ["Voltorb"] = {attackname = "Thunder Shock", level = 10, storage = 1906, cd = 2, atkmin = 10, atkmax = 25, range = 1, typeattack = "area", arr = arr2, effecta = 207, type = COMBAT_PHYSICALDAMAGE}, ["Electrode"] = {attackname = "Thunder Shock", level = 35, storage = 906, cd = 2, atkmin = 60, atkmax = 80, range = 1, typeattack = "area", arr = arr2, effecta = 207, type = COMBAT_PHYSICALDAMAGE}, ["Exeggcute"] = {attackname = "Hypnosis", level = 15, storage = 1923, cd = 2, atkmin = 10, atkmax = 25, range = 1, typeattack = "area", arr = arr2, effecta = 136, type = COMBAT_PHYSICALDAMAGE}, ["Exeggutor"] = {attackname = "Hypnosis", level = 55, storage = 1923, cd = 2, atkmin = 90, atkmax = 140, range = 1, typeattack = "area", arr = arr2, effecta = 136, type = COMBAT_PHYSICALDAMAGE}, ["Cubone"] = {attackname = "Headbutt", level = 10, storage = 1902, cd = 2, atkmin = 30, atkmax = 60, range = 1, typeattack = "intarget", effecta = 118, type = COMBAT_PHYSICALDAMAGE}, ["Marowak"] = {attackname = "Headbutt", level = 55, storage = 1902, cd = 2, atkmin = 90, atkmax = 140, range = 1, typeattack = "intarget", effecta = 118, type = COMBAT_PHYSICALDAMAGE}, ["Hitmonlee"] = {attackname = "Triple Kick Lee", level = 60, storage = 1924, cd = 2, atkmin = 90, atkmax = 140, range = 1, typeattack = "intarget", effecta = 110, type = COMBAT_PHYSICALDAMAGE}, ["Hitmonchan"] = {attackname = "Triple Punch", level = 60, storage = 1924, cd = 2, atkmin = 90, atkmax = 140, range = 1, typeattack = "intarget", effecta = 110, type = COMBAT_PHYSICALDAMAGE}, ["Lickitung"] = {attackname = "Lick", level = 55, storage = 1921, cd = 2, atkmin = 90, atkmax = 140, range = 1, typeattack = "intarget", effecta = 145, type = COMBAT_PHYSICALDAMAGE}, ["Koffing"] = {attackname = "Mud Shot", level = 15, storage = 1915, cd = 2, atkmin = 10, atkmax = 25, range = 1, typeattack = "intarget", effecta = 116, type = COMBAT_PHYSICALDAMAGE}, ["Weezing"] = {attackname = "Mud Shot", level = 35, storage = 1915, cd = 2, atkmin = 60, atkmax = 80, range = 1, typeattack = "intarget", effecta = 116, type = COMBAT_PHYSICALDAMAGE}, ["Chansey"] = {attackname = "Doubleslap", level = 60, storage = 1908, cd = 2, atkmin = 150, atkmax = 200, range = 1, typeattack = "intarget", effecta = 148, type = COMBAT_PHYSICALDAMAGE}, ["Tangela"] = {attackname = "Absorb", level = 50, storage = 1910, cd = 2, atkmin = 90, atkmax = 140, range = 1, typeattack = "intarget", effecta = 8, type = COMBAT_PHYSICALDAMAGE}, ["Kangaskhan"] = {attackname = "Bite", level = 80, storage = 1905, cd = 2, atkmin = 150, atkmax = 200, range = 1, typeattack = "intarget", effecta = 138, type = COMBAT_PHYSICALDAMAGE}, ["Horsea"] = {attackname = "Mud Shot", level = 10, storage = 1915, cd = 2, atkmin = 10, atkmax = 25, range = 1, typeattack = "intarget", effecta = 116, type = COMBAT_PHYSICALDAMAGE}, ["Seadra"] = {attackname = "Mud Shot", level = 45, storage = 1915, cd = 2, atkmin = 90, atkmax = 140, range = 1, typeattack = "intarget", effecta = 116, type = COMBAT_PHYSICALDAMAGE}, ["Goldeen"] = {attackname = "Horn Attack", level = 10, storage = 1904, cd = 2, atkmin = 10, atkmax = 25, range = 1, typeattack = "intarget", effecta = 9, type = COMBAT_PHYSICALDAMAGE}, ["Seaking"] = {attackname = "Horn Attack", level = 45, storage = 1904, cd = 2, atkmin = 60, atkmax = 80, range = 1, typeattack = "intarget", effecta = 9, type = COMBAT_PHYSICALDAMAGE}, ["Staryu"] = {attackname = "Swift", level = 15, storage = 1925, cd = 2, atkmin = 30, atkmax = 60, range = 1, typeattack = "intarget", effecta = 7, type = COMBAT_PHYSICALDAMAGE}, ["Starmie"] = {attackname = "Swift", level = 35, storage = 1925, cd = 2, atkmin = 60, atkmax = 80, range = 1, typeattack = "intarget", effecta = 7, type = COMBAT_PHYSICALDAMAGE}, ["Mr.Mime"] = {attackname = "Doubleslap", level = 60, storage = 1908, cd = 2, atkmin = 90, atkmax = 160, range = 1, typeattack = "intarget", effecta = 148, type = COMBAT_PHYSICALDAMAGE}, ["Scyther"] = {attackname = "Quick Attack", level = 80, storage = 1900, cd = 2, atkmin = 160, atkmax = 210, range = 1, typeattack = "intarget", effecta = 111, type = COMBAT_PHYSICALDAMAGE}, ["Jynx"] = {attackname = "Lovely Kiss", level = 80, storage = 1926, cd = 2, atkmin = 160, atkmax = 210, range = 1, typeattack = "intarget", effecta = 147, type = COMBAT_PHYSICALDAMAGE}, ["Electabuzz"] = {attackname = "Quick Attack", level = 80, storage = 1900, cd = 2, atkmin = 160, atkmax = 210, range = 1, typeattack = "intarget", effecta = 111, type = COMBAT_PHYSICALDAMAGE}, ["Magmar"] = {attackname = "Scratch", level = 80, storage = 1901, cd = 2, atkmin = 160, atkmax = 210, range = 1, typeattack = "intarget", effecta = 142, type = COMBAT_PHYSICALDAMAGE}, ["Pinsir"] = {attackname = "Scratch", level = 45, storage = 1901, cd = 2, atkmin = 90, atkmax = 140, range = 1, typeattack = "intarget", effecta = 142, type = COMBAT_PHYSICALDAMAGE}, ["Tauros"] = {attackname = "Headbutt", level = 45, storage = 1902, cd = 2, atkmin = 90, atkmax = 140, range = 1, typeattack = "intarget", effecta = 118, type = COMBAT_PHYSICALDAMAGE}, ["Magikarp"] = {attackname = "Splash", level = 5, storage = 1927, cd = 2, atkmin = 5, atkmax = 15, range = 1, typeattack = "intarget", effecta = 53, type = COMBAT_PHYSICALDAMAGE}, ["Gyarados"] = {attackname = "Roar", level = 85, storage = 1914, cd = 2, atkmin = 160, atkmax = 215, range = 1, typeattack = "intarget", effecta = 159, type = COMBAT_PHYSICALDAMAGE}, ["Lapras"] = {attackname = "Horn Attack", level = 80, storage = 1904, cd = 2, atkmin = 150, atkmax = 200, range = 1, typeattack = "intarget", effecta = 9, type = COMBAT_PHYSICALDAMAGE}, ["Eevee"] = {attackname = "Sand Attack", level = 20, storage = 1907, cd = 2, atkmin = 30, atkmax = 60, range = 1, typeattack = "direcion", effectdir0 = 122, effectdir1 = 121, effectdir2 = 120, effectdir3 = 119, type = COMBAT_PHYSICALDAMAGE}, ["Vaporeon"] = {attackname = "Quick Attack", level = 55, storage = 1900, cd = 2, atkmin = 90, atkmax = 140, range = 1, typeattack = "intarget", effecta = 111, type = COMBAT_PHYSICALDAMAGE}, ["Jolteon"] = {attackname = "Quick Attack", level = 55, storage = 1900, cd = 2, atkmin = 90, atkmax = 140, range = 1, typeattack = "intarget", effecta = 111, type = COMBAT_PHYSICALDAMAGE}, ["Flareon"] = {attackname = "Quick Attack", level = 55, storage = 1900, cd = 2, atkmin = 90, atkmax = 140, range = 1, typeattack = "intarget", effecta = 111, type = COMBAT_PHYSICALDAMAGE}, ["Porygon"] = {attackname = "Super Sonic", level = 40, storage = 1909, cd = 2, atkmin = 70, atkmax = 130, range = 1, typeattack = "intarget", effecta = 22, type = COMBAT_PHYSICALDAMAGE}, ["Omanyte"] = {attackname = "Bite", level = 20, storage = 1905, cd = 2, atkmin = 30, atkmax = 60, range = 1, typeattack = "intarget", effecta = 138, type = COMBAT_PHYSICALDAMAGE}, ["Omastar"] = {attackname = "Bite", level = 80, storage = 1905, cd = 2, atkmin = 160, atkmax = 210, range = 1, typeattack = "intarget", effecta = 138, type = COMBAT_PHYSICALDAMAGE}, ["Kabuto"] = {attackname = "Scratch", level = 20, storage = 1901, cd = 2, atkmin = 30, atkmax = 60, range = 1, typeattack = "intarget", effecta = 142, type = COMBAT_PHYSICALDAMAGE}, ["Kabutops"] = {attackname = "Scratch", level = 80, storage = 1901, cd = 2, atkmin = 160, atkmax = 210, range = 1, typeattack = "intarget", effecta = 142, type = COMBAT_PHYSICALDAMAGE}, ["Snorlax"] = {attackname = "Scratch", level = 80, storage = 1901, cd = 2, atkmin = 160, atkmax = 210, range = 1, typeattack = "intarget", effecta = 142, type = COMBAT_PHYSICALDAMAGE}, ["Dratini"] = {attackname = "Aqua Tail", level = 20, storage = 1920, cd = 2, atkmin = 30, atkmax = 60, range = 1, typeattack = "intarget", effecta = 1, type = COMBAT_PHYSICALDAMAGE}, ["Dragonair"] = {attackname = "Headbutt", level = 60, storage = 1902, cd = 2, atkmin = 100, atkmax = 150, range = 1, typeattack = "intarget", effecta = 118, type = COMBAT_PHYSICALDAMAGE}, ["Dragonite"] = {attackname = "Headbutt", level = 100, storage = 1902, cd = 2, atkmin = 170, atkmax = 220, range = 1, typeattack = "intarget", effecta = 118, type = COMBAT_PHYSICALDAMAGE}, ["Rhydon"] = {attackname = "Iron Tail", level = 30, storage = 1929, cd = 2, atkmin = 60, atkmax = 80, range = 1, typeattack = "intarget", effecta = 160, type = COMBAT_PHYSICALDAMAGE}, ["Rhydon"] = {attackname = "Iron Tail", level = 75, storage = 1929, cd = 2, atkmin = 150, atkmax = 200, range = 1, typeattack = "intarget", effecta = 160, type = COMBAT_PHYSICALDAMAGE}, } function onSay(cid, words, param, target) if #getCreatureSummons(cid) == 0 then return doPlayerSendCancel(cid, "You do not have any pokemon.") end if getPlayerStorageValue(cid, 102032) == 1 then doPlayerSendCancel(cid, "Your pokemon is exhausted.") doSendMagicEffect(getCreaturePosition(cid), 2) return true end for i,x in pairs(pokes) do local storage = x.storage local cd = x.cd if getCreatureSummons(cid) ~= 0 then if not getTilePzInfo(getPlayerPosition(cid)) then if getCreatureName(getCreatureSummons(cid)[1]) == i then if getCreatureTarget(cid) ~= 0 then if not isSummon(getCreatureTarget(cid)) or not isPlayer(getCreatureTarget(cid)) then if getPlayerLevel(cid) >= x.level then if os.time()-getPlayerStorageValue(cid, storage) <= cd then minutes,seconds = getTime(cd-(os.time()-getPlayerStorageValue(cid, storage))) return doPlayerSendTextMessage(cid, 26, "You need to wait ".. seconds .. " seconds to use " ..x.attackname..".") end if x.typeattack == "distance" then if getDistanceBetween(getCreaturePosition(getCreatureSummons(cid)[1]), getCreaturePosition(getCreatureTarget(cid))) <= x.range then doSendDistanceShoot(getCreaturePosition(getCreatureSummons(cid)[1]), getCreaturePosition(getCreatureTarget(cid)), x.effectd) doSendMagicEffect(getCreaturePosition(getCreatureTarget(cid)), x.effecta) doAreaCombatHealth(getCreatureSummons(cid)[1], x.type, getCreaturePosition(getCreatureTarget(cid)), x.arr, -(x.atkmin+getPlayerLevel(cid)), -(x.atkmax+getPlayerLevel(cid)), x.effecta) doCreatureSay(cid, ""..i..", "..x.attackname..".", 1) setPlayerStorageValue(cid, storage, os.time()+cd) setPlayerStorageValue(cid, 102032, 1) addEvent(setPlayerStorageValue, 1*1000, cid, 102032, -1) else doPlayerSendCancel(cid, "Target is far away.") doSendMagicEffect(getCreaturePosition(cid), 2) end return true end if x.typeattack == "area" then if getDistanceBetween(getCreaturePosition(getCreatureSummons(cid)[1]), getCreaturePosition(getCreatureTarget(cid))) <= x.range then doSendMagicEffectInArea(getCreaturePosition(getCreatureSummons(cid)[1]),x.effecta,x.arr) doAreaCombatHealth(getCreatureSummons(cid)[1], x.type, getCreaturePosition(getCreatureTarget(cid)), x.arr, -(x.atkmin+getPlayerLevel(cid)), -(x.atkmax+getPlayerLevel(cid)), x.effecta) doCreatureSay(cid,""..i..", "..x.attackname..".", 1) setPlayerStorageValue(cid, storage, os.time()+cd) setPlayerStorageValue(cid, 102032, 1) addEvent(setPlayerStorageValue, 1*1000, cid, 102032, -1) else doPlayerSendCancel(cid, "Target is far away.") doSendMagicEffect(getCreaturePosition(cid), 2) end return true end if x.typeattack == "direcion" then if getDistanceBetween(getCreaturePosition(getCreatureSummons(cid)[1]), getCreaturePosition(getCreatureTarget(cid))) <= x.range then if getCreatureLookDir(getCreatureSummons(cid)[1]) == 0 then doSendMagicEffect(getPositionByDirection(getCreaturePosition(getCreatureSummons(cid)[1]), 0, 1),x.effectdir0) doAreaCombatHealth(getCreatureSummons(cid)[1], x.type, getCreaturePosition(getCreatureTarget(cid)), x.arr, -(x.atkmin+getPlayerLevel(cid)), -(x.atkmax+getPlayerLevel(cid)), x.effecta) setPlayerStorageValue(cid, storage, os.time()+cd) doCreatureSay(cid,""..i..", "..x.attackname..".", 1) setPlayerStorageValue(cid, 102032, 1) addEvent(setPlayerStorageValue, 1*1000, cid, 102032, -1) elseif getCreatureLookDir(getCreatureSummons(cid)[1]) == 1 then doSendMagicEffect(getPositionByDirection(getCreaturePosition(getCreatureSummons(cid)[1]), 1, 1),x.effectdir1) doAreaCombatHealth(getCreatureSummons(cid)[1], x.type, getCreaturePosition(getCreatureTarget(cid)), x.arr, -(x.atkmin+getPlayerLevel(cid)), -(x.atkmax+getPlayerLevel(cid)), x.effecta) setPlayerStorageValue(cid, storage, os.time()+cd) doCreatureSay(cid,""..i..", "..x.attackname..".", 1) setPlayerStorageValue(cid, 102032, 1) addEvent(setPlayerStorageValue, 1*1000, cid, 102032, -1) elseif getCreatureLookDir(getCreatureSummons(cid)[1]) == 2 then doSendMagicEffect(getPositionByDirection(getCreaturePosition(getCreatureSummons(cid)[1]), 2, 1),x.effectdir2) doAreaCombatHealth(getCreatureSummons(cid)[1], x.type, getCreaturePosition(getCreatureTarget(cid)), x.arr, -(x.atkmin+getPlayerLevel(cid)), -(x.atkmax+getPlayerLevel(cid)), x.effecta) setPlayerStorageValue(cid, storage, os.time()+cd) doCreatureSay(cid,""..i..", "..x.attackname..".", 1) setPlayerStorageValue(cid, 102032, 1) addEvent(setPlayerStorageValue, 1*1000, cid, 102032, -1) elseif getCreatureLookDir(getCreatureSummons(cid)[1]) == 3 then doSendMagicEffect(getPositionByDirection(getCreaturePosition(getCreatureSummons(cid)[1]), 3, 1),x.effectdir3) doAreaCombatHealth(getCreatureSummons(cid)[1], x.type, getCreaturePosition(getCreatureTarget(cid)), x.arr, -(x.atkmin+getPlayerLevel(cid)), -(x.atkmax+getPlayerLevel(cid)), x.effecta) setPlayerStorageValue(cid, storage, os.time()+cd) doCreatureSay(cid,""..i..", "..x.attackname..".", 1) setPlayerStorageValue(cid, 102032, 1) addEvent(setPlayerStorageValue, 1*1000, cid, 102032, -1) end else doPlayerSendCancel(cid, "Target is far away.") doSendMagicEffect(getCreaturePosition(cid), 2) end return true end if x.typeattack == "intarget" then if getDistanceBetween(getCreaturePosition(getCreatureSummons(cid)[1]), getCreaturePosition(getCreatureTarget(cid))) <= x.range then doSendMagicEffect(getCreaturePosition(getCreatureTarget(cid)), x.effecta) doAreaCombatHealth(getCreatureSummons(cid)[1], x.type, getCreaturePosition(getCreatureTarget(cid)), x.arr, -(x.atkmin+getPlayerLevel(cid)), -(x.atkmax+getPlayerLevel(cid)), x.effecta) doCreatureSay(cid, ""..i..", "..x.attackname..".", 1) setPlayerStorageValue(cid, storage, os.time()+cd) setPlayerStorageValue(cid, 102032, 1) addEvent(setPlayerStorageValue, 1*1000, cid, 102032, -1) else doPlayerSendCancel(cid, "Target is far away.") doSendMagicEffect(getCreaturePosition(cid), 2) end return true end else doPlayerSendTextMessage(cid, 27, "You need level "..x.level.." to use " ..x.attackname..".") doSendMagicEffect(getCreaturePosition(cid), 2) return true end else doPlayerSendCancel(cid, "Invalid Target.") doSendMagicEffect(getCreaturePosition(cid), 2) return true end else doPlayerSendCancel(cid, "Target not is avalied.") doSendMagicEffect(getCreaturePosition(cid), 2) return true end end else doPlayerSendCancel(cid, "Do not Attack in Protection Zone.") doSendMagicEffect(getCreaturePosition(cid), 2) return true end else doPlayerSendCancel(cid, "You need pokemon to use attacks.") doSendMagicEffect(getCreaturePosition(cid), 2) return true end end return true end M2 function Poison(cid) -- by miih local arrpoison = { {0, 0, 0}, {0, 1, 0}, {0, 0, 0}, } for i = 1, 6 do addEvent(doSendMagicEffect, i*1000, getCreaturePosition(getCreatureTarget(cid)), 8) addEvent(doAreaCombatHealth, i*1000, getCreatureSummons(cid)[1], COMBAT_EARTHDAMAGE, getCreaturePosition(getCreatureTarget(cid)), arrpoison, -10, -15, 8) end return true end function isSummon(uid) return uid ~= getCreatureMaster(uid) or false end function doSendMagicEffectInArea(pos,effect,area,cid) -- Function by mock local centro = {} centro.y = math.floor(table.getn(area)/2)+1 for y = 1, table.getn(area) do for x = 1, table.getn(area[y]) do if area[y][x] > 0 then centro.x = math.floor(table.getn(area[y])/2)+1 if type(effect) == 'table' then doSendMagicEffect({x=pos.x+x-centro.x,y=pos.y+y-centro.y,z= pos.z},(effect[area[y][x]] or 0),cid) else doSendMagicEffect({x=pos.x+x-centro.x,y=pos.y+y-centro.y,z= pos.z},effect or 0,cid) end end end end return true end function getTime(s) -- by : Mkalo. local n = math.floor(s / 60) s = s - (60 * n) return n, s end -- AREAS -- local arr1 = { {0, 0, 0, 1, 0, 0, 0}, {0, 0, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 0, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 0, 0}, {0, 0, 0, 1, 0, 0, 0}, } -- M1 System, by: XotserX. -- local pokes = { ["Bulbasaur"] = {attackname = "Razor Leaf", level = 20, storage = 2000, cd = 2, atkmin = 100, atkmax = 130, range = 1, typeattack = "intarget", effecta = 79, type = COMBAT_PHYSICALDAMAGE}, ["Ivysaur"] = {attackname = "Razor Leaf ", level = 40, storage = 2000, cd = 2, atkmin = 150, atkmax = 170, range = 1, typeattack = "intarget", effecta = 79, type = COMBAT_PHYSICALDAMAGE}, ["Venusaur"] = {attackname = "Razor Leaf ", level = 85, storage = 2000, cd = 2, atkmin = 270, atkmax = 310, range = 1, typeattack = "intarget", effecta = 79, type = COMBAT_PHYSICALDAMAGE}, ["Charmander"] = {attackname = "Ember", level = 20, storage = 2000, cd = 2, atkmin = 100, atkmax = 130, range = 1, typeattack = "intarget", effecta = 35, type = COMBAT_PHYSICALDAMAGE}, ["Charmeleon"] = {attackname = "Ember", level = 40, storage = 2000, cd = 2, atkmin = 150, atkmax = 170, range = 1, typeattack = "intarget", effecta = 35, type = COMBAT_PHYSICALDAMAGE}, ["Charizard"] = {attackname = "Ember", level = 85, storage = 2000, cd = 2, atkmin = 270, atkmax = 310, range = 1, typeattack = "intarget", effecta = 35, type = COMBAT_PHYSICALDAMAGE}, ["Squirtle"] = {attackname = "Bubbles", level = 20, storage = 2000, cd = 2, atkmin = 100, atkmax = 130, range = 1, typeattack = "intarget", effecta = 68, type = COMBAT_PHYSICALDAMAGE}, ["Wartortle"] = {attackname = "Bubbles", level = 40, storage = 2000, cd = 2, atkmin = 150, atkmax = 170, range = 1, typeattack = "intarget", effecta = 68, type = COMBAT_PHYSICALDAMAGE}, ["Blastoise"] = {attackname = "Bubbles", level = 85, storage = 2000, cd = 2, atkmin = 270, atkmax = 310, range = 1, typeattack = "intarget", effecta = 68, type = COMBAT_PHYSICALDAMAGE}, ["Caterpie"] = {attackname = "String Shot", level = 1, storage = 2000, cd = 2, atkmin = 70, atkmax = 90, range = 1, typeattack = "intarget", effecta = 137, type = COMBAT_PHYSICALDAMAGE}, ["Metapod"] = {attackname = "Headbutt", level = 15, storage = 2000, cd = 2, atkmin = 90, atkmax = 100, range = 1, typeattack = "intarget", effecta = 118, type = COMBAT_PHYSICALDAMAGE}, ["Butterfree"] = {attackname = "Super Sonic", level = 35, storage = 2000, cd = 2, atkmin = 130, atkmax = 150, range = 1, typeattack = "intarget", effecta = 22, type = COMBAT_PHYSICALDAMAGE}, ["Weedle"] = {attackname = "String Shot ", level = 1, storage = 2000, cd = 2, atkmin = 70, atkmax = 90, range = 1, typeattack = "intarget", effecta = 137, type = COMBAT_PHYSICALDAMAGE}, ["Kakuna"] = {attackname = "Headbutt", level = 15, storage = 2000, cd = 2, atkmin = 90, atkmax = 100, range = 1, typeattack = "intarget", effecta = 118, type = COMBAT_PHYSICALDAMAGE}, ["Beedrill"] = {attackname = "Poison Sting ", level = 35, storage = 2000, cd = 2, atkmin = 130, atkmax = 150, range = 1, typeattack = "intarget", effecta = 9, type = COMBAT_PHYSICALDAMAGE}, ["Pidgey"] = {attackname = "Sand Attack", level = 1, storage = 2000, cd = 2, atkmin = 70, atkmax = 90, range = 1, typeattack = " direcion", effectdir0 = 122, effectdir1 = 121, effectdir2 = 120, effectdir3 = 119, type = COMBAT_PHYSICALDAMAGE}, ["Pidgeotto"] = {attackname = "Sand Attack ", level = 20, storage = 2000, cd = 2, atkmin = 100, atkmax = 130, range = 1, typeattack = " direcion", effectdir0 = 122, effectdir1 = 121, effectdir2 = 120, effectdir3 = 119, type = COMBAT_PHYSICALDAMAGE}, ["Pidgeot"] = {attackname = "Sand Attack ", level = 65, storage = 2000, cd = 2, atkmin = 210, atkmax = 230, range = 1, typeattack = " direcion", effectdir0 = 122, effectdir1 = 121, effectdir2 = 120, effectdir3 = 119, type = COMBAT_PHYSICALDAMAGE}, ["Rattata"] = {attackname = "Bite", level = 1, storage = 2000, cd = 2, atkmin = 90, atkmax = 100, range = 1, typeattack = "intarget", effecta = 138, type = COMBAT_PHYSICALDAMAGE}, ["Raticate"] = {attackname = "Bite", level = 25, storage = 2000, cd = 2, atkmin = 100, atkmax = 130, range = 1, typeattack = "intarget", effecta = 138, type = COMBAT_PHYSICALDAMAGE}, ["Spearow"] = {attackname = "Sand Attack", level = 1, storage = 2000, cd = 2, atkmin = 70, atkmax = 90, range = 1, typeattack = "direcion", effectdir0 = 122, effectdir1 = 121, effectdir2 = 120, effectdir3 = 119, type = COMBAT_PHYSICALDAMAGE}, ["Fearow"] = {attackname = "Sand Attack", level = 50, storage = 2000, cd = 2, atkmin = 170, atkmax = 210, range = 1, typeattack = "direcion", effectdir0 = 122, effectdir1 = 121, effectdir2 = 120, effectdir3 = 119, type = COMBAT_PHYSICALDAMAGE}, ["Ekans"] = {attackname = "Poison Fang", level = 17, storage = 2000, cd = 2, atkmin = 100, atkmax = 130, range = 1, typeattack = "intarget", effecta = 138, type = COMBAT_PHYSICALDAMAGE}, ["Arbok"] = {attackname = "Poison Fang", level = 35, storage = 2000, cd = 2, atkmin = 130, atkmax = 150, range = 1, typeattack = "intarget", effecta = 138, type = COMBAT_PHYSICALDAMAGE}, ["Pikachu"] = {attackname = "Thunder", level = 20, storage = 2000, cd = 2, atkmin = 100, atkmax = 130, range = 1, typeattack = "area", arr = arr1, effecta = 48, type = COMBAT_PHYSICALDAMAGE}, ["Raichu"] = {attackname = "Thunder", level = 50, storage = 2000, cd = 2, atkmin = 170, atkmax = 210, range = 1, typeattack = "area", arr = arr1, effecta = 48, type = COMBAT_PHYSICALDAMAGE}, ["Sandshrew"] = {attackname = "Mud Shot", level = 20, storage = 2000, cd = 2, atkmin = 100, atkmax = 130, range = 1, typeattack = " intarget", effecta = 116, type = COMBAT_PHYSICALDAMAGE}, ["Sandslash"] = {attackname = "Mud Shot", level = 55, storage = 2000, cd = 2, atkmin = 170, atkmax = 210, range = 1, typeattack = " intarget", effecta = 116, type = COMBAT_PHYSICALDAMAGE}, ["Nidoranfe"] = {attackname = "Bite", level = 10, storage = 2000, cd = 2, atkmin = 90, atkmax = 100, range = 1, typeattack = "intarget", effecta = 138, type = COMBAT_PHYSICALDAMAGE}, ["Nidorina"] = {attackname = "Bite", level = 30, storage = 2000, cd = 2, atkmin = 130, atkmax = 150, range = 1, typeattack = "intarget", effecta = 138, type = COMBAT_PHYSICALDAMAGE}, ["Nidoqueen"] = {attackname = "Bite", level = 65, storage = 2000, cd = 2, atkmin = 210, atkmax = 230, range = 1, typeattack = "intarget", effecta = 138, type = COMBAT_PHYSICALDAMAGE}, ["Nidoranma"] = {attackname = "Bite", level = 10, storage = 2000, cd = 2, atkmin = 90, atkmax = 100, range = 1, typeattack = "intarget", effecta = 138, type = COMBAT_PHYSICALDAMAGE}, ["Nidorino"] = {attackname = "Bite", level = 30, storage = 2000, cd = 2, atkmin = 130, atkmax = 150, range = 1, typeattack = "intarget", effecta = 138, type = COMBAT_PHYSICALDAMAGE}, ["Nidoking"] = {attackname = "Bite", level = 65, storage = 2000, cd = 2, atkmin = 210, atkmax = 230, range = 1, typeattack = "intarget", effecta = 138, type = COMBAT_PHYSICALDAMAGE}, ["Clefairy"] = {attackname = "Lovely Kiss", level = 20, storage = 2000, cd = 2, atkmin = 100, atkmax = 130, range = 1, typeattack = "intarget", effecta = 147, type = COMBAT_PHYSICALDAMAGE}, ["Clefable"] = {attackname = "Lovely Kiss", level = 45, storage = 2000, cd = 2, atkmin = 150, atkmax = 170, range = 1, typeattack = "intarget", effecta = 147, type = COMBAT_PHYSICALDAMAGE}, ["Vulpix"] = {attackname = "Iron Tail", level = 15, storage = 2000, cd = 2, atkmin = 90, atkmax = 100, range = 1, typeattack = "intarget", effecta = 160, type = COMBAT_PHYSICALDAMAGE}, ["Ninetales"] = {attackname = "Iron Tail", level = 70, storage = 2000, cd = 2, atkmin = 230, atkmax = 270, range = 1, typeattack = "intarget", effecta = 160, type = COMBAT_PHYSICALDAMAGE}, ["Jigglypuff"] = {attackname = "Lovely Kiss", level = 20, storage = 2000, cd = 2, atkmin = 100, atkmax = 130, range = 1, typeattack = "intarget", effecta = 147, type = COMBAT_PHYSICALDAMAGE}, ["Wigglytuff"] = {attackname = "Lovely Kiss", level = 45, storage = 2000, cd = 2, atkmin = 150, atkmax = 170, range = 1, typeattack = "intarget", effecta = 147, type = COMBAT_PHYSICALDAMAGE}, ["Zubat"] = {attackname = "Bite", level = 15, storage = 2000, cd = 2, atkmin = 100, atkmax = 130, range = 1, typeattack = "intarget", effecta = 138, type = COMBAT_PHYSICALDAMAGE}, ["Golbat"] = {attackname = "Bite", level = 35, storage = 2000, cd = 2, atkmin = 130, atkmax = 150, range = 1, typeattack = "intarget", effecta = 138, type = COMBAT_PHYSICALDAMAGE}, ["Gloom"] = {attackname = "Acid", level = 25, storage = 2000, cd = 2, atkmin = 100, atkmax = 130, range = 1, typeattack = "intarget", effecta = 20, type = COMBAT_PHYSICALDAMAGE}, ["Vileplume"] = {attackname = "Acid", level = 50, storage = 2000, cd = 2, atkmin = 170, atkmax = 210, range = 1, typeattack = "intarget", effecta = 20, type = COMBAT_PHYSICALDAMAGE}, ["Paras"] = {attackname = "Poison Sting", level = 5, storage = 2000, cd = 2, atkmin = 70, atkmax = 90, range = 1, typeattack = "intarget", effecta = 9, type = COMBAT_PHYSICALDAMAGE}, ["Parasect"] = {attackname = "Poison Sting", level = 50, storage = 2000, cd = 2, atkmin = 170, atkmax = 210, range = 1, typeattack = "intarget", effecta = 9, type = COMBAT_PHYSICALDAMAGE}, ["Venonat"] = {attackname = "Super Sonic", level = 5, storage = 2000, cd = 2, atkmin = 70, atkmax = 90, range = 1, typeattack = "intarget", effecta = 22, type = COMBAT_PHYSICALDAMAGE}, ["Venomoth"] = {attackname = "Super Sonic", level = 50, storage = 2000, cd = 2, atkmin = 170, atkmax = 210, range = 1, typeattack = "intarget", effecta = 22, type = COMBAT_PHYSICALDAMAGE}, ["Diglett"] = {attackname = "Slash", level = 10, storage = 2000, cd = 2, atkmin = 90, atkmax = 100, range = 1, typeattack = " intarget", effecta = 159, type = COMBAT_PHYSICALDAMAGE}, ["Dugtrio"] = {attackname = "Sand Attack", level = 35, storage = 2000, cd = 2, atkmin = 130, atkmax = 150, range = 1, typeattack = " intarget", effecta = 159, type = COMBAT_PHYSICALDAMAGE}, ["Meowth"] = {attackname = " Scratch", level = 15, storage = 2000, cd = 2, atkmin = 90, atkmax = 100, range = 1, typeattack = "intarget", effecta = 142, type = COMBAT_PHYSICALDAMAGE}, ["Persian"] = {attackname = "Scratch", level = 30, storage = 2000, cd = 2, atkmin = 130, atkmax = 150, range = 1, typeattack = "intarget", effecta = 142, type = COMBAT_PHYSICALDAMAGE}, ["Psyduck"] = {attackname = "Aqua Tail", level = 20, storage = 2000, cd = 2, atkmin = 100, atkmax = 130, range = 1, typeattack = "intarget", effecta = 1, type = COMBAT_PHYSICALDAMAGE}, ["Golduck"] = {attackname = "Water Gun", level = 55, storage = 2000, cd = 2, atkmin = 170, atkmax = 210, range = 1, typeattack = "intarget", effecta = 68, type = COMBAT_PHYSICALDAMAGE}, ["Mankey"] = {attackname = "Triple Kick", level = 15, storage = 2000, cd = 2, atkmin = 100, atkmax = 130, range = 1, typeattack = "intarget", effecta = 110, type = COMBAT_PHYSICALDAMAGE}, ["Primeape"] = {attackname = "Triple Kick", level = 35, storage = 2000, cd = 2, atkmin = 130, atkmax = 150, range = 1, typeattack = "intarget", effecta = 110, type = COMBAT_PHYSICALDAMAGE}, ["Growlithe"] = {attackname = "Bite", level = 20, storage = 2000, cd = 2, atkmin = 100, atkmax = 130, range = 1, typeattack = "intarget", effecta = 138, type = COMBAT_PHYSICALDAMAGE}, ["Arcanine"] = {attackname = "Bite", level = 80, storage = 2000, cd = 2, atkmin = 270, atkmax = 310, range = 1, typeattack = "intarget", effecta = 138, type = COMBAT_PHYSICALDAMAGE}, ["Poliwag"] = {attackname = "Bubbles", level = 5, storage = 2000, cd = 2, atkmin = 70, atkmax = 90, range = 1, typeattack = "intarget", effecta = 68, type = COMBAT_PHYSICALDAMAGE}, ["Poliwhirl"] = {attackname = "Doubleslap", level = 25, storage = 2000, cd = 2, atkmin = 100, atkmax = 130, range = 1, typeattack = "intarget", effecta = 148, type = COMBAT_PHYSICALDAMAGE}, ["Poliwrath"] = {attackname = "Doubleslap", level = 65, storage = 2000, cd = 2, atkmin = 210, atkmax = 230, range = 1, typeattack = "intarget", effecta = 148, type = COMBAT_PHYSICALDAMAGE}, ["Kadabra"] = {attackname = " Confusion", level = 45, storage = 2000, cd = 2, atkmin = 170, atkmax = 210, range = 1, typeattack = "area", arr = arr1, effecta = 136, type = COMBAT_PHYSICALDAMAGE}, ["Alakazam"] = {attackname = " Confusion", level = 80, storage = 2000, cd = 2, atkmin = 270, atkmax = 310, range = 1, typeattack = "area", arr = arr1, effecta = 136, type = COMBAT_PHYSICALDAMAGE}, ["Machop"] = {attackname = "Mega Punch", level = 20, storage = 2000, cd = 2, atkmin = 100, atkmax = 130, range = 1, typeattack = "intarget", effecta = 112, type = COMBAT_PHYSICALDAMAGE}, ["Machoke"] = {attackname = "Mega Punch", level = 47, storage = 2000, cd = 2, atkmin = 170, atkmax = 210, range = 1, typeattack = "intarget", effecta = 112, type = COMBAT_PHYSICALDAMAGE}, ["Machamp"] = {attackname = "Mega Punch", level = 70, storage = 2000, cd = 2, atkmin = 230, atkmax = 270, range = 1, typeattack = "intarget", effecta = 112, type = COMBAT_PHYSICALDAMAGE}, ["Bellsprout"] = {attackname = "Vine Whip", level = 10, storage = 2000, cd = 2, atkmin = 90, atkmax = 100, range = 1, typeattack = "direcion", effectdir0 = 80, effectdir1 = 83, effectdir2 = 81, effectdir3 = 82, type = COMBAT_PHYSICALDAMAGE}, ["Weepinbell"] = {attackname = "Vine Whip", level = 25, storage = 2000, cd = 2, atkmin = 100, atkmax = 130, range = 1, typeattack = "direcion", effectdir0 = 80, effectdir1 = 83, effectdir2 = 81, effectdir3 = 82, type = COMBAT_PHYSICALDAMAGE}, ["Victreebel"] = {attackname = "Vine Whip", level = 50, storage = 2000, cd = 2, atkmin = 170, atkmax = 210, range = 1, typeattack = "direcion", effectdir0 = 80, effectdir1 = 83, effectdir2 = 81, effectdir3 = 82, type = COMBAT_PHYSICALDAMAGE}, ["Tentacool"] = {attackname = "Bubbles", level = 15, storage = 2000, cd = 2, atkmin = 100, atkmax = 130, range = 1, typeattack = "intarget", effecta = 68, type = COMBAT_PHYSICALDAMAGE}, ["Tentacruel"] = {attackname = "Mud Shot", level = 75, storage = 2000, cd = 2, atkmin = 230, atkmax = 270, range = 1, typeattack = "intarget", effecta = 116, type = COMBAT_PHYSICALDAMAGE}, ["Geodude"] = {attackname = "Rock Throw", level = 15, storage = 2000, cd = 2, atkmin = 90, atkmax = 100, range = 1, typeattack = "area", arr = arr1, effecta = 44, type = COMBAT_PHYSICALDAMAGE}, ["Graveler"] = {attackname = "Rock Throw", level = 40, storage = 2000, cd = 2, atkmin = 150, atkmax = 170, range = 1, typeattack = "area", arr = arr1, effecta = 44, type = COMBAT_PHYSICALDAMAGE}, ["Golem"] = {attackname = "Rock Throw", level = 70, storage = 2000, cd = 2, atkmin = 230, atkmax = 270, range = 1, typeattack = "area", arr = arr1, effecta = 44, type = COMBAT_PHYSICALDAMAGE}, ["Ponyta"] = {attackname = "Quick Attack", level = 20, storage = 2000, cd = 2, atkmin = 30, atkmax = 60, range = 1, typeattack = "intarget", effecta = 111, type = COMBAT_PHYSICALDAMAGE}, ["Rapidash"] = {attackname = "Quick Attack", level = 55, storage = 2000, cd = 2, atkmin = 90, atkmax = 140, range = 1, typeattack = "intarget", effecta = 111, type = COMBAT_PHYSICALDAMAGE}, ["Slowpoke"] = {attackname = "Aqua Tail", level = 20, storage = 2000, cd = 2, atkmin = 30, atkmax = 60, range = 1, typeattack = "intarget", effecta = 1, type = COMBAT_PHYSICALDAMAGE}, ["Slowbro"] = {attackname = "Aqua Tail", level = 45, storage = 2000, cd = 2, atkmin = 90, atkmax = 140, range = 1, typeattack = "intarget", effecta = 1, type = COMBAT_PHYSICALDAMAGE}, ["Magnemite"] = {attackname = "Thunder Shock", level = 15, storage = 2000, cd = 2, atkmin = 100, atkmax = 130, range = 1, typeattack = "area", arr = arr1, effecta = 207, type = COMBAT_PHYSICALDAMAGE}, ["Magneton"] = {attackname = "Thunder Shock", level = 45, storage = 2000, cd = 2, atkmin = 170, atkmax = 210, range = 1, typeattack = "area", arr = arr1, effecta = 207, type = COMBAT_PHYSICALDAMAGE}, ["Farfetch'd"] = {attackname = "Drill Peck", level = 40, storage = 2000, cd = 2, atkmin = 170, atkmax = 210, range = 1, typeattack = "intarget", effecta = 111, type = COMBAT_PHYSICALDAMAGE}, ["Doduo"] = {attackname = "Quick Attack", level = 10, storage = 2000, cd = 2, atkmin = 90, atkmax = 100, range = 1, typeattack = " intarget", effecta = 111, type = COMBAT_PHYSICALDAMAGE}, ["Dodrio"] = {attackname = "Quick Attack", level = 45, storage = 2000, cd = 2, atkmin = 170, atkmax = 210, range = 1, typeattack = " intarget", effecta = 111, type = COMBAT_PHYSICALDAMAGE}, ["Seel"] = {attackname = "Aqua Tail", level = 20, storage = 2000, cd = 2, atkmin = 100, atkmax = 130, range = 1, typeattack = "intarget", effecta = 1, type = COMBAT_PHYSICALDAMAGE}, ["Dewgong"] = {attackname = "Headbutt", level = 45, storage = 2000, cd = 2, atkmin = 170, atkmax = 210, range = 1, typeattack = "intarget", effecta = 118, type = COMBAT_PHYSICALDAMAGE}, ["Grimer"] = {attackname = "Acid", level = 15, storage = 2000, cd = 2, atkmin = 100, atkmax = 130, range = 1, typeattack = "intarget", effecta = 20, type = COMBAT_PHYSICALDAMAGE}, ["Muk"] = {attackname = "Acid", level = 35, storage = 2000, cd = 2, atkmin = 130, atkmax = 160, range = 1, typeattack = "intarget", effecta = 20, type = COMBAT_PHYSICALDAMAGE}, ["Shellder"] = {attackname = "Super Sonic", level = 10, storage = 2000, cd = 2, atkmin = 90, atkmax = 100, range = 1, typeattack = "intarget", effecta = 22, type = COMBAT_PHYSICALDAMAGE}, ["Cloyster"] = {attackname = "Super Sonic", level = 60, storage = 2000, cd = 2, atkmin = 210, atkmax = 230, range = 1, typeattack = "intarget", effecta = 22, type = COMBAT_PHYSICALDAMAGE}, ["Gastly"] = {attackname = "Shadow Ball", level = 20, storage = 2000, cd = 2, atkmin = 100, atkmax = 130, range = 1, typeattack = "intarget", effecta = 140, type = COMBAT_PHYSICALDAMAGE}, ["Haunter"] = {attackname = "Shadow Ball", level = 45, storage = 2000, cd = 2, atkmin = 170, atkmax = 210, range = 1, typeattack = "intarget", effecta = 140, type = COMBAT_PHYSICALDAMAGE}, ["Gengar"] = {attackname = "Shadow Ball", level = 80, storage = 2000, cd = 2, atkmin = 270, atkmax = 310, range = 1, typeattack = "intarget", effecta = 140, type = COMBAT_PHYSICALDAMAGE}, ["Onix"] = {attackname = "Iron Tail", level = 50, storage = 2000, cd = 2, atkmin = 170, atkmax = 210, range = 1, typeattack = "intarget", effecta = 160, type = COMBAT_PHYSICALDAMAGE}, ["Drowzee"] = {attackname = "Psybeam", level = 25, storage = 2000, cd = 2, atkmin = 30, atkmax = 60, range = 1, typeattack = " direcion", effectdir0 = 108, effectdir1 = 109, effectdir2 = 108, effectdir3 = 106, effectdir4 = 107, effectdir5 = 106, effectdir6 = 108, effectdir7 = 109, effectdir8 = 108, effectdir9 = 107, effectdir10 = 106, effectdir11 = 107, type = COMBAT_PHYSICALDAMAGE}, ["Hypno"] = {attackname = "Psybeam", level = 55, storage = 2000, cd = 2, atkmin = 90, atkmax = 140, range = 1, typeattack = " direcion", effectdir0 = 108, effectdir1 = 109, effectdir2 = 108, effectdir3 = 106, effectdir4 = 107, effectdir5 = 106, effectdir6 = 108, effectdir7 = 109, effectdir8 = 108, effectdir9 = 107, effectdir10 = 106, effectdir11 = 107, type = COMBAT_PHYSICALDAMAGE}, ["Krabby"] = {attackname = "Bubblebeam", level = 10, storage = 2000, cd = 2, atkmin = 90, atkmax = 100, range = 1, typeattack = "intarget", effecta = 25, type = COMBAT_PHYSICALDAMAGE}, ["Kingler"] = {attackname = "Bubblebeam", level = 40, storage = 2000, cd = 2, atkmin = 150, atkmax = 160, range = 1, typeattack = "intarget", effecta = 25, type = COMBAT_PHYSICALDAMAGE}, ["Voltorb"] = {attackname = "Spark", level = 10, storage = 2000, cd = 2, atkmin = 90, atkmax = 100, range = 1, typeattack = "intarget", effecta = 207, type = COMBAT_PHYSICALDAMAGE}, ["Electrode"] = {attackname = "Spark", level = 35, storage = 2000, cd = 2, atkmin = 150, atkmax = 170, range = 1, typeattack = "intarget", effecta = 207, type = COMBAT_PHYSICALDAMAGE}, ["Exeggcute"] = {attackname = "Confusion", level = 15, storage = 2000, cd = 2, atkmin = 100, atkmax = 130, range = 1, typeattack = "area", arr = arr1, effecta = 136, type = COMBAT_PHYSICALDAMAGE}, ["Exeggutor"] = {attackname = "Confusion", level = 55, storage = 2000, cd = 2, atkmin = 210, atkmax = 230, range = 1, typeattack = "area", arr = arr1, effecta = 136, type = COMBAT_PHYSICALDAMAGE}, ["Cubone"] = {attackname = "Bonemerang", level = 20, storage = 2000, cd = 2, atkmin = 100, atkmax = 130, range = 1, typeattack = "area", arr = arr2, effecta = 212, type = COMBAT_PHYSICALDAMAGE}, ["Marowak"] = {attackname = "Bonemerang", level = 55, storage = 2000, cd = 2, atkmin = 170, atkmax = 210, range = 1, typeattack = "area", arr = arr2, effecta = 212, type = COMBAT_PHYSICALDAMAGE}, ["Hitmonlee"] = {attackname = "Mega Punch", level = 60, storage = 2000, cd = 2, atkmin = 210, atkmax = 230, range = 1, typeattack = "intarget", effecta = 112, type = COMBAT_PHYSICALDAMAGE}, ["Hitmonchan"] = {attackname = "Mega Punch", level = 60, storage = 2000, cd = 2, atkmin = 210, atkmax = 230, range = 1, typeattack = "intarget", effecta = 112, type = COMBAT_PHYSICALDAMAGE}, ["Lickitung"] = {attackname = "Headbutt", level = 55, storage = 2000, cd = 2, atkmin = 210, atkmax = 230, range = 1, typeattack = "intarget", effecta = 118, type = COMBAT_PHYSICALDAMAGE}, ["Koffing"] = {attackname = "Acid", level = 15, storage = 2000, cd = 2, atkmin = 100, atkmax = 130, range = 1, typeattack = "intarget", effecta = 20, type = COMBAT_PHYSICALDAMAGE}, ["Weezing"] = {attackname = "Acid", level = 35, storage = 2000, cd = 2, atkmin = 150, atkmax = 170, range = 1, typeattack = "intarget", effecta = 20, type = COMBAT_PHYSICALDAMAGE}, ["Chansey"] = {attackname = "Great Love", level = 60, storage = 2000, cd = 2, atkmin = 210, atkmax = 230, range = 1, typeattack = "area", arr = arr1, effecta = 147, type = COMBAT_PHYSICALDAMAGE}, ["Tangela"] = {attackname = "Absorb", level = 50, storage = 2000, cd = 2, atkmin = 170, atkmax = 210, range = 1, typeattack = "direcion", effectdir0 = 80, effectdir1 = 83, effectdir2 = 81, effectdir3 = 82, type = COMBAT_PHYSICALDAMAGE}, ["Kangaskhan"] = {attackname = "Headbutt", level = 80, storage = 2000, cd = 2, atkmin = 270, atkmax = 310, range = 1, typeattack = "intarget", effecta = 118, type = COMBAT_PHYSICALDAMAGE}, ["Horsea"] = {attackname = "Bubbles", level = 10, storage = 2000, cd = 2, atkmin = 90, atkmax = 100, range = 1, typeattack = "intarget", effecta = 68, type = COMBAT_PHYSICALDAMAGE}, ["Seadra"] = {attackname = "Bubbles", level = 45, storage = 2000, cd = 2, atkmin = 170, atkmax = 210, range = 1, typeattack = "intarget", effecta = 68, type = COMBAT_PHYSICALDAMAGE}, ["Goldeen"] = {attackname = "Poison Sting", level = 10, storage = 2000, cd = 2, atkmin = 90, atkmax = 100, range = 1, typeattack = "intarget", effecta = 9, type = COMBAT_PHYSICALDAMAGE}, ["Seaking"] = {attackname = "Poison Sting", level = 45, storage = 2000, cd = 2, atkmin = 170, atkmax = 210, range = 1, typeattack = "intarget", effecta = 9, type = COMBAT_PHYSICALDAMAGE}, ["Staryu"] = {attackname = "Slash", level = 15, storage = 2000, cd = 2, atkmin = 100, atkmax = 130, range = 1, typeattack = "intarget", effecta = 159, type = COMBAT_PHYSICALDAMAGE}, ["Starmie"] = {attackname = "Slash", level = 35, storage = 2000, cd = 2, atkmin = 150, atkmax = 170, range = 1, typeattack = "intarget", effecta = 159, type = COMBAT_PHYSICALDAMAGE}, ["Mr.Mime"] = {attackname = "Psychic", level = 60, storage = 2000, cd = 2, atkmin = 210, atkmax = 230, range = 1, typeattack = "intarget", effecta = 134, type = COMBAT_PHYSICALDAMAGE}, ["Scyther"] = {attackname = "Slash", level = 80, storage = 2000, cd = 2, atkmin = 270, atkmax = 310, range = 1, typeattack = "intarget", effecta = 159, type = COMBAT_PHYSICALDAMAGE}, ["Jynx"] = {attackname = "Doubleslap", level = 80, storage = 2000, cd = 2, atkmin = 270, atkmax = 310, range = 1, typeattack = "intarget", effecta = 148, type = COMBAT_PHYSICALDAMAGE}, ["Electabuzz"] = {attackname = "Thunder Punch", level = 80, storage = 2000, cd = 2, atkmin = 270, atkmax = 310, range = 1, typeattack = "area", arr = arr1, effecta = 48, type = COMBAT_PHYSICALDAMAGE}, ["Magmar"] = {attackname = "Fire Punch", level = 80, storage = 2000, cd = 2, atkmin = 270, atkmax = 310, range = 1, typeattack = "intarget", effecta = 5, type = COMBAT_PHYSICALDAMAGE}, ["Pinsir"] = {attackname = "Slash", level = 45, storage = 2000, cd = 2, atkmin = 170, atkmax = 210, range = 1, typeattack = "intarget", effecta = 159, type = COMBAT_PHYSICALDAMAGE}, ["Tauros"] = {attackname = "Quick Attack", level = 45, storage = 2000, cd = 2, atkmin = 170, atkmax = 210, range = 1, typeattack = "intarget", effecta = 111, type = COMBAT_PHYSICALDAMAGE}, ["Gyarados"] = {attackname = "Bite", level = 85, storage = 2000, cd = 2, atkmin = 275, atkmax = 325, range = 1, typeattack = "intarget", effecta = 138, type = COMBAT_PHYSICALDAMAGE}, ["Lapras"] = {attackname = "Ice Beam", level = 80, storage = 2000, cd = 2, atkmin = 270, atkmax = 310, range = 1, typeattack = "area", arr = arr1, effecta = 147, type = COMBAT_PHYSICALDAMAGE}, ["Eevee"] = {attackname = "Quick Attack", level = 20, storage = 2000, cd = 2, atkmin = 100, atkmax = 130, range = 1, typeattack = " intarget", effecta = 111, type = COMBAT_PHYSICALDAMAGE}, ["Vaporeon"] = {attackname = "Bite", level = 55, storage = 2000, cd = 2, atkmin = 170, atkmax = 210, range = 1, typeattack = "intarget", effecta = 138, type = COMBAT_PHYSICALDAMAGE}, ["Jolteon"] = {attackname = "Bite", level = 55, storage = 2000, cd = 2, atkmin = 210, atkmax = 230, range = 1, typeattack = "intarget", effecta = 138, type = COMBAT_PHYSICALDAMAGE}, ["Flareon"] = {attackname = "Bite", level = 55, storage = 2000, cd = 2, atkmin = 210, atkmax = 230, range = 1, typeattack = "intarget", effecta = 138, type = COMBAT_PHYSICALDAMAGE}, ["Porygon"] = {attackname = "Psybeam", level = 40, storage = 2000, cd = 2, atkmin = 150, atkmax = 170, range = 1, typeattack = "area", arr = arr1, effecta = 136, type = COMBAT_PHYSICALDAMAGE}, ["Omanyte"] = {attackname = " Rock Throw", level = 20, storage = 2000, cd = 2, atkmin = 100, atkmax = 130, range = 1, typeattack = " area", arr = arr1, effecta = 34, type = COMBAT_PHYSICALDAMAGE}, ["Omastar"] = {attackname = " Rock Throw", level = 80, storage = 2000, cd = 2, atkmin = 230, atkmax = 270, range = 1, typeattack = "area", arr = arr1, effecta = 34, type = COMBAT_PHYSICALDAMAGE}, ["Kabuto"] = {attackname = "Bubbles", level = 20, storage = 2000, cd = 2, atkmin = 130, atkmax = 150, range = 1, typeattack = "intarget", effecta = 68, type = COMBAT_PHYSICALDAMAGE}, ["Kabutops"] = {attackname = "Bubbles", level = 80, storage = 2000, cd = 2, atkmin = 270, atkmax = 310, range = 1, typeattack = "intarget", effecta = 68, type = COMBAT_PHYSICALDAMAGE}, ["Snorlax"] = {attackname = "Bite", level = 80, storage = 2000, cd = 2, atkmin = 270, atkmax = 310, range = 1, typeattack = "intarget", effecta = 138, type = COMBAT_PHYSICALDAMAGE}, ["Dratini"] = {attackname = "Thunder Wave", level = 20, storage = 2000, cd = 2, atkmin = 100, atkmax = 130, range = 1, typeattack = " area", arr = arr1, effecta = 48, type = COMBAT_PHYSICALDAMAGE}, ["Dragonair"] = {attackname = "Aqua Tail", level = 60, storage = 2000, cd = 2, atkmin = 210, atkmax = 230, range = 1, typeattack = "intarget", effecta = 1, type = COMBAT_PHYSICALDAMAGE}, ["Dragonite"] = {attackname = "Aqua Tail", level = 100, storage = 2000, cd = 2, atkmin = 270, atkmax = 310, range = 1, typeattack = "intarget", effecta = 1, type = COMBAT_PHYSICALDAMAGE}, ["Rhydon"] = {attackname = "Horn Attack", level = 30, storage = 2000, cd = 2, atkmin = 130, atkmax = 150, range = 1, typeattack = "intarget", effecta = 9, type = COMBAT_PHYSICALDAMAGE}, ["Rhydon"] = {attackname = "Horn Attack", level = 75, storage = 2000, cd = 2, atkmin = 270, atkmax = 310, range = 1, typeattack = "intarget", effecta = 9, type = COMBAT_PHYSICALDAMAGE}, } function onSay(cid, words, param, target) if #getCreatureSummons(cid) == 0 then return doPlayerSendCancel(cid, "You do not have any pokemon.") end if getPlayerStorageValue(cid, 102032) == 1 then doPlayerSendCancel(cid, "Your pokemon is exhausted.") doSendMagicEffect(getCreaturePosition(cid), 2) return true end for j,x in pairs(pokes) do local storage = x.storage local cd = math.ceil(x.cd/2) if getCreatureSummons(cid) ~= 0 then if not getTilePzInfo(getPlayerPosition(cid)) then if getCreatureName(getCreatureSummons(cid)[1]) == j then if getCreatureTarget(cid) ~= 0 then if not isSummon(getCreatureTarget(cid)) or not isPlayer(getCreatureTarget(cid)) then if getPlayerLevel(cid) >= x.level then if os.time()-getPlayerStorageValue(cid, storage) <= cd then minutes,seconds = getTime(cd-(os.time()-getPlayerStorageValue(cid, storage))) return doPlayerSendTextMessage(cid, 26, "You need to wait ".. seconds .. " seconds to use " ..x.attackname..".") end if x.typeattack == "distance" then if getDistanceBetween(getCreaturePosition(getCreatureSummons(cid)[1]), getCreaturePosition(getCreatureTarget(cid))) <= x.range then doSendDistanceShoot(getCreaturePosition(getCreatureSummons(cid)[1]), getCreaturePosition(getCreatureTarget(cid)), x.effectd) doSendMagicEffect(getCreaturePosition(getCreatureTarget(cid)), x.effecta) doAreaCombatHealth(getCreatureSummons(cid)[1], x.type, getCreaturePosition(getCreatureTarget(cid)), x.arr, -(x.atkmin+getPlayerLevel(cid)), -(x.atkmax+getPlayerLevel(cid)), x.effecta) doCreatureSay(cid, ""..j..", "..x.attackname..".", 1) setPlayerStorageValue(cid, storage, os.time()+cd) setPlayerStorageValue(cid, 102032, 1) addEvent(setPlayerStorageValue, 1*1000, cid, 102032, -1) if x.poison == true then Poison(cid) end else doPlayerSendCancel(cid, "Target is far away.") doSendMagicEffect(getCreaturePosition(cid), 2) end return true end if x.typeattack == "area" then if getDistanceBetween(getCreaturePosition(getCreatureSummons(cid)[1]), getCreaturePosition(getCreatureTarget(cid))) <= x.range then doSendMagicEffectInArea(getCreaturePosition(getCreatureSummons(cid)[1]),x.effecta,x.arr) if x.poison == "yes" then Poison(cid) end doAreaCombatHealth(getCreatureSummons(cid)[1], x.type, getCreaturePosition(getCreatureTarget(cid)), x.arr, -(x.atkmin+getPlayerLevel(cid)), -(x.atkmax+getPlayerLevel(cid)), x.effecta) doCreatureSay(cid,""..j..", "..x.attackname..".", 1) setPlayerStorageValue(cid, storage, os.time()+cd) setPlayerStorageValue(cid, 102032, 1) addEvent(setPlayerStorageValue, 1*1000, cid, 102032, -1) else doPlayerSendCancel(cid, "Target is far away.") doSendMagicEffect(getCreaturePosition(cid), 2) end return true end if x.typeattack == "direcion" then if getDistanceBetween(getCreaturePosition(getCreatureSummons(cid)[1]), getCreaturePosition(getCreatureTarget(cid))) <= x.range then if x.poison == true then Poison(cid) end if getCreatureLookDir(getCreatureSummons(cid)[1]) == 0 then doSendMagicEffect(getPositionByDirection(getCreaturePosition(getCreatureSummons(cid)[1]), 0, 1),x.effectdir0) doAreaCombatHealth(getCreatureSummons(cid)[1], x.type, getCreaturePosition(getCreatureTarget(cid)), x.arr, -(x.atkmin+getPlayerLevel(cid)), -(x.atkmax+getPlayerLevel(cid)), x.effecta) setPlayerStorageValue(cid, storage, os.time()+cd) doCreatureSay(cid,""..j..", "..x.attackname..".", 1) setPlayerStorageValue(cid, 102032, 1) addEvent(setPlayerStorageValue, 1*1000, cid, 102032, -1) elseif getCreatureLookDir(getCreatureSummons(cid)[1]) == 1 then doSendMagicEffect(getPositionByDirection(getCreaturePosition(getCreatureSummons(cid)[1]), 1, 1),x.effectdir1) doAreaCombatHealth(getCreatureSummons(cid)[1], x.type, getCreaturePosition(getCreatureTarget(cid)), x.arr, -(x.atkmin+getPlayerLevel(cid)), -(x.atkmax+getPlayerLevel(cid)), x.effecta) setPlayerStorageValue(cid, storage, os.time()+cd) doCreatureSay(cid,""..j..", "..x.attackname..".", 1) setPlayerStorageValue(cid, 102032, 1) addEvent(setPlayerStorageValue, 1*1000, cid, 102032, -1) elseif getCreatureLookDir(getCreatureSummons(cid)[1]) == 2 then doSendMagicEffect(getPositionByDirection(getCreaturePosition(getCreatureSummons(cid)[1]), 2, 1),x.effectdir2) doAreaCombatHealth(getCreatureSummons(cid)[1], x.type, getCreaturePosition(getCreatureTarget(cid)), x.arr, -(x.atkmin+getPlayerLevel(cid)), -(x.atkmax+getPlayerLevel(cid)), x.effecta) setPlayerStorageValue(cid, storage, os.time()+cd) doCreatureSay(cid,""..j..", "..x.attackname..".", 1) setPlayerStorageValue(cid, 102032, 1) addEvent(setPlayerStorageValue, 1*1000, cid, 102032, -1) elseif getCreatureLookDir(getCreatureSummons(cid)[1]) == 3 then doSendMagicEffect(getPositionByDirection(getCreaturePosition(getCreatureSummons(cid)[1]), 3, 1),x.effectdir3) doAreaCombatHealth(getCreatureSummons(cid)[1], x.type, getCreaturePosition(getCreatureTarget(cid)), x.arr, -(x.atkmin+getPlayerLevel(cid)), -(x.atkmax+getPlayerLevel(cid)), x.effecta) setPlayerStorageValue(cid, storage, os.time()+cd) doCreatureSay(cid,""..j..", "..x.attackname..".", 1) setPlayerStorageValue(cid, 102032, 1) addEvent(setPlayerStorageValue, 1*1000, cid, 102032, -1) end else doPlayerSendCancel(cid, "Target is far away.") doSendMagicEffect(getCreaturePosition(cid), 2) end return true end if x.typeattack == "intarget" then if getDistanceBetween(getCreaturePosition(getCreatureSummons(cid)[1]), getCreaturePosition(getCreatureTarget(cid))) <= x.range then if x.poison == true then Poison(cid) end doSendMagicEffect(getCreaturePosition(getCreatureTarget(cid)), x.effecta) doAreaCombatHealth(getCreatureSummons(cid)[1], x.type, getCreaturePosition(getCreatureTarget(cid)), x.arr, -(x.atkmin+getPlayerLevel(cid)), -(x.atkmax+getPlayerLevel(cid)), x.effecta) doCreatureSay(cid, ""..j..", "..x.attackname..".", 1) setPlayerStorageValue(cid, storage, os.time()+cd) setPlayerStorageValue(cid, 102032, 1) addEvent(setPlayerStorageValue, 1*1000, cid, 102032, -1) else doPlayerSendCancel(cid, "Target is far away.") doSendMagicEffect(getCreaturePosition(cid), 2) end return true end else doPlayerSendTextMessage(cid, 27, "You need level "..x.level.." to use " ..x.attackname..".") doSendMagicEffect(getCreaturePosition(cid), 2) return true end else doPlayerSendCancel(cid, "Invalid Target.") doSendMagicEffect(getCreaturePosition(cid), 2) return true end else doPlayerSendCancel(cid, "Target not is avalied.") doSendMagicEffect(getCreaturePosition(cid), 2) return true end end else doPlayerSendCancel(cid, "Do not Attack in Protection Zone.") doSendMagicEffect(getCreaturePosition(cid), 2) return true end else doPlayerSendCancel(cid, "You need pokemon to use attacks.") doSendMagicEffect(getCreaturePosition(cid), 2) return true end end return true end Ainda nao consegui editar as magias em area pois o script é um pouco complicado mas to tentando, quando conseguir eu posto aqui. O tutorial de edição esta nesse topico:[Talkaction]System M1 Pronto pessoal, é uma ajudinha pra vocês ai, devidos creditos a:XotservX por ter liberado o script, Mock , pela função doSendMagicEffectInArea MatheusMkalo pela função getTime(s).Dá um REP + AI PESSoAL!! MEU PRIMEIRO TOPICO Até mais.
    1 ponto
  21. Um pequeno erro, creio que seja fácil arrumar pra quem é fera em... :php2: Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\OTBras.skin\skinOTBras\layout.php on line 631 :construction:
    1 ponto
  22. Tryller

    Mounts Usando Attackspeed

    Olá XTibianos. Eu modifiquei o mount system do OpenTibia Server para que pudesse usar attackspeed no mounts.xml. Exemplo de como isto funciona, caso você tenha no vocations.xml attackspeed="2000" e no mounts.xml você tem attackspeed="1900", o attackspeed do player será 100. Este código eu fiz para OpenTibia SVN Servers, testado na Rev 5948 Vamos começar. Em creature.cpp depois de mountSpeed = 0; Adicione isto mountAttackSpeed = 0; depois de mountSpeed = mount.speed; Adicione isto mountAttackSpeed = mount.attackSpeed; Em creature.h depois de const int32_t getMountSpeed() const {return (ridingMount ? mountSpeed : 0);} Adicione isto const int32_t getMountAttackSpeed() const {return (ridingMount ? mountAttackSpeed : 0);} Depois de int32_t mountSpeed; Adicione isto int32_t mountAttackSpeed; Em mount.cpp depois de if(readXMLInteger(p, "speed", intValue)){ mount.speed = intValue; } Adicione isto if(readXMLInteger(p, "attackspeed", intValue)){ mount.attackSpeed = intValue; } Em mount.h troque isto Mount() : mountId(0), lookType(0), speed(0), isPremium(false), isDefault(false), name("") {} Por isto Mount() : mountId(0), lookType(0), speed(0), attackSpeed(0), isPremium(false), isDefault(false), name("") {} depois de uint32_t speed; Adicione isto uint32_t attackSpeed; Em player.cpp na função uint32_t Player::getAttackSpeed() const troque isto return vocation->getAttackSpeed(); Por isto return vocation->getAttackSpeed() - getPlayer()->getMountAttackSpeed(); Compile, e Rebuild all Não esqueça de adicionar attackspeed="0" no seu mounts.xml Créditos: Tryller
    1 ponto
  23. WaldirJunior

    [Npc]Professor Oak

    Valeu é o meu primeiro post , se acho que ficou legal!
    1 ponto
  24. brunin86

    [Actions]Box System

    Você podia me ajudar? Queria assim : Ao usar o item 7884 ( no caso : pokeball ) adicionasse o item equivalente ao id 2653 ( até ai eu sei fazer ) mas queria que ao invés de adicionar a descrição no item: Adicionar sim, um actionid. Que no meu caso, é 1 id para todas as pokeballs só que cada uma com o actionid diferente.
    1 ponto
  25. Por favor reporte bugs para que possamos arrumar todos! Abraços...
    1 ponto
  26. Po que bom que eu pude ajudar em um script. Espero que todos gostem do nosso trabalho. Bye!
    1 ponto
  27. Killua

    [npc] Npc De Clean Que Avisa

    Gente, eu vi um topico de um camarada: Xtr3m3. Sobre um NPC que da clean, e nao pude deixar de notar que MUITAS pessoas estavam reclamando pois ele não avisava, bom, Resolvi dar uma forcinha fazendo um NPC que avise. Bem, primeiramente vou por aqui o NPC Clean do Xtr3m3. Em data/npc copie um arquivo, apague oque tem dentro, mude o nome para Clean e cole isto. Em data/npc/scripts copie um arquivo, apague oque tem dentro, mude o nome para clean.lua e cole isto. mude o vermelho para o tempo que gostaria e multiplique por 60, exemplo: 15x60=900. E é aqui que eu entro, vamos criar um outro NPC, mas o qual tenha a função de avisar antes do clean. Vá em data/npc copie um arquivo, apague oque tem dentro, mude o nome para Aviso e cole isto. Agora vá na pasta data/npc/script copie um arquivo, apague oque tem dentro, mude o nome para aviso.lua e cole isto. E é isso ai, aconcelho que faça o NPC Aviso executar sua função 30 segundos antes do NPC Clean. Ex: coloque no Aviso 830 seg. e no Clean 900. Creditos: 50% do Xtr3m3 pelo NPC Clean 50% Meus pelo NPC Aviso.
    1 ponto
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...