Ir para conteúdo

Líderes

Conteúdo Popular

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

  1. 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.
    3 pontos
  2. thalia

    [8.54]Pokeserver Tfs 0.3.6 [V3.0]

    Oi galera do xtibia, alguns já me conhece , posto scripts na seção de actions/talk/move! Aqui está a versão 3.0 do PokeServer TFS 0.3.6pl1, ~~( O que contém na versão 3.0? ) ~~ ~~>Fly System - Bug corrigido ~~>Ride System- Bug corrigido ~~>Catch System- Bug corrigido ~~>Go/back System- Bug corrigido ~~>Stones System - Bug corrigido ~~>Npc Heal - Bug arrumano ~~>Todos os 151 pokemons (50% configurados) ~~>Skill System - Para cada tipo de pokemon é um poder difirente! ~~>Mapa Svke 70% ~~>Todas as outfits Stones,Go/back,Npc,Fly,Ride,Skill, foram testados, então não venha encher o saco falando merda <--! Download !--> Server 3.0 Client (È extremamento necessario para poder entrar no server!) Versão 3.0 do server de pokemon Faça você mesmo! Créditos ao Drakylucas por me ajuda a fazer os scripts! Não se esqueça de clicar ali no icone verde
    1 ponto
  3. Vodkart

    Outfits Só Para Jogadores Vips

    Vou ensinar um modo facil e rapido de colocar algumas outfits só para jogadores vip... Primeiro vá até Data\data\XML\outfits.xml Lá dentro escolha a outfit que você quer colocar(podera ser varias outfitis) só para jogadores vip e adicione: quest="XXXX" XXXX = numero de uma storage qualquer Exemplo Meu: <outfit id="32" premium="yes" quest="11322"> <list gender="0-3" lookType="264" name="Brutetamer"/> </outfit> obs: caso tenha alguma como acess"3" remova essa parte no meu caso a outfit foi Brutetamer e storage escolhida foi 11322,vamos usar essa mesmo storage depois... agora vamos para o script: [ Outfit Vip para o Perfect Vip System ] : [ Outfit vip o Vip System By Account V1.0 ] : [ Outfit vip para o System By MOCK] :
    1 ponto
  4. (Oficial - SQL) The Forgotten Server v0.2.10 - M. Spirit! Esta é uma versão do The Forgotten Server atualizada para o cliente do Tibia 8.70 e Tibia 8.71, com os novos sistemas (sistema de montaria, magias, entre outros), lembrando que ainda não está totalmente completo, em breve terá mais atualizações. ( Informações ) Atualização Versão 0.2.10: Esta versão é para fixar os bugs mais críticos relatados em 0.2.9, e um número de outras questões que foram encontradas. Ele também vem com otimizações para o código de eventos globais, principalmente na prevenção de eventos globais terem impactos no desempenho do seu servidor. Este é, portanto, essencialmente uma versão para correção de bugs. Desejamos apresentar mais recursos e novos trabalhos a versão 0.3! ChangeLog: Screenshot: DLLs: (Necessário para rodar o servidor). -> http://download294.mediafire.com/72p6126345jg/2ao9klbmehkb3f8/TFS+DLLs+-+XTibia.com.7z Código Source: Subversion client: svn://svn.otland.net/public/forgottenserver/tags/0.2.10/ Browse: http://otland.net/subversion.php?svn=public&file=listing.php&repname=forgottenserver&path=/tags/0.2.10/ Download dos Distros: Download Completo (Distros + DLLs): Créditos: Desenvolvedores do TFS - (Talaturen - OTland) - - - - - - - - - - - - - - - - - - - - - - - - - É isso, té. (+REP)
    1 ponto
  5. Vmspk

    Azeroth Server Updated

    Azeroth Server Updated 14/07/2011: v1.0 Outras Versões: v1.1 [8.60]: http://www.xtibia.co...oth-rpg-reborn/ v2.0 [9.60]: http://www.xtibia.com/forum/topic/205054-960-azeroth-rpg/ Versão: 8.70 Distro: Crystal Server Mapa Base: Yourots Edited e Mix Yourots Features: > 7 Cidades: Azeroth Avalon Zatur Liberty Bay Gloria Sand Trap Tiquanda > Montarias por quest(NPC Mount Master, cavernas ao norte de Azeroth). > NPCs de Travel/Boat diferentes para cada cidade. > Corrigidos Vários Bugs do mapa. > Templo Reformado > Retirados Vários Itens custom e suas quests do antigo Riot Server. > Adicionada Dragon Dungeon. > Adicionado Vulcão de Goroma. > Adicionada Quest Especial em Gloria (NPC Gloria Scientist). > Adicionada Ferumbras Tower. > Várias Hunts adicionadas. > Adicionada Formorgar Mines. > Sistema de Refinamento e Slot. > 6 Novas Mounts. > Principais Quests: Annihilator Pits of Inferno The Inquisition FireWalker Boots Demon Helmet Draken Hell Conquer > 23 Raids Automáticas e configuradas: > Sistema de Guerras pelo Castelo [Honor Castle, a oeste de Azeroth] Evento automático. Quando a guerra é anunciada as guilds podem batalhar pelo controle do castelo, dando use no monumento do último andar e permanecendo assim até a guerra acabar. O último jogador a ter o controle do castelo antes do tempo acabar será o vencedor, e sua guild se tornará dona do castelo. Todos os membros da Guild ganharão uma recompensa e poderão acessar o mapa do subsolo. Os membros de outras Guilds serão teleportados para o templo e não poderão acessar o castelo. O sistema envia mensagens a todos antes de o evento começar, quando começar, quando o dono do castelo muda, antes de se finalizar e ao finalizar, relatando o conquistador do castelo e a guild vencedora. Imagens: Raids Castle Upgrade & Slot System Não há teleports diretos para hunts ou quests. Não há items ou monstros editados(além dos trainers). Não há sistema VIP(premium account valorizada). Não há raids com monstros excessivamente fortes nas cidades iniciais. Acc God: 2/password Créditos:Unknow YourOts Edited, Mix Yourots Team, Crystal Server Team, Tryller, Mock, TFS Team e um pouquinho (bem pouquinho) pra mim xD. Source - IP Changer 8.70 - Utilitários(opcional) - Map Editor *Utilitários inclui: Lista com códigos de todos os looktypes, SQLite Studio 1.1.1, códigos das cores dos outfits e o OTRestarter. Download Azeroth Server V 1.0 - Completo [MEDIAFIRE] Comandos: !war para executar a guerra pelo castelo manualmente, !reset para interromper o funcionamento da war e !castle para limpar todos os dados, ou seja, o castelo volta a ser terra de ninguém. V 0.2 V 0.3 V 0.4 V 1.0 Último pedido meu: encham o saco dos adms pra colocarem o tópico do tryller como fixo. É o melhor distro 8.70 que nós temos aqui, talvez ele salve os ots 8.70 daqui pra frente Contato: vmspk@hotmail.com Edit - Coloquei os Scans Edit2 - Adicionado comando Edit3 - Atualização Edit4 - Atualização http://img208.images...claymorepsf.jpg
    1 ponto
  6. Doidin

    Opções Do Comando /attr

    É galera eu acho que todos sabem que o comando /attr serve para mudar coisas no server, semprecisar ter que derrubar ele para poder alterar... Para usar ele é bem simples, basta usar virado para o "alvo" que no caso é o player ou algum item, vamos logo as opções do comando: Opções para se usar em items: Opções para se usar em players: Sempre que for usar o comando você deve informar para qual numero você irá alterar, exemplo: /attr group 5 Espero que tenham entendido, abraços...
    1 ponto
  7. Galera eu vi um tópico aqui no XTibia de um cara tentando concluir o Shop.lua dele pra quando o player comprasse um item no shop ja vinhesse nesse item o nome do player... Eu particulamente tenho um servidor e sofro com items cloner =C. Isso ta send bom porque agora estou sabendo de onde esta vindo os cloner do meus items VIP. E assim descubro ligeiramente a raiz de tudo. Bom deixando de bla bla bla, aqui vai o script. data/globalevents/globalevents.xml <globalevent name="shop" interval="30" event="script" value="shop.lua"/> Shop.lua: local SHOP_MSG_TYPE = MESSAGE_EVENT_ORANGE local SQL_interval = 30 function onThink(interval, lastExecution) local result_plr = db.getResult("SELECT * FROM z_ots_comunication WHERE `type` = 'login';") if(result_plr:getID() ~= -1) then while(true) do local id = tonumber(result_plr:getDataInt("id")) local action = tostring(result_plr:getDataString("action")) local delete = tonumber(result_plr:getDataInt("delete_it")) local cid = getCreatureByName(tostring(result_plr:getDataString("name"))) if isPlayer(cid) then local itemtogive_id = tonumber(result_plr:getDataInt("param1")) local itemtogive_count = tonumber(result_plr:getDataInt("param2")) local container_id = tonumber(result_plr:getDataInt("param3")) local container_count = tonumber(result_plr:getDataInt("param4")) local add_item_type = tostring(result_plr:getDataString("param5")) local add_item_name = tostring(result_plr:getDataString("param6")) local received_item = 0 local full_weight = 0 if add_item_type == 'container' then container_weight = getItemWeightById(container_id, 1) if isItemRune(itemtogive_id) == TRUE then items_weight = container_count * getItemWeightById(itemtogive_id, 1) else items_weight = container_count * getItemWeightById(itemtogive_id, itemtogive_count) end full_weight = items_weight + container_weight else full_weight = getItemWeightById(itemtogive_id, itemtogive_count) if isItemRune(itemtogive_id) == TRUE then full_weight = getItemWeightById(itemtogive_id, 1) else full_weight = getItemWeightById(itemtogive_id, itemtogive_count) end end local free_cap = getPlayerFreeCap(cid) if full_weight <= free_cap then if add_item_type == 'container' then local new_container = doCreateItemEx(container_id, 1) local iter = 0 while iter ~= container_count do doAddContainerItem(new_container, itemtogive_id, itemtogive_count) iter = iter + 1 end received_item = doPlayerAddItemEx(cid, new_container) else local new_item = doCreateItemEx(itemtogive_id, itemtogive_count) doItemSetAttribute(new_item, "description", "This item can only be used by the player ".. getPlayerName(cid) .."!") doItemSetAttribute(new_item, "aid", getPlayerGUID(cid)+10000) received_item = doPlayerAddItemEx(cid, new_item) end if received_item == RETURNVALUE_NOERROR then doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'You received >> '.. add_item_name ..' << from OTS shop.') db.executeQuery("DELETE FROM `z_ots_comunication` WHERE `id` = " .. id .. ";") db.executeQuery("UPDATE `z_shop_history_item` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE id = " .. id .. ";") else doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from OTS shop is waiting for you. Please make place for this item in your backpack/hands and wait about '.. SQL_interval ..' seconds to get it.') end else doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from OTS shop is waiting for you. It weight is '.. full_weight ..' oz., you have only '.. free_cap ..' oz. free capacity. Put some items in depot and wait about '.. SQL_interval ..' seconds to get it.') end end if not(result_plr:next()) then break end end result_plr:free() end return true end Creditos pra min por ir em busca da solução e ao Cykotitan por me trazer a solução.
    1 ponto
  8. MatheusGlad

    [Systems] Pokemon Systems

    Scripts para TFS 0.3.6pl1 NAO FOI TESTADO EM OUTRA! Preview: Antes de tudo, va na pasta data/lib e adicione um script.lua com o nome de pokeLib e adicione isso: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Pokemon System By Mkalo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Pokemon System By Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- pokein, pokeout = 2222,2223 function doRemoveTile(pos)-- Script by mock pos.stackpos = 0 local sqm = getTileThingByPos(pos) doRemoveItem(sqm.uid,1) end function doCreateTile(id,pos) -- By mock doAreaCombatHealth(0,0,pos,0,0,0,CONST_ME_NONE) doCreateItem(id,1,pos) end function getPosDirs(p, dir) -- By MatheusMkalo return dir == 1 and {x=p.x-1, y=p.y, z=p.z} or dir == 2 and {x=p.x-1, y=p.y+1, z=p.z} or dir == 3 and {x=p.x, y=p.y+1, z=p.z} or dir == 4 and {x=p.x+1, y=p.y+1, z=p.z} or dir == 5 and {x=p.x+1, y=p.y, z=p.z} or dir == 6 and {x=p.x+1, y=p.y-1, z=p.z} or dir == 7 and {x=p.x, y=p.y-1, z=p.z} or dir == 8 and {x=p.x-1, y=p.y-1, z=p.z} end function doItem(pos,a,d)-- Script by mock doCreateTile(460,pos) pos.stackpos = 0 local c = getTileThingByPos(pos) doItemSetAttribute(c.uid, "aid", a) end function getDescription(uid) for i,x in pairs(getItemDescriptions(uid)) do if i == "special" then return x end end end function findLetter(string, letter) for i = 1, #string do if string:sub(i, i) == letter then return i end end end function isWalkable(pos, creature, proj, pz)-- by Nord if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end if getTopCreature(pos).uid > 0 and creature then return false end if getTileInfo(pos).protection and pz then return false, true end local n = not proj and 3 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return false end end end return true end function getPosDirs(p, dir) return dir == 1 and {x=p.x-1, y=p.y, z=p.z} or dir == 2 and {x=p.x-1, y=p.y+1, z=p.z} or dir == 3 and {x=p.x, y=p.y+1, z=p.z} or dir == 4 and {x=p.x+1, y=p.y+1, z=p.z} or dir == 5 and {x=p.x+1, y=p.y, z=p.z} or dir == 6 and {x=p.x+1, y=p.y-1, z=p.z} or dir == 7 and {x=p.x, y=p.y-1, z=p.z} or dir == 8 and {x=p.x-1, y=p.y-1, z=p.z} end function canSummon(cid) local pos = getCreaturePosition(cid) local state = false for i = 1, 8 do if isWalkable(getPosDirs(getCreaturePosition(cid), i)) then state = true end end return state end function isPlayerSummon(cid, uid) if getCreatureMaster(uid) == cid then return TRUE end return FALSE end function getSummonLifes(cid) for _,x in pairs(getCreatureSummons(cid)) do return getCreatureHealth(x), getCreatureMaxHealth(x) end end function getItemsInContainerById(container, itemid) -- Function By Kydrai local items = {} if isContainer(container) and getContainerSize(container) > 0 then for slot=0, (getContainerSize(container)-1) do local item = getContainerItem(container, slot) if isContainer(item.uid) then local itemsbag = getItemsInContainerById(item.uid, itemid) for i=0, #itemsbag do table.insert(items, itemsbag[i]) end else if itemid == item.itemid then table.insert(items, item.uid) end end end end return items end function addPokeball(cid, pokename, maxh) local s = doPlayerAddItem(cid, pokein) doItemSetAttribute(s, "poke", "This is "..pokename.."'s pokeball. HP = ["..maxh.."/"..maxh.."]") doItemSetAttribute(s, "description", "Contains a " .. pokename) end function getPokeOutLive(cid) dat = {} for slot = CONST_SLOT_FIRST, CONST_SLOT_LAST do local item = getPlayerSlotItem(cid, slot) if isContainer(item.uid) then local items = getItemsInContainerById(item.uid, pokeout) for _, ui in pairs(items) do if getItemAttribute(ui, "poke"):sub(#getItemAttribute(ui, "poke")) == "." then table.insert(dat, ui) end end end if item.itemid == pokeout then if getItemAttribute(item.uid, "poke"):sub(#getItemAttribute(item.uid, "poke")) == "." then table.insert(dat, item.uid) end end end return dat end Go/Back Pokeball System By: MatheusMkalo Vá em data/actions/scripts e adicione um arquivo.lua com o nome de goback.lua Depois de ter feito isso, adicione o seguinte script no arquivo goback.lua: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Pokemon System By Mkalo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Pokemon System By Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- local pokes = { ["Dragon"] = {level = 1, go = "Vai Dragon", back = "Volte Dragon."}, ["Demon"] = {level = 8, go = "Vai Demon", back = "Volte Demon."}, ["Dragon Lord"] = {level = 8, go = "Vai Dragon Lord", back = "Volte Dragon Lord."}, ["Rat"] = {level = 8, go = "Vai Rat", back = "Volte Rat."}, } local msgunica = false function onUse(cid, item, frompos, item2, topos) local maxh = tonumber(getItemAttribute(item.uid, "poke"):match("/(.+)]")) local health = tonumber(getItemAttribute(item.uid, "poke"):match("%[(.-)/")) if item.itemid == pokeout then if health ~= nil and health <= 0 then return doPlayerSendCancel(cid, "This pokemon is dead.") end if #getCreatureSummons(cid) >= 1 then for _,z in pairs(getCreatureSummons(cid)) do if getItemAttribute(item.uid, "poke"):find(getCreatureName(z)) then doTransformItem(item.uid, pokein) if msgunica then doCreatureSay(cid, "Back, " .. getCreatureName(z), TALKTYPE_SAY) else doCreatureSay(cid, pokes[getCreatureName(z)].back, TALKTYPE_SAY) end doItemSetAttribute(item.uid, "poke", getItemAttribute(item.uid, "poke"):sub(1, findLetter(getItemAttribute(item.uid, "poke"), ".")) .. " HP = ["..getCreatureHealth(z).."/"..getCreatureMaxHealth(z).."]") setPlayerStorageValue(cid, 61204, 0) doSendMagicEffect(getCreaturePosition(z), 10) return doRemoveCreature(z) end end end elseif item.itemid == pokein then if getTilePzInfo(getCreaturePosition(cid)) then return doPlayerSendCancel(cid, "You can't use pokeball in Protection Zones.") end if not canSummon(cid) then return doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTENOUGHROOM) end if getPlayerStorageValue(cid, 63215) >= 1 then return doPlayerSendCancel(cid, "You can't use pokeball while surfing.") end if getPlayerStorageValue(cid, 62314) >= 1 then return doPlayerSendCancel(cid, "You can't use pokeball while flying.") end if getPlayerStorageValue(cid, 59987) >= 1 then return doPlayerSendCancel(cid, "You can't use pokeball while riding.") end for i,x in pairs(pokes) do if #getCreatureSummons(cid) >= 1 then return doPlayerSendCancel(cid, "You already summoned a pokemon.") end if i == getItemAttribute(item.uid, "poke"):sub(9, findLetter(getItemAttribute(item.uid, "poke"), "'")-1) then if getPlayerLevel(cid) >= x.level then pk = doSummonCreature(i, getThingPosition(cid)) doConvinceCreature(cid, pk) setCreatureMaxHealth(pk, tonumber(getItemAttribute(item.uid, "poke"):match("/(.+)]"))) doCreatureAddHealth(pk, maxh) doCreatureAddHealth(pk, health-maxh) doTransformItem(item.uid, pokeout) if msgunica then doCreatureSay(cid, "Go, " .. i, TALKTYPE_SAY) else doCreatureSay(cid, x.go, TALKTYPE_SAY) end doItemSetAttribute(item.uid, "poke", getItemAttribute(item.uid, "poke"):sub(1, findLetter(getItemAttribute(item.uid, "poke"), "."))) doSendMagicEffect(getCreaturePosition(pk), 10) setPlayerStorageValue(cid, 61204, 1) registerCreatureEvent(pk, "DiePoke") registerCreatureEvent(cid, "PlayerPokeDeath") registerCreatureEvent(cid, "LogoutPoke") break else doPlayerSendCancel(cid, "Only players level "..x.level.." or higher can use this pokemon.") end end end end return TRUE end Depois, va em actions.xml e adicione a seguinte tag: <action itemid="2222;2223" event="script" value="goback.lua"/> Sendo que 2222 e 2223 são, respectivamente, o id da pokeball que ira "chamar" o pokemon, e o outro o id da pokeball que ira retirar o pokemon. (Seriam as pokebolas acesas e apagadas do PO) Agora, para evitar alguns bugs, va em data/creaturescripts/scripts e crie um arquivo.lua com o nome goback.lua e bote o seguinte script dentro: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Pokemon System By Mkalo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Pokemon System By Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- function onLogout(cid) local health,maxhealth = getSummonLifes(cid) if getPlayerStorageValue(cid, 61204) >= 1 and getPlayerStorageValue(cid, 63215) <= 0 and getPlayerStorageValue(cid, 62314) <= 0 and getPlayerStorageValue(cid, 59987) <= 0 then setPlayerStorageValue(cid, 61205, health) setPlayerStorageValue(cid, 61206, maxhealth) setPlayerStorageValue(cid, 61204, 0) setPlayerStorageValue(cid, 61207, 1) end if getPlayerStorageValue(cid, 62314) >= 1 then pos = getCreaturePosition(cid) for i = 1,8 do doRemoveTile(getPosDirs(getCreaturePosition(cid), i)) end doRemoveTile(getCreaturePosition(cid)) setPlayerStorageValue(cid, 61941, pos.x) setPlayerStorageValue(cid, 61942, pos.y) setPlayerStorageValue(cid, 61943, pos.z) end return TRUE end function onLogin(cid) local pokes = { ["Dragon"] = {lookType=267, speed = 1500}, ["Rat"] = {lookType=267, speed = 500}, } local pokesfly = { ["Dragon"] = {lookType = 216, speed = 500}, } local pokesride = { ["Dragon Lord"] = {lookType=4, speed = 3000}, ["Dragon"] = {lookType=4, speed = 500}, } if getPlayerStorageValue(cid, 62314) >= 1 then doCreateTile(460, {x=getPlayerStorageValue(cid, 61941), y=getPlayerStorageValue(cid, 61942), z=getPlayerStorageValue(cid, 61943)}) doTeleportThing(cid, {x=getPlayerStorageValue(cid, 61941), y=getPlayerStorageValue(cid, 61942), z=getPlayerStorageValue(cid, 61943)}) for i = 1,8 do doItem(getPosDirs(getCreaturePosition(cid), i), 65119+i) end local item = getPokeOutLive(cid)[1] local a = getItemAttribute(item, "poke"):match("This is (.-)'s pokeball.") doSetCreatureOutfit(cid, pokesfly[tostring(a)], -1) doChangeSpeed(cid, pokesfly[tostring(a)].speed) registerCreatureEvent(cid, "PlayerPokeDeath") end if getPlayerStorageValue(cid, 63215) >= 1 then local item = getPokeOutLive(cid)[1] local a = getItemAttribute(item, "poke"):match("This is (.-)'s pokeball.") doSetCreatureOutfit(cid, pokes[tostring(a)], -1) doChangeSpeed(cid, pokes[tostring(a)].speed) registerCreatureEvent(cid, "PlayerPokeDeath") end if getPlayerStorageValue(cid, 59987) >= 1 then local item = getPokeOutLive(cid)[1] local a = getItemAttribute(item, "poke"):match("This is (.-)'s pokeball.") doSetCreatureOutfit(cid, pokesride[tostring(a)], -1) doChangeSpeed(cid, pokesride[tostring(a)].speed) registerCreatureEvent(cid, "PlayerPokeDeath") end if getPlayerStorageValue(cid, 61207) >= 1 then local item = getPokeOutLive(cid)[1] doTransformItem(item, pokein) doRemoveCondition(cid, CONDITION_OUTFIT) doItemSetAttribute(item, "poke", getItemAttribute(item, "poke"):sub(#getItemAttribute(item, "poke")) ~= "]" and getItemAttribute(item, "poke") .. " HP = ["..getPlayerStorageValue(cid, 61205).."/"..getPlayerStorageValue(cid, 61206).."]" or getItemAttribute(item, "poke")) setPlayerStorageValue(cid, 61207, 0) end return TRUE end function onDeath(cid, deathList) local owner = getCreatureMaster(cid) doPlayerSendTextMessage(owner, 22, "Your pokemon died.") for slot = CONST_SLOT_FIRST, CONST_SLOT_LAST do local item = getPlayerSlotItem(owner, slot) if isContainer(item.uid) then local items = getItemsInContainerById(item.uid, pokeout) for _, ui in pairs(items) do if getItemAttribute(ui, "poke"):sub(#getItemAttribute(ui, "poke")) == "." then local maxh = tonumber(getItemAttribute(ui, "poke"):match("/(.+)]")) doItemSetAttribute(ui, "poke", getItemAttribute(ui, "poke"):sub(1, findLetter(getItemAttribute(ui, "poke"), ".")) .. " HP = [0/"..getCreatureMaxHealth(cid).."]") end end end if item.itemid == pokeout then if getItemAttribute(item.uid, "poke"):sub(#getItemAttribute(item.uid, "poke")) == "." then local maxh = tonumber(getItemAttribute(item.uid, "poke"):match("/(.+)]")) doItemSetAttribute(item.uid, "poke", getItemAttribute(item.uid, "poke"):sub(1, findLetter(getItemAttribute(item.uid, "poke"), ".")) .. " HP = [0/"..getCreatureMaxHealth(cid).."]") end end end doRemoveCreature(cid) setPlayerStorageValue(owner, 61207, 0) setPlayerStorageValue(owner, 61204, 0) return FALSE end Agora adicione outro arquivo.lua na pasta data/creaturescripts/scripts com o nome de playerpdeath e bote esse script: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Pokemon System By Mkalo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Pokemon System By Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- function onDeath(cid) local health,maxhealth = getSummonLifes(cid) if #getCreatureSummons(cid) >= 1 then setPlayerStorageValue(cid, 61205, health) setPlayerStorageValue(cid, 61206, maxhealth) setPlayerStorageValue(cid, 61204, 0) setPlayerStorageValue(cid, 61207, 1) end if getPlayerStorageValue(cid, 63215) >= 1 then setPlayerStorageValue(cid, 61205, getPlayerStorageValue(cid, 61210)) setPlayerStorageValue(cid, 61206, getPlayerStorageValue(cid, 61209)) setPlayerStorageValue(cid, 61204, 0) setPlayerStorageValue(cid, 63215, 0) setPlayerStorageValue(cid, 61207, 1) end if getPlayerStorageValue(cid, 62314) >= 1 then setPlayerStorageValue(cid, 61205, getPlayerStorageValue(cid, 61262)) setPlayerStorageValue(cid, 61206, getPlayerStorageValue(cid, 61263)) setPlayerStorageValue(cid, 61204, 0) setPlayerStorageValue(cid, 62314, 0) setPlayerStorageValue(cid, 61207, 1) end if getPlayerStorageValue(cid, 59987) >=1 then setPlayerStorageValue(cid, 61205, getPlayerStorageValue(cid, 59988)) setPlayerStorageValue(cid, 61206, getPlayerStorageValue(cid, 59989)) setPlayerStorageValue(cid, 61204, 0) setPlayerStorageValue(cid, 59987, 0) setPlayerStorageValue(cid, 61207, 1) end return TRUE end Depois va em creaturescripts.xml e adicione as seguintes TAGS: <event type="death" name="PlayerPokeDeath" event="script" value="playerpdeath.lua"/> <event type="death" name="DiePoke" event="script" value="goback.lua"/> <event type="logout" name="LogoutPoke" event="script" value="goback.lua"/> <event type="login" name="LoginPoke" event="script" value="goback.lua"/> Catch Pokemon System By: MatheusMkalo Vá em data/actions/scripts e adicione um arquivo.lua com o nome de catch.lua Depois adicione o seguinte script dentro dele: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Pokemon System By Mkalo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Pokemon System By Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- local pokes = { ["Dragon"] = {corpseid = 5973, chance = 100, health = 12200, maxhealth = 12200}, ["Dragon Lord"] = {corpseid = 5984, chance = 100, health = 12200, maxhealth = 12200}, ["Demon"] = {corpseid = 5995, chance = 100, health = 12200, maxhealth = 12200}, } local time = 4 -- Tempo para mandar as mensagens e adiciona item function onUse(cid, item, frompos, item2, topos) for i,x in pairs(pokes) do if item2.itemid == x.corpseid then doRemoveItem(item.uid, 1) doRemoveItem(item2.uid, 1) if math.random(1,100) <= x.chance then function add() local s = doPlayerAddItem(cid, pokein) doItemSetAttribute(s, "poke", "This is "..i.."'s pokeball. HP = ["..x.health.."/"..x.maxhealth.."]") doItemSetAttribute(s, "description", "Contains a " .. i) end doSendMagicEffect(topos, 24) addEvent(add, time*1000) return addEvent(doPlayerSendTextMessage, time*1000, cid, 27, "You catch a " .. i .. ".") else addEvent(doPlayerSendTextMessage, time*1000, cid, 27, "Your pokeball broke.") return doSendMagicEffect(topos, 23) end end end return TRUE end Depois adicione a seguinte TAG no actions.xml: <action itemid="2147" event="script" value="catch.lua"/> Sendo 2147, o id da sua pokebola para capturar pokemons (NAO A DE CHAMAR O POKEMON) Npc Healler By: MatheusMkalo Vá em data/npc/scripts e adicione um arquivo.lua com o seguinte script: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Pokemon System By Mkalo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Pokemon System By Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end if msgcontains(msg, 'heal') then if #getCreatureSummons(cid) >= 1 then return selfSay('Voce precisa botar seus pokemons dentro da pokebola.', cid) end for slo = CONST_SLOT_FIRST, CONST_SLOT_LAST do local item = getPlayerSlotItem(cid, slo) if isContainer(item.uid) then local items = getItemsInContainerById(item.uid, pokeout) for i,x in pairs(items) do local maxh = tonumber(getItemAttribute(x, "poke"):match("/(.+)]")) doItemSetAttribute(x, "poke", getItemAttribute(x, "poke"):sub(1, findLetter(getItemAttribute(x, "poke"), ".")) .. " HP = ["..maxh.."/"..maxh.."]") doTransformItem(x, pokein) end local items2 = getItemsInContainerById(item.uid, pokein) for i,x in pairs(items2) do local maxh = tonumber(getItemAttribute(x, "poke"):match("/(.+)]")) doItemSetAttribute(x, "poke", getItemAttribute(x, "poke"):sub(1, findLetter(getItemAttribute(x, "poke"), ".")) .. " HP = ["..maxh.."/"..maxh.."]") end elseif item.itemid == pokeout or item.itemid == pokein then local maxh = tonumber(getItemAttribute(item.uid, "poke"):match("/(.+)]")) doItemSetAttribute(item.uid, "poke", getItemAttribute(item.uid, "poke"):sub(1, findLetter(getItemAttribute(item.uid, "poke"), ".")) .. " HP = ["..maxh.."/"..maxh.."]") doTransformItem(item.uid, pokein) end end selfSay('Pronto, voce e seus pokemons estao com a life maxima.', cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Depois va ate a pasta data/npc e adicione um arquivo.xml e bote isso dentro: <?xml version="1.0" encoding="UTF-8"?> <npc name="Pokemon Healer" script="pokehealer.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="128" head="17" body="54" legs="114" feet="0" addons="2"/> <parameters> <parameter key="message_greet" value="Ola, diga {heal} para recuperar sua vida e a vida dos seus pokemons."/> </parameters> </npc> Surf System By: MatheusMkalo Vá em data/actions/scripts e crie um arquivo.lua com o nome de surf e bote esse script dentro: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Pokemon System By Mkalo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Pokemon System By Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- function onUse(cid, item, frompos, item2, topos) local configs = { [4647] = {x = -2, y = 0}, -- 4647 é o id da borda oeste (lado esquerdo do player) [4645] = {x = 2, y = 0}, -- 4645 é o id da borda leste (lado direito do player) [4646] = {x = 0, y = 2}, -- 4646 é o id da borda sul (abaixo do player) [4644] = {x = 0, y = -2}, -- 4644 é o id da borda norte (acima do player) } local playerpos = getCreaturePosition(cid) local pokes = { ["Dragon"] = {lookType=267, speed = 1500}, ["Rat"] = {lookType=267, speed = 500}, } if #getCreatureSummons(cid) <= 0 and getPlayerStorageValue(cid, 63215) <= 0 then return doPlayerSendCancel(cid, "You need a pokemon to surf.") end l = false for i,x in pairs(pokes) do if getPlayerStorageValue(cid, 63215) <= 0 and i:lower() == getCreatureName(getCreatureSummons(cid)[1]):lower() then l = true end end if not l and getPlayerStorageValue(cid, 63215) <= 0 then return doPlayerSendCancel(cid, "This pokemon can't surf.") end if getPlayerStorageValue(cid, 63215) <= 0 then doTeleportThing(cid, {x=playerpos.x+configs[item2.itemid].x, y=playerpos.y+configs[item2.itemid].y, z=playerpos.z}) setPlayerStorageValue(cid, 63215, 1) doSetCreatureOutfit(cid, pokes[getCreatureName(getCreatureSummons(cid)[1])], -1) doCreatureSay(cid, "Let's surf, "..getCreatureName(getCreatureSummons(cid)[1]), 1) setPlayerStorageValue(cid, 61209, getCreatureMaxHealth(getCreatureSummons(cid)[1])) setPlayerStorageValue(cid, 61210, getCreatureHealth(getCreatureSummons(cid)[1])) doChangeSpeed(cid, pokes[getCreatureName(getCreatureSummons(cid)[1])].speed) doRemoveCreature(getCreatureSummons(cid)[1]) else doTeleportThing(cid, {x=playerpos.x-configs[item2.itemid].x, y=playerpos.y-configs[item2.itemid].y, z=playerpos.z}) setPlayerStorageValue(cid, 63215, 0) doRemoveCondition(cid, CONDITION_OUTFIT) local item = getPokeOutLive(cid)[1] doCreatureSay(cid, "Im tired of surf, " .. getItemAttribute(item, "poke"):match("This is (.-)'s pokeball."), 1) pk = doSummonCreature(getItemAttribute(item, "poke"):match("This is (.-)'s pokeball."), getThingPosition(cid)) doConvinceCreature(cid, pk) registerCreatureEvent(pk, "DiePoke") registerCreatureEvent(cid, "PlayerPokeDeath") registerCreatureEvent(cid, "LogoutPoke") setCreatureMaxHealth(pk, getPlayerStorageValue(cid, 61209)) doCreatureAddHealth(pk, getPlayerStorageValue(cid, 61209)) doCreatureAddHealth(pk, getPlayerStorageValue(cid, 61210)-getPlayerStorageValue(cid, 61209)) doChangeSpeed(cid, getCreatureBaseSpeed(cid)-getCreatureSpeed(cid)) end return TRUE end Depois va em actions.xml e adicione essa tag: <action itemid="4647;4645;4646;4644" event="script" value="surf.lua"/> Ensinarei nos tutorias como adicionar novas bordas e botar cada pokemon com seu proprio outfit na agua. OBS:Todos os scripts mudaram para implementar o surf, atualize-os OBS2: Para funcionar o id da agua tem que ser 4820. Para usar basta clicar na borda da agua. Evolution System By: MatheusMkalo Vá em data/actions/scripts e adicione um script.lua com o nome de evolution.lua e bote esse script: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Pokemon System By Mkalo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Pokemon System By Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- local pokes = { ["Dragon"] = {level = 1, evolution = "Dragon Lord", maxh = 2000}, } local types = { ["Water"] = {itemid = 2277, "Horsea", "Goldeen", "Magikarp"}, ["Venom"] = {itemid = 2278, "Zubat", "Ekans"}, ["Thunder"] = {itemid = 2279, "Magnemite", "Pikachu"}, ["Rock"] = {itemid = 2280, "Geodude", "Graveler"}, ["Punch"] = {itemid = 2281, "Machop", "Machoke"}, ["Leaf"] = {itemid = 2276, "Ivysaur"}, ["Fire"] = {itemid = 2283, "Charmander", "Charmeleon", "Dragon"}, ["Coccon"] = {itemid = 2284, "Caterpie", "Metapod"}, ["Crystal"] = {itemid = 2285, "Dratini", "Dragonair"}, ["Darkness"] = {itemid = 2286, "Gastly", "Haunter"}, ["Earth"] = {itemid = 2287, "Cubone"}, ["Enigma"] = {itemid = 2288, "Abra", "Kadabra"}, ["Heart"] = {itemid = 2289, "Rattata", "Pidgey"}, ["Ice"] = {itemid = 2290, "Seel"}, } function onUse(cid, item, frompos, item2, topos) for i,x in pairs(types) do if item.itemid == x.itemid then if isCreature(item2.uid) then if isPlayerSummon(cid, item2.uid) then if table.find(x, getCreatureName(item2.uid)) then if getPlayerLevel(cid) >= pokes[getCreatureName(item2.uid)].level then local pokeball = getPokeOutLive(cid)[1] local slo = pokes[getCreatureName(item2.uid)].maxh local sle = pokes[getCreatureName(item2.uid)].evolution doItemSetAttribute(pokeball, "description", "Contains a " .. pokes[getCreatureName(item2.uid)].evolution) doPlayerSendTextMessage(cid, 27, "Your "..getCreatureName(item2.uid).." evolued to a "..pokes[getCreatureName(item2.uid)].evolution) doSendMagicEffect(topos, 18) doItemSetAttribute(pokeball, "poke", "") doItemSetAttribute(pokeball, "poke", "This is "..pokes[getCreatureName(item2.uid)].evolution.."'s pokeball. HP = ["..pokes[getCreatureName(item2.uid)].maxh.."/"..pokes[getCreatureName(item2.uid)].maxh.."]") doRemoveCreature(item2.uid) local pk = doSummonCreature(sle, topos) registerCreatureEvent(pk, "DiePoke") registerCreatureEvent(cid, "PlayerPokeDeath") registerCreatureEvent(cid, "LogoutPoke") doConvinceCreature(cid, pk) setCreatureMaxHealth(pk, slo) setPlayerStorageValue(cid, 61204, 1) doCreatureAddHealth(pk, slo) doRemoveItem(item.uid, 1) break else return doPlayerSendCancel(cid, "You need to be level "..pokes[getCreatureName(item2.uid)].level.." or higher to use this stone in this pokemon.") end end end end end end return TRUE end Depois vá em actions.xml e adicione esta tag: <action itemid="2276;2277;2278;2279;2280;2281;2283;2284;2285;2286;2287;2288;2289;2290" event="script" value="evolution.lua" allowfaruse="1"/> Fly System By: MatheusMkalo, Credits: Mock Vá em data/talkactions/scripts e adicione um arquivo.lua com o nome de fly e bote esse script: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Pokemon Systems by Mkalo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Pokemon Systems by Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- function onSay(cid, words, param) local pokes = { ["Dragon"] = {lookType = 216, speed = 500}, } if #getCreatureSummons(cid) <= 0 and getPlayerStorageValue(cid, 62314) <= 0 then doPlayerSendCancel(cid, "You need a pokemon to fly.") end if getPlayerStorageValue(cid, 62314) <= 0 and not pokes[getCreatureName(getCreatureSummons(cid)[1])] then return doPlayerSendCancel(cid, "This pokemon can't fly.") end if getPlayerStorageValue(cid, 62314) <= 0 then doSetCreatureOutfit(cid, pokes[getCreatureName(getCreatureSummons(cid)[1])], -1) doChangeSpeed(cid, pokes[getCreatureName(getCreatureSummons(cid)[1])].speed) setPlayerStorageValue(cid, 61263, getCreatureMaxHealth(getCreatureSummons(cid)[1])) setPlayerStorageValue(cid, 61262, getCreatureHealth(getCreatureSummons(cid)[1])) setPlayerStorageValue(cid, 62314, 1) registerCreatureEvent(cid, "LogoutPoke") doCreatureSay(cid, "Let's fly, "..getCreatureName(getCreatureSummons(cid)[1]), 1) doRemoveCreature(getCreatureSummons(cid)[1]) local ppos = getCreaturePos(cid) local newpos = {x=ppos.x, y=ppos.y, z = 0} doCreateTile(460, newpos) doTeleportThing(cid, newpos) for i = 1,8 do doItem(getPosDirs(getCreaturePosition(cid), i), 65119+i) end elseif getPlayerStorageValue(cid, 62314) >= 1 then local ppos = getCreaturePosition(cid) p = true for i = 1,17 do if getTileThingByPos({x=ppos.x, y=ppos.y, z=ppos.z+i}).itemid ~= 0 and not isWalkable({x=ppos.x, y=ppos.y, z=ppos.z+i}) then p = false break end if isWalkable({x=ppos.x, y=ppos.y, z=ppos.z+i}) then l = ppos.z + i break end end if not p or getTileThingByPos({x=ppos.x, y=ppos.y, z=l}).itemid == 4820 then return doPlayerSendCancel(cid, "You can't down in there.") end for i = 1,8 do doRemoveTile(getPosDirs(getCreaturePosition(cid), i)) end setPlayerStorageValue(cid, 62314, 0) doTeleportThing(cid, {x=ppos.x, y=ppos.y, z=l}) doRemoveTile(ppos) local item = getPokeOutLive(cid)[1] pk = doSummonCreature(getItemAttribute(item, "poke"):match("This is (.-)'s pokeball."), getThingPosition(cid)) doConvinceCreature(cid, pk) doCreatureSay(cid, "I'm tired of fly, "..getItemAttribute(item, "poke"):match("This is (.-)'s pokeball."), 1) registerCreatureEvent(pk, "DiePoke") registerCreatureEvent(cid, "PlayerPokeDeath") setCreatureMaxHealth(pk, getPlayerStorageValue(cid, 61263)) doCreatureAddHealth(pk, getPlayerStorageValue(cid, 61263)) doCreatureAddHealth(pk, getPlayerStorageValue(cid, 61262)-getPlayerStorageValue(cid, 61263)) doChangeSpeed(cid, getCreatureBaseSpeed(cid)-getCreatureSpeed(cid)) doRemoveCondition(cid, CONDITION_OUTFIT) end return TRUE end Depois bote essa tag no talkaction.xml: <talkaction words="!fly" event="script" value="fly.lua"/> Va em data/movements/scripts e crie um arquivo.lua com o nome de fly.lua e bote: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Pokemon Systems by Mkalo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Pokemon Systems by Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- function onStepIn(cid, item, position, fromPosition) local actions = { [65120] = {del = {4,5,6}, add = {1,2,8}}, [65121] = {del = {8,7,6,5,4}, add = {8,1,2,3,4}}, [65122] = {del = {8,7,6}, add = {2,3,4}}, [65123] = {del = {2,1,8,7,6}, add = {6,5,4,3,2}}, [65124] = {del = {2,1,8}, add = {4,5,6}}, [65125] = {del = {8,1,2,3,4}, add = {8,7,6,5,4}}, [65126] = {del = {2,3,4}, add = {8,7,6}}, [65127] = {del = {6,5,4,3,2}, add = {6,7,8,1,2}}, } local configs = actions[item.actionid] for i = 1,8 do if table.find(configs.del, i) then doRemoveTile(getPosDirs(fromPosition, i)) end doItem(getPosDirs(getCreaturePosition(cid), i), 65119+i) end return TRUE end Depois va em movements.xml e adicione essa tag: <movevent type="StepIn" actionid="65120;65121;65122;65123;65124;65125;65126;65127" event="script" value="fly.lua"/> Para usar o fly diga !fly para descer e subir Ride System By: MatheusMkalo Vá em talkactions/scripts e crie um arquivo.lua com o nome de ride e bote esse script: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Pokemon Systems by Mkalo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Pokemon Systems by Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- function onSay(cid, words) local pokesride = { ["Dragon Lord"] = {lookType=4, speed = 3000}, ["Dragon"] = {lookType=4, speed = 500}, } if #getCreatureSummons(cid) <= 0 and getPlayerStorageValue(cid, 59987) <= 0 then return doPlayerSendCancel(cid, "You need a pokemon to ride.") end if not canSummon(cid) and getPlayerStorageValue(cid, 59987) >= 1 then return doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTENOUGHROOM) end local sname = #getCreatureSummons(cid) >= 1 and getCreatureName(getCreatureSummons(cid)[1]) or nil if sname ~= nil and pokesride[sname] and getPlayerStorageValue(cid, 59987) <= 0 then doSetCreatureOutfit(cid, pokesride[sname], -1) doChangeSpeed(cid, pokesride[sname].speed) doCreatureSay(cid, "Let's ride, " .. sname, 1) setPlayerStorageValue(cid, 59987, 1) setPlayerStorageValue(cid, 59988, getCreatureHealth(getCreatureSummons(cid)[1])) setPlayerStorageValue(cid, 59989, getCreatureMaxHealth(getCreatureSummons(cid)[1])) doRemoveCreature(getCreatureSummons(cid)[1]) elseif getPlayerStorageValue(cid, 59987) >= 1 then setPlayerStorageValue(cid, 59987, 0) doRemoveCondition(cid, CONDITION_OUTFIT) local item = getPokeOutLive(cid)[1] doCreatureSay(cid, "Im tired of ride, " .. getItemAttribute(item, "poke"):match("This is (.-)'s pokeball."), 1) pk = doSummonCreature(getItemAttribute(item, "poke"):match("This is (.-)'s pokeball."), getThingPosition(cid)) doConvinceCreature(cid, pk) registerCreatureEvent(pk, "DiePoke") registerCreatureEvent(cid, "PlayerPokeDeath") registerCreatureEvent(cid, "LogoutPoke") setCreatureMaxHealth(pk, getPlayerStorageValue(cid, 59989)) doCreatureAddHealth(pk, getPlayerStorageValue(cid, 59989)) doCreatureAddHealth(pk, getPlayerStorageValue(cid, 59988)-getPlayerStorageValue(cid, 59989)) doChangeSpeed(cid, getCreatureBaseSpeed(cid)-getCreatureSpeed(cid)) end return TRUE end Agora bote essa tag em talkactions.xml: <talkaction words="!ride" event="script" value="ride.lua"/> Pra usar o ride é so falar !ride. Para configurar os pokemons é praticamente igual ao surf. Configurando os scripts Como adicionar mais pokemons no go/back: No inicio do script, tem essa tabela com as informaçoes: Copie a ultima linha (vermelha) e cole logo abaixo, editando os nomes e as mensagens ficando assim: Voce pode configurar o level para usar o poke mudando o valor de level. Configurando pokemons para o catch:[/b] Olhe a tabela no inicio do script: Faça o mesmo processo do acima de copiar e colar embaixo e editar: Aonde as informaçoes corpseid, chance, health, maxhealth serao, respectivamente: Id do corpo do monstro, Chance de capturar em %, health que o pokemon iria ir pro player, e health maxima que o poke iria ir para o player. Como trocar os ids das pokebolas, acesas e apagadas. Para trocar o id da pokebola "acesa" e "apagada" basta mudar os ids 2222,2223 na lib sendo que 2222 eh o da acesa e o 2223 eh o id da apagada Mude tambem na tag do action.xml que seu script ira funcionar perfeitamente. Como adicionar mais bordas ao surf. Primeiramente va em actions.xml e adicione os ids das bordas na tag do surf: (Eu fiz com a borda de areia) Depois va no script surf.lua em actions e repare nessa parte: Copie todas as 4 bordas e cole abaixo ficando: Depois mude os ids das bordas do lado << conforme as informaçoes do lado >>, ficando: Como adicionar mais pokes ao surf: Va no script surf.lua em actions e repare nessa parte: Ai voce pode adicionar o pokemon pra surf e o outfit que ele vai te dar na agua copiando o de cima e colando logo abaixo e editando algumas coisas: Lembre-se de depois que acabar de editar toda a tabela no surf.lua, va no goback.lua em creaturescripts e substitua a tabela pokes, pela que esta na actions surf.lua: Como adicionar mais pokes no evolution: Repare nessa parte do script evolution.lua em actions: Bem voce deve copiar o primeiro monstro da tabela "pokes", e adicionar no final e mudar as configuraçoes: Sendo level,evolution,maxh respectivamente, o level pra evoluir o poke, o nome da evoluçao, e a health maxima do pokemon evoluido. Depois eh so adicionar o Nome do monstro que foi adicionado a tabela "pokes" na tabela "types", no lugar do type dele: Como adicionar mais pokes no fly: Repare nas partes iguais no fly.lua (talkaction) e no goback.lua(creaturescripts): fly.lua: goback.lua: A unica coisa que mudou foi o nome da tabela, "pokes" e "pokesfly", para adicionar mais pokes no fly basta adicionar no fly.lua e botar igual no goback.lua. Informaçoes Importantes!!! Para testar o script de catch que esta no topico, voce deve deletar as tags de encantamento de armas. Para poder summonar os pokemons com o go/back, voce precisa ir no arquivo.xml do monstro e editar essa linha: Se estiver convinceable="0", mude para convinceable="1" ficando: Creditos Especiais: Kydrai pela funçao "getItemsInContainerById" MarcelloMkez Mock por algumas funçoes do fly system dele. Agradecimentos: D3rs00n (Me ajudou a fazer sumir o corpo do pokemon) Julio Cezar (Ajudou reportando bugs e testando scripts) Miih (Ajudou reportando bugs e testando scripts) Arth3miS (Ajudou reportando bugs e testando scripts) E para todos que reportaram bugs. Bugs, erros, duvidas, elogios no topico[/b]
    1 ponto
  9. 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
  10. meubk

    [Perfect Trainer System]

    Oque ele faiz? É um sistema onde é cobrado cada minuto , que fique nos trainers , para comprar é só disser !trainer (minutos) tendo um limite , qndo o tempo acaba é teleportado automaticamente para o templo , caso queira sair dos trainers , sem esperar o tempo é só disser !trainer off , e vc vai para templo , e o tempo volta ao 0. OBS : se nos trainers tem teleport , para ir e para voltar, tire os teleports, e deixe somente o sistema para não causa bugs. Crie um arquivo em lua, com nome de trainer , e cole o script. -- [Perfect Trainer System By : XotservX ] -- function onSay(cid, words, param) -- Configs -- local money = 1000 -- preço por cada minuto. local trainerpos = {x=535, y=2001, z=7} -- posição dos trainers. local maxminute = 40 -- minutos maximo. local endpos = getTownTemplePosition(getPlayerTown(cid)) -- [[posição para sair dos trainers (configurada para posição do templo)]] -- if isNumber(tonumber(param)) then param = math.ceil(tonumber(param)) if not param then doPlayerSendCancel(cid, "The time inserted is invallid.") doSendMagicEffect(getPlayerPosition(cid), 2) return true end if getPlayerMoney(cid) < param*money then doPlayerSendCancel(cid, "You don't have enought money.") doSendMagicEffect(getPlayerPosition(cid), 2) return true end if getTilePzInfo(getCreaturePosition(cid)) then if param <= maxminute and getPlayerStorageValue(cid, 86867) == -1 then local eventid1 = addEvent(doTeleportThing, param*1000*60, cid, endpos) setPlayerStorageValue(cid, 85856, eventid1) local eventid2 = addEvent(setPlayerStorageValue, param*1000*60, cid, 86867, -1) setPlayerStorageValue(cid, 85857, eventid2) local eventid3 = addEvent(doPlayerSendTextMessage, param*1000*60, cid, 27, "Time is gone") setPlayerStorageValue(cid, 85858, eventid3) local eventid4 = addEvent(doSendMagicEffect, param*1000*60, getPlayerPosition(cid), 10) setPlayerStorageValue(cid, 85859, eventid4) setPlayerStorageValue(cid, 86867, 1) doTeleportThing(cid, trainerpos) doPlayerRemoveMoney(cid, param*1000) doPlayerSendTextMessage(cid, 27, "You bought "..param.." minutes at trainers.") doSendMagicEffect(getPlayerPosition(cid), 10) else doPlayerSendCancel(cid, "The maximum possible time is 40 minutes.") doSendMagicEffect(getPlayerPosition(cid), 2) return true end else doPlayerSendCancel(cid, "You need to be protection zone.") doSendMagicEffect(getPlayerPosition(cid), 2) return true end else if param == "off" and getPlayerStorageValue(cid, 86867) == 1 then stopEvent(getPlayerStorageValue(cid, 85856)) stopEvent(getPlayerStorageValue(cid, 85857)) stopEvent(getPlayerStorageValue(cid, 85858)) stopEvent(getPlayerStorageValue(cid, 85859)) doPlayerSendTextMessage(cid, 27, "You left the trainers, so long reset.") setPlayerStorageValue(cid, 86867, -1) doTeleportThing(cid, endpos) doSendMagicEffect(getPlayerPosition(cid), 10) else doPlayerSendCancel(cid, "You're already in trainers") doSendMagicEffect(getPlayerPosition(cid), 2) end end return true end Siga as configurações do script , mto simples de ser configurado. Tag : <talkaction words="!trainer" event="script" value="trainer.lua"/> Reporte Bugs ou elogios , no tópico...
    1 ponto
  11. meubk

    [Creatureevents]Pokemon Not Attack

    Olá, muita gente tá com duvida nisso, que o pokemon, ataca com o m1, e sozinho junto, vow enssinar uma formula de ele somente atacar com o m1, simples e rapido... Na pasta creaturescript/scripts, crie um arquivo .lua com nome de notattack.lua, e adc esse script. function onCast(cid, target) if isMonster(target) or isPlayer(target) then return false end return true end no arkivo creaturesscript.xml adc á tag : <event type="cast" name="NotAttack" event="script" value="notattack.lua"/> agora é a parte + complicadinha... se vc usa go/back do mkalo vc tem ki adc isso no script de go/back nessa parte : registerCreatureEvent(pk, "DiePoke") registerCreatureEvent(cid, "PlayerPokeDeath") registerCreatureEvent(cid, "LogoutPoke") vc muda para : registerCreatureEvent(pk, "DiePoke") registerCreatureEvent(pk, "NotAttack") registerCreatureEvent(cid, "PlayerPokeDeath") registerCreatureEvent(cid, "LogoutPoke") é só ir adicionando : registerCreatureEvent(pk, "NotAttack") vc vai encontrar isso no arquivo tbem, de ride, surf, e fly, mude lá tbem. e nos outros sistemas procure paster parecidas com a acima, e edite... é bem melhor assim, não precisa criar 2 monstros. fui.
    1 ponto
  12. meubk

    [Talkaction]!online Para Sv De Pokemon

    Comando !online. Todos conhecem o comando !online que mostra todos player onlines, eu dei uma editada nele, para servers de pokemon, agora ele mostrará o level do char, o pokemon que ele está batalhando, e qual está usando. Exemplo : Caso ele não esteje usando nenhum pokemon ou não batalahndo com nenhum, aparecerá, Using : nothing. Vamo ao script : caso vc não tenha o online para editar, crie um arquivo com nome de online.lua : local config = { showGamemasters = getBooleanFromString(getConfigValue('displayGamemastersWithOnlineCommand')) } function onSay(cid, words, param, frompos) local players = getPlayersOnline() local strings = {""} local i, position = 1, 1 local added = false for _, pid in ipairs(players) do if(added) then if(i > (position * 7)) then strings[position] = strings[position] .. "," position = position + 1 strings[position] = "" else strings[position] = i == 1 and "" or strings[position] .. "\n\n" end end local battle = getCreatureTarget(pid) == 0 and "nothing" or getCreatureName(getCreatureTarget(pid)) local poke = #getCreatureSummons(pid) == 0 and "nothing" or getCreatureName(getCreatureSummons(pid)[1]) if((config.showGamemasters or getPlayerCustomFlagValue(cid, PLAYERCUSTOMFLAG_GAMEMASTERPRIVILEGES) or not getPlayerCustomFlagValue(pid, PLAYERCUSTOMFLAG_GAMEMASTERPRIVILEGES)) and (not isPlayerGhost(pid) or getPlayerGhostAccess(cid) >= getPlayerGhostAccess(pid))) then strings[position] = strings[position] .. "[".. getCreatureName(pid) .. "][" .. getPlayerLevel(pid) .."]\n[battling: " .. battle .. " Using: " ..poke.."]" i = i + 1 added = true else added = false end end local c = (i - 1) for i, str in ipairs(strings) do if(str:sub(str:len()) ~= ",") then str = str .. "." doShowTextDialog(cid, 2501, c .. " player(s) online:\n\n" .. str) end end return true end Tag : <talkaction words="!online" hide="yes" event="script" value="online.lua"/> #ATUALIZADO 08/02 - Mudado pra Scroll.
    1 ponto
  13. Vodkart

    Npc Pokemoncollector Funcionando

    Explicação: é dada uma lista na ordem alfabética com os pokemons que esse NPC compra,depois disso há 2 versões V 1.0 --[[ PokeServer ]] -- : basta dizer o nome do pokemon que você quer vender e colocar o mesmo no slot da pokebola... V 2.0 --[[ Pokemon Dash --]] : a pokebola tem que estar dentro da backpack,com a função "sellPokemon(cid, name, price)" que não é minha NPC/SCRIPT buy_pokemons.lua V 1.0 V 2.0 NPC Comprador.xml <?xml version="1.0"?> <npc name="Comprador" script="data/npc/scripts/buy_pokemons.lua" walkinterval="5000" floorchange="0"> <health now="100" max="100"/> <look type="134" head="78" body="88" legs="0" feet="88" addons="3"/> <parameters> <parameter key="message_greet" value="Ola |PLAYERNAME|. quer me vender alguns {pokemon}? " /> </parameters> </npc>
    1 ponto
  14. Demonbholder

    Os.date

    Olá galera do XTibia, vamos ver... vou tentar ajudar vocês com um tutorial de os.date. Sendo sincero, eu aprendi a pouco tempo como usar o os.date, em um exemplar de programação lua. Estou fazendo este tutorial para esclarecer a maioria das duvidas que vocês possam ter, então, por favor, prestem muita atenção se forem ler, e não leiam a menos, que estejam com tempo, paciência e vontade de aprender, pois eu creio que mesmo sendo novato com o os.date, eu vou conseguir fazer um bom tutorial. Publico alvo: Este tutorial foi feito para ensinar programadores lua, do nível iniciante/intermediario, ou seja, aqueles que já tem algum conhecimento quanto a os.time, variáveis, loopings, e etc... Agradecimentos: Devo agradecer ao ta4e, uma pessoa que eu considero extremamente confiável e amiga, já que sempre esteve disposto a me ajudar em minhas duvidas, e me ensinou praticamente tudo que eu sei. Alguma coisa para o noobinhu, que me fez ter curiosidade quanto ao assunto. Sem mais delongas, vamos ao tutorial... Em OtServers, os.date é pouco explorado, já que sua funcionalidade, é, por muitos, desconhecida. Então vou explicar como você poderia usa-lo em um script para o seu ot. Vamos ver, digamos que você queira que um script funcione a partir das oito da manhã, e pare de funcionar a partir das duas da tarde; para isso, você poderia usar o os.date. O os.date, assim como o os.time, serve para controlar valores de tempo, e retornam os mesmos de acordo com os valores da cpu, a partir de quando o script entra em funcionamento, então, o exemplo acima ficaria assim: function onSay(cid, words, param) if os.date("%X") >= "08:00:00" and os.date("%X") <= "14:00:00" then doPlayerSendTextMessage(cid, 22, "Teste") end end No exemplo acima, a talkaction só ira funcionar se for depois das oito da manhã, e antes das duas da tarde, então, dentro deste intervalo de tempo, o script funcionará normalmente, e irá mandar a mensagem "Teste" para o jogador. Já se o script for executado fora deste intervalo, no caso, nada acontecerá. Deve-se notar, também, que no script acima, dentro dos parênteses esta isto: "%X" Certo, eu acho que eu poderia chamar isto de parâmetro; existem vários destes parâmetros que podem ser utilizados, neste caso, eu usei o "%X", pois ele retorna valores do horário na seguinte forma: Onde, azul são as horas, vermelho são os minutos, e verde são os segundos; neste caso, você deveria usar os números como um relógio digital de 24 horas. Acho que a lógica do os.date já deu para entender, mas vamos recapitular: Uma coisa muito importante do os.date, é que você deve igualar ele, com valores entre aspas, mesmo que sejam números, por exemplo: if os.date("%X") >= "08:00:00" and os.date("%X") <= "20:00:00" Perceba que os números estão entre aspas. Certo, depois de termos recapitulado a lógica do os.date, vamos aos mais importantes parâmetros que podem ser usados e os valores que são retornados por eles; segue a lista: Parâmetro: Explicação: %a dia da semana abreviado (Wed) %A dia da semana completo (Sunday) %b nome do mês abreviado (Sep) %B nome do mês completo (April) %c data e hora (09/16/98 23:48:10) %d dia do mês [01-31] %H hora de um relógio de 24 horas [00-23] %I hora de um relógio de 12 horas [01-12] %M minutos [00-59] %m mês [01-12] %S segundos [00-60] %w dia da semana por números [0-6 = Domigo-Sabado] %x data (09/16/98) %X hora (23:48:10) %Y ano (1998) Vocês podem perceber que todas as palavras que forem usadas, tanto abreviações, como palavras inteiras, devem ser em ingles, é claro. Certo, dito os mais usados parâmetros e a lógica do os.date, acho que isso pode encerrar o nosso tutorial, mas antes, uma ultima dica; se você tem duvida de que valor o parâmetro vai retornar, faça o seguinte: function onSay(cid, words, param) local par = os.date("Parâmetro") doPlayerSendTextMessage(cid, 22, "O valor é "..par.."!") end E por ultimo, mas não menos importante, para se criar uma tabela usando o os.date, deve-se usá-lo da seguinte maneira: os.date("*t", Valor_da_Tabela) Isso deve funcionar e encerrar o nosso tutorial; é claro que o os.date pode ter mais alguma utilidade que eu desconheça, mas eu acho que isso pode ser uma boa introdução dele. Espero que tenham gostado, ate mais.
    1 ponto
  15. Fernandinand

    The Ritual Of Minotaurs

    Introdução Bem, essa é minha primeira Fic de Tibia. Já criei alguns livros, de pelo menos 20 páginas. Já criei Fic de Pokémon, então, peguem leve comigo. Obrigado, comentem. ^^ Capítulo 1 Encontrando um Amigo Neste mundo, com batalhas e monstros com poderes invencíveis, existe um menino de 13 anos chamado Luis Fernando, seus cabelos são grandes como ondas, olhos castanhos escuros e pele clara, morava numa cidade pequena chamada Rangrook. Bem, uma semana depois que ele nasceu, sua mãe Cinthia foi colher os legumes e aproveitou para tirar a roupa do varal quando, de repente, encontrou uma caverna nunca vista antes. Quando entrou, a caverna era completamente escura, com uma luz no fundo, vinham sons do interior, a caverna era negra, com morcegos e lagartos, ela foi mais adiante, quando se deparou com uma pedra imensa, que tinha escrito linguagens antigas que ninguém poderia entender, a pedra era oval, e tinha no mínimo dois metros de altura, de repente, atrás da pedra apareceu um monstro com chapéu vermelho, túnica azul com capuz, com um cajado na mão, mandou-lhes um feitiço muito poderoso... No dia seguinte, seu pai, Sérgio, foi procurar pela esposa, mais não achou nada, nem a caverna sombria. Treze anos depois, o menino Luis, queria iniciar sua aventura para se tornar um dos melhores Bruxos de Rangrook, mas sem saber o que lhe esperava no futuro, entusiasmado, saiu de casa com apenas com uma túnica e um cajado de madeira. Andando, explorando o local onde morava, a grama era bem lisa como se molhasse todo dia, as árvores davam todo tipo de fruto, o céu estava aberto com muitas nuvens brancas, que poderiam se observar por horas, vendo-lhes passar, então, fora da fazenda de seu pai, andou até chegar à cidade. Ele viu muitos guerreiros, com espadas, escudos e armaduras, bruxos com seus cajados, arqueiros com seus arcos e lanças. Como não tinha nada, só um cajado de madeira e uma túnica da pior qualidade, todos riam dele por nunca conseguir ser um Bruxo de Rangrook, mas os ignorou. Então ele foi treinar, chegando à base de treino, ele encontrou muitos corpos de bonecos, feitos de palha. Um garoto que estava treinando para ser arqueiro, jogava a lança tão rápida que parecia sair como um raio da mão de Zeus. Luis foi treinar logo ao lado desse rapaz, ficou atacando o boneco com golpes fortes, sem saber muito como ser Bruxo, só sabia uma magia, até que 5 horas depois, ele se concentrou, parou e logo depois olhou pro boneco, e girou como se fosse fazer uma magia esplenda, então o boneco de palha se partiu ao meio, todos ficaram pasmos, o rapaz que estava ao lado dele, de cabelo curto, se apresentou, seu nome era Bernardo, ele tinha 13 anos assim como Luis. Então, Luis teve uma idéia. - Então, vamos caçar alguns monstros por ai? – Propôs Luis. - Você está doido? Eu soube que há tempos atrás uma mulher foi morta por um monstro terrível, não identificado. - Luis sem saber que falavam de sua mãe, pois seu pai lhes contou que ela morreu durante o parto. - Ah, então vou sozinho, quando cheguei aqui todos riram de mim... Treinarei mais que todos e me tornarei o maior Bruxo de Rangrook, não importa a dificuldade que venha, não importa o monstro que venha, vou enfrentá-lo com as armas que tiver, para honrar o nome de meus pais! – Falou ele, entusiasmado. Silêncio... - Hm... Nossa! Isso sim que é esperança! Contando com essa sua força de vontade, inteligência e suas magias, e minha força da lança, nós conseguiremos atravessar fronteiras, e os mundos que vierem vamos fazer as mesmas coisas que iremos fazer neste, iremos matar os monstros que dificultarem nossas viajem, para não haver mais mortes! – Bernardo, assim que Luis explicou direito o que iria fazer, ficou muito interessado. Então, Bernardo e Luis, andaram até encontrar uma caverna, uma caverna que só uma pessoa sabia que existia, a mãe de Luis, Cinthia. Luis, sem saber de nada, entrou na caverna, parecia que o mundo iria desaparecer que o mundo estava tendo um apocalipse, tudo ficava sem esperança, tudo ficava escuro sem puder enxergar um palmo em frente de seu nariz, como se as trevas estivessem tomando conta do lugar. Mas sem saber o que lhes esperavam, continuaram andando até que... Capítulo 2 O Minotauro Encontrou uma pedra, com linguagens estranhas. Sim, a mesma pedra que surgiu o monstro com chapéu vermelho e túnica azul. De repente, há um brilho enorme e surgi um monstro marrom com chifres enormes, tais chifres pareciam que iam tirar o mundo da órbita juntamente com sua fúria. Então perceberam que era um Minotauro! - Bernardo, se não atacarmos ele, poderá invadir a cidade! Vamos atacar! – Falou. Então, Luis e Bernardo começaram a atacar ele, o monstro então foi atacar Bernardo com seus chifres, quando Luis percebeu, sem saber o que estava dizendo, citou: Geladus Temporarius! O Minotauro congelou na hora, então Luis girou e olhou pra Bernardo, é como se Luis estivesse falando coisas que Bernardo nunca tinha ouvido antes quando, de repente, o Minotauro se descongela com uma força estupenda, na mesma hora Luis fala: Exodius Flamerus! Então do chão, um circulo de fogo faz com que o Minotauro fique preso, quando Luis ia lançar outro poder... - Não, meu amigo. Agora é minha vez! – Bernardo brandou, então, com suas lanças, disse uma só frase: Combined Spears! A mão esquerda de Bernardo pegou fogo, e a mão direita saia água, quando o fogo e a água chegaram nas lanças lançou-as contra o Minotauro. Assim que as lanças perfuraram a besta, na mesma hora ele explodiu, a caverna pegava fogo, e água ia saindo da caverna, quando ia bater na pedra, Luis falou: Geladus Temporarius! Então a onda enorme se congelou. Os dois jovens foram ver o que tinha atrás da pedra, quando eles acharam uma mulher inconsciente, parecia que estava morta, então Bernardo como é mais forte carregou-a, a levando para a cidade. - Mulher ferida! – Luis gritou, assim que chegou na cidade. Todos foram ver o que havia acontecido. - Essa mulher foi a que foi morta pelo monstro! Vocês conseguiram matar o monstro? – Perguntou o Sábio. Então eles, pensando que aquele simples Minotauro era o tal monstro, disseram que sim. O Sábio levou a mulher para o Oráculo, que ficava no templo. - Ó Oráculo, tão grande és sua força e sabedoria. – Falou o Sábio. - Essa mulher, foi morta por um monstro, poderia dizer a que família ela pertencia? - Então Luis, que estava do lado do Sábio, acompanhando tudo. O Oráculo o viu e apontou para ele, e assim disse: - Her... that boy's mother... she was killed by a monster! – Sussurrou. - Ela... Mãe desse menino... Ela foi morta por um monstro! – Traduziu o Sábio. - Você! O Oráculo fala que ela é sua mãe! – Comenta o Sábio. - Não, não pode ser! Minha mãe morreu quando me deu a luz! Meu pai nunca mente para mim! Não pode ser! – Ele estava apavorado, mas ao pensar direito nas circunstâncias e sabendo que o Oráculo nunca mente, então concluiu que seu pai mentiu para si. - Mas ele o fez! O Oráculo não fala mentiras! – Falou o Sábio, parecendo que escutara sua mente. Então, Luis saiu correndo para a fazenda onde era a sua casa, seu pai estava lá, entrou correndo dentro da casa. - Pai, minha mãe morreu quando me deu a luz ou ela sumiu e nunca foi encontrada? – Perguntou Luis ao pai. O pai de Luis ficou sem saber o que dizer, Luis poderia pensar qualquer coisa também, pois o seu pai mentiu esses anos todos. - Meu filho, eu nunca te contei a verdade... Não sei o porquê, mas sua mãe, ela foi tirar roupa do varal... E nunca... Nunca mais voltou. Desculpa-me, filho, por ter mentindo para você... Perdão! – Falou o pai, com lágrimas caindo sobre suas têmporas. Luis saiu correndo de casa, indo em direção a cidade. Pela ultima vez vendo às ovelhas, os porcos, a lama, a humilde casa do pai, a qual nela passara todos os anos de sua vida. Foi construída a mão pelo próprio pai. Chorando e correndo adiante, onde ninguém possa encontrar, começou a chover e cair raios, mas o que Luis não sabia é que ele era o bruxo mais poderoso daquele mundo, pois nenhum menino daquela idade conseguiria suportar tanta dor. Quanto mais Luis chorava, mais caia raios, até então, com raios caindo na terra, atingiu uma árvore, uma árvore bem pequena, em cima dela, com raios e chuva, nasceu um ponto, a qual o Sol batia, e iluminava um simples galho quebrado, a madeira seca, não tinha grama, tinha terra com lama, ele logo então percebeu... Que nada é como a gente espera, sempre terá um desafio... Então ele ficou pensando por semanas, sumido, sem ninguém saber onde ele estava, quando ele foi voltar para casa, pra conversar... O pai dele estava morto, numa cadeira, com um pedaço de papel nas mãos, então Luis pegou o papel, todo amassado com tinta ainda fresca, suja de sangue, falava: Luis me desculpe, eu não pude suportar a dor de te perder, eu fiquei aqui, sozinho, alguém entrou aqui, um monstro, e quando olhei, eu já estava sangrando, só deu tempo de me despedir de você... Eu te amo. Assinado: Seu Pai. Luis então começou a pensar, que a morte do pai foi culpa dele... Ele pedia perdão a Deus, por ter feito a maior merda... Ter saído de casa, e ter deixado meu pai velho, sozinho. Mas isto, não fez dele um menino mais fraco, fez dele mais forte, pois no papel amassado, com pedaços rasgados, falava que um monstro o matou. Luis, com raiva, saia fogo das suas mãos, água dos seus pés, o cajado de madeira, se transformou num cajado de mithril, com um ruby em cima, como se o cajado estivesse segurando o ruby... Luis então, com o coração dolorido, a mente apertada, e com ódio para fazer vingança aos pais, vai em direção a cidade, chegando lá, a cidade estava em pedaços, pegando fogo, corpos de pessoas mortas ao redor da cidade, as pessoas foram queimadas vivas, quando de repente... Capítulo 3 A Vingança! A Cidade Destruída! ... Me ajuda, por favor me ajuda! – ??? Luis não sabia de onde vinha esta voz, ficando confuso, do outro lado, falam a mesma coisa. - Me ajuda, por favor! Estou pegando fogo! Então ele correu para esta pessoa, quando olhou, era Bernardo. Aquaticos Venerum! – Falou Luis, saindo água do cajado dele, apagando o fogo. - Não, por favor! Nãoo... Luis e Bernardo correram para ver o que era, uma menina estava sendo atacada por um Minotauro, da mesma espécie que eles mataram na caverna. Então Luis se concentrou. Generitus Excarlates! – Disse Luis, ao mesmo tempo, no lado direito do cajado, saiu água, no esquerdo saiu fogo, e no centro, no ruby, saiu uma luz divina nunca vista, que queimou o Minotauro. – Bernardo e a menina ficaram impressionados. - Você melhorou bastante! Que incrível Luis! – Falou Bernardo gritando, quase estourando os tímpanos de Luis. - Obrigado por me salvar. – Falou a menina, com um sorriso estampado em sua face. - Você está bem? – Perguntou. - Estou sim... Muito obrigada. – Respondendo Luis. - Eu ainda não sei teu nome... – Falou Luis. - Ah, é mesmo. Meu nome é Natália, tenho 15 anos, e vocês? – Pergunta ela. - Eu sou Luis, esse é meu amigo Bernardo. Nós dois temos 13 anos. Eu sou Bruxo, Bernardo é Arqueiro. E você é o que? – Pergunta Luis. - Ah sim... eu sou uma Knight. – Responde ela - O que houve aqui? Vocês pareciam estar mortos! – Perguntando. - Minotauros! Eles invadiram! Parece que tinha um líder, um Minotauro com chapéu vermelho e uma túnica azul. – Responde ela. Luis assustado, pois o Oráculo tinha comentado sobre esse Minotauro Líder. - Bernardo, você se lembra do que o Oráculo tinha dito? Um Minotauro com chapéu vermelho e uma túnica azul, tinha matado minha mãe... E provavelmente meu pai, eu tinha fugido, voltei hoje, fui para casa e meu pai estava morto, comentando algo sobre esse monstro! – Falou Luis com expressão de raiva. - Lembro, você pode ter razão. Vamos ver se achamos mais pessoas. Então, Bernardo, Luis e Natália, juntos foram procurando mais pessoas. - Eu não achei ninguém! Nem eu! È, nem eu. – Comentando os três. Caminhando, procurando por mais pessoas, mas não acharam ninguém, todos estavam mortos. Então eles, já cientes que todos poderiam ter morrido, vão para um tipo de bar... Chegando lá, BUM. Uma porta no chão se abre fazendo a todos cair num abismo negro. - Aaaaahhh! Gritando os três. POW, eles caem num chão escuro, sujo com ratos. Eles vêem monstros! Tem Trolls, Cyclops e até Minotauros, e pedaços de cabeças, e restos de corpo humano espalhado por toda a parte. - Se preparem, se não lutarmos direito nós vamos mor... Natália já estava atacando e matando todos que achava! - Vamos logo! – Gritou Bernardo. Lutaram, muitas horas se passaram. Então eles pensavam que tinham matado todos até que... BUM, BUM, BUM! Um Cyclop Smith, com um machado na mão aparece! Ele estava totalmente equipado, com armaduras e um cabelo moicano azul. O Cyclop era conhecido como ‘O Matador de Humanos’, quando de repente. - Irei matar todos, e depois comê-los! – Falou o Cyclop. BUM, BUM BUM. A cada passo que ele dava o chão mexia, fazendo pedras cair. Então, Luis é expert em estratégias de batalha, pois só ele percebeu uma coisa. - Geladus Temporarius! – Falando e congelando o Cyclop, deixando-o imóvel. - Ataquem-no, ele é lento, a cada paço que ele dá o chão treme, tentem atacar de longe, não deixem ele atacar vocês, caso contrário vocês irão mor... AAARGHT! IREI MATÁ-LOS AGORA! – Gritando o Cyclop, se descongelando a força bruta, e avançando para cima dos três. - Natália, tente atacar ele quando ele estiver congelado! Bernardo, tente atacar de longe para enfraquecê-lo. O resto... Deixem comigo! Vão! – Dando instruções para eles. - Enchanted Spears! – Então Bernardo joga-a contra o monstro, a sua lança encantada, enfraquecendo a besta. - BUM, BUM, BUM! POW! Atinge Bernardo, deixando-o inconsciente. - Bernardo!? – Luis fala correndo em direção a Bernardo apavorado. Então o Cyclop entra no caminho de Luis. – Não irá a lugar algum, tente presta atenção em mim! – Fala o Cyclop. - Rrrrr! Você irá morrer! Rrrrr! – Fala Luis, uma Luz Divina, sai do teu corpo, tornando-o mais forte. - Aquaticos Venerum! – Fala Luis criando uma onda enorme, levando o Cyclop como se estivesse no alto, para tomar uma queda. Quando de repente. - Geladus Temporarius! Congela e onda e a besta ao mesmo tempo, e na mesma hora acontece o inesperado. - Exori Mas Gran! – Falou Natália, ao mesmo tempo em que a besta congela, espadas gigantes atacam a onda, e a besta cortando-os ao meio, e finalmente, matando-a. - Conseguimos! Conseguimos! – Fala Luis, com um sorriso no rosto, então ele se lembra de Bernardo. - Bernardo! Você está bem?! – Gritou Luis indo em direção á Bernardo. Acordando, cansado e ferido, pondo sua mão na costela, ele estava sangrando, um osso humano estava solto, entrando em teu corpo. - Magic Rope! – Fala Luis, criando uma corda mágica, para subir até o topo. Chegando La em cima, levam Bernardo para o Ancião. Chegando lá, o Ancião estava morto, mas tinha uma mulher. Eles foram em direção a ela. - Pode nos ajudar? Por favor, nos ajude, nosso amigo está sangrando, com ferimento grave! – Colocando-o em cima da mesa. - Healing! – Disse ela, pondo sua mãe em cima do ferimento de Bernardo. No mesmo momento, Bernardo acorda perguntando o que houve. - Obrigado, muito obrigado. Qual o seu nome? – Perguntou Luis. - Meu nome é Fernanda. – Respondendo-lhes. - Você quer se juntar ao nosso grupo? – Perguntou Luis. - Claro, por que não? – Comentou ela, aceitando entrar no grupo. Então, agora, um grupo de quatro pessoas, foram caçar, para melhorar suas habilidades. Capítulo 4 O Sacrifício de Amor Agora, com um grupo de quatro pessoas, Luis, Bernardo, Natália e Fernanda, foram caçar, para puder melhorar suas habilidades. Chegaram numa escada de ferro, descendo-a, eles encontraram corpos mutilados, com sangue, então aparece da escuridão, um monstro gigante, vermelho cor sangue, com olhos brilhantes amarelos, e chifres cor amarelo beje, eles saíram da caverna correndo assustados, então Luis se lembrou da caverna em que achou sua mãe morta. - Bernardo, eu queria ir investigar a caverna a qual minha mãe morreu. – Comentou Luis. - Hm, vamos então, você tem o direito de saber toda a verdade. – Respondendo-lhes. Então, o grupo foi para a caverna a qual a mãe de Luis foi morta, chegando lá, entraram na caverna, tinha barulho e vozes, entraram devagar, a caverna havia piorado, estava completamente encharcada de sangue, havia corpos espalhados, com olhos fora do corpo, e pedaços rasgados da cabeça. Foram mais adiante, chegando na pedra a qual acharam a mãe de Luis mais atrás. Os sentimentos de Luis... Ele poderia provocar a maior guerra entre humanos e monstros, a qualquer momento. Indo mais adiante da tal pedra, eles encontraram o fim da caverna... Ou achavam que era o fim. - O que vamos fazer agora? Já chegamos ao final. – Falou Natália, sem esperanças. - Eu vou matar todos os monstros que ficarem no meu caminho para puder encontrar pistas sobre a morte de minha mãe! – Falou Luis, com muita raiva. Como ele é inteligente, achou que só passava adiante quem saberia o segredo. Então Luis foi adiante da pedra a qual a mãe dele morreu, pegou um pequeno caderno e anotou o que tinha escrito lá, ninguém sabia o que ele está fazendo. Depois de ter tudo anotado, numa pequena folha seca de papel amassado, com uma linguagem que ninguém entendia, pegou o caderno se concentrou e disse uma única palavra que vinha em sua mente, sem saber qual. - Incorporatus! – Falou Luis, seus olhos brilharam, e ele falava palavras que ninguém entendia, como se estivesse lendo o pequeno caderno. - Magic Minotaur, that you are so strong and resistant. Magic Minotaur, that you are as independent as the water of the sea. Magic Minotaur, that you are so intelligent, and invincible. Give me the permission to be your servant. Amem. – Falou Luis, praticamente possuído, falando coisas que ninguém sabia, quando terminou de falar a ultima letra, uma porta se abriu, e Luis voltou ao normal. Todos ficaram sem entender nada, mas Bernardo já estava ciente de que ele poderia ser... O Bruxo dos Bruxos. Quando entraram na porta que se abriu, viram Minotauros em fazendo um circulo, e no meio, um outro monstro, um Magic Minotaur, com um chapéu vermelho e uma túnica azul. Assim como falava o Oráculo. Os Minotauros olharam para eles ao mesmo tempo, uma única vez, e se desfizeram, deixando apenas o Magic Minotaur fazendo uma magia, todos mataram os Minotauros, sobrando apenas vivo o Magic Minotaur, que logo em seguida lançou-lhes um feitiço que fez todos ficarem inconscientes. Apenas Luis ficou acordado. Mal sabe que teria uma batalha épica. - Aquaticos Venerum! – Falou Luis, ao mesmo tempo o Magic Minotaur lançando um feitiço. - Flamorius Venerum! – Falou o Minotauro, o fogo fazendo a água evaporar, e a água fazendo o fogo apagar. Então o Minotauro lançou-lhes um feitiço das trevas. - Treverius Excarlates! – Falou o Minotauro, saiu trevas de seu cajado, e no meio, continha um ruby preto, dos lados saíram trevas e no centro, saiu uma boca escura, como um jaguar. Ao mesmo tempo, Luis lançou-lhes um feitiço da Luz. - Generitus Excarlates! – Falou Luis, houve uma explosão, de um lado, uma Luz divina, mais lindo que o Pôr-do-Sol, e do outro lado, Trevas com raios negros, de dar medo. Então Luis, se concentrou e disse duas palavras uma seguida da outra. - Exodicos Duplicaticos! – Falou Luis, em baixo do Minotauro, ficou fogo, da cintura abaixo ele estava sendo queimado vivo, e da cintura acima ele estava sendo afogado. Então houve uma explosão que trucidou o Minotauro, morrendo. Luis ficou fraco demais, usou um dos seus poderes mais fortes, ficou fraco, como se estivesse na água, estava pesando, e então... Desmaiou. Acordou cinco dias depois. Uma menina estava em cima dele, abraçando-o, e dizendo obrigado, por ter salvo teu irmão, ele sem entender nada, perguntou quem era o irmão dela. - Meu irmão... Seu melhor amigo, Bernardo! – Falou ela. Agradecendo muito. Ela era alguns meses mais velha que Bernardo, seus cabelos eram longos e castanhos bem claros, seus olhos eram lindos como a lua, a boca era tão macia e suave, que dava vontade de apertá-la e nunca mais soltar, sua pele era clara e suave como a de um bebê. - De nada... Qual seu nome? – Perguntou Luis, ansioso e encantado por conhecê-la. - Meu nome é Bruna... – Falou ela envergonhada, que suas bochechas começaram a ficar rosa. Ele se encantou, foi amor a primeira vista. Todos já estavam descansados, então Luis comentou. - Eu ainda estou curioso de uma coisa... Na outra caverna, com escadas de ferro, e sangue. Quero saber o que tem lá. Mas todos diziam que ele tinha que descansar. Por dois dias, ficou pensando em duas coisas. 1º Que nunca mais queria arriscar a vida de seus amigos novamente. 2º Que ama Bruna, e que não quer deixá-la em perigo. - Então, numa noite, escreveu uma carta para cada um, e para Bruna, havia a mais sincera, tão linda que é como se estivesse se sentindo que alguém lhe amasse pela primeira vez, a fez se sentir a pessoa mais feliz do mundo, e dizia que lhe amava, havia poesias que ele mesmo criou, a mais linda, a mais sincera, foi a que ela mais focou: - As vezes sabemos de tantas coisas, só não sabemos o que irá nos acontecer, as vezes são coisas boas, as vezes são coisas más, mas o que eu mais agradeço a ter acontecido a Deus... Foi por ele ter posto a pessoa mais bela que eu já vi... Foi ter conhecido você. Eu te amo. Mas o que Luis não sabia, é que Bruna leu essa carta pouco depois que ele foi embora. Então Bruna o seguiu, sem ele suspeitar de nada. Chegando na caverna, estava com sangue, e avisos para não entrar. Mas ele entrou. Logo depois que ele entrou, Bruna entrou, eles se depararam com um monstro vermelho cor sangue, olhos brilhantes amarelos, e chifres com amarelo beje. Sua voz imitava outras pessoas, atraindo-as para si. Então Luis percebeu, era o monstro mais temido e forte de todos... Demon. Então eles tiveram uma batalha difícil, estavam ali fazia horas, e quando o Demon iria matá-lo, Bruna apareceu em sua frente, recebendo o golpe, e disse uma ultima frase para Luis. - Eu te amo. Luis começou a chorar, como se o seu mundo estivesse sendo destruído, pois seu verdadeiro amor estava deixando-o. Luis então teve tanta raiva, que invocou todas as magias numa só palavra. - Diend! – Falou com a maior raiva. Simplesmente pensou na palavra, e disse, não saberia o que ia acontecer, quando viu seu cajado, ele estava brilhando, e flutuou no ar, quando de repente, como se o cajado estivesse jogando tudo de mal e de bom que estava dentro dela, os 6 elementos foram contra o Demon, Água, Fogo, Terra, Ar, Trevas e Luz Divina, matando-o. Luis não queria que ela morresse, então falou a única coisa que lhe restava. - Sacrifice! – A magia mais bonitas de todas, porque nela continha o maior de todos os poderes, capaz de destruir o universo, capaz de destruir tudo que existe, o Amor. Então na hora em que Luis falou tal magia, Bernardo, Natália e Fernanda, chegaram na caverna e viram o que estava acontecendo. Só olharam, pois foi a coisa mais linda que já viram. Então, o corpo de Luis, flutuou no ar, com uma Luz Divina sobre ele, alcançando o chão, até que a Luz Divina, ficou vermelha, fazendo o corpo de Bruna flutuar para perto do de Luis, também com uma Luz Divina, quase morta, fechando os olhos, a alma de Luis entrou no coração de Bruna. - Quando Bruna acordou, é como se ela estivesse vendo tudo o que tinha acontecido, então Bernardo, Luis e Fernanda disseram ao mesmo tempo: - Ele fez a coisa mais linda que eu já vi. - Eu sei. Pelo menos eu vou estar com ele para sempre comigo. Afinal, sempre fomos iguais... Mas agora... Somos um! – Falou ela, chorando, com lágrimas em sua face. The End. Link para baixar. Créditos: Minha Irmã Edição 10% Tumblr | Twitter Eu Por Criação 90%
    1 ponto
  16. Vodkart

    [Pedido] Descriçao Ao Dar Look

    então é o nome do item e a descrição dele function onUse(cid, item, fromPos, itemEx, toPos) local str = ""..getItemName(item.uid).." "..getItemAttribute(item.uid,"description").."" return doCreatureSay(cid, str, TALKTYPE_MONSTER) end
    1 ponto
  17. Vampiresco

    Xtibia Recomenda: 31º Edição

    Que bom saber que não se esqueceram do projeto DarknessPO, fico feliz atéh.. Vos digo que antes de votar vocês devem avaliar bem cada um dos projetos, para assim não haver injustiças com os de mais participante não acham? Eu estava viajando mas o projeto já vai ser lançado, está na reta final. GRATO.
    1 ponto
  18. local time = 15 -- em minutos local mages = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(mages, CONDITION_PARAM_TICKS, time*60*1000) setConditionParam(mages, CONDITION_PARAM_STAT_MAGICLEVELPERCENT, 110) setConditionParam(mages, CONDITION_PARAM_BUFF, true) function onCastSpell(cid, var) return doAddCondition(cid, mages) end EDITED ---- dps que vi que o buff era pra durar 15 minutos ja arrumei ali
    1 ponto
  19. ALLan162

    [Resolvido] - Summon

    Eu já consegui, valeu pela ajuda, se vc ler direitinho, vai ver que eu coloquei que existia outra função .-.
    1 ponto
  20. Isso acontece pq a sprite da sua pokebag esta errada. E so vc deletar esse char e criar um novo, e tudo ira se resolver.
    1 ponto
  21. meubk

    [Talkaction]System Moves [15/151]

    Pronto : > String Shot Deixa lento > Stun Spore Deixa lento > Poison Powder Envenena > Sleep Powder faiz dormir > Super Sonic Deixa Confuso Caso queira que hita, coloke min e max dano, pois está 0, para só deixa com condições e não hitarem.
    1 ponto
  22. Vodkart

    Storage

    ta ai vacilão function onStepIn(cid, item, position, fromPosition) local storage1,storage2 = 1095,1075 local pos1,pos2 = {x = 157, y = 50, z = 7},{x = 160, y = 54, z = 7} if getPlayerStorageValue(cid, storage1) >= 1 then doTeleportThing(cid, pos1) elseif getPlayerStorageValue(cid, storage2) >= 1 then doTeleportThing(cid, pos2) else doTeleportThing(cid, fromPosition, true) doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) end return TRUE end
    1 ponto
  23. Vodkart

    Item Que Ao Ser Usado Vira Outro

    ta ai,só adicionar mais itens e configurar do jeito que quiser: local items = { -- pode adicionar mais itens [1988] = {new= 11257,effect = 10}, [11257] = {new= 1988,effect = 28} } function onUse(cid, item, fromPosition, itemEx, toPosition) local e = items[item.itemid] doTransformItem(item.uid, e.new) doSendMagicEffect(getThingPos(item.uid),e.effect) return TRUE end
    1 ponto
  24. Joazan

    Talaturen's Ip Changer

    sinto lhe informar mais só teve um criador e sim o Talaturen , kibe só foi por postar e ainda em area errada , parabens por estar na area certa
    1 ponto
  25. Sim isso tudo ajuda em um servidor bom.. Também acredito que o nome influencia muito a entrar jogadores e claro a divulgação em 1° lugar..
    1 ponto
  26. Fernandinand

    Tutorial De Como Fazer Fake

    Vei, me diz uma coisa... n ta dando pra baixar o spr editor, eu baixei em outro topico..aqui, só não sei se pega, eu abro o spr editor e cria uma pasta chamada sprite, e so tem um arquivo, chamado sprite, eu abro ele como? pq ele ta no formato de video. '-'
    -1 pontos
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...