Tutoriais sobre Scripting
Aprenda com os mestres da comunidade a desenvolver seus scripts, sistemas e domine a linguagem .lua!
- Esta área é para publicação de Tutoriais sobre criação de códigos Otserv.
- Ao ler um tutorial, dê reputação ao membro que o publicou e comente no tópico. Este pequeno incentivo faz com que membros continuem trazendo tutoriais e outros conteúdos ao fórum.
- Se o conteúdo não for seu, adicione Créditos!
- Por motivos de segurança é necessário que um membro da equipe Aprove o seu Tópico, dessa forma mantemos o fórum organizado e livre de conteúdos maliciosos, obrigado pela compreensão!
Procure pelo tipo de código:
280 tópicos neste fórum
-
removido
-
- 0 respostas
- 1.2k visualizações
- 1 follower
-
-
Se você já se perguntou: Por que na coluna vip_time aparece um número absurdo, se eu adicionei apenas alguns dias vip? Aqui encontrará a resposta! Os players do seu server que tem conta VIP terão em sua vip_time um número parecido com este: 1344747131 Mas, o que este número quer dizer? Este número é o tempo em segundos medido desde a Era Unix, ou seja, desde 1 de Janeiro de 1970 às 00:00:00. Logo... Digamos que no dia 1 de janeiro de 2012 às 0h, eu tenha adicionado 1 dia vip em determinada conta do meu server. O número que aparecerá na vip_time será: 1324512000 Que é, aproximadamente, o resultado de: 42 anos * 365 dias * 24 horas * 60 …
-
- 0 respostas
- 1.9k visualizações
-
-
Olá Galera, hoje vou postar um tutorial que ensina você a deixar seu código mais bonito, legível e organizado. Vamos lá. Em primeiro lugar vamos aprender oque é indentação ou identação. Exemplo de um código com indentação: function doPlayerCompleteQuest(uid, quest) doPlayerAddItem(uid, quest[1], quest[2]) setPlayerStorageValue(uid, quest[3], 1) doTeleportThing(uid, getTownPosition(getPlayerTown(uid))) doPlayerSendTextMessage(uid, 27, "Você completou a quest ".. quest[4] ..".") if (getPlayerStorageValue(uid, quest[5]) > 0) then doPlayerSendTextMessage(uid, 27, "E recebeu um bônus por ter completado outra quest.") …
- 5 respostas
- 2.4k visualizações
-
Salve, aqui vou estar postando as tags para funcionar os novos items 8.6 Todos os servidor 8.6 que baichei nenhum funcionava, tudo bugado. Resolvi ficar 1h configurando cada item pra deixar 100% ao global. Na pasta movements.xml você colca isso em algum lugar. <!-- New Items 8.6 Edited by SkyDangerous --> <movevent type="DeEquip" itemid="9000" slot="feet" event="function" value="onDeEquipItem"/> <movevent type="Equip" itemid="11234" slot="feet" event="function" value="onEquipItem"> <vocation name="Knight"/> <vocation name="Elite Knight" showInDescription="0"/> <vocation name="Paladin"/> &…
-
- 4 respostas
- 1.7k visualizações
-
-
boa noite como se ja viram meu nome é eduardo ha muitas pessoas que mechem a xp no config.lua e a xp nao muda eu queria ajudar a mecher nisso abra data\XML e logo em seguida abra Stages.xml <?xml version="1.0" encoding="UTF-8"?> <stages> <world id="0" multiplier="1"> <stage minlevel="1" maxlevel="300" multiplier="1000"/> <stage minlevel="301" maxlevel="500" multiplier="900"/> <stage minlevel="501" maxlevel="750" multiplier="800"/> <stage minlevel="851" maxlevel="900" multiplier="700"/> <stage minlevel="901" maxlevel="1000" multiplier="600"…
-
- 2 respostas
- 725 visualizações
-
-
1. Abra a pasta "data > raids". 2. Como vocês estão vendo, tem várias raids, vamo copiar uma, para fazer a nova. 3. No meu caso, vou fazer uma invasão de "Yeti" , então vamos lá, vo criar um arquivo chamado "YetiRaid". 4. Dentro, vai ter isso . (é GS, porque eu fiz uma cópia dela). Explicando ... Amarelo : <announce delay="0" type="event" message="The mating season of the giant spiders is at hand. Leave the Monty Fields as fast as you can." /> announce delay, é o tempo que a mensagem vai sair. (se não me engano é a cada 100 mil é 10seg). type="event" - Muda nada . message = "The mating season of the giant sp…
-
- 0 respostas
- 1.7k visualizações
-
-
LÓGICA, ALGORITMO E OPERADORES Na aula passada, você aprendeu qual a linguagem usada nos servidores, onde surgiu a programação Lua, o que é scripting e como se tornar um scripter. Nessa segunda aula, você irá aprenderá a pensar como um programador, irá aprender a transformar seu raciocínio lógico em uma sequência de instruções e finalmente, com a apresentação do que são operadores, você irá montar um script básico, mas eficaz. Lógica e Algoritmo Toda linguagem de programação, inclusive a Lua, segue uma certa lógica para funcionar corretamente. A isso, damos o nome de lógica de programação. Para fazer um script em Lua não é difer…
-
- 7 respostas
- 2.2k visualizações
-
-
Criando Quest Muitas pessoas ainda nao sabem ou se confundem ao criar um bau de quest, esse tutorial aqui vai ensinar direitinho como criar um. Este tutorial é dividido em 4 passos. Criando Quest -Passo 1 - Script.lua crie um arquivo.lua novo, ele deve ficar localizado na pasta data/actions/scripts e escreva isto nele: function onUse(cid, item, frompos, item2, topos) if item.uid == X then queststatus = getPlayerStorageValue(cid,Y) if queststatus == -1 or queststatus == 0 then doPlayerSendTextMessage(cid,22,"Você achou um(a) Z") item_uid = doPlayerAddItem(cid,ID,Q) setPlayerStorageValue(cid,Y,1) else doPlayerSendTextMessage(cid,22,"O…
-
- 0 respostas
- 1.9k visualizações
-
-
Esse mini-tutorial irei ensinar essas funções que lê a entrada do usuário e consequentemente mostrará na tela o que escrevemos. é muito simples, irei ensinar o básico. Nós queremos também que o usuário digite o seu valor, e que não apenas demos um valor e assim não dando opção para o usuário, fazendo com que ele tenha que editar sempre o código fonte. Por isso, estarei dando um pequeno exemplo das funções io.write e io.read io.write("Digite seu nome:") nome = io.read() print ("O seu nome é:", nome) Como um breve resumo das função seria: io.write = Essa função faz com que possamos escrever io.read = Essa função lê o que escrevemos. Con…
-
- 8 respostas
- 1k visualizações
-
-
Manipulações de Strings. Strings devem estar entre aspas (simpes ou duplas). local texto1 = 'Ola mundo.' local texto2 = "TibiaKing" Funções Báscias string.byte() Retorna o valor da tabela ASCII s = string.byte('A') print(s) string.char() Retorna um caracter a partir do valor numérico da tabela ASCII. s = string.char(66) print(s) string.len() Retorna o tamanho da string. s = 'Programar em LUA é muito fácil.' a = string.len(s) print(a) string.lower() Retorna um string com os caracteres maiúsculos convertidos para minúsculo s = 'Programar em LUA é muito fácil.' a = string.lower(s…
-
- 1 resposta
- 1.4k visualizações
-
-
Kepler: Kepler é uma comunidade de desenvolvedores de software livre usando Lua como uma opção viável de desenvolvimento de aplicações web. Kepler foi originalmente criado pela Fábrica Digital e Puc-Rio em 2004 mas já recebeu muitas contribuições desde então. Site: http://www.keplerproject.org/ Ekolu - Embedded Lua: Framework de desenvolvimento Lua para o mundo embedded. O projeto oferece Lua para diversas plataformas e arquiteturas diferentes de microcontroladores. eLua roda em "bare metal", não dependendo de nenhum sistema operacional "por baixo" para ser utilizada. Site: OFF-line GINGA - A TV digital brasileira Lua: Framework para desen…
-
- 0 respostas
- 2.1k visualizações
-
-
Strings strings são palavras ou letras geralmente são usadas entre "" vamos aos strings: Esses são os strings mais usados Math's esses são os math's mais conhecidos
-
- 4 respostas
- 1.4k visualizações
-
-
Olá galera vou deichar Um Joiner , para que vocês usem com sabedoria Lembrando ele não precisa de crypter não ToTal FUD esse só não vou gravar uma video porque estou compproblemas no cantasia mais embreve amostro. RAT -> http://up21.mais.me/QJ6MV4L2HRFCNHT/Mais.me_RAT.jar Joiner -> http://up22.mais.me/XFV3LQDM4WXXEH3/Mais.me_Joiner.jar Creditos: Monstervip BY MONARIBK <<< CONTEUDO LEMBRANDO E VIP E PRIVADO TUDO OQUE APOSTO KKKKK SE VOCEIS ACHA OUTRO FORUM COM O MSM POST PORFAVOR ME AVISE KKK
-
- 0 respostas
- 812 visualizações
-
-
Escopo Aula 6 Vimos na aula anterior sobre variáveis, e vimos também, bem superficialmente, como declarar variáveis como locais. Você pode se perguntar: "Qual a utilidade de uma variável local?", "O que ela tem de diferente de uma variável global?" ou "Se elas são tão importantes, por que quase ninguém usa?". Vamos por passos. Imagine a seguinte situação: "Você tem uma variável chamada var, e ela vale 1, mas em certo ponto do script você quer que ela receba o valor 2, execute alguma coisa (Como um print) e, depois que executar, ela retorne ao valor anterior (1).". Um dos modos de fazer isto é usando uma outra variável temporária para armazenar o valor antigo…
-
- 9 respostas
- 1.1k visualizações
-
-
É chato entrar num ot e ver a quest: Mata o dragon e abra o baú. então resolvi fazer um tutorial para vocês. lembrando que: Você não deve fazer uma quest assim exatamente como a minha, com o baú do lado da alavanca e etc..., fiz o mapa em menos de um minuto. Isso serve como exemplo de actions, e realmente, da para fazer muita coisa com esse exemplo. Resumindo: Você puxa uma alavanca, então é atribuido um storage ID à você, quando vc pisa no tile especial, ele checa se vc ja puxou a alavanca, se não, ele move você 1 sqm para o lado oposto. Vou por um esquema para vocês verem: Fiz o script da alavanca o mais facil possivel de configurar: …
-
- 4 respostas
- 1.1k visualizações
-
-
O que são tabelas? R: São estruturas multidimensionais que permitem o armazenamento de vários dados. Como declarar uma tabela? R : local tabela = {} Como faz para adicionar valores na tabela? R: Para adicionar um valor na tabela, devemos inserir nossos dados entre os colchetes{} local tabela = {"skydangerous",15} Como inserir um dado na tabela? R: Para inserir um dado na tabela e fácil, cada dado adiciona tem uma posição. local tabela = {} tabela[1] = "skydangerous" tabela[2] = 15 local posicao1,posicao2 = tabela[1],tabela[2] print(posicao1,posicao2) Print: skydangerous 15 Podemos perceber que adicionamos dois conteúdos em…
-
- 2 respostas
- 3.5k visualizações
-
-
Olá Galera.. Muita Gente n sabe Coloca Para o slingshot solta Pedra SEM PRECISA ter pedras SO Bota ele na Mão Ai Ele Solta as pedras Primeiro Vc Abra o Items.xml (data/items) e Procure La Slingshot E Substitua ele Por isto Pronto Feche o Items.xml Salve.. e seu Slingshot Estará Pronto Espero que Gostem PS: Eu Coloquei Pra ele nao Ser DUAS MÃOS
-
- 2 respostas
- 2k visualizações
-
-
Olá Galera Hoje Irei Da esse Tutor De quest Então Vamos Lá Vá em data/actions/script. Renomei um arquivo.lua que n estar sendo usado apage tudo que ta dentro.. e adicione isto function onUse(cid, item, fromPosition, itemEx, toPosition) a = 9930 id = 2342 if getPlayerStorageValue(cid, a) < 1 then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Voçe Pegou (a) "..getItemNameById(id)..".") doPlayerAddItem(cid, id, 1) doPlayerSetStorageValue(cid, a, 1) else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Voçe Ja Pegou Este Item") end return TRUE end Ond tem (a) eh action do seu ot que vc vai bota.. NAO BOTE UMA ACTION JA USA…
-
- 2 respostas
- 1.2k visualizações
-
-
O Comando for Aula 10 Você nunca viu o comando for? Ou já abriu um Script e não entendeu nada por causa dele? Eis aqui uma explicação de como funciona o comando e alguns exemplos de utilização, assim como alguns exercícios. Antes de mais nada, o que faz o for? R: O for causa um "loop", mas não é como o while e o repeat. Por que? Porque ele atribui à uma variavel todos os valores entre o valor inicial e o valor final. Editado: O For não é um comando Condicional! Estrutura do For: for variavel = valor inicial, valor final[, incremento] do bloco end não entendeu? Então vamos à breves explicações, começando com um exemplo abstrat…
-
- 2 respostas
- 2.4k visualizações
-
-
Tabelas Aula 9 #Introdução Olá, nessa aula vamos conhecer um elemento que facilita muito a vida de programadores, principalmente quando se trata de um código com muitas variaveis e operações, as tabelas! Imagine uma tabela como se fosse uma estante com várias gavetas, quantas você desejar, dentro de cada gaveta tem um objeto, temos a gaveta um, a gaveta dois, e assim em diante ... podemos guardar objetos dentro de cada gaveta, tirar objetos delas e também saber o que tem dentro de cada uma, nessa analogia uma tabela é basicamente como se fosse essa estante. Uma tabela é uma variável estruturada que pode conter vários valores dispostos "dentro" de s…
-
- 2 respostas
- 771 visualizações
-
-
While & repeat Aula 8 Primeiramente desculpe a demora por essa aula, ficou meio aquela de; ah faz você, não faz você, anem faz você; Mais em fim estamos de volta com uma coisa indispensável em scripting que são os loops. Antes de tudo devo avisa que loops são perigosos, você pode travar seu servidor inteiro usando errado um loop. Os loops são usados para inicialmente quando temos varias funções juntas iguais, por exemplo, fazendo um jogador falar oi 10 vezes. Sem os loops você faria assim: doPlayerSay(cid,'oi',1) doPlayerSay(cid,'oi',1) doPlayerSay(cid,'oi',1) doPlayerSay(cid,'oi',1) doPlayerSay(cid,'oi',1) doPlayerSay(cid,'oi',1) doPlay…
-
- 0 respostas
- 1.8k visualizações
-
-
Estruturas de controle Aula 7 Bem-vindos à Aula 7 (Da sorte). Hoje iremos aprender mais uma coisa importantíssima na área de scripting e programação em geral: as Estruturas de Controle. Bem, Estruturas de Controle definem o andamento do script. Para entendermos melhor, vamos ver o algoritmo de uma Estrutura de Controle simples: Veja, agora um em lua: if name == 'Vittu' then print('Oi Vittu') end Compare as cores do script em Lua com o escrito em português. Nossa Estrutura de Controle se chama condição, iniciada por if (se). Para entendermos basta traduzir. Veja como se usa o if: if true then -- código end …
-
- 0 respostas
- 722 visualizações
-
-
Variaveis Aula 5 Olá, bem-vindos a nossa 5ª aula de scripting. Nesta aula iremos tratar de uma coisa indispensável em todos os scripts: Variáveis. As variáveis podem ser entendidas como uma "caixa" que armazena um valor na memória RAM, ou um substituto de um valor, uma igualdade de um valor, como se ela fosse o valor em si. Toda variável deve ter um nome definido por você, mas existem regras para definí-los: quando for escolher o nome da variável, não use números no começo e nunca use caracteres especiais, como acentos, sifrões ou asteríscos. Use apenas a-z, A-Z e pode-se usar números também, desde que não estejam no começo da variável. Existem …
-
- 0 respostas
- 904 visualizações
-
-
Introdução Aula 1 O que é scripting? Do modo mais simples possível: scripting é o ato de programar. O nome scripting vem do nome "script". O que é um script? De um modo geral, um script é um bloco de Código escrito em uma linguagem de programação interpretada, ou seja, ele precisa que alguma coisa leia ele e possa "traduzir" seu conteúdo. Lembre-se de que "script" não é um termo específico de Open Tibia Servers. O que é uma linguagem de programação interpretada? Os brasileiros falam português, ingleses falam inglês e chineses falam mandarim, e com isso o mundo é composto por várias línguas. No mundo da programação não é diferente. Existem v…
-
- 1 resposta
- 5.1k visualizações
-
-
Ola Galera do tibia king É muito monótono e chato que em todos os Ots tenham os mesmos npcs com os mesmos nomes e os mesmos outfits. Bem, a imagem a seguir nada mais é do que os códigos das cores, exemplo: 100 = Verde. Aqui está a imagem: Aí é só mudar a cor do outfit assim: Esse é um script de npc que vende aol: <?xml version="1.0"?> <npc name="Athan" script="data/npc/scripts/aol.lua" access="3" lookdir="3"> <health now="1" max="1"/> <look type="130" head="100" body="100" legs="100" feet="100"/> </npc> Legenda: Vermelho: Nome do npc Verde: look type do npc (Aparência, logo irei falar sobre isso)…
-
- 2 respostas
- 2.4k visualizações
-
-
como esses programa fuciona? simples vou ensinar aqui com fotos e tudo mais Scripter-maker USANDO MONSTER MAKER E SPELL MAKER Bem-Vindo! Criar Monstro Criar Spell Tray Sobre Reportar Bug Sair Salvar Dano: Efeito: Efeito de Distância: Usar Area Nome da Magia: Palavras Magicas: Target Usa Direcao E Agrecssiva Da Exhaused Aprender Gerar Numero positivo cura e negativo ranca vida. Nome: Descricao: Raca: Experiencia: Velocidade: ManaCost: Vida: Tipo: Cabeca: Corpo: Pernas: Pes: Corpo (morto): Addons: Fisico Energia Fogo Veneno Life Drain Paralizia Outfit Bebado Invisive…
-
- 2 respostas
- 2k visualizações
-
-
•Como assim Efeito Bônus? Simplesmente usando o Itens.xml, você pode fazer de itens comuns e sem utilidade, itens bons. Veja um exemplo abaixo: esse exemplo eu peguei uma magma boots: E adicionei um efeito "manashield" ou seja, um item muito util para as vocações pois adiciona automaticamente "utamo vita" au seu character. Ela é infinita, caso você queira adicionar um tempo, adicione a seguinte tag no script: Explicando melhor: ID do item (ID da boot) Nome dado ao item Peso Defesa (Você escolhe) Slot (Não mude) Descrição •Você também pode pegar outros itens e adicionar outros efeitos leg…
-
- 1 resposta
- 963 visualizações
-
-
INTRODUÇÃO A PROGRAMAÇÃO Lua Olá, se você está aqui lendo essa aula, provavelmente é porque abriu aqueles arquivos estranhos da pasta do seu servidor e viu uns escritos místicos que você não conseguiu entender. Primeiro, você tentou mexer naqueles escritos e - BOOM! - as quests do seu servidor começaram a dar erros, as poções do jogo começaram a ficar desequilibradas, magias começaram a ficar "apelonas" e, enfim, seu servidor foi para o espaço. Aqui nesse conjunto de aulas, você aprenderá a milenar arte de programar scripts e sua única ferramenta será a linguagem LUA. No fim delas, você poderá bater no peito e falar, eu sou um scripter. …
-
- 3 respostas
- 4.6k visualizações
-
-
Olá a todos frequentadores da seção Scripting, tomei minha própria iniciativa junto com o Lpz de criar dicas ao scripting, como perceberam ele já começou com seu tópico dicas onde foi muito importante a iniciantes! Hoje começarei de nv. de script inferior, com scripts/comandos/funções básicas! Então vamos começar com o comando parecido com o do !aol que é bastante útil a outros servidores. Ok, vamos lá! function onSay(cid,words,param) if doPlayerRemoveItem(cid,2145,10) == TRUE then doPlayerAddItem(cid,1738,1) doCreatureSay(cid,"MENSAGEM QUE A TALKACTION FOI REALIZADA COM SUCESSO",TALKTYPE_ORANGE_1) else doCreatureSay(cid,"MENSAGEM QUE HOUVE ERRO …
-
- 5 respostas
- 1.4k visualizações
-
-
Olá a todos frequentadores da seção Scripting! Hoje partiremos para nossa segunda aula de Scripting, as duas aulas foram bem rápidas essa aqui já será um pouco mais complexa, mas espero que usufruam bem dela! local config = { doorPosition = {x = 100, y = 100, z = 7}, doorID = 1000, minAccess = 6, message = { doorOpen = "The door has been opened!" doorClose = "The door has been closed!" } } function onSay(cid, words, param) if getPlayerAccess(cid) >= config.minAccess then local item = getTileItemById(config.doorPosition, config.doorID) if item.uid > 0 then doRemoveItem(item.uid, 1) doPlayerSnedTextMessage(ci…
-
- 0 respostas
- 867 visualizações
-
-
DICAS Para encurtar/embelezar seus scripts. INTRODUÇÃO Fala aê, beleza, galera do TibiaKing? Estava aqui eu sem fazer nada, quando pensei em criar uma coletânea de dicas para os scripters iniciantes, avançados e etcétera. Eu já naveguei muito nessas águas e já vi muitos scripts que podiam ser "escritos" de uma maneira melhor, fazendo a mesma função e estando mais bonitos e, então, tenho algumas dicas para vocês nesse assunto. Não vou enrolar muito não, logo ali abaixo, você já começa a ler essas dicas DICA NÚMERO 1 - USO DE MATH.MAX() E MATH.MIN() Essa é uma dica bem simples e básica, sabe quando você quer comparar uma var…
-
- 3 respostas
- 1.7k visualizações
-
-
Interpretador Lua e SciTE É uma ferramenta para scripters avançados, ela não mostra as funções de otserv como getPlayerHealth, ela usa as fonções de lua mesmo, socket., math., string, byte, etc. É uma ferramenta que está em lua.org e agradeço a moto3500 por me mostrar para que eu possa compartilhar com vocês. O interessante que se você escrever em seu otserv: print('oi') (em um lua clado) ele vai mostrar no console: oi, este é um console onde você digita o code em lua e ele executa. OTScript Live!v0.4.1.13 (By: colex) Make your scripts come to live Features: Destaque na Sintaxe de LUA * (Melhorado, agora com cores diversas e alterá…
-
- 5 respostas
- 5.4k visualizações
-
-
Oque é variavel? Variavel é aquilo que varia, ou seja nao tem um valor fixo, Em lua elas deixam o script mais facil, mais facil dos outros que nao entende muito de lua a modificar os script que fazemos Entendo: Sem variavel funciton onUse(cid, item) -- Função ao usar o item doPlayerAddMoney(cid, 1000) -- Adicionar dinheiro fixo end Com variavel funciton onUse(cid, item) -- Função ao usar o item local money = 1000 -- Variavel de dinheiro doPlayerAddMoney(cid, money) -- Adicionar dinheiro que esta na variavel end Exemplo de variaveis local variavel = 100 Como usar: doPlayerAddMoney(cid, variavel) variavel = 100 …
-
- 4 respostas
- 2k visualizações
-
-
Olá galerinha Xtibiana, Xtibiana nada, eu sai daquele forum lixo abandonado. Recomeçando... Olá galerinha Ktibiana ! Hoje eu estou aqui para ajudar a você um modo facil de entender um script, mas é muito facil mesmo! Vamos lá... Peguei esse script de um lugar qualquer... function onKill(cid, target, lastHit) local mName = "Nature Witch" -- monstername local storage = 15598 if(isPlayer(cid) and getCreatureName(target) == mName) then doPlayerAddItem(cid,12662,1) setPlayerStorageValue(cid, storage, 1) return true end elseif(isPlayer(cid) and getCreatureName(target) == mName and getPlayerStorageValue(cid, storage) == 1) then end return t…
-
- 4 respostas
- 1.9k visualizações
-
-
Olá galerinha Ktibiana, Pra vocês que não sabem criar montros, ou não sabe balancear etc... Quem ler esse tópico vai aprender essa po$%! agora. Usarei o demon.xml totalmente modificado para que tenha mas exemplos nas partes onde cria mais dúvida as pessoas: <monster name="Demon" nameDescription="a demon" race="fire" experience="6000" speed="280" manacost="0"> <health now="8200" max="8200"/> <look type="35" corpse="5995"/> <targetchange interval="5000" chance="8"/> <strategy attack="100" defense="0"/> <flags> <flag summonable="0"/> <flag attackable="1"/> <flag hostile="1"/> <flag illu…
-
- 1 resposta
- 1.8k visualizações
-
Quem Está Navegando 0
- Nenhum usuário registrado visualizando esta página.