Ir para conteúdo

Tutoriais sobre Scripting

Aprenda com os mestres da comunidade a desenvolver seus scripts, sistemas e domine a linguagem .lua!

Atenção!

- 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:

 

  1. Started by Erimyth,

    Como criar um Script de quest Bom, é bem simples fazer um Script de Quest, porém tem muitos que não sabe... Primeiramente vá até a pasta "Actions" e depois vá em "Scripts" agora faça um arquivo chamado Quest1.lua, e bote isso dentro dele: -- [( Script created by Matheus for TibiaKing.com )] -- function onUse(cid, item, fromPosition, itemEx, toPosition) local itemid = 1234 -- ID do item que o player irá ganhar. local storage = 9595 -- Storage pode ser qualquer numero, desde que ele não exista em outro script. if getPlayerStorageValue(cid, storage) < 1 then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have found a "..getItemNameById(itemid)..".") doPlaye…

    • 3 respostas
    • 3.4k visualizações
  2. Started by Garou,

    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
  3. Started by Garou,

    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
  4. Started by Ryzor,

    Faaaala galera! Tudo bem? Espero que sim, pois precisarão de muita atenção para entender algumas partes deste tutorial. A matemática é algo que nos acompanha no dia-a-dia, realmente muito importante, principalmente na programação. É indiscutível e concordável entre todos os programadores que um dos fatores de um bom profissional da área é o domínio da matemática! Bom, este tutorial vai ser para mostrar um pouco apenas da importância desta na linguagem LUA, ainda que se você tem experiência, provavelmente já percebeu isto. Sinais matemáticos simples Começando com os sinais matemáticos, o básico de lua e da matemática, são eles: Codigo: +…

    • 3 respostas
    • 5.3k visualizações
  5. Started by Ryzor,

    Metodologia de um script O que será tratado Organização de um script. Compreensão de um script. Tornando o script fácil para edição. Meu objetivo com este tutorial. Tenho como objetivo facilitar a compreensão de muitos scripts. Sabemos, todos nós, que muita gente apenas copia os scripts para seu próprio servidor e não sabe nem ao menos editar os IDs, ou as posições, conforme sua necessidade e disponibilidade do script. Quero, também, propor que os scripters que nos disponibilizam scripts de sua autoria, organizassem melhor os scripts para que os iniciantes tivessem uma base para começar no mundo de lua scripting. Organizando para me…

    • 3 respostas
    • 559 visualizações
  6. Started by Ryzor,

    Esse é uma possibilidade de todo otserver mas foi se esquecendo a medida do tempo em que poggers pessoas foram excluindo isso e colocando aquelas tags de ataques nos monstros. Exemplo: Codigo: <attack name="fire" interval="2000" chance="7" range="7" min="-25" max="-45"> <attribute key="shootEffect" value="fire"/> </attack> Sendo que antigamente você fazia as spells dos monstros por scripts. Como apenas 2% de vocês deve saber isso ainda existe e funciona e por sinal bem melhor e mais fexivel que essa besteram que fizeram com os monstros. Vou lhes ensinar como. Primeiro pense em uma spell para seu monstro. Vamos imaginar …

    • 3 respostas
    • 2.7k visualizações
  7. Started by Ryzor,

    Tutorial - Talk Actions com multiplos parametros - String Explode e Patterns Introdução: Embora muitos ja saibam, e não há dificuldade nisso, muitos se perguntam: "Como eu faço uma talkaction com mais de uma virgula?". Pergunta comum esta é, e ela se da geralmente entre os iniciantes. Se voce não for um, esse tutorial não é para você, mas sera para mim uma honra sua atenção. Nesse tutorial, vou ensinar dois meios faceis e simples de fazer isso. Embora os iniciantes tenham mais esse tipo de dúvida, o conteudo é no minimo, Intermediario. I - Informações No Open Tibia tradicional, em termos de Talkaction temos um padrão simples de parâmetro, Cid (Creature…

    • 3 respostas
    • 1.2k visualizações
  8. Started by xFatality,

    Criando suas próprias Runas. Primeiramente aqui vão algumas dicas: -Procure criar boas fórmulas de ataque -SEMPRE edite a cor do ataque da runa (Se é uma explosão, um powerbolt, ataque físico,etc) -Edite a animação de quando a runa acerta o alvo. Bom, vamos começar a criar nossas runas Para editar tudo isso, mantenha o arquivo spell.lua aberto. Ele esta localizado em data/spells/lib. Os ids de runes começam em 2260 (blank rune). Teste os Ids desejados para a criação de runas exclusivas 1- Vá até o spells.xml e crie a TAG da runa <rune name="runa" id="2301" charges="9" maglv="1" mana="0" enabled="1"></rune> 2…

    • 3 respostas
    • 1.2k visualizações
  9. Started by MaXwEllDeN,

    << Aula 7 - Estruturas de Controle Essa aula foi escrita por um urso gordo Mock, todos os créditos pertencem à ele. 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…

    • 3 respostas
    • 2.6k visualizações
  10. Este é um tutorial escrito escrito originalmente para aqueles, que apesar de não terem experiencia com este SO, querem utiliza-lo para rodar seus OTServers, seja por segurança, estabilidade ou simplesmente por quererem aprender. O Linux apesar de assustar de inicio pra quem nunca teve contato, principalmente por não dispor de uma interface grafica (a não ser em casos onde você use o vnc, mas não é o foco deste tutorial), é um grande SO, principalmente quando se trata de gerenciamento de memória, segurança e estabilidade. Neste tutorial vamos fazer uso do Debian 6 64bits e um OT 8.6, apesar de servir para qualquer versão, desde que tenha as sources. Programas necessário…

  11. Adicionando Global Storages no TFS 1.0 Olá, pessoal, estive trabalhando com o TFS 1.0, e me deparei com um problema ao utilizar uma storage global nesta versão, eles utilizaram uma versão com muitas diferenças da que estamos acostumados a programar nossos scripts, e essa versão antiga não possuía global storages. A solução que o pessoal encontrou para burlar isso, foi um tanto quanto arcaica, visto que esse modo deles pode acarretar em vários problemas eu resolvi desenvolver um código que funcionará normalmente no TFS 1.0. Enfim, deixando de falação, vamos ao tutorial... Primeiro, execute esse código SQL no seu Banco de Dados: CREATE TABLE `global_st…

  12. Started by Bruno Minervino,

    Fala Galera, Hoje eu venho trazer um tutorial a vocês de um Painel de Controle Online para gerenciamento de seu OT. Com este exemplo, creio que vai inspirar muita gente a criar novas ferramentas. Minha intenção era vincular ao Gesior, porém, deixo por conta da imaginação de vocês. Pré-requisitos: Liberar a função "shell_exec" no seu PHP. Instalar os comandos sudo e screen. Vamos Começar... Faça login no seu servidor com o root. Entre com o comando em negrito: pico /etc/init.d/theforgottenserver e adicione isso: #!/bin/sh # # Startup and signals management script for TheForgottenServer # case "$1" in start) echo -n "Starting theforgottenserver…

    • 3 respostas
    • 1.9k visualizações
  13. Started by Fir3element,

    Não me lembro bem mas acho que esse bug foi fixado só na versão 8.62, então pode ajudar muita gente... O comando !disband não funcionava direito, o player continuava na guild e acho que dava pra clonar items também. Os créditos vão para o slawkens. No arquivo ioguild.cpp, troque: bool IOGuild::disbandGuild(uint32_t guildId) { Database* db = Database::getInstance(); DBQuery query; query << "UPDATE `players` SET `rank_id` = '' AND `guildnick` = '' WHERE `rank_id` = " << getRankIdByLevel(guildId, GUILDLEVEL_LEADER) << " OR rank_id = " << getRankIdByLevel(guildId, GUILDLEVEL_VICE) << " OR rank_id = " << getRankIdByLevel…

    • 3 respostas
    • 811 visualizações
  14. Started by MerlinMage,

    Boa noite pessoal ,eu gostaria de saber primeiramente como que eu faço pros players usarem os outfits com os 2 addons .. sem ter aquela coisa de addon doll . ou de ter q pegar em npc... como eu habilito os 2 addons?

    • 3 respostas
    • 1.6k visualizações
  15. ola! gostaria de alguem que possa ajudar alguns que estao começando a criar ot server . eu criei spell no spell creator mais as tags que ele gera como adiciono elas no ot server. segue as magias e desde ja agradeço. <instant name="teste" words="default" lvl="100" maglv="0" mana="0" exhaustion="30" prem="0" needlearn="0" blockwalls="0" aggressive="1" event="script" value="teste.lua"> </instant> -- SpellCreator generated. -- =============== COMBAT VARS =============== -- Areas/Combat for 0ms local combat0_Brush = createCombatObject() setCombatParam(combat0_Brush, COMBAT_PARAM_EFFECT, 226) setCombatParam(combat0_Brush, COMBAT_PARAM_TYPE, COMBAT_UN…

    • 3 respostas
    • 836 visualizações
  16. Started by Bluetooth,

    Instale as lib # apt-get install git cmake build-essential liblua5.2-dev libgmp3-dev libmysqlclient-dev libboost-system-dev execute os comandos $ cd /pasta_do_tfs $ mkdir build && cd build $ cmake .. $ make pronto sua distro esta na pasta build nomeada de tfs

    • 3 respostas
    • 1.4k visualizações
  17. Galera vim aki mostrar o meu Primeiro Video do Canal e Escolhi faze-lo sobre uma duvida que muitos ainda tem "Como colocar novos itens no Server e no Mapa". Beleza, no video a seguir to explicando Passo-a-Passo de como fazer isso. Vídeo: https://www.youtube.com/watch?v=X_2et_d9bg8 Bom galera é isso, espero que gostem do video feito para responder essa duvida. Creditos: Eu-> por fazer o video e publicalo Zangoosedoido-> pelo cliente que usei para tirar as Sprites Xandeloko-> pelo server que usei para testar

    • 3 respostas
    • 1.7k visualizações
  18. Started by L3K0T,

    Bom pessoal estarei aqui lhe ensinando como aumentar os efeito de /x aqueles efeitos de distancia tipo bolt. Então vamo começar, vá em CONST.H e ache enum ShootEffect_t rolando pra baixo terá o efeito SHOOT_EFFECT_CAKE = 0x29, //41 add embaixo o novo efeito ficando SHOOT_EFFECT_NOVO1 = 0x30, //42 SHOOT_EFFECT_NOVO1 = Nome do efeito 42 que dei 0x30 = id do efeito todo efeito deverar ser +1 no cado efeito 43 terá que ser 31 //42 = Numero do efeito pra falar no /x 42 agora final troque …

  19. Olá pessoal do TibiaKing, hoje venho aqui trazer um mini tutorial de como colocar o exhaustion corretamente em suas spells, bastante gente utiliza o exaustion que está no proprio xml, mas por lá acontece alguns erros exemplo: se tiver uma spell com 8000 de exaustion, e outra de 2000 e você vai no seu servidor e usa a spell com 8000 de exhaustion, tem que esperar o tempo dela pra usar qualquer outra, o método que venho trazer aqui ele funciona corretamente e ainda avisa no console quanto tempo falta para usar a spell, sem mais delongas vamos lá! 1- vá até o seu XML procure a magia que quer por o exhaustion exemplo: Spoiler <instant …

    • 3 respostas
    • 2k visualizações
  20. Started by Tadelho,

    Conforme tive uma dúvida outro dia, consegui obter uma solução satisfatória e, sabendo que pode ser a dúvida de mais gente, resolvi compartilhar na forma deste pequeno tutorial. A ideia é muito simples: fazer com que uma spell de área atinga apenas alguns alvos conforme uma característica específica. Isso pode ser bastante útil para diversas ideias, além do script base servir para tantos outros efeitos interessantes. Atenção, fiz os scripts para: TFS 0.4.0 Teremos como base para esse exemplo a magia "divine caldera", o famoso "exevo mas san". Nela teremos o seguinte script: local combat = createCombatObject() setCombat…

    • 3 respostas
    • 3.1k visualizações
  21. Salve galera bom eu procurei bastante nos fóruns por ai, podemos dizer que tem muita coisa do tipo, mesmo assim eu resolvi trazer esse conteúdo, achei bem interessante e claro para quem gosta de detalhes como eu vai ser muito útil, espero que gostem. Requisitos Alteração na 050-Functions Caminho: Pasta do servidor/data/lib Ir até o final de tudo dar dois enters e adicionar o seguinte código Spoiler function convertTime(a) if(type(tonumber(a)) == "number" and a > 0) then if (a <= 3599) then local minute = math.floor(a/60) local second = a - (60 * minute) if(second == 0) then …

  22. Started by Gabis13Lin,

    Bom galera, hoje vou ensinar a vocês alguns códigos básicos de poketibias! 1- Criando uma quest: Primeiro passo, pegue uma script qualquer de quest, cole e renomeie para qual quer, depois abra o arquivo.lua e apague tudo dentro, vamos começar! Segundo passo, toda script necessita de uma função, abra com o seguinte código o script (lembre-se, baixe o notepad++): function onUse(cid, item, frompos, item2, topos) Bom, mas o que isso significa? Bom, com o basico da para ler o codigo, é um OnUse, quando clicar nele, executara tudo que esta nessa função! Para o proximo passo, se sua quest vai adicionar algum item …

    • 3 respostas
    • 818 visualizações
  23. Started by JhonatanCWest,

    Olá TibiaKing, Vou ensinar pra vocês como mecher no SQL Studio.. Vamos por a mão na massa e parar se nhênhênhê.. Primeiramente baixem o SQLite Studio (1.1.1 Última Versão). SQLite Studio 1.1.1 ( Site Oficial) Certo, primeiro vou dar uma introdução.. Pra que serve SQLite Studio? R: SQLite Studio, é os mais recentes editores de players, houses, accounts, etc.. É muito pesado o programa? Tem que instalar? R: Não, em ambas perguntas não. Não tem que instalar, e não é pesado.. Como eu mecho nisso? R: Vou lhe ensinar agora!! Bora, mão na massa!! Que Bom que estão empolgados!! 1.Abra o seu SQLite Studio 1.1.1 2.Adicio…

    • 2 respostas
    • 8.2k visualizações
  24. Started by TonyHalk,

    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
  25. Started by TonyHalk,

    OLá Pessoal, Vim postar um tutorial de : Como ADD Outfit Em seu OT Serv Bom Poco Papo E Mais Trabalho O Primeiro Passo é Simples ! Entre em seuotserv/data/xml/outfit. Agora Aperte o Butao Direito do mause e selecione Editar Navegue e Adicione Depois De : <outfit id="22" premium="yes"> <list gender="0" lookType="336" name="Warmaster"/> <list gender="1" lookType="335" name="Warmaster"/> </outfit> Adicione isso: <outfit id="y" premium="yes"> <list gender="x" lookType="w" name="h"/> <list gender="z" lookType="k" name="f"/> </outfit> Legenda ! Y = Nesse ca…

    • 2 respostas
    • 4.7k visualizações
  26. Started by Grimmjow,

    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
  27. Started by 3visan,

    Operadores Aritméticos e Bibliotecas Aula 4 Na aula anterior vimos como chamar funções e conhecemos as funções print e type. Nesta aula apenas vou reforçar a aula anterior ensinando as funções mais básicas e usadas que são nativas da linguagem Lua, ou seja, não são funções criadas para Open Tibia Server, e sim funções prontas que já estão incluídas na linguagem Lua, e vou ensinar também os operadores aritméticos. Vamos começar com eles. Os Operadores Aritméticos OBS: Você pode fazer seus testes no editor e interpretador Lua usando a função print para exibir os resultados. Enquanto você quiser mecher em Lua (Ou em qualquer outra linguagem de progr…

  28. Started by 3visan,

    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
    • 742 visualizações
  29. Started by 3visan,

    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
  30. Started by Jeff Owns,

    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
  31. Started by Jeff Owns,

    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
  32. Started by Skydangerous,

    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
  33. Started by OhGod,

    | ~ | Editando opção infinita | ~ | | ~ | by Northon e OhGod | ~ | Como assim infinita? Editar se é infinita runas e arrows. | ~ | Mãos a obra! | ~ | Acesse a config.lua, que se encontra na pasta do seu otserv. Abra ela, é em seguida procure por isso: Quote -- remove ammunation? (bolts/arrows) removeammunation = "no" -- remove rune charges? (sd/hmm/gfb) removerunecharges = "yes" Edite as opções entre aspas, no caso acima ela não esta infinita. "yes" -> Não deixar infinita "no" -> Deixar infinita. Vai em arquivo > salvar.

    • 2 respostas
    • 880 visualizações
  34. Started by Eduardo Guimaraes,

    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
    • 702 visualizações
  35. Introdução a Lua Esse vídeo é para os que não gostam de ler, e preferem um vídeo. Eu fiz ele com a intenção de ajudar, mas vendo o vídeo me atrapalhei de mais, ficar 3 meses sem mecher em programação acaba esquecendo tudo. E to gripado.. e são quase 1h da manhã ..

    • 2 respostas
    • 1.4k visualizações

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Informação Importante

Confirmação de Termo