Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 08/22/10 em %
-
Brund Mapping Aqui será aonde postarei as fotos de mapas, que recentemente serão feitas, então sempre procure nos últimos post. Para estreiar ( old , só pra ficar 2 imagens ) já vi a planta flutuando e está inacabado < \/ :2 pontos
-
Double Exp Para Vip
williamserravalle e um outro reagiu a Vodkart por um tópico no fórum
servidos testado 8.54 ~ 8.60 Quando você compra vip você pode aumentar a taxa de exp em percent que ele irá receber a mais,como se fosse um bonus... a taxa se modifica aqui: local rate = 1.5 -- 50% vermelho:representa o quanto irá subir em % caso fosse 20% seria local rate = 1.2 e por ai vai.... [ Double exp para o Perfect Vip System ] : [ Double exp para o Vip System By Account V1.0 ] : [ Double exp para o Vip System By Mock] :2 pontos -
[Dev C++] Como Compilar Um Otserv
maelvip e um outro reagiu a comedinhasss por um tópico no fórum
Fala ae galera do xtibia.... Venho Aqui comigo postar meu mais novo tutorial... Como compilar um servidor The Forgotten Server em Windows(xp,vista,7) Antes de começarmos gostaria de fazer um breve FAQ: O Que é Compilação? É a transformação de um programa em código fonte (programa escrito pelo programador) em linguagem de máquina (programa executável). Existem centenas de linguagens de programação diferentes umas das outras, cada uma oferece recursos específicos para atender melhor uma necessidade ou características particulares, algumas são voltadas para bancos de dados, outras somente para a criação de interfaces comunicação (front-ends), aprendizado, etc. Cada linguagem de programação possui comandos específicos que desempenham alguma função, mas todas trabalham com variáveis de memória para a manipulação de dados de entrada/processamento. O Que é C++? O C++ (em português lê-se "cê mais mais") é uma linguagem de programação multiparadigma e de uso geral. A linguagem é considerada de médio nível, pois combina características de linguagens de alto e baixo níveis. Desde os anos 1990 é uma das linguagens comerciais mais populares, sendo bastante usada também na academia por seu grande desempenho e base de utilizadores. O Que é Programação? Uma linguagem de programação é um método padronizado para expressar instruções para um computador. É um conjunto de regras sintáticas e semânticas usadas para definir um programa de computador. Uma linguagem permite que um programador especifique precisamente sobre quais dados um computador vai atuar, como estes dados serão armazenados ou transmitidos e quais ações devem ser tomadas sob várias circunstâncias. O conjunto de palavras (tokens), compostos de acordo com essas regras, constituem o código fonte de um software. Esse código fonte é depois traduzido para código de máquina, que é executado pelo processador. Uma das principais metas das linguagens de programação é permitir que programadores tenham uma maior produtividade, permitindo expressar suas intenções mais facilmente do que quando comparado com a linguagem que um computador entende nativamente (código de máquina). Assim, linguagens de programação são projetadas para adotar uma sintaxe de nível mais alto, que pode ser mais facilmente entendida por programadores humanos. Linguagens de programação são ferramentas importantes para que programadores e engenheiros de software possam escrever programas mais organizados e com maior rapidez. Linguagens de programação também tornam os programas menos dependentes de computadores ou ambientes computacionais específicos (propriedade chamada de portabilidade). Isto acontece porque programas escritos em linguagens de programação são traduzidos para o código de máquina do computador no qual será executado em vez de ser diretamente executado. Uma meta ambiciosa do Fortran, uma das primeiras linguagens de programação, era esta independência da máquina onde seria executada. Bom vamos começar com os downloads: Dev C++ para tfs 0.2 e 0.3: 32 & 64 Bit?: http://www.speedyshare.com/files/19724008/TheForgottenDevCpp.7z Dev C++ para tfs 0.4: 32 Bit: http://www.2shared.com/file/10390970/56443f7c/Stians_Repack_Dev-Cpp.html Mirror: http://rapidshare.com/files/329023838/Stian_s_Repack_Dev-Cpp.rar.html 64 Bit: http://www.megaupload.com/?d=ZO7WZHY9 Mirror: http://www.2shared.com/file/11221888/7c824fd3/Stians_Repack_Dev-Cpp_02_64bit.html Tortoise Svn (baixe em ingles): http://tortoisesvn.net/downloads Legenda: Passo 1 - Configurando Dev C++ Passo 2 - Baixando sources pelo Tortorise Svn Passo 3 - Compilando Passo 1: Abra o seu Dev C++: Se for sua primeira vez ira aparecer uma janela para configurar o seu Dev Cpp, Se não for sua primeira vez vá para o passo 2. Configure com a linguaguem Portugues(Brasil) pois com ela que vou fazer o tutorial... Escolha o estilo que você quiser de imagem pois o Dev C++ é seu... Passo 2: Após baixar o Torise Svn crie uma pasta vazia, clique com o botão direito nela e em SVN Checkout, em URL of repositroy adicone o link da tfs que você quer compilar: Veja a versão que você quer neste link (Recomendo a tfs 0.3.6pl1) http://svn.otland.net/public/forgottenserver/tags/ No site, clique na versão que você quer copie o link em cima do navegador Exemplo: http://svn.otland.net/public/forgottenserver/tags/0.3.6pl1 e cole no local em branco abaixo do URL of repositroy Aperte ok e espere baixar as sources para a pasta (Quando aparecer a mensagem done é que está pronto) Passo 3: Com o Dev Cpp Aberto, vá em Abrir - Abrir Arquivo ou Projeto - (A pasta Vazia que você criou) - dev-cpp - (e abra o arquivo) - TheForgottenServer.dev Para você editar alguma informação alguma coisa, Clique na source que quiser e edite so o que esta entre Aspas "" (em vermelho dentro delas) Para compilar vá em Executar - Compilar, Espere Aparecer Done, vá em (A pasta Vazia que você criou) - dev-cpp e terá o arquivo TheForgottenServer.exe Pronto você compilou seu The Forgotten Server Creditos: stian - Dev C++ Tortoise Svn Team - Tortoise Svn Eu - Tutorial Wikibooks - FAQ [O Que é Compilação] Wikipedia - FAQ [O Que é C++, O Que é Programação] Desculpe a todos que baixaram, aqui o dev que eu uso para 0.4 funciona para 0.3 não sei como... mais ja postei o novo.. caso você baixou e deu erro favor deletar tudo o que tem na pasta do dev para 0.4 e por nela os arquivos que tem no dev 0.3 ...2 pontos -
Alissow OTs 4.11! Esta versão 4.11 foi meio apressada, só adicionamos as features novas do 8.6. Aproveitem. Créditos: Alissow Comedinha Luis Nirk TFS Team Viniply Xedegux Sobre o OT/Mapa: Principais quests: -Annihilator -Inquisition Quest -Pits of inferno -Demon Oak -Solar axe quest -HOTA -MPA quest -The Challenger Monstros: -Total monstros: 10292 -Total spawn: 5587+ Cidades: -12 Cidades -200 Houses+- Raids/Invasões: -Rat -Orshabaal -Ghazbaran -Giant spider/The old window -Ferumbras -Morgaroth Spells: -Magias editadas para balanceamento das vocações Changelog Atualização [3.4 BETA]: - Removido áreas não usadas no mapa, diminuindo o tamanho em MBs - Adicionado Anti Magebomb System - Corrigido bugs no npc addon - Adicionado sistema onde os npcs falam sozinhos (Igual como foi adicionado no global). First ;] - Adicionado Elf village em Venonh ( bem parecida com a do global ;]) - Potions desaparecem quando usadas - Corrigido sistema de Up - Corrigido sistema de Monster Counter - Nova dragon lair em Mirand Theraan (Subsolo) - Adicionado porta de level, que protege leveis baixos acessarem os demons da cidade de Flam - Ampliado deserto da cidade de Mirand Theraan - Adicionado Ilha de Goroma - Adicionado Forbidden islands - Ampliado floresta da cidade de alfon e colocado área de macacos parecida com Banuta. - Ligação de alfon com Mirand Theraan - Corrigido bugs reportados nas portas das casas - Corrigido posição dos buracos e escadas - Adicionado beds em todas as casas - Corrigido bugs em casas de yalahar - Adicionado Blue legs quest ( Koshei The Deathless global) - Corrigidas quase todas as areas de Yalahar - Teleports em Yalahar substituidos por NPCs de teleport do global - Corrigido pequenos erros no npc Capitao Coruja, e adicionado viagem à goroma - diminuido ataque do Eye of the seven - Ice rapier agora quebra - Corrigido npc Banker - Adicionado quase todos os items 8.5 - Adicionado medusa - Adicionado Todos os outfits novos - Corrigido NPC Banker (que dava dinheiro) Script By Ta4e - Corrigido Annihilator Quest - Adicionado Notice System - Adicionado novo distro, compilado por Comedinha Atualização nº 2 [3.4]: Otserv atualizado... Corrigido debugs frequentes Corrigido debugs na magia exevo pan Corrigido bugs nos npcs Roy e Firewalker Adicionados mais novos items 8.5, agora temos 90% dos items novos... Atualização 3.5 [06/08/2009]: - Cidade principal (dorion) totalmente reformada - corrigido blue legs quest - Corrigido alavancas de compra de potions - Adicionado alavancas de compra de runas - Corrigido npc Bank - Adicionado NPC King Arthas, que vende promotion - Adicionado npc Rashid, que vende items. - Arrumado Wild Growth rune - Arrumado Utani Hur - Magias reajustadas - Novo estilo de server save - Ilha de mystic reformulada (by Nirk) - Adicionado nova magia para knights "Exkordium". - Adicionado nova magia para mages (promoted) "Exura Seil". - Adicionado nova magia para mages (promoted) "Exevo Gran Frigo". (arrumar -> sem exhausted nem gasta mana) - Adicionados novos monstros. - Adicionado quest challenge (lvl 250) - Corrigido bug do Dead Cyclops - Bug aol Arrumado - Poi Modificada - Corrigido teleports ghouls yalahar - Modificada demon helmet quest, assim como o premio da quest - Corrigido nome do Hallowed axe - Corrigido bug das houses - Corrigido bug dos items andaveis Atualização Patch 3.5.1 [07/08/2009]: - Corrigido erro na inicialização do Ot - Bug das potions corrigido - Bug do aol corrigido (pelomenos pra mim) - Bug dos outfits corrigido - Corrigido erros nas escadas na ilha PvP - O monstro The Fastest Turtle agora não morre, se tornando um monstro apenas para atrapalhar - Retirada suposta quest dos 3 hellhounds e 1 minishabaal - Adicionado teleport de retorno na Ferumbras Tower - Corrigido posições da raid de The old widow - Corrigido bug das escadas nas minas de demons - Corrigido alguns bugs vistos no mapa Atualização 3.6 [10/08/2009]: - Arrumado bugs criticos - Arrumado comando !promote/!demote - Atualizado Items.xml - Bug das Beds arrumado - Modificações na cidade, como, nature e caves - Nova sala de treino - Adicionado comando !highscores Atualização 3.7! Beta [18/12/2009]: - Guildhall support (Elf) - Nova deathlist(Elf, OpenTibia SVN) - Frags funcionando (Elf) - Atualizado monstros e items (slawkens, KaczooH, Elf) - Novas talkactions: /commands, /wp, /storage, /config, /promote & /demote. (slawkens) - Novas funções lua - Novos creatureevents (slawkens, Elf) - Novos configuráveis (Elf, slawkens) - Modificado ataque de monstros existentes (especialmente outfits e velocidade) (Elf) - Monstros reorganizados & atualizados (Nem todos) (slawkens) - Melhorado sistema de banimentos (Elf) - Reescrita janela de Rule Violation (Elf) - Arrumado Stamina (Elf, OpenTibia SVN) - Casas agora são salvas nas modificações do dono (Elf) - Escadas de yalahar funcionando perfeitamente (Elf, Talaturen) - Sistema de nado & waterball completo (slawkens) - Monstros invisiveis não são mais mandandos ao client (anti bot) (OpenTibia SVN) - Anti-dash (OpenTibia SVN) - Sistema de leilão de casas, possibilidade de usar site para vender casas (house_actions table) (OpenTibia SVN, Elf) - Salvando bot actions para /logs/bots por cada player. Por exemplo, bot pode enviar mensagem com mais de 255 caracteres (slawkens) - Novos raid events- item spawning & disappearing and more (Elf) - Modificações no NPC system (Elf) - NPCs OutfitModule (Elf) - Completo 8.53 support, com wars (Elf) - Completo 8.54 support (Elf) - Arrumado NPC voices (Elf) - Players serão informados quando o Gamemaster logar ou ficar invisivel (slawkens) - Arrumado Player Deaths (Elf, slawkens) - Arrumado Abuso de PZ (slawkens) - Portas agora não ajudam players a entrar em PZ (slawkens) - Magic level formula (OpenTibia SVN, KaczooH) - Memory leaks (Elf) - Queries optimization (Talaturen) - Janelas podem ser abertas do lado de fora da casa- agora apenas GMs podem fazer isso (slawkens) - arrumado Efeitos para o Ghost (GM)- configuravel (slawkens) - Corrigido >> Ghost debugging players (OpenTibia SVN, Elf) - Corrigido erro na promotion (Elf) - Corrigido vários erros no console. (slawkens) - Corrigido Spam de magias (Elf) - Corrigido stamina premium (Elf) - Corrigido Clean (Elf) - Corrigido vários outfits (Elf) - Corrigido Ghost (Elf) - Todas as correções no OpenTibia SVN (Open Tibia SVN, Elf) - Corrigido Todos os crashes possiveis (Elf) - Npcs Corrigidos (Comedinha) - Distro Reformulado (comedinha) - Bugs de reports arrumados (Comedinha) - Novos outfits (Alissow) - Actions Arrumadas (Comedinha) - Libs trocadas (Comedinha) - Talkactions bugadas arrumadas (Comedinha) - Reforma na área Sul da cidade Dorion (Alissow) - Adicionado monstros 8.54 (Alissow) - Corrigido bug das potions infinitas (Alissow) Atualização 3.7 Patch 1 [27/12/2009]: - Rampa na frente da loja de foods retirada (Alissow) - Arrumado bugs de mapa em anknor (Alissow) - Bug na Lib dos npcs corrigido (Alissow) - Bug do acc manager arrumado! (Alissow) - Magias "Exkordium" e "Ice Storm" arrumadas (Alissow) - Monstros 8.54 funcionando (Alissow) - 2º Addon Yalaharian arrumado (Alissow) - Addons Warmaster adicionados no NPC Addoner (Alissow) - Pequenas modificações na cidade principal, Dorion, para melhora da jogabilidade (Alissow) - Comando /Deathlist retirado (Alissow) - Magic Wall Rune arrumada (Alissow) - Quest Annihilator arrumada (Alissow) - "Your depot contain x items" Arrumado (Alissow) - Addons reorganizados, mais facil aggora (Alissow) - Tempo de Red skull e Black skull reduzidos para 24 e 42 horas (Alissow) - Reduzida porcentagem de morte (Alissow) - Acrescentado chance de critical hits (Alissow) - ShowHealingDamage Adicionado (Alissow) - Várias partes do mapa remapeadas (Alissow) - NPCs para recarga de Soft boots & Firewalker boots arrumados [Não testado] (Alissow) - Comando !frags arrumado! (Alissow) - Agora é possivel fazer addons sem precisar do comando !buypremium (Alissow) Atualização 3.8 [17/01/2010]: - Arrumado bug nas escadas do Dlair (Alissow) - Todos os bugs nos NPCs arrumados (Comedinha) - Novas talkactions [a pedidos] (Comedinha) - Deathlist arrumada (Comedinha) - Novo Distro (Comedinha) - MySQL Atualizada (Comedinha) - Firewarker boots não é mais gasta quando não está usando (Comedinha) - Problemas com items no Rashid arrumados (Alissow, Comedinha, Comunidade) - O NPC Banker foi corrigido, mas achei mais seguro retira-lo, visto que ninguem usava e poderia causar outro tipo de bug - Ilha (Sim aqui é uma ilha) de Zao adicionada (Alissow, Barker) - Monstros 8.54 aperfeiçoados (Alissow, Markithu, Zkum) - Reduzido danos da magia Exkordium (Alissow) - Os npcs Dark Rodo e Rachel vendem Blank Runes (Alissow) - Magias que não hitavam anteriormente foram arrumadas (Alissow) - Comando !buypremium arrumado (Alissow) - Arena PVM - Mais conhecida como Arena Svargrond - FUNCIONANDO!!! (Alissow) - Magia LightChain Retirada (Alissow) - Adicionado um sisteminha legal no templo (Alissow) - NPC Rashid retirado (Alissow) Atualização 3.8 Minor Patch 1 [17/01/2010]: - Comando Deathlist retirado novamente, fizemos testes equivocados. Se você é uma das 16 pessoas que baixou a versão anterior (3.8) não precisa baixar esta, basta retirar o comando !deathlist e /deathlist do seu Talkactions.xml, Os comandos causam quedas no servidor. Atualização 3.9 [15/02/2010]: - Cidade principal (Dorion) reformada, novo templo, novo depot, novo porto, novos npcs :] (Alissow) - Adicionado Reputation System (Comedinha, Cybermaster) - Adicionado !bless system (Comedinha) - /info melhorado (Comedinha) - Jail System (Comedinha) - Bug chatinho nos tiles pretos arrumado. - Magic Wall Funcionando! (Alissow) - Agora você pode fazer bolos e pães :] (Comedinha, Jean, Ojani) - Adicionado sistema de casamento (Comedinha, ScorpiOOn93, Alissow) - Loot The Fastest Turtle diminuido (Alissow) - Loot e experiencia do Feromous mais baixo (Alissow) - Sistema de parceis para Dorion funcionando (Alissow) - Guildwar System (Comedinha) - Anti MageBomb System (Comedinha, Huggen) - Adicionado Anti Nuker - Esse funciona! (Comedinha) - Adicionado Map Marks, para os players novos (Alissow, Comedinha) Atualização 4.0 [15/02/2010]: - Cidade Mountain totalmente reformada (Alissow) - Montanha de Goblins de Dorion reformada (Alissow) - Demonic Castle de Dorion reformado (Alissow) - Cidade de Venonh modificada (Luis) - Distro atualizado, funcionando nos clients 8.54, 8.55, 8.56 e 8.57 (Comedinha) - Comando !bless retirado (Alissow) - O NPC Ermes não vende mais items de decoração (Alissow) - Arrumado bugs na Ferumbras Tower (Alissow) - O comando !AFK on agora mantem o player parado (Comedinha) - Arrumado bugs nas escadas da área de DeathFans (Alissow) - Comando !Deathlist funcionando! (Alissow, Doidinmapper, GT Thionix) - Sistema de REP atualizado (Comedinha) - Sistema de Polls (Comedinha) - Banco por comandos (Comedinha) - Novos comandos de addon e accounts (Comedinha) - Sistema de futebol completo! (Comedinha) - Sistema Antibot (Comedinha) - Magia Spared Hur modificada (Alissow, Orzeleagle) - Adicionado sistema de montaria (Alissow, unknown666) - Adicionado Canivetes (Alissow, Siramix) - Nova hunt Subaquatica (Luis) Atualização 4.11! [11/07/2010]: - Versão 8.6, todos os items, outfits e monstros novos (Comedinhasss, Fireelement) - Adicionados os novos monstros 8.6 (Alissow) - Bug das potions arrumado (Comedinha, Matheusmkalo, Gabriel linhares, Fireelement) - Erros das runas arrumado (Comedinha, Gabriel linhares, Matheusmkalo, fireelement) Download Servidor: 4shared Tamanho: 17,416 KB Download: http://www.4shared.com/file/ez8XKrju/860_Alissow_Ots_411.html Link protegido: http://lix.in/-8d4bc0 Scan VirusTotal: http://www.virustotal.com/pt/analisis/983abb574dbb957a75aa1fd29eb804065f775e6a0c43216aa277686d32bce22a-1263702373 Atenção - Acc do God: god/god - LEIA o tópico antes de postar qualquer coisa ou duvida - Reportem se houver algum bug - A database fica na pasta schemas+Database - Proibido o uso do nosso distro sem o nosso consenso, obrigado. Andei percebendo que há muitos mapas feitos por mim em outros servidores postados aqui no xtibia, eu não sei se vocês sabem, mas isso é PLÁGIO. Eu não sou uma pessoa egoista, tudo que eu posto aqui no XTibia é para ser compartilhado, mas desde que mantenham os devidos créditos. Será denunciado qualquer tipo de "roubo" sem minha autorização para beneficio próprio. Eu sei que vocês não se importam muito com isso, eu também não deveria me importar, mas é o tempo e a dedicação de outra pessoa que vocês estão roubando, então peço gentilmente aos que tem conhecimento desses mapas, que me apontem. Não tem graça trabalhar horas e horas e ser roubado em dois minutos.1 ponto
-
[Oficial] Real Global Map hello Galerinha do Xtibia, Venho aqui desponibilizar o mapa do Doidin (8.57 Só que editado com minhas ideias e na versão 8.60 OBS: Para rodar esse servidor No seu pc voce tem que ter 2GB+ de memória ram e em bom estado. ( nao recomendo abrir o otserv com o mapa editor aberto junto). Real Global Map: - Versão do Tibia:8.60 - Mapa global 95% full. - Quase todos os NPC's do Tibia Global. - Servidor com o mínimo de bugs possíveis. - Scripts arrumados. - Entre outros... Cidades: Quest's: Oque tem de melhor que o servidor do Doidin? Quase nada pois ele copio minhas coisas x) Algumas Print Screen: para quem nao conseguiu abrir o spolier e gostaria de ver as SS link abaixo: print screen.txt Créditos: - Doohz Rush - Doidin - Alissow - DoidinMapper - RenanSdc - TFS Team - Styller Team - Alissow Team - Feragon - Viana! - Azevedo ATUALIZADO DIA 28/10/2010 Scan: Arquivo Muito grande para fazer scan. Remeres Mapa Editor 2.0 ( nao use outra versão ou vai bugar o mapa: Download Aqui! Doohz Rush Server : Download Aqui! OBS: FOI ARRUMADO TODOS OS LOOT'S DOS MONSTROS, E FOI ADICIONADO A NOVA AREA DE ZÃO (OS Draken elite etc, todos configurados perfeitamente ) Atualização 2.2; Arrumado os Teleport's dos Drakens; Editado os seal's da POI (+ parecido com global); adicionado 1 npc de runa em northern de ZAO; arrumada as Houses, e bugs de Cormaya; Retirado BUG de money; Arrumado detalhes do mapa. MSN: Doohz_rush@hotmail.com Gostou? REP+ Ali do lado :arrow:1 ponto
-
Ola Xtibianos, Vejo Muintas Pessoas Com Problemas em Seus Pets como Eu!! Entao decidi Achar um Para minha TFS 0.3.4 e Achei um Perfeitinho e Quis Compartilhar a Galera Xtibiana!! Comandos: !pet summon !pet buy Cat !pet release !pet move !pet say Começando: Vá em Data>Talkactions.xml Adicione Isso: <talkaction words="!pet" script="pet.lua"/> Agora em Data>Talkactions>Scripts crie uma pasta.lua chamada pet e coloque isso: local PET = -- CONFIG -- { -- storages name = 7700, petuid = 7701, online = 7702, damage = 7703, allowed = { -- allowed pets, costs & level required ["cat"] = {cost = 50, level = 1}, ["dog"] = {cost = 50, level = 1}, ["deer"] = {cost = 50, level = 1}, ["pig"] = {cost = 50, level = 1}, ["parrot"] = {cost = 50, level = 1}, ["seagull"] = {cost = 50, level = 1}, ["chicken"] = {cost = 50, level = 1}, ["rabbit"] = {cost = 50, level = 1}, ["squirrel"] = {cost = 50, level = 1}, ["frog"] = {cost = 50, level = 1}, ["rat"] = {cost = 50, level = 1}, ["sheep"] = {cost = 100, level = 1}, ["wolf"] = {cost = 300, level = 8}, ["skeleton"] = {cost = 300, level = 15}, ["war wolf"] = {cost = 1000, level = 20}, ["demon skeleton"] = {cost = 3000, level = 25} }, direction = {["up"] = NORTH, ["down"] = SOUTH, ["right"] = EAST, ["left"] = WEST}, -- used with !pet move help = { -- used with !pet say "Type '!pet summon' to summon your pet.", "Type '!pet buy [petname]' to buy a pet. e.g. '!pet buy war_wolf'", "Type '!pet move [direction]' to ask your pet to move.", "Type '!pet say \"text' to ask your pet to say something.", "Type '!pet release' to release your pet." } } function petHelp(p) doPlayerSendTextMessage(p.cid, 19, PET.help[p.i]) end function onSay(cid, words, param) local p = {""} if param ~= "" then p = string.explode(param, " ") end local petuid = getPlayerStorageValue(cid, PET.petuid) local online = getPlayerStorageValue(cid, PET.online) if p[1] == "help" then for i = 1, #PET.help do addEvent(petHelp, 1000*i - 1000, {i = i, cid = cid}) end elseif p[1] == "summon" then local name = getPlayerStorageString(cid, PET.name) if isCreature(petuid) == FALSE then if online == 1 then local tile = getClosestFreeTile(cid, getThingPos(cid), FALSE, FALSE) if getTilePzInfo(getThingPos(cid)) ~= 1 and getTilePzInfo(tile) ~= 1 then if name ~= "" then if getMonsterInfo(name) ~= nil then petuid = doSummonCreature(name, tile) doConvinceCreature(cid, petuid) doCreatureSay(petuid, 'hey, sup', TALKTYPE_ORANGE_1) doChangeSpeed(petuid, getCreatureBaseSpeed(cid) - getCreatureBaseSpeed(petuid)) setPlayerStorageValue(cid, PET.online, 2) setPlayerStorageValue(cid, PET.petuid, petuid) doPlayerSendCancel(cid, 'Summoning '..name..'.') if getPlayerStorageValue(cid, PET.damage) > 0 then if getPlayerStorageValue(cid, PET.damage) < getCreatureMaxHealth(petuid) then doCreatureAddHealth(petuid, getPlayerStorageValue(cid, PET.damage)*-1) end end else doPlayerSendCancel(cid, 'Invalid pet name.') end else doPlayerSendCancel(cid, 'Invalid pet name.') end else doPlayerSendCancel(cid, 'You may not summon your pet here.') end else doPlayerSendCancel(cid, 'You do not have a pet. Type !pet <pet name> to get one.') end else setPlayerStorageValue(cid, PET.damage, getCreatureMaxHealth(petuid) - getCreatureHealth(petuid)) doCreatureSay(petuid, 'gtg, cya', TALKTYPE_ORANGE_1) doSendMagicEffect(getThingPos(petuid),CONST_ME_POFF) doRemoveCreature(petuid) doPlayerSendCancel(cid, 'Retrieving '..name..'.') setPlayerStorageValue(cid, 7702, 1) end elseif p[1] == "buy" then local text if p[2] ~= nil then name = string.gsub(p[2], "_", " ") if (isCreature(petuid) ~= TRUE and online == 2) or online <= 0 then if PET.allowed[name] ~= nil then if getPlayerLevel(cid) >= PET.allowed[name].level then if getPlayerMoney(cid) >= PET.allowed[name].cost then doPlayerRemoveMoney(cid, PET.allowed[name].cost) setPlayerStorageValue(cid, PET.online, 1) setPlayerStorageValue(cid, PET.damage, 0) setPlayerStorageString(cid, PET.name, name) text = "You have bought a pet \""..name.."\" for "..PET.allowed[name].cost.." gold coins." else text = "You do not have enough money. It costs "..PET.allowed[name].cost.." gold coins to buy a "..name.."." end else text = "You need level "..PET.allowed[name].level.." to buy this pet." end else text = "You may not buy that pet." end else text = "You already have a pet." end else text = "!pet buy [petname]" end if text ~= nil then doPlayerSendTextMessage(cid, 19, text) end elseif p[1] == "move" then if isCreature(petuid) == TRUE then if p[2] ~= nil then if PET.direction[p[2]] ~= nil then if doTileQueryAdd(petuid, getPosByDir(getThingPos(petuid), PET.direction[p[2]], 1)) == 1 then doMoveCreature(petuid, PET.direction[p[2]]) else doPlayerSendCancel(cid, 'Tile is blocked.') end else doPlayerSendCancel(cid, '!pet move [up/down/left/right]') end else doPlayerSendCancel(cid, '!pet move [up/down/left/right]') end else doPlayerSendCancel(cid, 'Summon a pet first.') end elseif p[1] == "say" then text = string.explode(param, "\"") if isCreature(petuid) == TRUE then if text[2] ~= nil then if string.len(text[2]) < 39 then doCreatureSay(petuid, text[2], TALKTYPE_ORANGE_1) else doPlayerSendCancel(cid, 'Too long text.') end else doPlayerSendCancel(cid, '!pet say "I am '..getCreatureName(cid)..'\'s pet.') end else doPlayerSendCancel(cid, 'Summon a pet first.') end elseif p[1] == "release" then if isCreature(petuid) == TRUE and getPlayerStorageValue(cid, PET.online) == 2 then doCreatureSay(petuid, ':\'(', TALKTYPE_ORANGE_1) doSendMagicEffect(getThingPos(petuid),CONST_ME_POFF) doRemoveCreature(petuid) doPlayerSendCancel(cid, 'Releasing '..name..'.') setPlayerStorageValue(cid, 7702, 1) end setPlayerStorageValue(cid, PET.online, 2) setPlayerStorageValue(cid, PET.damage, 0) doPlayerSendTextMessage(cid, 19, "You have released your pet \""..name.."\".") setPlayerStorageString(cid, PET.name, "") else doPlayerSendTextMessage(cid, 19, "!pet [help/summon/buy/move/say/release]") end return TRUE end Ok Acabamos com as Talkactions agora vá em Data>CreatureEvents.xml e Adicione Isso: Obs: ( Caso Ja Ouver a Pasta Logout.lua Delete Tudu dela e Coloque a Nova ) <event type="logout" name="logout" event="script" value="logout.lua"/> Agora vá em Data>CreatureEvents>Scripts crie uma pasta.lua chamada logout e coloque isso: local petuidstor = 7701 -- storages, have to be same as your other script. local onlinestor = 7702 local damagestor = 7703 function onLogout(cid) if isCreature(getPlayerStorageValue(cid, petuidstor)) == 1 then if getPlayerStorageValue(cid, onlinestor) == 2 then local petuid = getPlayerStorageValue(cid, petuidstor) setPlayerStorageValue(cid, damagestor, getCreatureMaxHealth(petuid) - getCreatureHealth(petuid)) doSendMagicEffect(getThingPos(petuid),CONST_ME_POFF) setPlayerStorageValue(cid, onlinestor, 1) end end return TRUE end Abra a pata login.lua que se localiza em Data>CreatureEvents>Scripts abra ela e coloque isso: registerCreatureEvent(cid, "logout") Agora para Finalizar vá em Data>Lib>Function.lua e Acresente Isso: string.explode = function (str, sep) local pos, t = 1, {} if #sep == 0 or #str == 0 then return end for s, e in function() return str:find(sep, pos) end do table.insert(t, str:sub(pos, s - 1):trim()) pos = e + 1 end table.insert(t, str:sub(pos):trim()) return t end _warpzone = 2147483648 -- start storing strings here (THIS IS THE ABSOLUTE MAXIMUM VALUE FOR THIS) _maxlength = 1024 -- multiply by 3 to get the true length. setPlayerStorageInteger = setPlayerStorageValue getPlayerStorageInteger = getPlayerStorageValue function setPlayerStorageString(cid, key, value) if #value > (_maxlength-1) * 3 - 1 then -- Last word is reserved for 0 termination of the string. error("Storage string is too long") end if key > _warpzone / _maxlength then error("Storage string key is too large (" .. key .. ")") end key = _warpzone + key * _maxlength local word = 0 local wordwrap = 0 local wordcount = 0 local i = 1 while i <= #value do local byte = string.byte(string.sub(value, i, i)) word = bit.bor(word, bit.lshift(byte, wordwrap)) wordwrap = wordwrap + 8 if wordwrap == 24 then --[[ In the ideal world we would be able to store 4 characters per word, however, as the default return value for getPlayerStorageValue is -1, we can't use the last bit. ]]-- setPlayerStorageInteger(cid, key + wordcount, word) word = 0 wordwrap = 0 wordcount = wordcount + 1 end i = i + 1 end -- store the last word setPlayerStorageInteger(cid, key + wordcount, word) end function getPlayerStorageString(cid, key) if key > _warpzone / _maxlength then error("Storage string key is too large (" .. key .. ")") end key = _warpzone + key * _maxlength local wordcount = 0 local str = "" while true do if wordcount >= _maxlength then break end local word = getPlayerStorageInteger(cid, key + wordcount) if word == -1 then -- end of string break else -- Extract the 3 characters from the value byte = bit.band(word, 255) if byte == 0 then break else str = str .. string.char(byte) end byte = bit.rshift(bit.band(word, 65280), 8) if byte == 0 then break else str = str .. string.char(byte) end byte = bit.rshift(bit.band(word, 16711680), 16) if byte == 0 then break else str = str .. string.char(byte) end end wordcount = wordcount + 1 end return str end Obs²: Delete Todos Arquivos de Pets System Velhos para nao Causar nem um Bug!! Creditos: jordanhenry. Sugestoes, Duvidas Somente neste Topico!! Abraços..1 ponto
-
MageShop/SpellShop Nesse tutorial tentarei mostrar um pouco do que você pode fazer pra deixar sua SpellShop/MageShop bonita sem muito trabalho (pelo menos eu acho que não deu muito trabalho). Então vamos ao conteúdo. Bom você precisa pensar o que é referente a magias e magos. Então vamos pensar juntos (runas, potions, elementos, wands, rods entre outras coisas que você poderá pensar sosinho). Fazendo isso você vai pensar aonde isso vai se encaixar e para você pensar nisso você precisa ter a base da sua Loja pronta. Então vamos criar a mesma. Agora com a base da loja feita (floor principal, segundo floor, roof floor que no caso não foi usado o roof). Vamos ver aonde cada coisa vai ir no meu caso eu já fiz cada ground e parte pensando no detalhe você terá só o trabalho de arrumar umas coisas depois de fazer a base eu já postei arrumada. Agora você vai detalhar o primeiro andar. Onde o seu npc fica, aonde ele faz suas poções aonde ele tem suas ferramentas, seu livros para poder trabalhar. Então é ali aonde você vai colocar os detalhes referentes a isso. Veja como detalhei o meu andar principal. Agora no seu segundo andar é aonde fica pode haver a Nascente do poder, quarto/casa do Npc Mage ou outros detalhes que não foram adicionados no andar principal ( no meu caso eu usei as runas/potions pro “alavanca” que no meu caso não usei alavanca usei outro item. Então adicionei a nascente do poder aonde fica os 4 elementos (energy, ice, tera, fire) e alguns detalhes a mais. Depois disso só rever alguns detalhes algumas coisas que você possa ter esquecido detalhes que você queria testar ou que ache que fique legal e vá testando. Observação: Essa MageShop que usei é de um trabalho que estou fazendo, foi 100% feita por mim mais estou avisando por se caso acontecer um Teaser do trabalho que estou fazendo não julguem antes de saberem. Então é isso galera! Se você gostou do tutorial da um UP pra mim em Rep+ E se você não gostou do tutorial me rebaixe clicando em Rep- :mellow: E comentem dêem dicas ai pra me ajudar em um próximo tutorial trazendo um conteúdo melhor para vocês. E espero que o tutorial ajude ai há muitos.1 ponto
-
actions/script Roller.lua --[[ Roller Coaster System by Colex ]]-- --[[ Updated by Kydrai ]]-- -- Lib RollerCoaster = {} RollerCids = {} function RollerCoaster:onchangeLevel(cid, fromZ, toZ) return TRUE end function RollerCoaster:onmove(cid, rail, railInfo, pos) return TRUE end function RollerCoaster:onchangeSpeed(cid, power) if power == 2 then doSendAnimatedText(getCreaturePosition(cid),"TROC TROC",210) else doSendAnimatedText(getCreaturePosition(cid),"TSSSIIIIII",210) end return TRUE end function RollerCoaster:onTypeChange(cid, fromType, toType) return TRUE end function RollerCoaster:onExitQuery(cid) RollerCids[cid] = nil return TRUE end function RollerCoaster:onExit(cid) return TRUE end function RollerCoaster:onEnterQuery(cid, cart) return TRUE end function RollerCoaster:onEnter(cid, cartID) return TRUE end -- End Lib local TRAINS = {7131, 7132} local all = {7121, 7122, 7123, 7124, 7125, 7126, 7133, 7134, 7135, 7136} local ACTION_TRAIN = {1001, 1002} local RAILS = { {id = all[1], dirs = {{dir = SOUTH, out = 2},{dir = NORTH, out = 2}}}, {id = all[2], dirs = {{dir = EAST, out = 1},{dir = WEST, out = 1}}}, {id = all[3], dirs = {{dir = EAST, out = 1},{dir = SOUTH, out = 2}}}, {id = all[4], dirs = {{dir = WEST, out = 1},{dir = SOUTH, out = 2}}}, {id = all[5], dirs = {{dir = EAST, out = 1},{dir = NORTH, out = 2}}}, {id = all[6], dirs = {{dir = WEST, out = 1},{dir = NORTH, out = 2}}}, {id = all[7], stop = 1}, {id = all[8], stop = 1}, {id = all[9], stop = 1}, {id = all[10], stop = 1}, } local SLOW = 125 local FAST = 50 local INCREASE = 50 local DECREASE = 50 local DOWN_INCREASE = 450 local UP_DECREASE = 155 local INFOS = {} TRUE = 1 FALSE = 0 function getRail(pos) local stack = 1 local found = 0 local rail repeat pos.stackpos = stack rail = getThingfromPos(pos) if rail.itemid == 0 then break end for i, r in ipairs(RAILS) do if (rail.itemid == r.id) then found = 1 break end end stack = stack + 1 until (found == 1) return rail end function moveTrain(cid) local params, pos, rail, newid local dir = -1 if isCreature(cid) then params = INFOS[cid] pos = getCreaturePosition(cid) rail = getRail(pos) for i,r in ipairs(RAILS) do if rail.itemid == r.id then if RollerCoaster:onmove(cid, rail, r, pos) == FALSE then table.remove(INFOS, cid) return 1 end if r.stop ~= nil then if r.stop == 1 then RollerCoaster:onExitQuery(cid) addEvent(exitTrain, 200, cid) return 1 end end local change = rail.actionid - 1000 local power = 0 local power = change doChangeType(cid, r.id, INFOS[cid].beforeid) info = r.dirs[iNFOS[cid].type] dir = info.dir if power == 1 or power == 2 then if RollerCoaster:onchangeSpeed(cid, power) then if power == 2 then INFOS[cid].speed = INFOS[cid].speed - INCREASE elseif power == 1 then INFOS[cid].speed = INFOS[cid].speed + DECREASE end end end if INFOS[cid].currZ ~= pos.z then if RollerCoaster:onchangeLevel(cid, INFOS[cid].currZ, pos.z) then if INFOS[cid].currZ > pos.z then INFOS[cid].speed = INFOS[cid].speed + UP_DECREASE elseif params.currZ < pos.z then params.speed = params.speed - DOWN_INCREASE end end end if params.speed < 1 then params.speed = 1 end params.currZ = pos.z newid = TRAINS[info.out] INFOS[cid].beforeid = r.id break end end end if dir ~= -1 then doSetItemOutfit(cid, newid, -1) doMoveCreature(cid, dir) addEvent(moveTrain, params.speed, cid) else RollerCoaster:onExitQuery(cid) addEvent(exitTrain, 2000, cid) end end function exitTrain(cid) table.remove(INFOS, cid) RollerCoaster:onExit(cid) doSetItemOutfit(cid, TRAINS[1], 0) local pos = getCreaturePosition(cid) pos.y = pos.y - 1 doTeleportThing(cid, pos, 1) doCreatureSetNoMove(cid, 0) end function enterTrain(cid, item, type) if RollerCoaster:onEnter(cid, item) then doSetItemOutfit(cid, item, -1) local pos = getCreaturePosition(cid) table.insert(INFOS, cid, {type = type, speed = SLOW, currZ = pos.z}) addEvent(moveTrain, 1000, cid) end end function getSpeed(cid) if INFOS[cid].speed ~= nil then return INFOS[cid].speed end return FALSE end function setSpeed(cid, speed) if INFOS[cid].speed ~= nil then INFOS[cid].speed = speed return TRUE end return FALSE end function onUse(cid, item, fromPosition, itemEx, toPosition) if isInArray(ACTION_TRAIN, item.actionid) then if RollerCoaster:onEnterQuery(cid, item) and RollerCids[cid] == nil then doTeleportThing(cid, toPosition, 1) doCreatureSetNoMove(cid, 1) RollerCids[cid] = addEvent(enterTrain, 500, cid, item.itemid, item.actionid-1000) end end return TRUE end ----"No Scripting Needed" System----- local change = {} change[all[1]] = {all[3], all[4]} change[all[2]] = {all[4], all[6]} change[all[3]] = {all[1], all[4], all[6]} change[all[4]] = {all[1], all[2], all[3], all[5], all[6]} change[all[5]] = {all[4]} change[all[6]] = {all[2], all[3], all[4]} change[all[7]] = {} change[all[8]] = {} change[all[9]] = {} change[all[10]] = {} function doChangeType(cid, id, beforeID) if table.getn(change[id]) > 0 then if isInArray(change[id],beforeID) then if INFOS[cid].type == 1 then INFOS[cid].type = 2 else INFOS[cid].type = 1 end end end end actions.xml <action fromid="7131" toid="7132" script="Roller.lua"/> ai se nao me engano no carrinho que vai pra direita --> vc coloca ActionID 1001 e no carinho que vai pra esquerda <-- vc coloca actionID 10021 ponto
-
Duvida De Ptomotion Eh Premmy
Antiemoxml reagiu a caarolina12 por um tópico no fórum
data/xml/vocations.xml Na vocation da second promotion mude: needpremium="0" Para: needpremium="1" O player ser kickado para o templo quando a premium acaba, tem que fazer um script de login na pasta creaturescripts. Não sei fazer scipts, pede para alguém te ajudar.1 ponto -
troque: local node1 = keywordHandler:addKeyword({'light healing'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Would you like to learn light healing for 170 gp?'}) travelNode:addChildKeyword({'yes'}, StdModule.learnSpell, {npcHandler = npcHandler, premium = false, spellName = 'light healing', vocation = 2, price = 170, level = 9}) travelNode:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Cant you handle the power of the spell?', reset = true}) por local node1 = keywordHandler:addKeyword({'light healing'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Would you like to learn light healing for 170 gp?'}) node1:addChildKeyword({'yes'}, StdModule.learnSpell, {npcHandler = npcHandler, premium = false, spellName = 'light healing', vocation = 2, price = 170, level = 9}) node1:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Cant you handle the power of the spell?', reset = true}) flw1 ponto
-
Alissow Ots 4.11 [11/07/2010] 8.6 Completo!
lucasalisson reagiu a Alissow por um tópico no fórum
Não tem os atributos ainda e os monstros estão errados. A preguiça falta de tempo não permite. Nas próximas versões (que não devem demorar muito) corrigiremos isto.1 ponto -
[Talkaction] Ir Para Hunt Do Monstro
bolas reagiu a MatheusGlad por um tópico no fórum
Ja concertei o bug, desculpem o incoveniente1 ponto -
Ta aew.. tava querendo criar um monstro.. apelao... e acho que criei um parecido com o apelao.. hehe World killer -- <?xml version="1.0"?> <monster name="World Killer" level="100" maglevel="110" experience="1200000" pushable="0" armor="70" defense="70" canpushitems="1" staticattack="45" changetarget="200" speed="600"> <health now="100000" max="100000"/> <look type="35" head="20" body="30" legs="40" feet="9" corpse="2916"/> <combat targetdistance="1" runonhealth="0"/> <blood color="199" effect="0" splash="255"/> <attacks> <attack type="melee" mindamage="1800" maxdamage="2400" probability="100"/> <attack type="instant" name="exura" cycleticks="5000" probability="60"/> <attack type="instant" name="o firefield" cycleticks="7500" probability="100"/> <attack type="instant" name="o exevo gran vis lux" exhaustion="500" cycleticks="7000" probability="90"/> <attack type="rune" name="orsha fireball" exhaustion="500" cycleticks="3000" probability="80"/> <attack type="instant" name="o exori" exhaustion="500" cycleticks="8000" probability="90"/> <attack type="instant" name="demon_manadrain" exhaustion="100" cycleticks="4000" probability="30"/> <attack type="instant" name="orcb_haste" exhaustion="100" cycleticks="2000" probability="30"/> <attack type="instant" name="banshee_mana" exhaustion="100" cycleticks="1000" probability="30"/> </attacks> <defenses> <defense immunity="energy"/> <defense immunity="fire"/> <defense immunity="poison"/> <defense immunity="paralyze"/> <defense immunity="invisible"/> <defense immunity="drunk"/> </defenses> <voices> <voice sentence="I'm Better Than Morgaroth!!"/> <voice sentence="You Are Dead !"/> </voices> <loot> <item id="2152" countmax="7" chance1="50000" chancemax="0"/> <item id="2393" chance="1000"/> <item id="2470" chance="2000"/> <item id="2522" chance="1333"/> <item id="2158" chance="10000"/> <item id="2319" chance="9000"/> <item id="2462" chance="50000"/> <item id="2153" chance="50000"/> <item id="2472" chance="1857"/> <item id="2453" chance="50000"/> <item id="1987" chance="33333"> <inside> <item id="2148" countmax="100" chance1="100000" chancemax="0"/> <item id="2148" countmax="100" chance1="50000" chancemax="0"/> <item id="2148" countmax="100" chance1="50000" chancemax="0"/> <item id="2144" countmax="10" chance1="50000" chancemax="0"/> <item id="2178" chance="100000"/> <item id="2402" chance="50000"/> <item id="2390" chance="2000"/> <item id="2646" chance="3333"/> <item id="2453" chance="50000"/> </inside> </item> </loot> <summons maxSummons="1"> <summon name="devil" chance="400"/> </summons> </monster> Eh necessario ter o ''Devil'' Tbm.. pra quein n tem o script dele eh o seguinte >> <?xml version="1.0"?> <monster name="Devil" level="60" maglevel="90" experience="1200000" pushable="0" armor="56" defense="60" canpushitems="1" staticattack="45" changetarget="200" speed="425"> <health now="84000" max="84000"/> <look type="35" head="20" body="30" legs="40" feet="9" corpse="2916"/> <combat targetdistance="1" runonhealth="0"/> <blood color="199" effect="0" splash="255"/> <attacks> <attack type="melee" mindamage="800" maxdamage="1500" probability="100"/> <attack type="instant" name="exura" cycleticks="5000" probability="60"/> <attack type="instant" name="o firefield" cycleticks="7500" probability="75"/> <attack type="instant" name="o exevo gran vis lux" exhaustion="500" cycleticks="7000" probability="60"/> <attack type="rune" name="orsha fireball" exhaustion="500" cycleticks="3000" probability="50"/> <attack type="instant" name="o exori" exhaustion="500" cycleticks="8000" probability="55"/> <attack type="instant" name="demon_manadrain" exhaustion="100" cycleticks="4000" probability="30"/> <attack type="instant" name="orcb_haste" exhaustion="100" cycleticks="2000" probability="30"/> <attack type="instant" name="banshee_mana" exhaustion="100" cycleticks="1000" probability="30"/> </attacks> <defenses> <defense immunity="energy"/> <defense immunity="fire"/> <defense immunity="poison"/> <defense immunity="paralyze"/> <defense immunity="invisible"/> <defense immunity="drunk"/> </defenses> <voices> <voice sentence="GOD DANGER RULES!"/> <voice sentence="FIRAT ROOXXXX!"/> </voices> <loot> <item id="2152" countmax="7" chance1="50000" chancemax="0"/> <item id="2393" chance="1000"/> <item id="2470" chance="2000"/> <item id="2522" chance="1333"/> <item id="2158" chance="10000"/> <item id="2319" chance="9000"/> <item id="2462" chance="50000"/> <item id="2153" chance="50000"/> <item id="2472" chance="1857"/> <item id="1987" chance="33333"> <inside> <item id="2148" countmax="100" chance1="100000" chancemax="0"/> <item id="2148" countmax="100" chance1="50000" chancemax="0"/> <item id="2148" countmax="100" chance1="50000" chancemax="0"/> <item id="2144" countmax="10" chance1="50000" chancemax="0"/> <item id="2178" chance="100000"/> <item id="2402" chance="50000"/> <item id="2390" chance="2000"/> <item id="2646" chance="3333"/> </inside> </item> </loot> <summons maxSummons="2"> <summon name="Orshabaal" chance="400"/> </summons> </monster> Espero q tenham Gostado.. Comentem ah eh.. n vo eskecer de fazer a propaganda basika.. visitem wordwarenforced.no-ip.info1 ponto
-
[Encerrado] Sharingam Server
Henrique Moura reagiu a emmawatson por um tópico no fórum
Eu tenho o server dele na verçao 8.40 ^^-1 pontos