Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 05/27/15 em todas áreas

  1. Administrador

    Novo Chat & Wallpapers

    Bom dia/tarde/noite a todos! Trago notícias quentes à vocês. Essa semana foi uma semana muito importante para o novo xTibia. Batemos o recorde de usuários online! (221 online) e estamos crescendo cada vez mais! Quero dar as boas vindas ao novos membros que estão chegando e espero que curtam o fórum. Confiram as principais novidades para esta semana. É isso ai! O Chat do Ekz está de volta! Estamos em períodos de testes, portanto o chat está ativo somente na index do fórum. Para quem ainda não sabe como funciona, no chat do Ékz é possível conversar com outros membros através de uma barrinha na parte inferior da tela. Você sendo membro tem acesso à chats públicos e a chats privados, lembre-se de respeitar as regras. • É proibido flood em salas de chat; • É extremamente proibido divulgar qualquer conteúdo que não seja relacionado ao xTibia; • Não peça suporte por PM, crie um tópico para isto e envie o link à pessoa que quer ajudar; CHAT INSTANTÂNEO Com o chat instantâneo você pode conversar com seus amigos, trocar uma ideia sobre tibia e otserv e quem sabe contar umas piadas? Haha, não se esqueça que sempre estaremos de olho nas conversas para identificar os patifes que tentarem burlar as regras. Veja na ilustração como funciona um diálogo utilizando o chat instantâneo: É isso ai, o xtibia agora tem wallpapers oficiais recém tirados do forno! Estarei mostrando abaixo e disponibilizando para download Quem quiser contribuir com wallpapers, basta enviar o seu para daniel@xtibia.com. Os melhores wallpapers do mês receberão uma medalha + 5 REP. Wallpaper #01 Wallpaper #02 Wallpaper #03 Wallpaper #04 Wallpaper #05 Wallpaper #06 Wallpaper #07 Wallpaper #08 Wallpaper #09 Wallpaper #10 Wallpaper #11 Wallpaper #12 Wallpaper #13 Wallpaper #14 Wallpaper #15 Download - Mediafire Pack Pronta para área de trabalho Créditos pelas wallpapers:
    3 pontos
  2. xSONYx

    [TUTORIAL] Transparência

    Transparência Eae galera, vim aqui pra ensinar vocês a usar a transparência no tibia, vamos começar. Primeiro você tem que ter uma versão de 0.6.5 ou superior do otclient e habilitar a feature. Para habilitar a feature você vai em game_things depois em game_things.lua e adicione isto em baixo de function load() g_game.enableFeature(GameSpritesAlphaChannel) Agora você tem que usar o Object Builder(versão 0.3.4), abra o object builder, abra seu spr/dat e bota em compile as e ative a opção transparency. Pronto, seu cliente e o server já estão aptos a receber a transparência. Agora a parte mais complicadinha, como montar a sprite com transparência para adicionar no client. Abra sua sprite no photoshop, delete todos os pixels de fundo(geralmente é rosa), deixe somente os que a sprite usa. Agora vá em opacidade e diminua para o desejado. Agora preste bem atenção, salve a imagem no formato PNG, pois ele aceita alfa. Depois vá no Object Builder, clique para abrir spr/dat, selecione a opção transparency(senão não vai reconhecer seu dat/spr), vá na sprite desejada e a adicione. Agora compile, também com a opção transparency ativada. Testei com uma outfit qualquer, resultado final: Créditos xSONYx EdMignari Baxnie
    2 pontos
  3. Administrador

    IceWars Baiak

    -Novo Templo -Castle 24HRS (Unico) com aviso de invasores -Paladin arrumado, agóra pode healar com potion e atacar ao mesmo tempo -Utito Tempo San Arrumado Agóra não da mais Exausted em outras magias -Dodge System -Critical System -Itens Donates para vender no Site ou no Jogo -Itens VIP a mostra no templo -Todos itens DONATES dando as skills normalmente -Vários Teleports -Novas Hunts -Look Frags -Potions Editadas -War System -Muitas quests -City editada para um PvP muito melhor -Arena PVP -Fast Attack ROX Para melhor PvP -Quest de set free para Pally/Kinas -Quest de set free para Mages -quest para armas editadas -Treiners com novos visual -30% a mais de experiencia para players donates -10% a mais de experiencia para guild que domina o Castle 24HRS E muito mais! Comandos principais: !dodoge !critical !stamina !aol !bless !notice. Vamos as imagens: templo teleports Quests castle hunts do castle area donate Acc do GOD: 5/god Download :http://www.4shared.c.../DiegoWars.html Scan: https://www.virustot...sis/1413409264/ Créditos Dieguiin XP Marcos Vinicius
    2 pontos
  4. felippepsa

    WebSite OtPokemon 4.0

    Eae pessoal do XTibia Beleza ? Então, vamos ao que interessa. Noticias *Poke Of Day *Facebook News *Shop e Doação ( Disponiveis ) *Novo Template *Atualizado style.css *Sistema De Tradução *E outras diversas noticias que so irão saber conferindo o Template Creditos Links http://www.mediafire.com/download/q6zsoud79l6p35p/WebSite+Otpokemon.com+V+4.0+FULL.rar Senha:otpokemon Scan https://www.virustotal.com/pt/file/483ebe04a5994ff8b03247d3b52e1ab7a639b78633934e2eedfda3f656b04ac0/analysis/1405586305/ Creditos Kranzix(Edição Geral) ModernAcc(Base) Felippepsa (Por Postar)
    2 pontos
  5. Bem galera, alguns dias atras postei aqui uma spell que mandaria o alvo para outra dimensao por "x" segundos, agora vou postar uma que manda você mesmo que usa para outra dimensao por "x" segundos com condowl... Entao é isso galera, uma spell bem legal e facil de configurar, espero que gostem
    2 pontos
  6. fitaisolante

    Média Online

    Como funciona? O meu código faz o seguinte, ele registra a quantidade de players online em tal hora no dia (configurável) em um bloco de notas.. Para que eu vou usar isso? Ai vai da sua criatividade, eu mesmo uso para identificar quais são os horários de picos e também para saber se tem um crescimento de players ao passar dos dias. Aqui vai um exemplo de como ele registra os players: http://prntscr.com/2vb4zt Vamos ao script: Em globalevents.xml coloque essa tag: <globalevent name="Monitor_Online" interval="60000" event="script" value="monitoronline.lua"/> Em interval se o seu tfs não for 0.4, coloque 60 Agora na pasta scripts crie um arquivo lua chamado monitoronline.lua e adicione isso dentro: function onThink(interval, lastExecution) local file = io.open("./monitoronline.txt", "a") local hora = {"7:30","11:30","13:30","15:30","17:30","20:30","22:30"} if table.find(hora, os.date("%H:%M")) then file:write("\n Players Online: ".. #getPlayersOnline() .." \n ["..os.date("%x").."] ["..tostring(os.date("%X")):sub(1, 5).."]") file:close() end return true end E pronto, seu sistema já vai estar funcionando, o arquivo de texto aparece na pasta do seu executável.. Eu sincronizei ele com minha página web, se quiserem o código em PHP me mande PM. http://jogar.snowotserv.com/monitoramento.php Créditos: Keilost - 100%
    1 ponto
  7. Fala galera do XTibia, andei pegando um BAIAK base pra dar uma editada, trackeando alguns mapas e otimizando algumas coisas para disponibilizar um baiak "filé" para vocês do XTibia Sem mimimi, vamos ao que interessa e depois algumas imagens! O que temos neste lindo Baiak? New Templo bem baiak. Dodge System Run Event BP Event Guilds System Castle 24H Battlefield Event Blood Castle Event Firestorm Event Capture the Flags Event Items Donates para vender no site/jogo Items VIP a mostra no termplo 3 Áreas VIPS jogo e Donate Vários Teleports Novas Hunts Look Frags Sistema de Refinamento Criminal System Hit Rank Reset System Full Task Zombie Event [VIP] no nome ao adquirir VIP Distro 04 com Cast System (LUAN) Sistema de teleporte (!FLY) Level Skills System Ao cadastrar o player irá ganhar 2 dias VIPs na quest do templo! War System Várias quests Arena PVP Treiners modificados Roda em SQLITE E MYSQL! E muito mais, basta baixar para conferir! Vamos as imagens: Ao abrir o mapa: Ingame: Local onde o player começa: Templo Baiak: Teleports Free's Básicos: Área de Eventos e Summon por alavanca: BP Event Room: TPS VIP DONATE: TPS VIP +: TPS VIP ++: Pasta do servidor: Dowload/Scan Download do servidor completo: http://www.4shared.c..._Absolute.html? Scan: https://www.virustot...sis/1407454456/ Desejo a todos um bom proveito e sucesso Até a próxima Créditos: Absolute DeathRocks Luan Luciano TFS TeaM
    1 ponto
  8. Remere's Map Editor - Criando e Modificando Extensões Olá, fiz este tutorial a um tempo atrás e agora o reformulei, espero que encontrem o que procuram e entendam o conteúdo, estarei atualizando para deixá-lo mais completo conforme o tempo, quaisquer dúvidas estarei atendendo no tópico. O tópico atenderá a quem precisar modificar alguma extensão de auto-border ou organização no Remere's Map Editor, este, seguira a ordem proposta no sumário:Borders.xml Grounds.xml Walls.xml INTRODUÇÃO Auto-border é uma ferramenta do RME utilizada para adicionar itens de um modo que formem seu padrão ou ligação, em outras palavras, o auto-border faz algumas partes do mapa para você (em outros pontos de vista, o mapa todo); você pode utilizar esta ferramenta de duas maneiras: Apenas usando-a: Seu mapa ficará quadrado/simples/desorganizado; Usando como Base: Esta é uma ação de muitos mappers que, mesmo não gostando do auto-border, utilizam para achar o pack do item selecionado, ao invés de procurar este manualmente. Outros, produzem bases ou marcações no mapa para depois completar utilizando suas habilidades. INICIANDO Antes de tudo, faça um backup do seu map editor, caso você não saiba, basta copiar a pasta que você vai modificar. Durante este tutorial, estarei utilizando a versão 8.60. Começarei com borders.xml por ser fácil de entender, porém trabalhoso. Borders.xml é o arquivo que fará a ferramenta Auto-Border adicionar, automaticamente, bordas no ground que você utilizar através desta ferramenta. É importante ressaltar, que as configurações contidas neste arquivo possuirão um ID que fará uma ligação com o arquivo grounds.xml; dessa forma, nunca esqueça de configurar corretamente o ID que você terá que adicionar em grounds.xml. Estrutura e FunçõesBorders.xml possui uma estrutura simples de entender, inicia com: <materials>E finaliza com: </materials>Entre essas duas linhas, que são a primeira e a útilma, as configurações de cada borda são organizadas como: <border id="A"> -- B -- <borderitem edge="C" item="D"/> </border>Além destas, o arquivo pode conter outras funções que são fundamentais para a organização base do RME, entretanto, está contido a estrutura base para uma funcionalidade simples; abaixo você pode similar as referências e entender esta estrutura: A - Esta função registra a borda fazendo uma ligação com um ground (em grounds.xml), este id você cria, mas deve garantir que não esteja repetido, pois se houver duas bordas com o mesmo ID ou dois grounds com o mesmo id, a ferramenta entrará em colapso e este item não funcionará como auto-border. Você saberá se cometeu um erro na hora de abrir o editor ou utilizar o item; B - Aqui você pode adicionar um nome à borda, para poder localizá-la mais facilmente, isto é opcional e você deve tomar cuidado para que o texto esteja neste padrão: -- Nome -- C - A parte mais complicada e importante é a posição dos itens que comportaram o funcionamento deste específico auto-border, em C, você deve especificar a posição da borda conforme o padrão abaixo, sempre siga esta ordem, mantendo um padrão nas suas extensões, que ficará mais fácil de criar/modificar: C - Em C, você adiciona o id das bordas conforme a configuração de posição mostrada acima; Ao adicionar as bordas de grass (os ids) conforme a posição da "Rosa dos Ventos", o script fica assim: <borderitem edge="n" item="4542"/> <borderitem edge="e" item="4543"/> <borderitem edge="s" item="4544"/> <borderitem edge="w" item="4545"/> <borderitem edge="cnw" item="4546"/> <borderitem edge="cne" item="4547"/> <borderitem edge="csw" item="4548"/> <borderitem edge="cse" item="4549"/> <borderitem edge="dnw" item="4550"/> <borderitem edge="dne" item="4551"/> <borderitem edge="dsw" item="4552"/> <borderitem edge="dse" item="4553"/> Um script de uma borda completo deve estar como o modelo abaixo (apenas a estrutura, os ids e nome podem ser diferentes): <materials> </border>... <border id="2" group="1"> -- grass border -- <borderitem edge="n" item="4542"/> <borderitem edge="e" item="4543"/> <borderitem edge="s" item="4544"/> <borderitem edge="w" item="4545"/> <borderitem edge="cnw" item="4546"/> <borderitem edge="cne" item="4547"/> <borderitem edge="csw" item="4548"/> <borderitem edge="cse" item="4549"/> <borderitem edge="dnw" item="4550"/> <borderitem edge="dne" item="4551"/> <borderitem edge="dsw" item="4552"/> <borderitem edge="dse" item="4553"/> </border> <border id="3"... </materials> Grounds.xml é o arquivo responsável pelos tiles que são adicionados com bordas automáticas no RME, neste, você adicionará funções que determinam os tiles e suas respectivas repetições/variações, assim como o id da borda criada. É uma parte fácil de lidar, porém há funções que você deve decorar para saber como esta ferramenta funcionará no RME. Estrutura e FunçõesVeja abaixo a estrutura principal de grounds.xml: <materials> <materials> <brush name="A" type="ground" server_lookid="B" z-order="C"> <item id="D" chance="E"/> <border align="outer" id="F"/> <border align="inner" to="none" id="G"/> </brush> </materials>Para entender a estrutura, siga em ordem as referências e associe com o que já foi dito anteriormente: A - Aqui você deve escrever, em minúsculo, o nome do seu ground; este nome será colocado em tilesets.xml para que o editor saiba que a ferramenta existe e onde colocá-la; B - Em B, deve ser posto o id do tile, este, aparecerá na paleta para identificar a ferramenta; C - Z-order é a função que diz se o as bordas do seu tile ficarão por cima/por baixo de outros tiles, se a dúvida for: Por que esta função se encontra em ground.xml e não em borders.xml, leia: Ao colocar um ground em cima do outro, este que já estava será removido; o script do ground adicionado deve identificar o que acontecerá com suas bordas, veja as imagens para entender: Perceba que o ground de terra fica abaixo do ground Lawn, que é a grama escura; respectivamente, o ground de grass fica acima do ground Lawn. Isso acontece por que ambos os três possuem um z-order diferente, conforme as imagens: z-order="2800"> z-order="1000"> z-order="5100"> D - Nesta parte, você coloca o id do seu ground, pode colocar vários grounds, um em baixo do outro (repetindo a função) que a ferramenta fará eles saírem de ordem aleatória no mapa, conforme a prioridade decidida, confira: <item id="4526" chance="2500"/> <item id="4527" chance="10"/> <item id="4528" chance="25"/> <item id="4529" chance="25"/> <item id="4530" chance="25"/> <item id="4531" chance="25"/> <item id="4532" chance="25"/> <item id="4533" chance="25"/> <item id="4534" chance="15"/> <item id="4535" chance="25"/> <item id="4536" chance="25"/> <item id="4537" chance="25"/> <item id="4538" chance="20"/> <item id="4539" chance="20"/> <item id="4540" chance="20"/> <item id="4541" chance="20"/> E - Como o próprio nome já diz, esta é a função que determina a prioridade do ground, no script acima, perceba que cada ground tem um chance id igual ou diferente, o objetivo disso é fazer os grounds saírem com a mesma proporção, ou um ground aparecer mais vezes que outros grounds. F - Outer, que em português significa Exterior, é a borda que contornará um ground por fora, basta adicionar o id da borda que você quer que faça parte do ground, ele ficará assim: G - Inner, que em português significa Interior, é a borda que contornará um ground por dentro, esta função é muito utilizada para grounds adicionados em montanhas, pois geralmente a borda faz ligação com a parte de baixo que é a montanha: Após finalizar estas funções, se fez certo, você já terá o seu ground funcionando corretamente, abaixo darei um exemplo desse script completo: <brush name="grass" type="ground" server_lookid="4526" z-order="3500"> <item id="4526" chance="2500"/> <item id="4527" chance="10"/> <item id="4528" chance="25"/> <item id="4529" chance="25"/> <item id="4530" chance="25"/> <item id="4531" chance="25"/> <item id="4532" chance="25"/> <item id="4533" chance="25"/> <item id="4534" chance="15"/> <item id="4535" chance="25"/> <item id="4536" chance="25"/> <item id="4537" chance="25"/> <item id="4538" chance="20"/> <item id="4539" chance="20"/> <item id="4540" chance="20"/> <item id="4541" chance="20"/> <item id="470" chance="0"/> <border align="outer" id="2"/> <border align="inner" to="none" id="1"/> </brush> Walls.xml é o arquivo que cria suas ferramentas de walls, não é complicado, assim como o grounds.xml, você deve entender as funções; depois que criar, só precisa adicionar o nome em tileset.xml e usar. Estrutura e FunçõesA estrutura de Walls.xml é composta por: <materials> <brush name="A" type="wall" server_lookid="B"> <wall type="C"> </wall> <wall type="D"> </wall> <wall type="E"> </wall> <wall type="F"> </wall> </brush> Eu separei o script acima para entender melhor sua estrutura, veja os passos abaixo depois as funções completas: A - Como nos outros scripts, aqui vai o nome, em minúsculo, que identificará o script em tilesets.xml; B - Em B, deve ser posto o id do tile, este, aparecerá na paleta para identificar a ferramenta; C - Wall type se refere aos diferentes tipos da walls, existem 4 no padrão tibiano, a primeira da ordem é a <wall type="horizontal">, como mostra a figura: D - Aqui encontra-se o segundo tipo de wall, a <wall type="vertical">, como mostra a figura: E - A terceira wall é a <wall type="corner">, como mostra a figura: F- A quarta e última é a <wall type="pole">, como mostra a figura: <wall type="horizontal"> <item id="A" chance="500"/> <door id="B" type="normal" open="false"/> <door id="B" type="normal" open="true"/> <door id="B" type="locked" open="false"/> <door id="B" type="locked" open="true"/> <door id="B" type="quest" open="false"/> <door id="B" type="quest" open="true"/> <door id="B" type="magic" open="false"/> <door id="B" type="magic" open="true"/> <door id="B" type="hatch_window" open="false"/> <door id="B" type="hatch_window" open="true"/> <door id="B" type="window"/> </wall> <wall type="vertical"> <item id="A" chance="500"/> <door id="B" type="normal" open="false"/> <door id="B" type="normal" open="true"/> <door id="B" type="locked" open="false"/> <door id="B" type="locked" open="true"/> <door id="B" type="quest" open="false"/> <door id="B" type="quest" open="true"/> <door id="B" type="magic" open="false"/> <door id="B" type="magic" open="true"/> <door id="B" type="hatch_window" open="false"/> <door id="B" type="hatch_window" open="true"/> <door id="B" type="window"/> </wall> <wall type="corner"> <item id="A" chance="1000"/> </wall> <wall type="pole"> <item id="A" chance="1000"/> </wall> A - Em A, vai o id da wall conforme a configuração "Horizontal, Vertical, Corner ou Pole". São respectivamente: B - Em B, é configurado o id da wall para as configurações mostradas a baixo, lembre-se que a mesma configuração vale para os tipos de walls "Horizontal, Vertical, Corner ou Pole", siga os exemplos: Normal: <door id="B" type="normal" open="false"/> <door id="B" type="normal" open="true"/> False: A função com false vai o ID da porta normal fechada. True: A função com true vai o ID da porta normal Aberta. Locked: <door id="B" type="locked" open="false"/> <door id="B" type="locked" open="true"/> False: A função com false vai o ID da porta trancada fechada. True: A função com true vai o ID da porta trancada Aberta. Magic: <door id="B" type="magic" open="false"/> <door id="B" type="magic" open="true"/> False: A função com false vai o ID da porta mágica fechada. True: A função com true vai o ID da porta magica Aberta. Quest: <door id="B" type="quest" open="false"/> <door id="B" type="quest" open="true"/> False: A função com false vai o ID da porta de quest fechada. True: A função com true vai o ID da porta de quest Aberta. Janelas <door id="B" type="hatch_window" open="false"/> <door id="B" type="hatch_window" open="true"/> <door id="B" type="window"/> Quaisquer dúvidas, estou a disposição!
    1 ponto
  9. Informações Suport: (MYSQL E SQL) Base: (PGALAXY) - GabrielTXU Executavel (Distro): TFS 0.3.6 Versao: 8.54 + IP Changer Mapa Proprio (120 Hunts + 5 Quests) Servidor Estavel Uptime de (580 hrs) Testado Player EXP: 10x Pokemon EXP: 15x Catch System Inovado (Rate Por Skill "Catching" + Rate normal) Catch Esta Balanceado Catch Channel System (Veja todos os Catch do Servidor Pelo Canal Catch-Channel) Bonus Level System (Marca na Ball a quantia de Level que voce Upou Nesse Pokemon, Assim mudando o Comercio de Pokemons) Pokemon Level Max : 300 Pokemon Boost Max FREE: +50 Pokemon Boost Max VIP: +80 + (Bonus Boost) Novo Balanceamentos dos Pokemons Goback Surf Fly 6 Pokemons (na bag) Dive Order Pokedex Respaw de Shiny Aleatorio (1%) Configuraçoes 100% do PokeDashAdvanced na Lib/Configuration.lua e etc... Passive (Alguns Shinys nao apareçem o Passivo) Torneio Win e Lose Score PVP e PVP Team Teleport Potions e Revives Apricorns e Vitaminas Nuse Joy Cassino Invasao automatica (09:00 as 21:00) Npcs (Aura,mark,Pokemon Collector,lock ball e etc.....) Aura Task System (NPC MEGA TASK) 7 BALL Clan Look Score Rare Candy Evoluçao (Automatica e Por Stones) 90% Automatico e 10 % Stones Fome e Sentimento 1-2 Geraçao Full 3-6 Geraçao Imcompleta Shinys (1-2 Geraçao Full) Shinys (3-6 Geraçao Imcompleta) Erros [14/12/2014 18:12:37] [Error - CreatureScript Interface] [14/12/2014 18:12:37] data/creaturescripts/scripts/atk.lua:onAttack [14/12/2014 18:12:37] Description: [14/12/2014 18:12:37] (luaDoMonsterSetTarget) Monster not found [Esse Erro acontece na arena pvp e nao sei como arrumar, se tirar esse script buga o ataque dos pokemons "Wild" eles começam a atacar o jogador ao inves de Seu Pokemon] Alguns Erros vão surgir durante o Jogo: Erro no Exp.lua Erro Na hora de Evoluir (Automatico) erro de MaxHealth, algo assim Bugs gerais Os Pokemons Uniques Fazem Crashar o Servidor (Se voce pegar uma Pokeball Unique e jogar no Teleport, o Servidor Crasha) Os Pokemon Lock Fazem Crashar o Servidor (Se voce pegar uma Pokeball Lock e jogar no Teleport, o Servidor Crashar) Pode ser que + Alguns Atributos do PDA fazem Crashar o Servidor e estamos a Procura Disso Retirem o NPC SR.SPLIT (Segundo Andar do CP) Prints Downloads Server + Client Sources Utilitário: Map Padventures S/Respawns Scans Server + Client Sources Créditos Aberos Gristony GabrielTXU NextBR Valaquinhas Sukito TFS Team
    1 ponto
  10. Para quem não sabe como funciona o script : Cada vocation ao atingir X level ganha uma X recompensa(podendo ganhar mais de um item por level). • Adicionando o script • Em "data/creaturescripts/scripts/vocreward.lua" : local c = { [{1,5}] = { [13] = {items = {{itemid = 2191, count = 1}}, storage = 40953}, [19] = {items = {{itemid = 2188, count = 1}}, storage = 40954}, [22] = {items = {{itemid = 8921, count = 1}}, storage = 40955}, [26] = {items = {{itemid = 2189, count = 1}}, storage = 40956}, [33] = {items = {{itemid = 2187, count = 1}, {itemid = 2152, count = 25}}, storage = 40957}, [37] = {items = {{itemid = 8920, count = 1}, {itemid = 2152, count = 50}}, storage = 40958}, [42] = {items = {{itemid = 8922, count = 1}, {itemid = 2160, count = 1}}, storage = 40959} }, [{2,6}] = { [13] = {items = {{itemid = 2186, count = 1}}, storage = 40953}, [19] = {items = {{itemid = 2185, count = 1}}, storage = 40954}, [22] = {items = {{itemid = 8911, count = 1}}, storage = 40955}, [26] = {items = {{itemid = 2181, count = 1}}, storage = 40956}, [33] = {items = {{itemid = 2183, count = 1}, {itemid = 2152, count = 25}}, storage = 40957}, [37] = {items = {{itemid = 8912, count = 1}, {itemid = 2152, count = 50}}, storage = 40958}, [42] = {items = {{itemid = 8910, count = 1}, {itemid = 2160, count = 1}}, storage = 40959} }, [{3,7}] = { [12] = {items = {{itemid = 2389, count = 5}}, storage = 40953}, [16] = {items = {{itemid = 2389, count = 10}}, storage = 40954}, [20] = {items = {{itemid = 3965, count = 10}}, storage = 40955}, [25] = {items = {{itemid = 7378, count = 10}}, storage = 40956}, [30] = {items = {{itemid = 2456, count = 1}, {itemid = 2544, count = 100}}, storage = 40957}, [35] = {items = {{itemid = 7364, count = 100}, {itemid = 2152, count = 75}}, storage = 40958}, [40] = {items = {{itemid = 7365, count = 100}, {itemid = 2160, count = 1}}, storage = 40959} }, [{4,8}] = { [15] = {items = {{itemid = 2409, count = 1}}, storage = 40953}, [30] = {items = {{itemid = 2392, count = 1}, {itemid = 2152, count = 75}}, storage = 40957}, [40] = {items = {{itemid = 2407, count = 1}, {itemid = 2160, count = 1}}, storage = 40959} } } function onAdvance(cid, skill, oldlevel, newlevel) if skill ~= SKILL__LEVEL then return true end for voc, x in pairs(c) do if isInArray(voc, getPlayerVocation(cid)) then for level, z in pairs(x) do if newlevel >= level and getPlayerStorageValue(cid, z.storage) ~= 1 then local text = "" for v = 1, #z.items do count, info = z.items[v].count, getItemInfo(z.items[v].itemid) local ret = ", " if v == 1 then ret = "" elseif v == #z.items then ret = " and " end text = text .. ret text = text .. (count > 1 and count or info.article).." "..(count > 1 and info.plural or info.name) doPlayerAddItem(cid, z.items[v].itemid, z.items[v].count) end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Parabens, voce alcancou o level "..level.." e obteve "..text..".") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_FIREWORK_YELLOW) setPlayerStorageValue(cid, z.storage, 1) end end end end return true end Em "data/creaturescripts/creaturescripts.xml" : <event type="advance" name="VocReward" event="script" value="vocreward.lua"/> Em "data/creaturescripts/scripts/login.lua" : registerCreatureEvent(cid, "VocReward") • Configurando • Créditos: ViitinG
    1 ponto
  11. CONTEÚDO REMOVIDO: AGORA VOCÊ VAI TER QUE TER CRIATIVIDADE OU SE PENDURAR-SE NAS COSTA DE ALGUÉM, MENOS NA MINHA - BOA SORTE! error 404 - I do not serve the forum I retired.
    1 ponto
  12. Eskylo

    [Arquivado]Reward Chest

    Interessante este problema, a minha sugestão seria fazer um scoring (pontuação) ponderado. Por exemplo: Causar 1 de dano 3 pontos Receber 1 de dano 2 pontos Curar 1 de HP 1 ponto João (Elite Knight) blokou recebeu 30000 de dano do boss e dos summons do boss. Causou 2000 de dano. Pontuação final de João 3x2000+30000x2=66000 Depois gerar uma tabela com os scores João 66000 Tião 33500 Maria 500 Maria não participou nem com 1%, então talvez ela não deva receber nada. Ou seja, seria interessante calcular as porcentagens de participação e definir uma participação mínima para receber algo. E por fim de acordo com o valor do loot, joão ficaria com 66% e Tião 34%..... Aproximadamente, as vezes pelo valor dos itens não é possível a divisão exata. Chutei qualquer valor acima, esse exemplo foi só pra exemplicar de fato. vlw flw
    1 ponto
  13. Administrador

    Druid Protection usando soul

    Druid Protection (Soul) O que o script faz: Um druid, qualquer level, está morrendo, mas sua mana acabou e suas potions se esgotaram. Ele pode usar a proteção dos antigos druidas para encher sua vida, lhe custando 100 de alma (soul.) Se outra vocação pedir a proteção dos druidas, a mesma será punida. Créditos: Daaniel (Luan me ajudou com 2 funções) Obs: É meu primeiro script, como estou aprendendo, gostaria da sugestão de alguém que sabe. Após o druid usar o comando !druidprotection: Caso o player não for druid, acontecerá: SCRIPT Em data/talkactions/scripts, copie um arquivo, renomeie para druidprotection e adicione o script (PasteBin): function onSay(cid, words, param, channel) if isDruid(cid) then if getPlayerSoul(cid) >= 100 then local maxh = getCreatureMaxHealth(cid) doCreatureAddHealth(cid, maxh) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_RED) doPlayerAddSoul(cid, -100) doPlayerSendTextMessage(cid, 22, 'You used your soul successfully!') else doPlayerSendCancel(cid, "You dont have 100 soul.") end else doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_POFF) doPlayerSendTextMessage(cid, 21, 'You are not druid, as punishment, the ancient gods will punish you removing you life.') doPlayerSendTextMessage(cid, 21, 'Dont try this again!') doCreatureAddHealth(cid, -5) end return true end Em data/talkactions/talkactions.xml adicione a tag: <talkaction words="!druidprotection" event="script" value="druidprotection.lua"/> Em forma de spell por: Emersonssss function onCastSpell(cid, var) if isDruid(cid) then if getPlayerSoul(cid) >= 100 then local maxh = getCreatureMaxHealth(cid) doCreatureAddHealth(cid, maxh) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_RED) doPlayerAddSoul(cid, -100) doPlayerSendTextMessage(cid, 22, 'You used your soul successfully!') else doPlayerSendCancel(cid, "You dont have 100 soul.") end else doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_POFF) doPlayerSendTextMessage(cid, 21, 'You are not druid, as punishment, the ancient gods will punish you removing you life.') doPlayerSendTextMessage(cid, 21, 'Dont try this again!') doCreatureAddHealth(cid, -5) end return true end
    1 ponto
  14. Eskylo

    Druid Protection usando soul

    Bem legal a ideia, seria aquela última chance para o druid que ficou na hunt até gastar a última pot e no caminho de saída apareceu alguns monstros. Uma dica pra deixar o código mais fácil para futuras edições é colocar as checagens antes, exemplo function onSay(cid, words, param, channel) if not isDruid(cid) then doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_POFF) doPlayerSendTextMessage(cid, 21, 'You are not druid, as punishment, the ancient gods will punish you removing you life.') doPlayerSendTextMessage(cid, 21, 'Dont try this again!') return doCreatureAddHealth(cid, -5) end if getPlayerSoul(cid) < 100 then return doPlayerSendCancel(cid, "You dont have 100 soul.") end local maxh = getCreatureMaxHealth(cid) doCreatureAddHealth(cid, maxh) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_RED) doPlayerAddSoul(cid, -100) doPlayerSendTextMessage(cid, 22, 'You used your soul successfully!') return true end Isso também evita que o código se pareça com esse function onSay(cid, words, param, channel) if if if if if else end else end else end else end else end end Para scripts pequenos não faz muita diferença, mas em scripts grandes isso ajuda bastante.
    1 ponto
  15. Benny

    Novo Chat & Wallpapers

    Se alguém quiser usar todos (: https://www.mediafire.com/?uvb10tclhvklvxi Tá aí o tema já configurado.
    1 ponto
  16. Benny

    Sign of the Week |03|

    EHAUHEUAHEUAE <3
    1 ponto
  17. Flinkton

    Sign of the Week |03|

    postando pq beeny implorou. Have a good night.
    1 ponto
  18. Jakson Souza

    [Life Thread] Mestre Laug

    interessante boa sorte! só não vou curtir porque não tem boh ainda :v :v
    1 ponto
  19. Para quem não sabe como funciona o script : O player precisa usar um passaporte para poder entrar passar por tal lugar.(pode ser usado de item donation para ter acesso a area vip ou coisa do tipo) Testado em: TFS 0.3.6 e 0.4 Dev. • Adicionando o script • Em "data/actions/scripts/passaporte.lua" : function onUse(cid, item, frompos, item2, topos) if item.itemid == 1954 then local playerpos = getCreaturePosition(cid) doRemoveItem(item.uid,1) setPlayerStorageValue(cid,19200,1) doSendMagicEffect(playerpos, 12) doCreatureSay(cid, "Parabens!, voce verificou seu passaporte, agora voce pode entrar no barco!.", TALKTYPE_ORANGE_1) end end Em "data/actions/actions.xml" : <action itemid="1954" script="passaporte.lua" /> Agora em "data/movements/scripts/passagem.lua" : function onStepIn(cid, item, position, fromPosition) if isPlayer(cid) == true then if getPlayerStorageValue(cid, 19200) == -1 then doTeleportThing(cid, fromPosition, true) doPlayerSendTextMessage(cid,22, "Voce precisa do passaporte para entrar no barco!.") doSendMagicEffect(getPlayerPosition(cid), 2) else doPlayerSendTextMessage(cid,22, 'Seu passaporte foi verificado, voce pode entrar no barco!.') doSendMagicEffect(getPlayerPosition(cid), 22) end end return true end Em "data/movements/movements.xml" : <movevent type="StepIn" tileitem="0" itemid="9120" event="script" value="passagem.lua"/> • Configurando • Créditos: ViitiinG
    1 ponto
  20. Gutorb

    Removendo Bug do Rock Soil

    Boa, Daniel. Realmente esse bug é muito chato e testa nossa paciência. Um abraço.
    1 ponto
  21. L3K0T

    WebSite OtPokemon 4.0

    senha é otpokemon!
    1 ponto
  22. Benny

    [X] Fontes #1

    Obrigado pelo comentário ~ bola Fico feliz que tenha sido útil para alguém.
    1 ponto
  23. FlamesAdmin

    Pokebar para PDA

    Nada ainda;// Meu server é sem lvl
    1 ponto
  24. FlamesAdmin

    Pokebar para PDA

    Tem como tu explicar direitinho onde coloca esses códigos ?Só os 2 primeiros.
    1 ponto
  25. Ok... então refaça seu pedido novamente e especifique TODO o evento, começando pela torre, horario de funcionamento do sistema, se o monstro vai morrer por quem da mais dmg ou pelo last hit... ou até msm da pra fazer somando qual guild tirou mais dano do boss, etc... TUDO! pense e dps peça o seu sistema... pode ser?
    1 ponto
  26. Foxkbt

    [Arquivado]News

    News Esse tópico é reservado para as notícias e novidades do Guns Warriors. Aqui você se manterá informado sobre os lançamentos e atualizações, eventos, promoções e etc. Novidades serão editadas abaixo: ATUALIZAÇÃO 20/05/2015 (22/05/2015) A atualização foi adiada para poder implementar o novo sistema de classes. Teremos algumas modificações no jogo, uma delas será o novo icone de Menu, que dará acesso a 3 ábas diferentes (comandos / classes / Mochila). Essa atualização irá acontecer por 2 motivos: 1º para que os comandos não atrapalhem as conversas do Chat. 2º Para criar espaço para nossa próxima atualização de Classes. =D foto do novo menu e todas as abas separadas SISTEMA DE CLASSES (22/05/2015) O novo sistema de classes ja esta sendo feito e sua mecanica toda pronta, faltando somente algumas skills. No jogo você poderá comprar as classes por uma quantia consideravel do dinheiro do jogo, cada classe terá seu level, suas skills e tipos de armas que poderão equipar. Você podera escolher entre as classes que tem antes de começar a partida e pegar level com cada classe individualmente. foto da aba classes com todas as classes compradas Serão adicionadas 4 classes (Warrior, Assassin, Granadier, Sniper), cada classe poderá pegar até level 30 e cada level dará 1 ponto. Com a quantidade certa de pontos e dinheiro do jogo você poderá comprar tecnicas para aquela classe. foto da aba de skills da classe Assassin (para acessa-la basta clicar com o botão direito do mouse no icone da classe) foto da descrição da classe assassin Mais informações essa sexta. .+*+;+*Evento Obrigado XTibia!*+;+*+. Essa sexta também iremos começar um novo evento para comemorar o apoio do Xtibia, nesse evento você irá ganhar 5 XCards todo dia quando entrar no jogo. Usando um XCard fará que a proxima partida que seu personagem participar dê a ele pontos para adquirir a Box XTibia. A Box XTibia da prêmios tão bons quanto a Box Fidelidade e também tem a chance de vir as XGuns por 2 dias, 1 semana ou ETERNA! foto do meu personagem GM mais o XCard, Box XTibia e as XGuns
    1 ponto
  27. FlamesAdmin

    Pokebar para PDA

    Nem tudo que ta no some functions dele é igual dos outros. E ele não explica como e aonde colocar a parte que ele editou no some functions.
    1 ponto
  28. FlamesAdmin

    Pokebar para PDA

    O cara cria o tópico, mais nem da suporte. É foda ...
    1 ponto
  29. Furabio

    Ninja Vocation Spells

    AREA1 = { {0, 0, 0}, {0, 3, 0}, {0, 0, 0} } local function sendHealingEffect(cid, position, loopCount) local player = Player(cid) if not player then return end position:sendDistanceEffect(player:getPosition(), CONST_ANI_SMALLHOLY) player:addHealth(math.max(100, 150)) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) if loopCount == 0 then player:getPosition():sendMagicEffect(CONST_ME_HOLYAREA) end end function onCastSpell(creature, var) local playerPos = creature:getPosition() local loopCount = 12 creature:say('Heal me my brothers!', TALKTYPE_MONSTER_SAY) for i = 1, loopCount do local position = Position(playerPos.x + math.random(-4, 3), playerPos.y + math.random(-3, 2), playerPos.z) addEvent(doAreaCombatHealth, i * 75, creature:getId(), COMBAT_PHYSICALDAMAGE, position, createCombatArea(AREA1), 0, 0, CONST_ME_ASSASSIN) addEvent(sendHealingEffect, i * 75, creature:getId(), position, loopCount - i) end return false end local function targetEffect(cid) local player = Player(cid) if not player then return end local effect = CONST_ANI_REDSTAR local orig = player:getPosition() local d1, d2 = {z = orig.z}, {z = orig.z} d1.x = orig.x - 5 d2.x = orig.x + 5 for i = -2, 2 do d1.y = orig.y + i d2.y = d1.y orig:sendDistanceEffect(d1, effect) orig:sendDistanceEffect(d2, effect) end d1.y = orig.y - 3 d2.y = orig.y + 3 for i = -4, 4 do d1.x = orig.x + i d2.x = d1.x orig:sendDistanceEffect(d1, effect) orig:sendDistanceEffect(d2, effect) end end local function backOldPosition(cid, oldPosition) local player = Player(cid) if not player then return end player:teleportTo(oldPosition) player:setGhostMode(false) end local function jumpEffect(cid, target) local player = Player(cid) if not player then return end local target = Creature(target) if target then player:getPosition():sendDistanceEffect(target:getPosition(), CONST_ANI_EXPLOSION) end end local function jumpOnTarget(cid, target, targetCount, oldPosition) local player = Player(cid) if not player then return end local target = Creature(target) if target then addEvent(targetEffect, 100, cid) player:teleportTo(target:getPosition()) player:setGhostMode(true) doTargetCombatHealth(cid, target, COMBAT_PHYSICALDAMAGE, -1, -100, CONST_ME_ASSASSIN) if targetCount == 0 then addEvent(backOldPosition, 400, cid, oldPosition) end end end local function extractRandomValuesFromTable(tbl) --By Printer(This will make sure not to select a value twice from the table) if #tbl == 0 then return false end return table.remove(tbl, math.random(#tbl)) end function onCastSpell(creature, var) local targets = {} local playerPos = creature:getPosition() local spectators = Game.getSpectators(playerPos, false, false, 0, 10, 0, 10) for i = 1, #spectators do local specs = spectators[i] if specs ~= creature and not specs:isNpc() then targets[#targets+1] = specs end end if #targets == 0 then creature:sendCancelMessage('There is no targets in sight.') playerPos:sendMagicEffect(CONST_ME_POFF) return false end local targetCount = #targets for i = 1, #targets do local randTarget = extractRandomValuesFromTable(targets) addEvent(jumpOnTarget, i * 400, creature:getId(), randTarget:getId(), targetCount - i, playerPos) addEvent(jumpEffect, i * 300, creature:getId(), randTarget:getId()) end return false end local function sendDistanceEffectDelay(cid, fromPos, toPos, effect) local player = Player(cid) if not player then return end fromPos:sendDistanceEffect(toPos, effect) end local function ninjaJumpDash(cid, target, oldPos, lastJump, back) local player = Player(cid) if not player then return end local target = Creature(target) if not target then player:setGhostMode(false) return end if lastJump then player:setGhostMode(false) end if back then player:teleportTo(oldPos) else player:teleportTo(target:getPosition()) end doTargetCombatHealth(cid, target, COMBAT_PHYSICALDAMAGE, -1, -100, CONST_ME_THUNDER) end function onCastSpell(creature, var) local cid = creature:getId() local playerPos = creature:getPosition() creature:setGhostMode(true) addEvent(ninjaJumpDash, 0, cid, target:getId(), playerPos, false, false) addEvent(sendDistanceEffectDelay, 100, cid, playerPos, target:getPosition(), CONST_ANI_ENERGY) addEvent(sendDistanceEffectDelay, 300, cid, target:getPosition(), playerPos, CONST_ANI_ENERGY) addEvent(ninjaJumpDash, 400, cid, target:getId(), playerPos, false, true) addEvent(ninjaJumpDash, 600, cid, target:getId(), playerPos, false, false) addEvent(sendDistanceEffectDelay, 700, cid, playerPos, target:getPosition(), CONST_ANI_ENERGY) addEvent(sendDistanceEffectDelay, 1000, cid, target:getPosition(), playerPos, CONST_ANI_ENERGY) addEvent(ninjaJumpDash, 1100, cid, target:getId(), playerPos, false, true) addEvent(ninjaJumpDash, 1300, cid, target:getId(), playerPos, false, false) addEvent(sendDistanceEffectDelay, 1400, cid, playerPos, target:getPosition(), CONST_ANI_ENERGY) addEvent(sendDistanceEffectDelay, 1700, cid, target:getPosition(), playerPos, CONST_ANI_ENERGY) addEvent(ninjaJumpDash, 1800, cid, target:getId(), playerPos, true, true) return false end function isWalkable(cid, pos) local tile = Tile(pos) if not tile then return false end if tile:queryAdd(cid) == 1 and not tile:hasFlag(TILESTATE_PROTECTIONZONE) then return true end return false end local function jumpBehindTarget(cid, target) local player = Player(cid) local target = Creature(target) local targetPos = target:getPosition() local targetPositions = { north = Position(targetPos.x, targetPos.y-1, targetPos.z), east = Position(targetPos.x+1, targetPos.y, targetPos.z), west = Position(targetPos.x-1, targetPos.y, targetPos.z), south = Position(targetPos.x, targetPos.y+1, targetPos.z) } local targetDir = target:getDirection() if targetDir == NORTH then dir = targetPositions.south elseif targetDir == EAST then dir = targetPositions.west elseif targetDir == WEST then dir = targetPositions.east elseif targetDir == SOUTH then dir = targetPositions.north end return dir end local function oldPos(cid, oldPos) local player = Player(cid) if not player then return end player:teleportTo(oldPos) end local function checkHasTarget(cid, count, oldPos) local player = Player(cid) if not player then return end if count < 1 then player:setGhostMode(false) return end local target = player:getTarget() if target then local behindTarget = jumpBehindTarget(cid, target:getId()) if isWalkable(cid, behindTarget) then player:teleportTo(behindTarget) else player:teleportTo(target:getPosition()) addEvent(backOldPos, 100, cid, oldPos) end player:setDirection(target:getDirection()) player:setGhostMode(false) doTargetCombatHealth(cid, target, COMBAT_PHYSICALDAMAGE, -20, -100, CONST_ME_FIREATTACK) return true end addEvent(checkHasTarget, 1 * 100, cid, count - 1) end function onCastSpell(creature, var) local playerPos = creature:getPosition() creature:setGhostMode(true) playerPos:sendMagicEffect(CONST_ME_POFF) addEvent(checkHasTarget, 1 * 250, creature:getId(), 50, playerPos) return false end Créditos : Printer
    1 ponto
  30. Death System Introdução: Vamos pessoal participar da oms, esse sistema faz com que quando um player mate o outro apareça um ceifeiro vindo pega a alma dele. Vamos la começar a add a script Em creaturescript/script, crie DeathSystem.lua -- Do not remove the credits -- -- [CREATURESCRIPT] Death System -- -- developed by Rigby to help DuuhCarvalho -- -- Especially for the Xtibia.com -- function onDeath(cid, corpse, killer) local pos = getCreaturePosition(cid) local monster = 'ceifeiro' local timer = 3 -- quanto tempo vai demorar pra sumir function removeMonster() for _, pid in ipairs(getCreatureSummons(killer[1])) do doRemoveCreature(pid) end return true end if isPlayer(cid) and isPlayer(killer[1]) then doConvinceCreature(killer[1], doCreateMonster(monster, pos)) doSendAnimatedText(getThingPos(cid), "DEATH!", 125) doSendMagicEffect(getThingPos(cid), 65) addEvent(removeMonster, timer*1000) end return true end Creaturescript.xml tag <event type="death" name="DeathSystem" event="script" value="DeathSystem.lua"/> Login.lua antes do ultimo return true registerCreatureEvent(cid, "DeathSystem") Agora vamos criar o ceifeiro em monster crie um ceifeiro.xml <?xml version="1.0" encoding="UTF-8"?> <monster name="Ceifeiro" nameDescription="a ceifeiro" race="blood" experience="0" speed="0" manacost="220"> <health now="9999999999999" max="9999999999999"/> <look type="300" corpse="5971"/> <targetchange interval="2000" chance="0"/> <strategy attack="100" defense="0"/> <flags> <flag skull="5"/> <flag summonable="1"/> <flag attackable="1"/> <flag hostile="0"/> <flag illusionable="1"/> <flag convinceable="1"/> <flag pushable="1"/> <flag canpushitems="0"/> <flag canpushcreatures="0"/> <flag targetdistance="1"/> <flag staticattack="90"/> <flag runonhealth="8"/> </flags> <defenses armor="1" defense="2"/> <immunities> <immunity physical="0"/> <immunity energy="0"/> <immunity fire="0"/> <immunity poison="0"/> <immunity lifedrain="0"/> <immunity paralyze="0"/> <immunity outfit="0"/> <immunity drunk="0"/> <immunity invisible="0"/> </immunities> <voices interval="2000" chance="100"> <voice sentence="HAHAHAHA"/> </voices> </monster> em monsters.xml adicione essa tag antes do ultimo </monsters> <monster name="Ceifeiro" file="ceifeiro.xml"/> Espero que gostem.
    1 ponto
  31. Reverts Tava jogando um jogo de RPG quando vi uma magia que transformar o life em focus (mana) e so pode usa durante um tempo. essa magia pega metade de seu life e transforma em mana. Tem que usa com sabedoria xD Obs: procurei algo parecido com o meu mas não achei então esse e totalmente próprio. vamos la.xD Em data/spells/script/support copie e cole algum arquivo.lua e renomear para Reverts.lua e adiciona isso dentro -- Do not remove the credits -- -- [SPELL] Reverts -- -- Developed by Rigby- - -- Especially for the Xtibia.com -- local timer = 20 -- quantos segundos em segundo vai pode usa a magia local divisao = 2 -- quanto de life vai retirar, 2 metade, 3 um terço. local effect = 30 -- efeito da magia local storage = 10001 -- storage não precisar mecher function onCastSpell(cid, var) if getPlayerStorageValue(cid, storage) < os.time () then doSendMagicEffect(getThingPos(cid), effect) doCreatureAddMana(cid, (getCreatureHealth(cid) / divisao)) doSendAnimatedText(getThingPos(cid), "+"..(getCreatureHealth(cid) / divisao).."", 35) doCreatureAddHealth(cid, -(getCreatureHealth(cid) / divisao)) setPlayerStorageValue(cid, storage, os.time () + timer) else doPlayerSendCancel(cid, "Voce so pode usar esse magia daqui a "..getPlayerStorageValue(cid, storage) - os.time ().." segundos.") end return true end em data/spells/spells.xml adicione essa tag. <instant name="Reverts" words="reverts" lvl="1" mana="0" aggressive="0" selftarget="1" exhaustion="1" needlearn="0" event="script" value="support/Reverts.lua"> <vocation id="1"/> <vocation id="2"/> <vocation id="3"/> <vocation id="4"/> <vocation id="5"/> <vocation id="6"/> <vocation id="7"/> <vocation id="8"/> </instant> Espero que goste da magia. Podem da opiniões quem sabe sai a versão 2. xD
    1 ponto
  32. MatheusGlad

    Sistema De Novos Items

    Bem, como todos sabem, não da pra criar 2 items com o mesmo sprite, somente editando a source e o dat etc... Usando esse sistema que eu fiz voce nao precisara editar nada somente adicionar os scripts. Primeiramente vá na pasta lib e crie um arquivo ItemsEditedLib.lua e adicione isso dentro: function doPlayerAddEditedItem(cid, itemid) local newxml = io.open("data/items/newitems.xml", "r") local configs = {} for i in newxml:read("*a"):gmatch("<item (.-)</item>") do local itemid = tonumber(i:match('id="(.-)"')) local itemconfig = { ["spriteid"] = tonumber(i:match('spriteid.-=.-"(.-)"')), ["article"] = i:match('article.-=.-"(.-)"'), ["name"] = i:match('name.-=.-"(.-)"'), ["description"] = i:match('key.-=.-"description".-value.-=.-"(.-)"'), ["defense"] = tonumber(i:match('key.-=.-"defense".-value.-=.-"(.-)"')), ["attack"] = tonumber(i:match('key.-=.-"attack".-value.-=.-"(.-)"')), ["extradefense"] = tonumber(i:match('key.-=.-"extradef".-value.-=.-"(.-)"')), ["armor"] = tonumber(i:match('key.-=.-"armor".-value.-=.-"(.-)"')), ["extraattack"] = tonumber(i:match('key.-=.-"extraatk".-value.-=.-"(.-)"')), } configs[itemid] = itemconfig end if configs[itemid] then local item = doPlayerAddItem(cid, configs[itemid].spriteid) for i,x in pairs(configs[itemid]) do doItemSetAttribute(item, i, x) end end end Depois vá na pasta items e adicione um arquivo newitems.XML (XML NAO LUA!!!) e adicione isso dentro: <?xml version="1.0" encoding="UTF-8"?> <items> <item id="100" spriteid="2400" article="a" name="magic edited sword"> <attribute key="description" value="Arma editada." /> <attribute key="defense" value="45" /> <attribute key="attack" value="100" /> <attribute key="extradef" value="10" /> <attribute key="extraatk" value="10" /> </item> <item id="101" spriteid="2472" article="a" name="master plate armor"> <attribute key="description" value="Armor editada." /> <attribute key="armor" value="19" /> </item> </items> Bem como voces podem ver, o xml guarda os novos items, o xml funciona praticamente como o items.xml so que tem um novo campo o "spriteid", nele fica o itemid original. Eu sei que ainda faltam atributos, com o tempo e com os pedidos eu vou adicionando. (É importante que voces peçam por novos atributos, porque os outros são mais complicados e eu nao vou faze-los para ninguem usar) Atributos: "description" "defense" "attack" "extradefense" "armor" "extraattack" Para adicionar os novos itemids aos players use doPlayerAddEditedItem(cid, ITEMID) em vez de doPlayerAddItem...
    1 ponto
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...