Ir para conteúdo

Critical

Herói
  • Total de itens

    544
  • Registro em

  • Última visita

  • Dias Ganhos

    1

Histórico de Reputação

  1. Upvote
    Critical recebeu reputação de Neymar Jr em [Resolvido] Max level dos pokemons   
    Já verificou nas libs se existem algo relacionado a "levels"? Ou até mesmo "tabelas de experiência"?
     
    Atenciosamente, Critical.
  2. Upvote
    Critical recebeu reputação de Tyruz em Slayer Art Online [SAO]   
    Um dos melhores projetos sendo feito, acompanho desde o inicio e creio que será o melhor ATS de SAO.
     
    O progresso nessas férias está sendo imenso, torço para que seja inaugurado o mais breve possível.
     
    Atenciosamente, Critical.
  3. Upvote
    Critical deu reputação a craigmabbit em Slayer Art Online [SAO]   
    Sword Art Online (anime) - Sinopse
    No ano de 2022, a Realidade Virtual Massive Multiplayer RPG Online (VRMMORPG) é desenvolvida e seu primeiro jogo, Sword Art Online (SAO), é lançado. Com o equipamento Nerve Gear, um capacete de realidade virtual que estimula no usuário os cinco sentidos através de seu cérebro, os jogadores podem experimentar e controlar seus personagens no jogo com suas mentes. Em 6 de novembro de 2022, todos os jogadores ao entrarem pela primeira vez no jogo, descobrem que eles são incapazes de sair. Eles são então informados por Kayaba Akihiko, o criador do SAO, que se eles desejam ser livres, eles devem chegar ao 100º andar da torre do jogo e derrotar o chefe final. No entanto, se os seus avatares morrerem no jogo, seus corpos também morrerão no mundo real.
     
    Fonte: Wikipedia, texto adaptado.

     



    Slayer Art Online - Propostas
    Nós da equipe Okami Games iremos proporcionar á todos os jogadores uma ótima experiência que retratará o anime Sword Art Online o mais fielmente possível. Os jogadores poderão fazer várias coisas que são vistas no anime, como caçar solo ou em grupo, realizar várias quests, utilizar cristais (como o de teleport), forjar suas próprias armas e equipamentos, preparar alimentos melhores, participar de guildas, comprar sua própria casa, duelar com outros jogadores entre outras coisas...
    O jogo não contará com o sistema de "profissões", logo, todos irão fazer uso de espadas, machados, clavas e lanças. Entretanto, cada jogador poderá se especializar em alguma área específica á partir do sistema de distribuição de pontos. Os pontos poderão ser distribuídos livremente entre as seguintes habilidades:
    STR - Strength (força)
    DEX - Dexterity (destreza)
    AGI - Agility (agilidade)
    DEF - Defense (defesa)
    VIT - Vitality (vitalidade)
    O servidor também não contará com a presença de magia (fogo, terra etc), porém, habilidades com as armas (skills) existirão. Cada habilidade será executada de forma diferente, havendo várias opções de golpes e combos para se realizar, além de habilidades passivas como a habilidade "Rage".


    Sistema de SWITCH





    acompanhem o projeto em na page do facebook: https://www.facebook.com/slayerartonlinex
  4. Upvote
    Critical deu reputação a Beeki em Avuenja na RL   
    mano.
    você não é bonito.
     
    mals
  5. Upvote
    Critical recebeu reputação de lordcabeludo em [Arquivado]PokeTibia Com ou Sem Level System   
    Sinceramente? Acho sem level system ridículo.
     
    Você limita totalmente as escolhas de pokemon que usuário pode ter, sempre vão ser os mesmos Pokemons os mais fortes, não tem aquela surpresa de você ter simplesmente upado um Caterpie para Butterfree e talvez ele virar um dos melhores pokemons dentre os jogadores daquele servidor.
     
    Além disso você não precisa só capturar e sim melhorar seu pokemon, para mim pode haver melhorias como com level system mas evolução só com stones, mas sem level system é extremamente ridículo.
     
    Ah só para deixar bem claro, nunca que um Rattata [5] perde de um Blastoise [5] são stats diferentes que aí fazem você escolher qual você prefere evoluir.
     
    Atenciosamente, Critical.
  6. Upvote
    Critical deu reputação a Dj Sky em Avatar - Assinatura - Banner - Sign - Background -   
    Espero que goste cara =]
     

  7. Upvote
    Critical deu reputação a Alexclusive em Denuncias e Reports?   
    Olá galera Xtibiana, hoje estou aqui para relembrar a vocês que o Xtibia tem um sistema para
    atender reports em que vocês devem apenas reporta alguma irregularidade,
    muitas pessoas não sabem que existe o sistema e também não sabem como reporta um tópico fora das regras,
    lembrando que o Xtibia tem regras que devem ser seguidas, baseando-se nelas você pode denunciar
    um tópico fora das regras.

    Todos devem estar cientes das regras do Xtibia.com, para lê-las clique aqui!

    Como eu reporto um tópico?
    Muitoo fácil, vendo alguma irregularidade no tópico apenas use o botão Denunciar que é localizado
    abaixo da barra de status de reputação, logo abaixo do avatar melhor dizendo, um botão como este:
    Quando eu reporto um tópico?
    São muitas situações que deve-se reporta um tópico para isso existe um tópico com as regras do xtibia.com
    mais irei cita as que mais são 'puladas'
    Flood - comentários desnecessários, como: muito legal Double post - comentários seguidos de um só membro Double topic - tópicos iguais de um só membro Ripping - conteúdos, trabalhos copiados totalmente de outro membro Vírus - nem precisa explica né? Como funciona o sistema?
    Simples, quando você reporta um tópico todos os moderadores recebem-o em um local indicado
    a moderação, em cada área a um certo moderador..

    Exemplos:
    Moderação modera a partes de tibia entre outras
    Design modera a parte de gráficos
    Imprensa modera a parte de noticias

    Lembrando:
    Além de você ajudar o xtibia.com a ter um conteúdo sempre organizado você pode,
    Ganhar reputação por ajuda reportando Ser indicado pelos moderadores e virar da equipe
    Entre outras coisas que podem te ajudar no fórum..

    * Lembre-se, para denunciar uma irregularidade use o botão denunciar e não é preciso enviar uma mensagem pessoal (mp)
    para um moderador ou qualquer membro da equipe.
     
    Atenciosamente,
    Equipe.
  8. Upvote
    Critical recebeu reputação de Alexclusive em [X-Redação+Updates] Aniversário de 8 anos do X-tibia.   
    Jay, Porto Velho - Rondônia, Universitário (Psicologia).
     
     
     
  9. Upvote
    Critical recebeu reputação de Lucasmml em [X-Redação+Updates] Aniversário de 8 anos do X-tibia.   
    Jay, Porto Velho - Rondônia, Universitário (Psicologia).
     
     
     
  10. Upvote
    Critical deu reputação a Beeki em Saudades   
    passando só pra enfatizar isso aqui, flw
  11. Upvote
    Critical deu reputação a Alexclusive em [Wallpaper] Xtibia "Em andamento"   
    Já tinha algum tempo que estava afim de faze rum wallpaper, e hoje foi o dia que comecei kkkkk

    Estarei postando a arte final provavelmente amanha.



    Desde já deixo aqui pra quem quiser usar:







  12. Upvote
    Critical deu reputação a vital900 em [A Origem] Medieval Realms of Elysium   
    A Origem


     
     
    Sunyatan, Neshima, Ihoê, Moksha, Penten: esses são os cinco planos existentes. Existe uma lei aplicada aos planos: quem pertence a um plano pode reconhecer o plano anterior e o próximo, mas nunca além disso. Reconhecer um plano é ter a consciência de que ele existe, logo se a ele pertencer, a ele reconhece. Então quem pertence ao primeiro plano pode reconhecer o segundo. Quem pertence ao segundo reconhece o primeiro e o terceiro plano. Os que pertencem ao terceiro reconhecem o segundo e o quarto plano. Os pertencentes do quarto reconhecem apenas o terceiro plano, pois o quinto plano é a exceção da lei. Os pertencentes do quinto plano reconhecem todos os outros planos.
    Sunyatan é o início, o nada, a ausência de tudo, a essência da origem. Um plano sem presença negando todos os outros planos, quebrando a lógica da existência e imitando o inútil. Mas não é um plano sem sentindo, pois marca o começo de tudo.
    Neshima é o plano espiritual, é o que não ocupa espaço, mas pode simulá-lo no terceiro plano, em que a imagem de um espírito é a sua simulação, podendo apenas ser vista por seres específicos.
    O segundo plano é a existência base da vida e o começo de um sentido para a mesma. Neshima é o mais belo. Ele acredita no futuro, no ser, na vida e sua evolução através de sua passagem pelos planos. É o único plano que aceita a regressão sem consequências, aceita a volta de quem pertence ao plano seguinte.
    Ihsoê é o plano mais conhecido, plano em que os espíritos recebem corpos. Não é um plano horrendo por mais que a desgraça e o caos sejam presentes, pois a liberdade é muito maior em relação aos outros planos. O tempo, o espaço e as sensações existentes nesse plano, fazem com que os seres se apaixonem por sua passagem em Ihsoê.
    Quando o corpo morre é julgado se o espírito está preparado para o próximo plano. Quando está, do plano Ihsoê vai para o Moksha. Essa é a função do terceiro plano: preparar os espíritos para o que os aguarda. Se não está preparado, o espírito regride ao segundo plano a espera do seu próximo corpo em Ihoê.
    Moksha é o plano mais triste pois aqueles que pertencem a ele, acreditam estar próximos do fim. Ele simboliza a libertação do corpo. É o plano da desistência, da angústia, verdadeiro plano dos suicidas (tal ato exclui o espírito e o regride a nada: próximo ao que se encontra em Sunyatan, o primeiro plano). Moksha é o teste final, pois ninguém deste plano sabe de Penten, o último plano.
    Quem pertence a Penten são chamados de deuses, pois somente aqueles que abraçaram a dor e se entregaram ao total desconhecido o ingressam. Os deuses são imortais, mas finitos. Ninguém e nada os destrói a não ser o próprio plano, quando completam sua missão. Eles possuem matéria e a criam em grandes proporções, podendo dar a vida as suas criações, que são limitadas ao quinto plano. O corpo e a imagem dos deuses são de suas próprias escolhas, eles ainda podem aparecer em Ihoê na forma de ilusões para quem quiserem.
    O quinto plano molda, com a interferência dos deuses, os outros planos.
     
     
    * * *
     
     
    Sunyatan prensava os outros planos em um único ponto. A densidade e forças compactadas eram tantas, que o nada resolveu expelir tudo que estava condensado e apertado, e uma explosão incomensurável surgiu. Então os outros planos se formaram e se dividiram.
    Cada plano assumiu sua função. No plano Neshima, novos espíritos rapidamente apareceram e se multiplicaram em menos de qualquer fração de segundo - o segundo plano não abrange tempo.
    O terceiro plano foi o que mais demorou para se desenvolver, tudo ocorria lentamente.
    Em Neshima os dois primeiros espíritos, de igual poder, foram denominados irmãos. Como eram os dois primeiros espíritos começaram a evoluir primeiro e assim diferenciar-se dos demais, e sentiram a necessidade de passar para o próximo plano - é assim que os espíritos migram de plano, quando evoluem e diferenciam-se. Porém como Ihoê ainda estava em desenvolvimento e não aceitava qualquer tipo de vida, os irmãos não conseguiram se materializar e pularam para o quarto plano.
    Moksha, o quarto plano, surgiu para abrigar os irmãos, espíritos muito superiores daqueles que pertenciam a Neshima. Os irmãos decidiram criar o tempo, para que os espíritos que chegassem a Moksha, fossem mais novos do que eles, e portanto inferiores. Mas como uma falha da criação do tempo, surgiu a dor. E com o passar do tempo a dor aumentava.
    Um dos irmãos não aguentou tamanha dor e se sacrificou. Sobrara Mier, um espírito que passou a ser solitário. E só depois de 2 bilhões de anos espíritos vindo de Ishoê (agora completamente desenvolvida) chegaram a Moksha.
    Em Ihsoê 3 mundos se formaram: Ninesour, Gatoch e Fukliar. No primeiro mundo as nuvens dominavam. Nada se via de fora para dentro, nem de dentro para fora. No segundo, uma imensidadão de gelo branco, impossibilitando verificar o seu interior. E o terceiro, um mar de fogo.
    Fukliar ficou ao centro. Ao seu redor rotacionava Ninesour, que por sua vez atraía Gatoch. O mundo de gelo realizava voltas no mundo das nuvens, e esporadicamente devido a rotação dos 3 mundos, Gatoch era aquecido diretamente pelo mundo de fogo, derretendo um pouco de sua crosta.
    Isso se repetira por muitas eras, até que Gatoch revelara a forma de uma criatura gigantesca dentro de si. Aquele ser era quase do mesmo tamanho do mundo que a congelava. Possuia cem braços e uma enorme cabeça. O seu corpo foi sendo descongelado até um espírito possuir a criatura adormecida: Rimy era seu nome.
    Rimy sabia que seus dias estavam contados. Seu mundo estava se desfazendo e a qualquer momento ele ficaria solto no universo. Então Rimy teve a ideia de pular para o mundo das nuvens assim que conseguisse soltar os seus pés. E assim aconteceu. A criatura gigantesca se soltou de sua plataforma de baixa temperatura, abriu os seus cem braços e saltou para o mundo das nuvens.
    O problema eram as surpresas do desconhecido. Rimy, ao abraçar Ninesour, sentiu suas entranhas sendo espetadas por uma infinidade de espinhos metálicos, como se fossem agulhas. Aquele mundo escuro e desconhecido era formado por uma liga de metal. O impacto do gigante tinha sido tanto que seu corpo ficou completamente espetado naquele território negro. O sangue fervente do gigante, que o mantera vivo no mundo de gelo, derreteu as agulhas e assim foi formado o mágma. Mas a dor do gigante era imensa e Ninesour, dominado apenas por trevas, fez lágrimas do habitante colossal escorrerem. Acabaram por esfriar o próprio sangue e o metal derretido, formando um crosta por toda a extensão do mundo.
    O gigante se levantou, depois que a crosta se formou embaixo de seu abdômem, e olhou para aquela escuridão acima, resolvendo dar a luz àquele lugar. Encheu seus pulmões e soprou o mais forte que conseguiu para cima, e viu que as nuvens negras do novo mundo de Rimy eram moldáveis, dando espaço para a Luz entrar. Recolheu toda aquelas nuvens com suas cem mãos, reunindo-as em uma das poucas formas que tinha conhimento: uma esfera.
    Para garantir a firmeza das nuvens, Rimy retirou de seu enorme nariz uma secreção amarelada e a colocou ao redor da esfera escura. Chamou a bola de Lua e a lançou o mais longe possível em direção ao mundo de Fukliar, mas Rimy não contava que aquela secreção fosse tão grudenta, capaz de agregar poeira cósmica conforme se aproximava do mundo de fogo. Com tanta força que Rimy lançou a Lua para o alto, Ninesour começou a rotacionar ao redor de sima.
    Rimy havia criado o Dia e a Noite e chamou o esse dia de Dia da Lua.
    Então o gigante adormeceu. Quando o dia virou, Rimy foi acordado por um tremor. E uma enorme dor em dois dos seus cem braços ele agora sentia. Eram pés de outra criatura colossal com um olho só.
    - Quem és tu? - Indaga Rimy furioso.
    - Sou Rymlegd, o Ciclope. - Disse o gigante de um olho só, quase sorrindo.
    - De onde... - Antes mesmo de Rimy perguntar de onde viera aquele outro gigante, Rymlegd solta o enorme braço no rosto de Rimy e uma luta começa.
    O gigante de cem braços não era tão forte quanto o ciclope, mas aquela quantidade de membros dava grande vantagem à Rimy. O ciclope acabou se enrolando em seus movimentos e foi imobilizado por seu adversário.
    - De onde vens, Ciclope? - Agora Rimy estava no controle da situação.
    - De longe, muito longe.
    - E o que fazes aqui?
    - Vim tomar esse mundo para mim.
    - Esse mundo é meu. - Dizia Rimy revistando o ciclope com seus braços livres, até que achou um punhado de objetos, pretos e redondos, com tamanhos diferentes, no bolso da vestimenta do ciclope. - O que é isso?
    - Isso são sementes não as retire de meu bolso. Elas são minhas! - Agora o gigante de um olho só tentava se soltar e estava quase conseguindo.
    - Sementes? O que são sementes? Eu troco a sua vida por elas. - Disse Rimy decidido.
    O ciclope não estava em uma situação favorável, aceitando o acordo e finalizando com a última frase:
    -Então tome, as coloque fundo na terra e lindas esculturas nascerão. - O ciclope é solto e ele as entrega ao gigante de cem braços, recebendo-as satisfeito. Logo em seguida o monstro caolho dá um salto enorme e foge de vista. O dia termina sendo chamado por Dia da Luta e o construtor do mundo repousa até as luzes de Fukliar inundarem seus olhos.
    Mais um dia de trabalho. O gigante de cem braços coloca todas as sementes na superfície do solo e pega uma semente com cada mão. Logo depois empurra as sementes para o fundo da terra, iniciando o trabalho da plantação. Em seguida o gigante senta e espera.
    Um tempo se passa, mas ele não tem noção de quanto demoraria para as esculturas nascerem e o gigante sentimental começa a chorar pois havia sido enganado. As lágrimas escorreram por seu rosto, regando a terra. Em pouquíssimo tempo, diferentes plantas crescem ocupando boa parte do território de Ninesour e esculturas de madeira com cabelos verdes nasceram. O dia então ficou designado como Dia da Plantação.
    No quarto dia, a água evaporou das plantas causando uma chuva poderosa. Raios e trovões chegam ao mundo de Ninesour pela primeira vez. Rimy não consegue trabalhar e ainda é eletrocutado, causando-lhe queimaduras. Rimy chora muito, formando lagos e rios. A água evapora e as chuvas pioram e mais raios atingem o gigante. Dá-se o nome então de Dia do Trovão. E isso continua até Rimy não ter mais lágrimas.
    O dia seguinte Rimy acorda muito doente. Toda aquela chuva causa um resfriado pesado no construtor do mundo e o gigante não para de espirrar. Mas os seus espirros são muito altos e despertam o movimento das esculturas de madeira. As árvores se soltam do solo e criam movimento. Aquelas sementes do ciclope não eram simples sementes, eram sementes de Ents. E eles estão muito incomodados com o espirro do gigante, pois atrapalham o sono dos Bebês Ents. O gigante ouve as mães cantando para seus filhos e enxergam os pais brincando com os bebês para pararem de chorar e Rimy descobre o amor dos pais. Instantaneamente seu resfriado é curado. O quinto dia é nomeado como Dia do Amor.
    Mas antes do dia terminar, mais um movimento inesperado na terra: formigas. Seres extremamente pequenos, que não conseguem ser vistos pelos olhos de Rimy, invadem o ouvido do gigante para pedir um conselho. As formigas falam, mas ninguém responde a elas, até que uma formiga resolve picar a orelha do gigante. Agora sim o grande Rimy dava atenção.
    - Senhor, hoje nasceu a segunda formiga gigante. E a formiga destrói tudo por onde passa, destruindo nossas moradias e matando nossos familiares. O que vamos fazer?
    - Declare-a Rei! Os maiores e mais fortes mandam e são reis.
    - Não temos um rei. - Disse a formiga. - Só uma rainha e os machos reprodutores. Mas o maior problema é ela conviver conosco, porque destrói todo o nosso trabalho!
    - Como é o nome dessa formiga?
    - Saturnus - A formiga respondeu.
    - Então traga-a aqui.
    Saturnus era tão grande que o gigante conseguia a enxergar como um ponto.
    - Saturnus, eu tenho certeza que você é tão grande e diferente como eu. Então quero que você trabalhe para mim, ajudando-me com a construção do mundo subterrâneo. - E assim foi feito. No sexto dia, Saturnus começou o seu trabalho e Rimy apenas descansou. Todos os túneis, passarelas e buracos feitos no subsolo e rochedos, foram feitos pela formiga.
    Então chegou o sétimo dia. Rimy olhava para Ninesour e enxergava vida. Ele estava feliz, sentindo que seu destino estava quase no fim. Ele estaria quase pronto para desfrutar das maravilhas daquele lugar.
    Passeava pelas terras plantadas de Ents e notou uma escultura diferente. Era uma planta escura, muito mais escura que as outras, mas ela não estava morta como aparentava. Aquela planta se movia de um lado para outro, mostrando-se saudável. Até que o gigante perguntou:
    - O que tens minha filha?
    - Nada, mas tu não és meu pai. - Respondera a planta grossamente.
    - Como? É óbvio que sim. Eu a plantei, eu a criei.
    - Não sou, meu cheiro é único e diferente de todas as outras. Experimente só! - Dizia a planta convicta.
    Então Rimy a cheirou. Logo em seguida Rimy sentiu o peso do Ciclope em suas costas.
    - Realmente achou que eu não iria voltar? - Gargalhava Rymlegd. O gigante dos cem braços não respondera. - Essa planta tem um pólen mortífero que não pode ser absorvido por nenhum ser, mas não foi o que acontecera aqui.
    Rimy estava sentindo os efeitos da planta, uma fraqueza ataca o seu peito e ele não tem forças para se levantar.
    - Eis a minha vingança! - E Rymlegd começa a quebrar braço a braço do construtor de Ninesour. Observando todo o sofrimento do gigante, formigas e Ents se reunem para revidar contra o ciclope. As formigas sobem pelas pernas do caolho e começam a picar sem interrupções. Os Ents jogam pedras e galhos afiados no ciclope, fazendo com o que Rymlegd saísse de cima de Rimy.
    Rimy une suas forças, utiliza seus braços não quebrados e mais uma vez toma controle do ciclope, mas agora sua força é concentrada a um único golpe, o último golpe do construtor, um dos últimos movimentos do grande: os braços restantes jogam o ciclope contra o mundo de Fukliar, mas a força fora tanto que parte o mundo em alguns pedaços.
    Rimy olha para o acontecido e se coloca deitado em cima de todo o território que consegue, protegendo as florestas contra os meteoritos flamejantes. Uma esfera vermelha menor fica ainda acima dos céus e o gigante a chama de Sol.
    - Hoje é o Dia do Sol, encerrando então a minha jornada. Sentirei saudades de todos vocês. - dizia o gigante a todos os animais que agora habitavam Ninesour graças ao construtor. E suas lágrimas acabam por preencher os buracos de terra sem plantas, formando grandes lagos, rios e até oceanos, nutrindo como faltava o mundo de Ninesour.
     
     
    * * *
     
     
    Depois que os primeiros sinais de vidas começaram a aparecer, o segundo plano enviara os espíritos mais desenvolvidos e voluntários para o desconhecido. Os espíritos assumiram formas estranhas e em pouco tempo alcançaram o quarto plano. Quando isso aconteceu, criou-se a necessidade de mais um plano e Penten, o quinto plano, surgiu.
    Penten ocupava espaço, de uma forma paralela ao terceiro plano, mas o tempo não existia por ali. Dessa forma Mier se deparou com a imortalidade e tomou para si uma forma pela primeira vez em um local que garantia uma vida sem fim. Em Penten, sem o tempo, não existia envelhecimento. Mas o tempo que Mier passara no quarto plano fora últil para desenvolvê-lo mentalmente. Mier era muito inteligente e sábio e rapidamente aprende a dominar a matéria, criá-la e descriá-la. Ele sabia modificar a sua própria aparência, era o ancestral de toda a magia e a mais poderosa alma existente entre os planos, ele era Deus.
    Fora destinado a assumir o papel de comandante. Era o mais sábio, capaz de decidir sobre os outros planos e alterá-los e para isso se tornava necessário reconhecê-los. Por esse motivo a lei de reconhecimento dos planos era diferente para o último plano.
    Então o segundo deus chegou a Penten. Mier tinha a certeza que mais um plano se criaria e para lá seria destinado. Mas não foi o que aconteceu.
    Revoltado decidiu extrapolar. Juntou toda a sua força, inteligência, poder e, então, criou Aviritia. Um plano sem tempo, um plano sem espaço e preenchido com Mier, instantaneamente forçado a pertencer a esse plano. Mier se encontrava na pior situação, nem as dores do quarto plano eram mais fortes que os arrependimentos de Deus.
    Passaram-se milhões de anos e novos seres ocuparam as terras do quinto plano. Muitas mudanças aconteceram com as decisões dos novos deuses. Espirítos amigos dos poderosos do quinto plano foram convidados a pular o terceiro e quarto plano, virando deuses pelos mais variados convites. A maioria dos deuses que anteciparam sua passagem a Penten fizeram grandes besteiras: criaram monstros malígnos para habitar Ninesour, seres inteligentes e mágicos, seres extremamente grandes, fortes e possessivos.
    Certa vez, quando os deuses festejavam e gozavam de suas vidas, com diversos seres em uma ceia com muito hidromel e ambrosias, Mier surgiu. A reação fora simples:
    -Oh, Mier? - perguntavam-se. Havia ele regredido do sexto plano? Todos os deuses ficaram abismados. Ninguém sentia mais fome. Um sentimento de insegurança tomou conta da festa e tudo parou. Mier olhou para Ninesour e diante de tanto caos, gritou.
    O grito de raiva absorveu o poder dos deuses ali presentes, exceto o de si próprio. Os deuses foram escravizados e transformados em seres imortais dotados de asas, chamados de anjos. E todos foram destinado a viver no quinto plano sob as ordens de Mier, com exceção de uma: Desha.
    Desha era um dos espíritos que pularam do segundo para o quinto plano. Ela criou diversas bestas e monstros mórbidos, criou caos no mundo, nem as florestas podiam viver em paz.
    Mier a segurou pela garganta e a levou ao céu de Ninesour. Cortou suas asas e falou:
    - Aqui um mundo de caos a aguarda, o mundo merecido a ti. - Ao terminar de falar, ele a soltou.
    Ela caíu com uma velocidade absurda sobre o chão, criando uma fenda gigantesca, passando pelo sangue de Rimy e chegando ao local mais sombrio do planeta chamado de Reino dos Mortos. Mier a ordenou a ficar por lá com algumas de suas criaturas, vigiando a entrada de todos os corpos ambulantes, onde os espíritos se separam de seus corpos e entregam a sua forma mais horripilante ao Vale das Sombras, um vale de trevas onde todos os mortos se reunem, no Reino dos Mortos.
    Mier, o Deus, precisava reformar o terceiro e o quinto plano, mas o quinto plano era muito mais extenso que o terceiro e só ele poderia executar esse trabalho. Então resolveu recrutar novos deuses para criarem seres inteligentes e civilizarem Ninesour, que já tinha sua forma regulada graças ao construtor do mundo.
    Diante dos que estavam no quarto plano, Moksha, escolheu aquele que fora um unicórnio, um ser místico e inteligente que protegia as florestas. Moldou o corpo de um elfo e entregou ao novo deus.
    - Llunnbel, eis o seu corpo!
    O novo deus assume uma posição de reverência a seu pai, agradecendo-o.
    - Agore crie os seus semelhantes para proteger o mesmo local que protegia na sua vida anterior.
    Llunnbel obedeceu seu pai e colocou os elfos espalhados nas florestas. Mas as criaturas que habitavam a floresta eram fortes demais para esses novos seres, então Mier os abençoou e os elfos passaram a dominar um tipo de magia.
    Depois Mier escolheu aquele que fora um Golem, ser criado com terra e pedra. Moldou um ser baixo e musculoso e o entregou ao deus Blontor. O segundo deus convocado recebe a mesma missão que o deus élfico. Blontor cria seres com a essência da terra e pedras e os coloca para governar as profundezas. Mier os abençoa e eles aprendem a moldar as pedras com as próprias mãos, eles desenvolvem armas pesadas de pedra e dominam todos os locais rochosos do subsolo. Sentem-se satisfeitos ao encontrarem pedras brilhantes.
    Ainda existiam represas, cavernas e outros locais no subsolo não rochosos que deveriam ser ocupados. Então um antigo troll do subsolo que vivera por quase 1000 anos fora escolhido para ser o deus gnomo. Toz-Nik recebera o corpo de gnomo e criou seus semalhates. Os gnomos se ambientavam muito bem nas cavernas e com ambientes naturais. Toz-Nik os escolheu para se dar bem com ilusões, simulando grandes ursos nas cavernas escuras.
    Mesmo assim faltavam seres para ocupar as terras espalhadas, seres adaptáveis a qualquer lugar. Então criaram elfos mais baixos e mais ágeis que poderiam se camuflar facilmentes em qualquer terreno: os halflings; e anões mais altos e inteligentes, já que ficariam fora das cavernas e minas, adaptados às terras acima do subsolo rochoso: os humanos.
    Sendo assim Mier escolheu aquele que havia sido um camaleão, uma pequena criatura capaz de se camuflar em qualquer terra, e o fez como o deus halfling, Nihr, o mais baixo dos deuses. O pequeno deus espalhou seus semelhantes por todos os locais e os ensinou a serem silenciosos e imperceptíveis.
    Para os humanos, Mier decidiu adotar vários deseus, assim eles teriam liberdade de escolher a quem cultuar. Essa foi a única raça a ganhar vida primeiro que seus deuses e a última a ocupar os locais no mundo. Mier fez um a um, seres flexíveis, e em seguida fez seus deuses: Damien, Caligula, Morholt, Brawen e Hesse.
    Em seguida alguns outros espíritos evoluem para o quinto plano, mas sem a mão de Mier. Rimy, o construtor, vira deus da Luz e conselheiro direto de Mier. Banzer, um Ent morto por Rymlegd, o ciclope, é recebido como deus da Guerra. Saturnus, a formiga gigante, transforma-se na deusa da Terra.
    Mesmo com uma grande sociedade de deuses em Penten, Mier precisava de mais ajudantes e resolveu explorar os anjos.
    Os anjos são criaturas com uma infinidade de poderes e acesso livre ao quinto plano. Recebem poderes em troca de afazeres e fidelidade a seus deuses. Eles devem obedecer eternamente às ordens de seus donos, sem nunca contestar ou ao menos demonstrar qualquer tipo de resistência. Um anjo que vá contra seu dono pode ser banido de Penten ou ter sua alma destruída.
     

    Créditos: Vítor Amaral


  13. Upvote
    Critical deu reputação a Alexclusive em Avatar - Assinatura - Banner - Sign - Background -   
    Fala galera!



    Estou aqui para me colocar a disposição de vocês p/ atender seus pedidos relacionados a design.



    Não tenha vergonha!!



    Faça agora mesmo seu pedido, que irei lhe atender com o maior prazer.






    Requerimentos mínimos para seu pedido:


     

    Fazer um pedido por vez.



    Tema | Tamanho | Texto



    Esclarecer qualquer preferencia e edição particular!






    Os pedidos serão atendidos por ordem dos comentários, Obrigado!


     

  14. Upvote
    Critical recebeu reputação de vital900 em [Arquivado]Qual sua intenção no fórum?   
    Sou um usuário velho no fórum que participou da equipe por bastante tempo e até em cargos importantes, no principio do XTibia eu me fascinei. O XTibia antigo tinha uma chama inigualável, mesmo com as brigas parecia uma família e meio que você se sentia forçado a estar aqui vivendo cada pedaço e um dia fora daqui eram tantas histórias que perderá.
     
    Minhas intenções eram melhorar o XTibia cada vez mais e formar usuários excelentes que fizessem história como grandes nomes dessa comunidade que por fim se perdeu, mas agora espero que os administradores acordem e re-ergam essa comunidade para voltar a ser aquela grande família que formava lendas na área de ATS.
     
    "Bons tempos nunca voltam."
     
    Atenciosamente, Critical.
  15. Upvote
    Critical deu reputação a SamueLGuedes em PDA Sem lvl 1.9 (Editado Por Bolz)   
    Fala galera do xtibia, hoje trago a voçes, o PDA Slicer 1.9, editado por min, eu passei um bom tempo editando ele, eu até deixei online, entrou 52 players. mais isso nao importa, oque importa e as informaçoes:




    • Menu:
    ├ Informações;
    ├ Ediçoes;
    ├ Erros;
    ├ Prints;
    ├ Download;
    └ Creditos.



    • Informações Basicas •






    • Edições / Ajustes •








    • Erros Do Servidor •





    • PrintScreen •







    • Download's •

    Servidor Pokemon Dash (editado por Bolz) client incluido na pasta do servidor.

    4Shared:
    http://www.4shared.com/rar/WnEElQIT/PDA_Edited_by_Bolz.html MediaFire:
    http://www.mediafire.com/?cvm4f5bfksxjbe2


    • Scan •

    https://www.virustotal.com/pt/file/e37c5683162d0264ee2115810c5930f196f516c240d48ce6aebd5102854baaec/analysis/1367376049/


    @atualizado 05/05/2013

    • Menu:
    ├ Ediçoes;
    ├ Prints;
    ├ Download;



    • Edições / Ajustes •






    • PrintScreen •






    • Download's •
    Server PDA Slicer editor Por Bolz v2 (client ja na pasta)

    MediaFire:

    http://www.mediafire.com/?thh05yhnc7srasn

    • Scan •

    https://www.virustotal.com/pt/file/3fd8e0702e23b1f83ce9421f2f9a3808071222d084cf77a385d03e0f3f5099fc/analysis/



    Atualizado 30/05/2013

    desculpe a demora, eu estava sem tempo, o servidor ja estava arrumado só faltava postar, e só tive hoje para postar. é uma pequena atualização, por isso é 2.5, e nao 3.0, é algumas correções do serv. na proxima atualização tentarei colocar pokemons da 3° geração ou, o icon system, oque tiver ao meu alcanse eu tentarei colocar. abraços.


    ├ Ediçoes;
    ├ Prints;
    ├ Download;
    └ Creditos.



    • Edições / Ajustes •






    • PrintScreen •






    • Download's •
    como pedido de alguns, eu deixei o client separado do servidor.

    Server PDA Edited By Bolz 2.5:
    http://www.mediafire.com/?ry55tjk2l4l5cow Client:
    http://www.mediafire.com/?nwdf2nfk9txk35f • Scan •

    galera eu nao consegui fazer o scan do servidor e do client, quando termina de carregar, ele diz que falhou, se alguem poder colocar o scan, eu agradeçeria muito. abraços





     
    Atualizado 24/07/2013
    Iaew galera, bem eu falei que ia atualizar para v3, e ta ai, só que nao consegui colocar muito doque eu falei. por falta de espaço no client. porem eu irei começar depois dessa atualização, um novo client, leve, e com espaço, que na verdade, vai ser o client do PDA 1.9. mas eu irei tirar todas as sprites de tibia que existem nelas. e so deixarei as de pokemon. assim tera mais espaço na hora de colocar um novo pokemon. chega de falar, vamos ao que interessa:
     
     
     
    ├ Ediçoes;
    ├ Prints;
    ├ Download;
    └ Creditos.
     

     
    • Edições / Ajustes •
     
     
     
     

     
    • PrintScreen •
     
     
     
    • Download's •
     
    Server 3.0 (Media Fire):
    http://www.mediafire.com/?j7e112fw6gaggnj Server 3.0 (4Shared):
    http://www.4shared.com/rar/2CVWvjAy/PDA_Edited_by_Bolz_v3.html
     
    Client 3.0 (MediaFire):
    http://www.mediafire.com/?4wx5dyy6hyq8upi Client 3.0 (4Shared):
    http://www.4shared.com/rar/xBrGwfMy/Client_v3.html
     
    • Scan •
     
    Scan do server:
    https://www.virustotal.com/pt/file/125ecfbe02cb0b154769a104518100cb30fe28e5fddd58891b708a1aa7a68ab8/analysis/1374685280/ Scan do client:
    o scan do client eu nao consegui fazer, ele sempre trava na hora de scania, se alguem puder fazer o scan dele eu agradeço
     
    • Creditos •
    Slicer (pelo servidor) Brun123 (por alguns scripts, e por criar o pda) Stylo Maldoso (pelo mapa) Eu (por editar) Xtibia (por alguns scripts)

    OBS: comentem, e votem no enquete, abraços galera.
  16. Upvote
    Critical recebeu reputação de Alexclusive em [Arquivado]Qual sua intenção no fórum?   
    Sou um usuário velho no fórum que participou da equipe por bastante tempo e até em cargos importantes, no principio do XTibia eu me fascinei. O XTibia antigo tinha uma chama inigualável, mesmo com as brigas parecia uma família e meio que você se sentia forçado a estar aqui vivendo cada pedaço e um dia fora daqui eram tantas histórias que perderá.
     
    Minhas intenções eram melhorar o XTibia cada vez mais e formar usuários excelentes que fizessem história como grandes nomes dessa comunidade que por fim se perdeu, mas agora espero que os administradores acordem e re-ergam essa comunidade para voltar a ser aquela grande família que formava lendas na área de ATS.
     
    "Bons tempos nunca voltam."
     
    Atenciosamente, Critical.
  17. Upvote
    Critical deu reputação a Jvchequer em Obrigado por todos esses anos, meu Barzinho.   
    Olá a Todos,
     



     
    Acho que já deu, depois de cerca de 6 anos, isso aqui está inacessível, com as medidas patéticas tomadas nas últimas semanas. Usuários -e administradores - se traindo, se banindo, brigando entre si, não há mais a amizade, o cerne do bar nos posts.
     
    Era uma vez um Fórum que queria construir uma família, uma comunidade unidade, e com isso foi criada essa seção, que assim como um bar, serve para você conversar com seus amigos de forma amável, descontraída, quase insana.
     
    Mas isso se foi, e não sei se irá voltar. Não tenho esperanças, não tenho muita fé neste fórum mais, eu não sinto mais a comunidade correndo em minhas veias, e a certeza de que encontraria alguém se divertindo toda vez que acessasse aqui.
     
    Obrigado a todos que colaboraram com essa seção maravilhosa, são inúmeras pessoas ao longo desses anos, fizeram de meu bar um lugar fantástico, meus amigos, que orgulho vocês me deram, foi um prazer inenarrável estar à frente deste movimento único que criou amizades, novidades, conteúdo, debates, brigas, choros e risadas, muitas risadas.
     
     
     
     
     

    E agora está na hora de fechar o bar, pois as risadas estão em silêncio, a bebida acabou, os amigos se foram, os debates esfriaram, a luz foi apagada.


     

    Até algum dia, eu espero.


     

     

     



     

     

    Atenciosamente,

    JV Chequer

  18. Upvote
    Critical deu reputação a Vmspk em [9.60] Azeroth RPG   
    Azeroth Server



    Updated 28/01/2013: v2.0



    by Vmspk


     

    Este servidor foi disponibilizado para você gratuitamente, nunca retire os créditos


     



     
     
    Versões Anteriores:
     
    v1.0 [8.70]: http://www.xtibia.co...server-updated/
    v1.1 [8.60]: http://www.xtibia.co...oth-rpg-reborn/
     
     
     
     
     

     
    Versão: 9.60
    Distro: TFS 0.4
    Mapa Base: Yourots Edited e Mix Yourots
     
     

    Features:
     
     
    > 7 Cidades:
     
    Azeroth
    Avalon
    Zatur
    Liberty Bay
    Gloria
    Sand Trap
    Tiquanda
     
    > Mapa RPG bem detalhado para Ots Low e Mid rate.
    > Inúmeras invasões automáticas, Low e High lvl (ou iniciadas pelo comando /raid "nome").
    > NPCs de Travel/Boat diferentes para cada cidade.
    > Mais de 100 quests (além das principais) espalhadas pelo mapa.
    > Quests especiais com NPCs
    > Arena PvP sem perda de items.
    > Sistema de Guerras pelo Castelo [entre guilds] (mais detalhes abaixo)
    > Sistema de Refinamento e Slot (mais detalhes abaixo).
    > Sistema de Mineração (mais detalhes abaixo)
    > Scripts e sistemas aprimorados para o servidor
    > Distro SEM erro algum
    > Equipamentos 9.60 funcionando corretamente
    > Novas Hunts
    > Raids de bosses 9.60
    > Montarias por quest
     

    > Principais Quests:
     
    Annihilator
    Blue Legs
    Pits of Inferno
    MMS
    The Inquisition
    The Death
    FireWalker Boots
    Demon Helmet
    Draken
    Hell Conquer
    Prismatic Armory
    Deepling Abismal
     

     
    > 27 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
     
     
     
     
    Honor Castle War
     
     
     
     
    Upgrade & Slot System
     
     
     
     

    > Histórico:
     
     
    V 0.2
     
     
     
    V 0.3
     
     
     
    V 0.4
     
     
     
    V 1.0
     
     
    V 1.1
     
     
     
     
    V 2.0
     
     
     
     
     

     
    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, VIP 2, VIP 3, VIP 345456364.
    Não há raids com monstros excessivamente fortes nas cidades iniciais.
     
     
     
    Créditos:
    < Unknow YourOts Edited >< Mix Yourots Team >< Crystal Server Team >< Tryller >< Mock >< TFS Team >< TonyHanks >< Centera World >< SmoOker >< Mappers Xtibia e OtservBr >< Vmspk >
     
    (Este servidor foi disponibilizado para você gratuitamente, nunca retire os créditos)
     
     

     
     
    DOWNLOADS
     
     
    > Opcionais
     


    Utilitários - Source


    *Utilitários inclui: SQLite Studio + Otland Ipchanger


     
     
    > Servidor
     
     
     
     
     
     
     
     
     
     
     
     



    Azeroth Server v2.0





    [MEDIAFIRE]


     
     

    Para entrar no servidor sem usar a internet, ponha no ipchanger localhost



    Se você estiver usando sqlite, vá até o config.lua e mude ingameGuildManagement = false para ingameGuildManagement = true


     
     
    > Scan
     
     
     
     
     
     

     
     
     
     
     
     
     
     
     
     
     

    Acc do GOD: vmspk/222222


     

    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.



    !info para saber mais sobre as novidades do Azeroth Server. Editável na pasta do Ot, em Notícias. Comando !bless e !rank disponíveis.



    Para saber os IDs das pedras e outras coisas vá ao Histórico, na versão 1.0.


     
     
    Se acha que ter um OtServ é só baixar, abrir e largar lá, ou ainda editar chars e equipamentos para você mesmo jogar e fazer o que quiser, garanto-lhe que não vai durar 2 dias. Conheça o mapa, crie eventos, interaja com os jogadores, faça torneios Pvp, marque datas para a Honor Castle, faça updates no mapa, crie monstros, hunts e quests, dê suporte e, o mais importante, mantenha o HELP aberto, sempre.
     
     
    Contato: vmspk@hotmail.com
     
     
     
    Os arquivos dos ots 9.60 estavam muito errados e incompletos, ou melhor, podres. Não duvido que a maioria desses 9.60 postados aqui ou nos outros fóruns estejam infestados de bugs e coisas que não funcionam. Loots errados, monstros copiados, escadas sem registros, novos equipamentos sem movements (propriedades não faziam efeito), bordas de mapas 9.60 fora do lugar, scripts simples como os de Locked Doors em conflito com a lib, etc, etc. Tive um trampo do cão pra arrumar tudo isso. Do meu suor eu digo a vocês, dou-lhes o melhor servidor 9.60 (pelo menos por enquanto)
     
     
     
    Conheça também o 4Fun Server 9.1
     
     
     
     
     
     
     
     
     
     
     
     
     



  19. Upvote
    Critical deu reputação a Piabeta Kun em Nova estrutura XTibia   
    e você na direção não trouxe nada de bom só um monte de autoritarismo e muitos banimentos erroneos, pfv né?
  20. Upvote
    Critical recebeu reputação de Fernandinand em Nova estrutura XTibia   
    Sério? Isso é piada?
  21. Upvote
    Critical recebeu reputação de dwhfms em Nova estrutura XTibia   
    Sério? Isso é piada?
  22. Upvote
    Critical recebeu reputação de Beeki em Nova estrutura XTibia   
    Sério? Isso é piada?
  23. Upvote
    Critical deu reputação a Piabeta Kun em Xtibia 2013: O que você mudaria?   
    O Xtibia está em uma boa fase, tirando alguns problemas que eu acho superfulospara o forum,porm eu tentaria inspirar o desenvolvimento de novos servidores, pois conteudos bons e atuais no xtibia estão escação relacionado a servidores.ecomo eu faria isso, cobrando dos coordenadores a produzir mais conteudo junto aos seus subordinados(principalmente os colaboradores) e fazer sistemas de "dual",como foi sugerido pelo iunix, de fazer junções entre seções como scripting e mapping,scripting e websites,designer e websites, programação e sprites, assim atrazendo novos conteudos para adicionar em novos servidores e afins!
     
    Logo depois eu faria uma limpeza geral no forum junto aos coordenadores emoderadores, para tirar de uma vez por todas os links quebrados e tutoriais ultrapassados e sem uso, assim facilitando a busca de todos,eu expandiria a area de derivadospara ser obsoleta assim como otserv é de designer e outros, tornando ainda mais facil a busca para otserv e derivados, pois uma das coisas mais chatas pra mim é ir em scripiting por exemplo procurar codigos e tutoriais de otserv e me deparar com milhares de coisas pra derivados, e assim també valorizando ainda mais a area de derivados que so tem a crescer!
     
    e faria valer as regras do forum, mesmo para membros mais novos,emanter sempre na mente dos novos usuarios que tem que postar em local certo e estar ciente das regras de cada area e suas punições!
     
    Esse é o resumodo que eu faria inicialmente!
    Obrigado pela atenção!
  24. Upvote
    Critical deu reputação a Oneshot em Pet System OOP   
    Pet System OOP


    Boa tarde, pessoal.

    Depois de ver muitos sistemas de pet para Tibia, resolvi desenvolver o meu próprio sistema de pets. O diferencial do meu sistema é que ele é orientado a objetos. Sim, ele trata o pet do jogador como um objeto em Lua e suas ações como métodos.

    Essa ainda é uma versão básica, que irei aprimorar aos poucos, igual fiz com meu Forge System e Refine System.

    Por se tratar de uma biblioteca orientada a objetos, ele pode ser usado por qualquer scripter em diversos sistemas, e se bem adaptado, dá até para fazer um Poketibia orientado a objetos. Aliás, os comandos estão bastante semelhantes a Pokétibia.

    Instalação

    1. Crie um arquivo em data/lib com o nome pet-system.lua e cole o conteúdo abaixo:

    -- This script is part of Pet System -- Copyright (C) 2013 Oneshot -- -- This program 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. -- -- This program 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 this program. If not, see <http://www.gnu.org/licenses/>. -- storages for pet system PET_UID = 80001 PET_SPECIE = 80002 PET_LEVEL = 80003 PET_EXPERIENCE = 80004 PET_HEALTH = 80005 PET_HEALTHMAX = 80006 PET_MANA = 80007 PET_MANAMAX = 80008 PET_EXHAUST = 80009 PET_ALIVE = 80010 Pets = {} -- class for pet species PetSpecie = { type = "", basehp = 0, basemp = 0, gainhp = 0, gainmp = 0, spells = {}, evolution = "", evolve = 0, } -- class for pets Pet = { it = nil, attributes = nil, level = 0, experience = 0, health = 0, healthmax = 0, mana = 0, manamax = 0, } -- create new instances of PetSpecie function PetSpecie:new(type, basehp, basemp, gainhp, gainmp, spells, evolution, evolve) local new_specie = { type = type, basehp = basehp, basemp = basemp, gainhp = gainhp, gainmp = gainmp, spells = spells, evolution = evolution, evolve = evolve, } local obj = setmetatable(new_specie, {__index = self}) Pets[type:lower()] = obj return obj end -- create new instances of Pet function PetSpecie:create() local new_pet = { it = nil, attributes = self, level = 1, experience = 0, health = self.basehp, healthmax = self.basehp, mana = self.basemp, manamax = self.basemp, } return setmetatable(new_pet, {__index = Pet}) end -- summon a player pet for the first time function Pet:hatch(cid) if getCreatureStorage(cid, PET_SPECIE) ~= -1 then return doPlayerSendCancel(cid, "You already have a pet.") end local pet = doCreateMonster(self.attributes.type, getCreaturePosition(cid)) if not pet then return false end if not doConvinceCreature(cid, pet) then doRemoveCreature(pet) return false end self:setit(pet) setCreatureMaxHealth(pet, self.healthmax) doCreatureAddHealth(pet, self.healthmax) doCreatureSetStorage(cid, PET_SPECIE, self.attributes.type) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your new pet has born.") self:save() doSendMagicEffect(getCreaturePosition(pet), CONST_ME_HOLYDAMAGE) return self end -- make player pet say something function Pet:say(strt) doCreatureSay(self.it, strt, TALKTYPE_ORANGE_1) end -- gather a summoned player pet back function Pet:back() self:save() doSendMagicEffect(self:position(), CONST_ME_POFF) doCreatureSay(getCreatureMaster(self.it), "It's enough, ".. getCreatureName(self.it)) doRemoveCreature(self.it) end -- free a player pet forever function Pet:release() local cid = getCreatureMaster(self.it) doCreatureSay(cid, "Good bye, ".. getCreatureName(self.it) .."... :'(") doCreatureSetStorage(cid, PET_UID, -1) doCreatureSetStorage(cid, PET_SPECIE, -1) doCreatureSetStorage(cid, PET_LEVEL, -1) doCreatureSetStorage(cid, PET_EXPERIENCE, -1) doCreatureSetStorage(cid, PET_HEALTH, -1) doCreatureSetStorage(cid, PET_HEALTHMAX, -1) doCreatureSetStorage(cid, PET_MANA, -1) doCreatureSetStorage(cid, PET_MANAMAX, -1) doSendMagicEffect(self:position(), CONST_ME_POFF) doRemoveCreature(self.it) end -- add experience to player pet function Pet:addexperience(value) local prevLevel = self.level local nextLevelExp = getExperienceForLevel(self.level + 1) self.experience = self.experience + value while self.experience >= nextLevelExp do self.healthmax = self.healthmax + self.attributes.gainhp self.manamax = self.manamax + self.attributes.gainmp self.level = self.level + 1 nextLevelExp = getExperienceForLevel(self.level + 1) end if prevLevel ~= self.level then self.mana = self.manamax self.health = self.healthmax doPlayerSendTextMessage(getCreatureMaster(self.it), MESSAGE_STATUS_CONSOLE_BLUE, "Your pet advanced from level ".. prevLevel .." to level ".. self.level ..".") setCreatureMaxHealth(self.it, self.healthmax) doCreatureAddHealth(self.it, getCreatureMaxHealth(self.it)) self:save() if self.attributes.evolution then if self.attributes.evolve and self.level >= self.attributes.evolve then doCreatureSay(getCreatureMaster(self.it), "What's happening?!") addEvent(function() local cid = getCreatureMaster(self.it) local position = self:position() doRemoveCreature(self.it) local pet = doCreateMonster(self.attributes.evolution, position) if not doConvinceCreature(cid, pet) then doRemoveCreature(pet) call_pet(cid) return end doCreatureSetStorage(cid, PET_UID, pet) setCreatureMaxHealth(pet, self.healthmax) doCreatureAddHealth(pet, getCreatureMaxHealth(pet)) doSendMagicEffect(getCreaturePosition(pet), CONST_ME_MORTAREA) doCreatureSetStorage(cid, PET_SPECIE, self.attributes.evolution) end, 100) end end end end -- make pet cast a spell function Pet:cast(index) local cid = getCreatureMaster(self.it) if not self.attributes.spells[index] then return doPlayerSendCancel(cid, "This spell is unknown.") end local spell = self.attributes.spells[index] if self.level < spell.level then doPlayerSendCancel(cid, "Your pet doesn't have enough level to cast this spell.") return end if self.mana < spell.mana then doPlayerSendCancel(cid, "Your pet doesn't have enough mana to cast this spell.") return end if getCreatureStorage(cid, PET_EXHAUST) > os.clock() then doSendMagicEffect(self:position(), CONST_ME_POFF) doPlayerSendCancel(cid, "Your pet is exhausted.") return end if spell.target then local target = getCreatureTarget(self.it) if target == 0 then doPlayerSendCancel(cid, "First, select a target.") return end spell.range = spell.range or 1 if getDistanceBetween(self:position(), getCreaturePosition(target)) > spell.range then doPlayerSendCancel(cid, "Too far to cast spell.") return end doSendDistanceShoot(self:position(), getCreaturePosition(target), spell.shooteffect) doTargetCombatHealth(self.it, target, spell.type, -spell.min, -spell.max, spell.effect) else doAreaCombatHealth(self.it, spell.type, self:position(), (spell.area or 0), -min, -max, spell.effect) end self.mana = self.mana - spell.mana doCreatureSetStorage(cid, PET_EXHAUST, os.clock() + (spell.exhaust / 1000)) doCreatureSay(cid, getCreatureName(self.it) ..", use ".. spell.name .."!") self:say(spell.name) end -- set pet uid function Pet:setit(uid) self.it = uid end -- get player pet position function Pet:position() return getCreaturePosition(self.it) end -- move player pet to a direction function Pet:move(direction) local toPosition = getPosByDir(self:position(), direction, 1) if getCreatureStorage(getCreatureMaster(self.it), PET_EXHAUST) > os.clock() then doSendMagicEffect(self:position(), CONST_ME_POFF) doPlayerSendCancel(cid, "Your pet is exhausted.") return end if queryTileAddThing(self.it, toPosition) == RETURNVALUE_NOERROR then doMoveCreature(self.it, direction) doCreatureSetStorage(cid, PET_EXHAUST, os.clock() + 0.5) doCreatureSay(cid, "Move, ".. getCreatureName(self.it) .."!") end end -- save player pet attributes function Pet:save() local cid = getCreatureMaster(self.it) doCreatureSetStorage(cid, PET_UID, self.it) doCreatureSetStorage(cid, PET_SPECIE, getCreatureName(self.it)) doCreatureSetStorage(cid, PET_LEVEL, self.level) doCreatureSetStorage(cid, PET_EXPERIENCE, self.experience) doCreatureSetStorage(cid, PET_HEALTH, self.health) doCreatureSetStorage(cid, PET_HEALTHMAX, self.healthmax) doCreatureSetStorage(cid, PET_MANA, self.mana) doCreatureSetStorage(cid, PET_MANAMAX, self.manamax) end -- get player pet and return instance function get_pet(cid) local uid, it = getCreatureStorage(cid, PET_UID) for _, pet in ipairs(getCreatureSummons(cid)) do if pet == uid then it = pet break end end if not it then return false end local this_pet = { it = it, attributes = Pets[getCreatureName(it):lower()], level = getCreatureStorage(cid, PET_LEVEL), experience = getCreatureStorage(cid, PET_EXPERIENCE), health = getCreatureHealth(it), healthmax = getCreatureMaxHealth(it), mana = getCreatureStorage(cid, PET_MANA), manamax = getCreatureStorage(cid, PET_MANAMAX), } return setmetatable(this_pet, {__index = Pet}) end -- summon a existing player pet function call_pet(cid) if get_pet(cid) then return doPlayerSendCancel(cid, "You cannot summon your pet more than one time.") end if getCreatureStorage(cid, PET_SPECIE) == -1 then return doPlayerSendCancel(cid, "You don't have a pet.") end if getCreatureStorage(cid, PET_ALIVE) == 0 then return doPlayerSendCancel(cid, "You need to revive your pet") end local pet = doCreateMonster(getCreatureStorage(cid, PET_SPECIE), getCreaturePosition(cid)) if not pet then return false end if not doConvinceCreature(cid, pet) then doRemoveCreature(pet) return false end local health, healthmax = getCreatureStorage(cid, PET_HEALTH), getCreatureStorage(cid, PET_HEALTHMAX) setCreatureMaxHealth(pet, healthmax) doCreatureAddHealth(pet, healthmax) doCreatureAddHealth(pet, (health - healthmax)) doCreatureSay(cid, "Go, ".. getCreatureName(pet) .."!") doSendMagicEffect(getCreaturePosition(pet), CONST_ME_MAGIC_GREEN) doCreatureSetStorage(cid, PET_UID, pet) return true end -- is pet function is_pet(cid) return getCreatureMaster(cid) == 0 and false or isPlayer(getCreatureMaster(cid)) end dofile(getDataDir() .."/lib/pet-spells.lua") Pet_Rat = PetSpecie:new("Rat", 20, 0, 5, 5, {[1] = Rock_Throw, [2] = Dark_Bite}, "Cave Rat", 14) Pet_Cave_Rat = PetSpecie:new("Cave Rat", 40, 20, 10, 10, {[1] = Dark_Bite}, "Munster", 32) Pet_Munster = PetSpecie:new("Munster", 100, 50, 20, 20, {[1] = Dark_Bite}, false, false) 2. Crie um arquivo em data/lib com o nome pet-spells.lua e cole o código abaixo:

    -- This script is part of Pet System -- Copyright (C) 2013 Oneshot -- -- This program 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. -- -- This program 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 this program. If not, see <http://www.gnu.org/licenses/>. dofile("data/spells/lib/spells.lua") Dark_Bite = { name = "Dark Bite", level = 1, mana = 100, type = COMBAT_PHYSICALDAMAGE, effect = CONST_ME_BLOCKHIT, shooteffect = CONST_ANI_SMALLSTONE, target = true, range = 1, min = 300, max = 500, area = 0, exhaust = 1000, } Rock_Throw = { name = "Rock Throw", level = 1, mana = 10, type = COMBAT_PHYSICALDAMAGE, effect = CONST_ME_BLOCKHIT, shooteffect = CONST_ANI_NONE, target = true, range = 1, min = 20, max = 25, area = 0, exhaust = 1000, } 3. Crie um arquivo em data/talkactions/scripts, chamado pet-talkactions.lua e cole o conteúdo abaixo:

    -- This script is part of Pet System -- Copyright (C) 2013 Oneshot -- -- This program 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. -- -- This program 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 this program. If not, see <http://www.gnu.org/licenses/>. function onSay(cid, words, param, channel) param = string.explode(param, ":") if param[1]:lower() == "go" then if getTilePzInfo(getCreaturePosition(cid)) then return doPlayerSendCancel(cid, "You cannot call your pet at protection zone.") end local pet = get_pet(cid) if pet then return doPlayerSendCancel(cid, "You cannot call your pet two times.") end call_pet(cid) return true elseif param[1]:lower() == "back" then local pet = get_pet(cid) if not pet then return doPlayerSendCancel(cid, "Please call your pet first.") end pet:back() return true elseif param[1]:lower() == "release" then local pet = get_pet(cid) if not pet then return doPlayerSendCancel(cid, "Please call your pet first.") end pet:release() return true elseif param[1]:lower() == "cast" then local pet = get_pet(cid) if not pet then return doPlayerSendCancel(cid, "Please call your pet first.") end local index = tonumber(param[2]) or 1 pet:cast(index) return true elseif param[1]:lower() == "say" then local pet = get_pet(cid) if not pet then return doPlayerSendCancel(cid, "Please call your pet first.") end pet:say(param[2]) return true elseif param[1]:lower() == "move" then local pet = get_pet(cid) if not pet then return doPlayerSendCancel(cid, "Please call your pet first.") end if not isInArray({"north", "south", "east", "west"}, param[2]:lower()) then return doPlayerSendCancel(cid, "Invalid direction.") end pet:move((_G[param[2]:upper()] or NORTH)) return true elseif param[1]:lower() == "addexp" then local pet = get_pet(cid) if not pet then return doPlayerSendCancel(cid, "Please call your pet first.") end if getPlayerGroupId(cid) < 3 then return doPlayerSendCancel(cid, "You cannot use this command.") end pet:addexperience(tonumber(param[2]) or 0) return true end return true end 4. No talkactions.xml

    <talkaction words="/pet" event="script" value="pet-talkactions.lua"/> 5. Crie um arquivo em data/creaturescripts/scripts com o nome pet-creaturescripts.lua e adicione o conteúdo abaixo:

    -- This script is part of Pet System -- Copyright (C) 2013 Oneshot -- -- This program 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. -- -- This program 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 this program. If not, see <http://www.gnu.org/licenses/>. function onKill(cid, target, lastHit) local pet = get_pet(cid) if not isMonster(target) or getMonsterInfo(getCreatureName(target)) and getMonsterInfo(getCreatureName(target)).experience == 0 then return true end if not pet then return true end pet:addexperience(getMonsterInfo(getCreatureName(target)).experience) return true end function onDeath(cid, corpse, deathList) if not is_pet(cid) then return true end local master = getCreatureMaster(cid) doPlayerSendTextMessage(master, MESSAGE_EVENT_ADVANCE, "Your pet is dead.") doCreatureSetStorage(master, PET_ALIVE, 0) doCreatureSetStorage(master, PET_HEALTH, getCreatureMaxHealth(cid)) return true end 6. No arquivo login.lua de data/creaturescripts/scripts, adicione:

    registerCreatureEvent(cid, "PetKill") 7. No arquivo creaturescripts.xml, adicione:

    <event type="kill" name="PetKill" event="script" value="pet-creaturescripts.lua"/> <event type="death" name="PetDeath" event="script" value="pet-creaturescripts.lua"/> 8. Em cada arquivo XML de cada monstro que servirá como pet, adicione:

    <script> <event name="PetDeath"/> </script> 9. Mude o flag convinceable de cada monstro que será um tipo de pet.

    <flag convinceable="1"/> 10. Crie um arquivo chamado pet trainer.lua em data/npc/scripts, adicione:

    local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} local petState = {} 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 local PetPrices = { ["rat"] = {1000, 200}, } function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_PRIVATE and 0 or cid if msgcontains(msg, "sell") then local say = "I can offer you these pet species: " for pet_name, k in pairs(PetPrices) do local first = true if Pets[pet_name] then say = say .. (first == true and "" or ", ") .."{".. pet_name .. "}" first = false end end selfSay(say, cid) talkState[talkUser] = 1 elseif msgcontains(msg, "revive") then if getCreatureStorage(cid, PET_SPECIE) == -1 then selfSay("You don't have a pet", cid) return true end if getCreatureStorage(cid, PET_ALIVE) == 0 then if doPlayerRemoveMoney(cid, PetPrices[getCreatureStorage(cid, PET_SPECIE):lower()][2]) then selfSay("Your pet is now alive.", cid) doCreatureSetStorage(cid, PET_ALIVE, 1) else selfSay("Sorry, you need ".. PetPrices[getCreatureStorage(cid, PET_SPECIE)][2] .." gold.", cid) end else selfSay("Sorry, your pet is alive.", cid) end elseif talkState[talkUser] == 1 then if PetPrices[msg] then selfSay("A good choice, so do you want to buy a ".. msg .." pet? It will cost ".. PetPrices[msg][1] .." gold.", cid) talkState[talkUser] = 2 petState[talkUser] = msg else selfSay("Sorry, I don't know this pet specie", cid) end elseif talkState[talkUser] == 2 then if msgcontains(msg, "yes") then if get_pet(cid) or getCreatureStorage(cid, PET_SPECIE) ~= -1 then selfSay("Sorry, you already have a pet.", cid) return true end local pet = petState[talkUser] if getPlayerMoney(cid) < PetPrices[pet][1] then selfSay("Sorry, you don't have enough money", cid) return true end selfSay("This is your new pet, take care of it.", cid) Pets[pet]:create():hatch(cid) elseif msgcontains(msg, "no") then selfSay("Then not.", cid) talkState[talkUser] = 0 end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) 11. Crie um arquivo chamado Pet Trainer.xml em data/npc, adicione:

    <?xml version="1.0" encoding="UTF-8"?> <npc name="Pet Trainer" script="pet trainer.lua" walkinterval="0" 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="Hello |PLAYERNAME|, I {sell} and {revive} pets."/> </parameters> </npc> Configuração

    O Pet System OOP é todo orientado a objetos. Para criar novas raças de pet é muito, mas muito simples mesmo. Basta uma linha:

    PetSpecie:new("Rat", 20, 0, 5, 5, {[1] = Rock_Throw, [2] = Dark_Bite}, "Cave Rat", 14) Como segue o modelo abaixo:

    PetSpecie:new(NOME_DO_MONSTRO, HP_INICIAL, MP_INICIAL, HP_POR_LEVEL, MP_POR_LEVEL, {[1] = MAGIA_1, [2] = MAGIA_2, [3] = MAGIA_3, ...}, NOME_DA_EVOLUÇÃO, LEVEL_DA_EVOLUÇÃO) Caso você não queira que o pet evolua, coloque os dois parâmetros como false.

    E para criar novas magias, é só seguir o mesmo modelo das duas magias padrão dentro de pet-spells.lua.

    Demonstração



    Este sistema está no Github sob a licença Gnu GPL v3.

    Você pode baixar os scripts aqui.

    Abraços.
  25. Upvote
    Critical deu reputação a vital900 em batendo a real   
    Cara intervalo de tempo.. Isto não prova a sanidade do cara.. Se for avaliar isto, veja alguém ficando louco em 15segundos..

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...