Ir para conteúdo

Diogo

Visconde
  • Total de itens

    366
  • Registro em

  • Última visita

  • Dias Ganhos

    2

Histórico de Reputação

  1. Upvote
    Diogo deu reputação a Tonynh em 11# X-Entrevista: Diogo Barreiros   
    Perguntas Pessoais


     
    Tonynh:
    - Seu nome, sua cidade e sua idade?
     
    Diogo Barreiros:
    Diogo Dias Barreiros, Juiz de Fora - MG, 21 anos.
     
    Tonynh:
    - O que você faz da vida e gosta de fazer além de se dedicar ao XTibia?
     
    Diogo Barreiros:
    Eu trabalho pela web como programador web (quase redundante) em uma empresa de São Paulo, faço freelas de vez em quando, atualmente estou criando um joguinho com o Anderson (que também é meu colega de trabalho)...
    Acho que sou um verdadeiro nerd.
    E além disso, gosto de namorar né.
    Muito bom conjugar o verbo amar, como diria meu pai.
     
    Tonynh:
    - Este trabalho te satisfaz? Você gosta dele?
     
    Diogo Barreiros:
    Me satisfaz porque é ele que paga minhas costas e que vai me dar a maior parte do meu sustento em Londres (vou passar um ano lá).
    Gosto na medida do possível, quando tem coisas criativas ou desafiadoras para fazer.
    Não sou muito fã de trabalho repetitivo, o famoso "apertar os parafusos", que Charlie Chaplin já criticou há tanto tempo atrás e até hoje é tão utilizado.
    Um dos motivos de gostar realmente do meu cargo no XTibia é não ter muito disso.
     
    Tonynh:
    - É difícil conseguir tempo para se dedicar ao xtibia.com e ao trabalho?
     
    Diogo Barreiros:
    Atualmente não, estou de férias da faculdade. Talvez em Londres, no começo, as coisas dificultem, mas sempre dá-se um jeito.
    Como diria meu tio, "a desculpa do manco é a muleta".
    Ou seja, quem quer realmente fazer algo, na maioria das vezes consegue.
     
    Sobre o XTibia

     
    Tonynh:
    - Como você conheceu o Xtibia?
     
    Diogo Barreiros:
    Se não me engano, foi quando eu fazia parte do JV Server como web master. O próprio JV ou talvez um colega que tinha iniciado meu contato com o JV me passou o link.
    Achei uma bosta o site e não quis fazer parte.
    Voltei um grande tempo depois, e não me lembro exatamente o motivo.
     
    Tonynh:
    - O que te fez ficar no fórum? (qual o motivo)
     
    Diogo Barreiros:
    Inicialmente me interessei pela área de websites, algum tempo por scripting, outro por programação c++...
    Uma época eu gostava mesmo era de criticar coisas ruins...
    Outra época escrevia artigos...
    Já fiquei apenas no barzinho...
     
    Tonynh:
    Hmm :x
     
    Diogo Barreiros:
    Só quando fui Coordenador de Programação que pensei "vou ficar aqui porque quero ajudar o XTibia", no resto do tempo tava me ajudando, ajudando minha própria vontade de fazer algo mais produtivo que jogar joguinhos.
    E, claro, agora que voltei pra equipe como Coordenador de Qualidade.
     
    Tonynh:
    - Durante as reuniões com a equipe, o que é mais discutido?
     
    Diogo Barreiros:
    Muita coisa: eventos, puxões de orelha do Gustavo, melhorias ao fórum, as tarefas da Coordenação (temos uma lista de afazeres muito bem documentada, não é oba-oba não!), gente da equipe inativa, intrigas internas, sugestões de usuários, problemas no fórum, novos projetos, relação com parceiros, andamento de projetos atuais...
    O que a galera vê os Coordenadores fazerem no fórum é apenas a ponta do iceberg.
     
    Tonynh:
    - Ao seu ver, como o fórum está de forma geral?
     
    Diogo Barreiros:
    Está bom. Tem muita coisa que pode melhorar, e muitas dessas coisas são identificadas graças ao usuário.
    Tenho alguns no MSN que adoram criticar, e são tipo meus ídolos, sempre com uma visão que eu como Coordenador não consigo ter.
    Um desses até me indicou outro fórum onde estavam falando mal da organização do XTibia, e fui atrás do cara para perguntar como exatamente ele acha o XTibia desorganizado.
    Estamos com um conteúdo satisfatório, mas bem longe do que entendemos como ideal. Queremos ter tanta coisa boa que fica difícil saber o que é melhor. Tipo quando você tem que escolher entre o Magnum Dark Chocolate e o Magnum Gold.
     
    Tonynh:
    ouaheouh, verdade ;3
     
    Diogo Barreiros:
    A equipe estava um pouquiiinho desfalcada, o que os próprios usuários nos ajudaram a ver, e já estamos cuidando disso.
    Mas sem contar esses desfalques, a equipe é bastante unida e eficiente, pelo que percebo. Quando não é assim, os Coordenadores detectam e cuidam disso rapidinho.
    Nos preocupamos muito com a qualidade de tudo. Ver algo insatisfatório significa a criação de um e-mail com dezenas de respostas de como vamos melhorar isso.
    Acho que sou meio prolixo. O Gustavo já reclamou disso haha
     
    Tonynh:
    - O que você acha desses projetos do XTibia, como o X-Recomenda, Jornal Xtibia e o que você está participando.. O X-Entrevista?
     
    Diogo Barreiros:
    - O X-Entrevista é maravilhoso, sempre leio todas as entrevistas postadas, um verdadeiro devorador.
    Acho que sou bastante curioso para saber o que os outros pensam, e o X-Entrevista me proporciona a satisfação dessa curiosidade.
    - O Jornal XTibia eu amei desde a criação, sempre colocando o usuário por dentro das coisas da última semana.
    - Mas o X-Recomenda foi um verdadeiro marco na história do XTibia. Nunca um projeto teve tamanha aceitação.
    Não foram poucas as vezes em que achei um tópico interessante graças a ele.
    A equipe de Imprensa tem feito um trabalho sensacional.
     
    Tonynh:
    Para você, o que o XTibia teria que fazer para icentivar mais os usuários e ter mais qualidade?
     
    Diogo Barreiros:
    Essa é a pergunta do milhão.
    Constantemente estamos discutindo formas de incentivo a usuários e qualidade de conteúdo, mas é muito difícil chegar a uma resposta definitiva.
    Tentamos sempre fazer eventos com prêmios interessantes para atrair usuários, e vamos implantar um sisteminha novo que é bem bacana.
    Na questão da qualidade, também tem idéias rolando para dar destaque maior ao que é bom e incentivar que o usuário não poste qualquer coisa só por postar.
    E é isso, é a área que estamos mais abertos a sugestões (desde que não seja moeda virtual, que vez ou outra surge como idéia de alguém).
     
    Tonynh:
    Então fica ai a dica para o pessoal que está lendo esta entrevista (;
     
    Sobre Tibia e OTserver

     
    Tonynh:
    Para conhecer uma comunidade como o XTibia.com, você provavelmente já jogou o Tibia Global certo? Como você conheceu o Tibia, e porque resolveu jogar?
     
    Diogo Barreiros:
    Conheci Tibia em um jogo de RPG de fórum de Harry Potter. Me indicaram e comecei a jogar.
    Fiquei tipo um mês vendendo rats para ganhar dinheiro até descobrir que dava para abri-los e que vinham moedas dentro.
     
    Tonynh:
    kkkkkk
     
    Diogo Barreiros:
    Nessa época o bot de pesca era uma coisa insana.
    Tipo, não tinha aquele delay entre a pesca em um tile e outro, então só ficava aquela parada constante de pescarias em milésimos de segundos nos tiles.
    Mas comecei a jogar por curiosidade mesmo, e talvez principalmente por eu ser novo e na época gráficos não serem tão PS3, foi foda
     
    Tonynh:
    - Qual foi o level mais alto que você já conseguiu alcançar no Tibia? e em qual mundo?
     
    Diogo Barreiros:
    27 em Venore. Nunca consegui jogar mais do que dois meses, e sempre fui noob.
    Já tive char level 150 nas mãos, mas era de amigo e só pra zoar.
     
    Tonynh:
    - Quando você morria, o que você pensava? Se irritava, ou Apenas começava denovo?
     
    Diogo Barreiros:
    Me irritava demais, principalmente por ser criança na época.
    Batia um desânimo, uma tristeza profunda.
    Mas nunca cheguei a chorar, como já vi fazerem em Lan House.
     
    Tonynh:
    uahsaushauhs, éramos iguais então
     
    Diogo Barreiros:
    Não que seja vergonhoso chorar por causa de Tibia, mas é errado dar tanta importância a um jogo.
     
    Tonynh:
    - Você já jogou OTserver? Se sim, como você conheceu e qual a primeira impressão?
     
    Diogo Barreiros:
    Sim sim, claro.
    Conheci na época do Survival, versão 7.1
     
    Tonynh:
    nossa D;
    old times
     
    Diogo Barreiros:
    Sim
    Eles eram o supra-sumo dos OTServs e nunca liberaram as sources.
    Cheguei a criar meu próprio OTServ usando esse survival, em uma internet de 64k!
     
    Chamava Aurora, e fazia eventos loucos que nunca vi OTServ nenhum fazer (mas não procurei tanto, também =P)
    Depois que o fechei, meu parceiro na empreitada levou o site pro JV Server fingindo que era dele. Como não manjava de programação PHP ou nem mesmo de HTML, não conseguiu manter o site, e teve que me chamar.
    Cheguei a jogar e curtia DEMAAAAAAAIS o Universal-X, o melhor de todos na minha opinião.
    Joguei Empire um tempo também, mas como sempre tomava DDoS não tinha como ir para a frente.
     
    Diogo Barreiros:
    Depois do Empire só fui jogar o Pokemon Online quando lançou, mas não fiquei 2 dias jogando. Muito chato upar.
     
    Tonynh:
    - E para finalizarmos... O que você tem a dizer para o pessoal que irá ler esta entrevista? (;
     
    Diogo Barreiros:
    Que sempre que quiserem falar mal de alguma coisa ou dar uma sugestão, por menor ou mais bobinha que seja, crie um tópico na área de Sugestões e Criticas.
    Queremos melhorar sempre, e muitas vezes pequenas idéias são grandes sacadas.
     
    Considerações Finais

     
    Diogo Barreiros:
    E é isso aí Tonão, valeu pela oportunidade, gato
     
    Tonynh:
    hehe, eu que agradeço a entrevista
    gostei muito disso =p
  2. Upvote
    Diogo deu reputação a noobinhu em Actionscript 3.0 - Tecnologia E Mercado   
    Fala galera, nesse post eu vou tentar descrever as funções de um programador Actionscript 3.0, o que se pode desenvolver com essa tecnologia, também apresentar suas ações dentro do mercado de trabalho nacional e internacional.
     
     

    O que é Actionscript 3.0?


    Actionscript 3.0 é a linguagem interpretada pelo Flash Player, hoje o plugin mais utilizado na web para exibição de aplicativos multimídia.
    Com total suporte à programação orientada a objetos é baseada na ECMAScript, linguagem base/padrão de scripting.
     
     
    Por que Actionscript 3.0?

    Escolhi Actionscript 3.0 porque é a linguagem que mais trabalhei, estudei nos últimos anos e pretendo tirar a certificação agora em 2011 (Flex 4 Certification).
    Comecei estudar a linguagem apenas com um foco: desenvolver projetos de jogos para web, e acabei desenvolvendo não só jogos como também sites, aplicativos interativos e multimídia em geral (RIA – Rich Internet Applications).
     
     
    “Me dê exemplos de projetos utilizando Actionscript 3.0!”

    Não preciso ir tão longe para achá-los, navegando pelo meu próprio portfólio encontro várias referências...
    Mas já que é preciso demonstrar a força do Actionscript 3.0, vamos então para projetos internacionais!
     
    Categoria Games - Dofus
    Dofus é um dos jogos mais conhecidos no mundo desenvolvido pela Ankama Games, já recebeu 4 títulos até hoje:

    Melhor jogo e maior público no Flash Festival em 2004.
    Jogo do mês pela Edge Magazine em 2005.
    Melhor jogo e maior público no Flashforward Film Festival of Seattle em 2006.
    Maior público na Independent Games Festival em março de 2006.

     


     
    Categoria Sites - Narrow Design
    http://www.narrowdesign.com/
    Considerado um dos melhores portfólios (site).
     

     
     
    Categoria Aplicativos – TweetDeck
    Um dos mais famosos e completos clients para Twitter, o TweetDeck foi desenvolvido utilizando a plataforma Flex/Air com Actionscript 3.0.
     

     
     
    Mercado de Trabalho

     
    No Brasil o salário de um programador Actionscript 3.0 é em média 3 mil reais/mês, podendo chegar aos 6 mil reais/mês dependendo da experiência.
    http://vagasnaweb.blogspot.com/search/label/Programador%20Actionscript
     
    Na Europa o salário de um programador Actionscript 3.0 é em média 35.000 euros/ano, 77.752 reais/ano, 6,5 mil reais/mês. E chegando ao topo de 60.000 euros/ano, 11.111 reais/mês.
     
    Cotação do euro: 2,30 reais.
    http://www.itjobswatch.co.uk/jobs/uk/actionscript%203.0.do
     
    Em resumo, Actionscript 3.0...

    eficaz!

     
    Desenvolvimento web e desktop, com fácil implementação de efeitos gráficos para diversos tipos de projetos: sites, jogos, aplicativos.
     
    Se você se interessou na linguagem...
     

    Livros recomendados



    ActionScript 3.0 Game Programming University
    Actionscript 3.0 Essentials
    Flex 4 Cookbook
    Actionscript 3.0 Design Patterns

     
    Nunca se esqueça que uma breve pesquisa no Google resolve muita coisa, não tenha preguiça se deseja iniciar na área, saiba pesquisar.
     
    Anderson Ferminiano.
  3. Upvote
    Diogo deu reputação a Mesenga em [totalmente Reformulado] Colocando Seu Server Sql Online + Site   
    Hoje, dia das crianças resolvi dar um presente as crianças daqui do fórum e reformulei totalmente o tópico
    agora está mais fácil e mais acessivel, as imagens boas e todas tiradas por mim.
     
    Está dividido em:

    1º Passo: Preparando o XAMPP
    2º Passo: Criando a Database
    3º Passo: Criando o banco de dados
    4º Passo: Criando uma conta GOD

     
    EXTRA
     

    5º Passo: Criando o site para os players entrarem
    F.A.Q. - Perguntas e respostas

     
     
     
    -Baixando o Xampp-
     
    Xampp download: http://www.baixaki.com.br/download/xampp.htm
    Tamanho: 44,20MB
     
    Depois de baixar instale o XAMPP
     

     
    1º Passo: Preparando o XAMPP (Créditos ao Lord Joel por lembrar do security)
     
    Abra o XAMPP, depois disso verifique se está tudo corretamente ligado clicando no XAMPP_Panel
     

     
     
    Mini F.A.Q.
     
    Mas meu apache não esta ligando!
     
    Vá até
     
    C:\xampp\apache\conf\httpd.conf:

    Procure por “Listen 80″, mude para “Listen 8090″ Procure por “ServerName localhost:80″, mude para “ServerName localhost:8090″
     
    C:\xampp\apache\conf\extra\httpd-ssl.conf

    Procure por “Listen 443″, mude para “Listen 4499″ Procure por “<VirtualHost _default_:443>”, mude para “<VirtualHost _default_:4499>” Procure por “ServerName localhost:443″, mude para “ServerName localhost:4499″
     
    Explicação: O IIS (Internet Information Service) do windows é padrão para rodar em port 80, então você não conseguira abrir o apache pois vai dar conflito com esta porta que já esta sendo usada, então trocamos!
     
    Mesenga, ainda não funcionou =/
     
    Então recomendo você baixar a versão 1.6.5 por conter a antiga base que pega em todos os windows
    Download aqui: AQUI
     
     
    Continuando...
     
    Agora acesse a página: http://localhost/security/xamppsecurity.php
     
    caso tiver trocado o port acesse: http://localhost:8090/security/xamppsecurity.php
     

     
     
    Vá na pasta do seu OT, abra o config.lua
    Você irá encontrar linhas parecidadas com essas:
     

    -- Database sqlType = "sqlite" >> mude para mysql, pois agora usaremos um servidor mysql sqlHost = "localhost" >> não mexa sqlPort = 3306 >> não mexa sqlUser = "root" >> esse é o usuário usado para acessar o servidor XAMPP, NÃO MUDE sqlPass = "" >> password (senha) que você usou no passo 1 sqlDatabase = "" >> vamos definir um nome para nossa database, ex: theforgottenserver sqlFile = "Styller.s3db" >> isso não irá servir mais pois usaremos um servidor MySql sqlKeepAlive = 0 >> não mexa mysqlReadTimeout = 10 >> não mexa mysqlWriteTimeout = 10 >> não mexa passwordType = "plain" >> não mexa
     
    No meu caso ficou assim:
     

    -- Database sqlType = "mysql" sqlHost = "localhost" sqlPort = 3306 sqlUser = "root" sqlPass = "123" sqlDatabase = "styller" sqlFile = "Styller.s3db" sqlKeepAlive = 0 mysqlReadTimeout = 10 mysqlWriteTimeout = 10 passwordType = "plain"
     
     
    2º Passo: Criando a Database
     
    abra internet e digite http://localhost
     
    caso tiver mudado o port: http://localhost:8090
     

     

    escolha Português BR
    depois disso procure PhpMyAdmin e clique
    tenha certeza que estará nessa página: http://localhost/phpmyadmin/
    caso estiver com port trocado: http://localhost:8090/phpmyadmin/

     
    3º Passo: Criando o banco de dados
     
    Na tela a seguir, você vera onde tem a parte Criar novo banco de dados, digite o mesmo nome que você colocou no config.lua em sqlDatabase=
     

     
    Agora clique criar
     
    Na tela seguinte clique em "importar" e escolha o arquivo "schema.mysql", em alguns ots o nome é "algumacoisa.sql", ex: forgotten.sql (no caso do The Forgotten Server)
     

     
    vai isso,dependendo do server que estiver usando, o numero de importações varia:
     

     
    4º Passo: Criando uma conta GOD
     
    Entre no server e crie uma conta com o Account manager pra ficar mais facil, e também crie 1 player.
    Após criado a account e o player, volte a janela do XAMPP na database e clica em accounts, depois vá em visualizar depois clique no pincel
     

     
    Irá aparecer uma tela com os dados da conta, altere apenas o necessário...
    mude o type de 1 para 5 e group id de 1 (se quiser conta normal com GOD) e 5 (se quiser conta GOD com GOD)
     

     
    depois clique em "executar"
     
    o char ainda não é God apenas a conta, então vá em players na coluna da esquerda...
    clique no lápis de novamente....
    Troque Group de 1 para 6, agora sim, seu char eh god. se quiser GM troque para 4 ou 5 (Sênior GM)
     

    Group id 1 = Player Group id 2 = Tutor Group id 3 = Sênior Tutor Group id 4 = GM Group id 5 = Sênior GM Group id 6 = GOD
     
     
    *IDs acima baseados no Styller OT 8.52
     

     
     
    Seu server está pronto para rodar!
     
     
    EXTRA
     
    5º Passo: Criando o site para os players entrarem
     
     
    -Download do site-
     
    Baixe um dos Websites "SQL" na seção de downloads do Xtibia >> http://www.xtibia.com/forum/forum/581-downloads-de-websites/
     
    Recomendados:
     
    Gesior acc maker:
    Gesior para 8.54
     
    Nicaw Acc Maker website
    http://www.xtibia.com/forum/topic/81939-nicaw-aacmaker-para-otserv-xmlsql/
     
     
    Todos os sites já vem com configurador, então entre em:
     
    http://localhost
     
    caso tiver trocado o port já sabe: http://localhost:8090
     
    e Configure-o!
     
    -Vamos configurar o Gesior Acc Maker!-
     
    Baixe o Gesior Acc Maker
    Gesior para 8.54
     
    Ligue o XAMPP e o OT
    Vá em C:\Xampp\htdocs
     
    e delete tudo o que tem dentro da pasta
     
    Agora extraia seu site pra lá, feito isso entre em http://localhost ou http://localhost:8090
     
    você verá uma tela assim:
     

     
    clique em Set server path
     
    Agora no campo em que aparece digite o diretório no qual se encontra o ot, ex: C:\OTx
     

     
     
    Agora é só ir clicando um por um e configurar a seu gosto
     

     
    1º Quadrado preto:
     

    1. Set server path --> escolhe o diretório do OT 2. Check DataBase connection --> você só pode proseguir se não tiver nehum erro nessa parte 3. Add tables and columns to DB --> isso carrega uma parte do site 4. Add samples to DB --> isso carrega uma parte do site (vocações) 5. Set Admin Account --> escolhe o account do admin do site
     
    Quadrado Vermelho:

    6. Load Monsters from OTS --> vai dar load automatico nos monstros do OT, verifique se não há nehum erro 7. Load Spells from OTS --> ele vai carregar todas as spells do OT, verifique se não há nehum erro antes de proceguir
     
     
    Pronto, o site está configurado e pronto para criar contas.
     
    Para outras opções clique em ADMIN PAINEL
     
     
    F.A.Q. - Perguntas e respostas
     
     
    @Todos
     
    Duvidas:
     
    -Como faço minha account de GM/GOD?
     
    Siga o passo 4
     
    eu nao encontro schema.mysql od está isso??
     
    Em alguns servidores o nome é theforgottenserver.sql
     
    Qual vai ser meu site pros outros poder entra fazer acc?
     
    seu site vai ser http://seuip:8090
     
    ou se quiser por http://seuip:xxxx sendo "xxxx" um número de port variando entre 80 e 9000, faça o seguinte:
     
    vá em "C:\xampp\apache\conf" e abra o arquivo httpd.conf
     
    procure por:
     
    #Listen 12.34.56.78:80
    Listen 80
     
    Nas duas linhas ponha Um número variando de 80 à 9000 no lugar do 80
     
    exemplo:
     
    #Listen 12.34.56.78:8090
    Listen 8090
     
    Agora procure a linha:
     
    ServerName localhost:80
     
    e troque pelo mesmo número que você colocou
     
    exemplo:
    ServerName localhost:8090
     
     
    -No seu está dando o seguinte problema:
     

    [28/06/2008 03:15:49] Failed to connect to database. MYSQL ERROR: Access denied for user 'root'@'localhost' (using password: YES) [28/06/2008 03:15:49] > ERROR: Couldn't estabilish connection to SQL database!
     
    Antes de colocar oSERVER ONLINE, certifique-se de que o XAMPP está aberto
     
    Até a proxima!
  4. Upvote
    Diogo deu reputação a Natanael Beckman em Gesior Acc Modificado   
    -=Gesior Acc=-
    Opa galera estava com um tempo livre e resolvi fazer alguns ajustes no Gesior ACC, ajuste bestas mais que fazem a diferença e adicionei algumas novas abas e novos sistemas no Shop System.

    Novo background-artwork do tibia.com Removi o Signatures que não server pra nada e ainda facilata alguns acessos a sua database! Removi o Houses.php Adicionei Database Infor Adicionei Most powerfull guilds! Tirei os bug da Guild tinha uma tag que apresentava fraquesas em relação a segunraça do site. Adicionei 2 novas categorias no shop system, VIP Days e ITEM VIP. Adicionei as abas Vantagéns VIP e Confirmção. Adicionei sistema de status VIP em todo o site. Removi o bug dos points. whoisonline modificado. highscores modificado. characters modificado.

    Veja algumas SS:







    Bom galera não foi feita grandes mudanças mais as que fiz faz efeito.

    Download Site
    Download Xampp 1.7.3
  5. Upvote
    Diogo deu reputação a Frenvius em Gesior Acc Maker.   
    Olá tonohom, darei a voce duas opções, retirar as signatures ou arrumar o "bug" para elas funcionarem.
    para arrumar, abra o signature.php (nao confunda com o signatures.php)aperte ctrl+f e mude esta linha:
    em: user: coloque seu usuario no phpmyadmin, que o padrão é root.
    password: sua senha do phpmyadmin.
    database: a database do seu ot.
     
    e para retirar as signatures, va em pasta do seu site/config/config.php
    e procures por esta linha
    onde estiver 1 coloque 0 para retirar as signatures da pagina de chars
    pronto, agora salve
  6. Upvote
    Diogo deu reputação a tinfer em Top Frags   
    Autor: Spits e parte Mock
    Oque Faz? é um rank de frags mostra quem matou mais no servidor...

     
    talkactions/script
     
     
    topfrags.lua

    function onSay(cid, words, param) local max = 20 local letters_to_next = 20 local name_now local name = "Top Frags\n" local rkn = 0 name = name.."\n" name = name.."Rank Frags - Nome do Jogador\n" local v = db.getResult("SELECT `p`.`name` AS `name`, COUNT(`p`.`name`) as `frags` FROM `killers` k LEFT JOIN `player_killers` pk ON `k`.`id` = `pk`.`kill_id` LEFT JOIN `players` p ON `pk`.`player_id` = `p`.`id` WHERE `k`.`unjustified` = 1 GROUP BY `name` ORDER BY `frags` DESC;") repeat if v:getID() == -1 then break end rkn = rkn+1 name_now, l = v:getDataString("name"), string.len(v:getDataString("name")) name = name..rkn..". ["..v:getDataInt("frags").."] - "..name_now.." ".." ".."".."\n" until v:next() == false if name ~= "" then doShowTextDialog(cid,1903, name) end return TRUE end
     
    talkactions.xml

    <talkaction words="!topfrags" script="topfrags.lua"/>
  7. Upvote
    Diogo deu reputação a Rajas em Biblioteca Pot   
    a ultima eh 0.1.4 do Gesior.
  8. Upvote
    Diogo deu reputação a taaatuu em Ioncube Source   
    O que é Ioncube?
     
    Ioncube nada mais é que o maior criptografador de códigos PHP do mercado! Por ser a maior empresa em criptografia, a Ioncube é quase impossível a descriptografia de códigos fonte. Para que a criptografia seja interpretada pelo servidor de destino é necessário que o mesmo possua instalado o IonCube Loader. O IonCube possui um motor de codificação avançado de código-compilado, realizando a criptografia do código sem prejuízo para a performance do ambiente. A criptografia deve ser realizada diretamente no computador do desenvolvedor, utilizando o software IonCube PHP Encoder. Após esse processo, os códigos devem ser enviados para o servidor de hospedagem.
    Essa source em mãos erradas torna os códigos fontes criptografados um alvo de fácil descriptografia, um grande exemplo de sistemas criptografados pelo Ioncube é o WHCMS, até um certo momento era raro encontrar esse sistema em versão nulled pois a criptografia do mesmo estava dificultando esse acesso, com o tempo isso foi sendo quebrado aos poucos, agora com essa source é questão de dias para que todo o sistema caia na net totalmente descriptografado. Ioncube é incrível, pelo menos foi, vamos ver a que ponto chegaremos agora com essa source!
     
    Imagem:

     
    Estou postando para vocês as sources do IONCUBE
    faça bom proveito!
     
    500mb de Source
     
    SOURCE
     
    Créditos:
     
    Ioncube (empresa/programa)
    W.Petry (por posta)
    willdsg (pelas palavras)
  9. Upvote
    Diogo deu reputação a fsg em Aplicando Efeito Para Menu Ativo Com Php   
    Oláa XTibianos, após alguns dias sem tutorial (1 Dia) vou postar um tutorial básico aqui que encontrei para vocês.
     
    Iremos aprender a utilizar o PHP e CSS para destacar o menu da pagina visitada com um efeito bem simples e fácil.
     
    Link Da Vídeo Aula: Clique aqui - Vimeo
     
    Créditos:

    Robson V. Leite
     

    Fonte:
    Clique aqui

     
    Espero que gostem :smile_positivo:
    Abraços.
  10. Upvote
    Diogo deu reputação a peewee em [Talkaction]Sistema M1 Até M6 + Tutorial De Edições.   
    [Talkaction]Sistema M1 até M6 + Tutorial de Edições.
     
     
    Créditos:
     
    Apocarai
    PeeWee
     
     
     
    Olá, antes eu já havia postado o sistema até m3, agora venho traze-lo até m6.
    Do m4 até m6 decidir fazer diferente, dessa vez quem irá colocar as magias , combat e level necessário será vocês.
     
    Estou fazendo isso para que vocês entendam melhor o comando, e caso precisarem editar que não precisem e ajuda.
     
    No final do Tópico estará os tutoriais.
     
     
    M1
     
     
     
     
    M2
     
     
     
     
    M3
     
     
     
     
    ----//----//----//----//----//----//----//----//----//----//----//----//----//----
     
    M4
     
     
     
     
    M5
     
     
     
     
    M6
     
     
     
     
    Tags
     
     
     
     
     
    Obs. QUANDO SALVAR OS COMANDOS COLOQUE O NOME DE SistemaM... [Nos pontos bote numero da magia.
     
    Tutorial Como Adicionar Magia , Combat e Level.
     
     
     
     
    Como adicionar novos M.
     
    Na parte após os pokemon adicionados com suas magias procure essas partes das linhas.
     
     
     
     
     
    Tempo das Magias
     
    Logo abaixo após as linhas que citei acima , se tem o tempo usado das magias.
     
     
     
     
     
    Bom é isso, caso falei alguma besteira me falem que irei arrumar, qualquer duvida me adicione no msn ou poste no tópico.
     
    Não esqueça do REP +
  11. Upvote
    Diogo deu reputação a fsg em Criando Conexão Com Banco De Dados (Mysql)   
    Oláa XTibianos, hoje estava procurando um tutorial para explicar para um amigo meu do condomínio como ele poderia fazer a conexão com banco de dados, e achei muito boa a vídeo aula, então vou postar aqui para vocês.
     
    Nesta vídeo aula de php iremos falar de como fazer uma conexão MySQL via php. Achei interessante fazer esse tipo de aula por sua simplicidade de explicação e de entendimento por parte de vocês.
    De uma forma bem simples e rápida explicaremos a função Mysql_connect do php, tipos de dados String, Variáveis, etc…
     
    Segue o código usado na vídeo aula:

    <? $conexao = mysql_connect("localhost", "root", "123") or die ("Não foi possivel conectar ao servidor MySQL"); echo "Conexão efetuada com sucesso!!"; ?>
     
    Link Do Vídeo: Clique aqui
     

    Fonte:
    Clique aqui

     
    Créditos:

    Rafael
     
    Espero que gostem :smile_positivo:
    Abraços.
  12. Upvote
    Diogo deu reputação a Pedro Menezes em Vírus Em Otserv – Como Prevenir!   
    Vírus em OTserv – Como prevenir!

     
    >>Passando pelo fórum vi que várias pessoas não sabem se cuidar em relação a OTservs contaminados, e culpam a equipe em relação a isso.
     
    >>Bom, a equipe tem a função de fechar os tópicos com OTservs com vírus, mas cabe ao usuário reportar este tópico, para a moderação ir fechar o mesmo.
     
    >>Então resolvi fazer este tópico para ajudar a vocês a se cuidarem em relação aos OTserv, e baixar o não infectado, e reportar o infectado.
     
     
    O Que eu faço para me prevenir?

     
    Bom, Primeiro nós vamos usar um tópico aqui do XTibia.
     
     
     
     
     
    Bom, vamos analisar o tópico!
     
    O Tópico não possui uma boa formatação, não possui uma boa escrita, não possui imagens, e Muito menos informação sobre o Server!
     
    Estes tópicos são suspeitos!
     
    Tópicos com um OTserv de qualidade boa, tem ótima escrita, Screnshots do Server, e Informações!
     
    Mas não iremos julgar um livro pela capa, vamos ver o conteúdo!
     
    Bom, aí entra uma solução muito prática: O site do Vírus Total(clique para ir para o site)
     
    Este site faz uma scan online dos arquivos utilizando diversos anti vírus diferentes!
     



     
    O site é bastante simples, você simplesmente clica em “Submit URL” e coloca o link do arquivo pra download ali! E o scan vai começar!
     
    Bom, o tópico que estamos analisando, este foi resultado do scan:
     
     
     
    como o meu amigo, da equipe de imprensa, Tonynh disse: vale lembrar que se você encontrar um scan já no tópico, é recomendável verificar o nome de ambos os arquivos, tanto no virustotal, quanto o link de download, e verificar se ambos os links coincidem..
     
    Vários anti vírus acusaram vírus no arquivo. Então quando isto acontecer, reporte a moderação, para que o tópico possa ser fechado e o úsario banido!
     
    Se você fizer o scan, e não encontrar vírus nos OTserv, pode baixar.
    Mas vale lembrar, que nenhum anti vírus detecta 100% dos vírus então eles não são realmente muito confiáveis, o que mais vale é o bom senso do usuário
     
    Tutorial feito por: Pedro
     

    TUTORIAL FEITO ÚNICA E EXCLUSIVAMENTE PARA O XTIBIA.COM, CÓPIAS SÃO PROIBIDAS!


  13. Upvote
    Diogo deu reputação a rockets em Xtibia Hotel   
    Estava vendo uns pixels art e vi um que me xamou a atençao, então resolvi fazer uma homenagem ao XTibia.
    Aí vai:




     
    XTIBIA FOREVEERR :XTibia_smile:
    Abraços a todos os membros do XTibia,
    Parabens a todos que fazem deste, um fórum interativo, divertido e acima de tudo, informativo.
     
    Abraass.
     
    edit: nao linguem pra umas bordas q estao pretas, eh q eu eskeçi de pinta
  14. Upvote
    Diogo deu reputação a fsg em Sistema De Login   
    Eaee XTibianos, depois de muito tempo vou postar um Sistema de Login muito bom que encontrei em outro local desenvolvido pelo Fabyo. Já usei e agora vou trazer para vocês XTibianos.
    Chega de papo e vamos começar...
     
    Exemplo simples de um sistema login usando session e protegido contra ataques sql injection.
    Mas basicamente você precisa só colocar nas suas paginas o include "protecao.php".
     
    index.php:
     

    <?php include "protecao.php"; ?>
     
    login.html:
     

    <html> <head> <title>Sistema de Login</title> </head> <body> <h1>Sistema de Login</h1> <form action= "index.php" method="post" name="login" id="login"></a> <label for="nome">Nome:</label> <input type="text" name="nome" id="nome" /> <label for="senha">Senha:</label> <input type="password" name="senha" id="senha" /> <input type="submit" name="submit" value="Entrar" style="cursor: pointer;" /> </form> </body> </html>
     
    protecao.php:
     

    <?php session_start(); //função anti sql injection function anti_injection($txt) { //Verifico se esta ativado magic_quotes caso esteja desativado uso a função addslashes $txt = get_magic_quotes_gpc() == 0 ? addslashes($txt) : $txt; //referencia: //http://www.php.net/get_magic_quotes_gpc //http://www.php.net/addslashes // retiro da variavel esses caracteres (--, #, *, return preg_replace("@(--|#|*|;|=)@s", "", $txt); } function verifica_usuario($nome, $senha) { //conecto ao servidor de banco de dados passo o nome do servidor usuario e senha mysql_connect("localhost", "usuario", "senha"); // seleciono o banco de dados mysql_select_db("login"); /*faço uma pesquisa perguntando a quantidade de usuarios com o nome e a senha passada pelo usuario usando o count ele conta a quantidade de ocorrencias no select essa maneira é a forma mais rapida e correta desse tipo de pesquisa, muitas pessoas usam o select * from e pega com mysql_num_rows() dessa forma prejudica muito mais o acesso ao banco podendo travar se tiver muitos acessos simutaneos*/ $re = mysql_query("select count(*) as total from usuarios where nome = '$nome' and senha = md5('$senha')"); //referencia: http://www.php.net/md5 e http://www.php.net/mysql_result $total = mysql_result($re, 0, "total"); mysql_close(); /* se o total for diferente de 1 é porque o usuario nao esta cadastrado usando dessa forma o resultado esperado sempre sera 1 porque você precisa tbm criar um sistema de cadastros que deixe apenas um usuario ser cadastrado evitando usuarios repetidos */ if($total != 1) { // redireciono para pagina de login header("Location: login.html"); exit; } // se nao existir ja a sessao eu gravo ela if(!isset($_SESSION["dados"])) { $dados["nome"] = $nome; $dados["senha"] = $senha; //gravo a sessao por padrao o php hj ja passa o serialize automaticamente nao precisa mais passar ela $_SESSION["dados"] = serialize($dados); } } //verifico se existe a sessao e ja pego os dados que nela contem if(isset($_SESSION["dados"])) { $dados = unserialize($_SESSION["dados"]); $nome = $dados["nome"]; $senha = $dados["senha"]; verifica_usuario($nome, $senha); } else { //aqui eu verifico se o usuario esta vindo de um formulario e pego os valores $nome = isset($_POST["nome"]) ? anti_injection($_POST["nome"]) : ""; $senha = isset($_POST["senha"]) ? anti_injection($_POST["senha"]) : ""; verifica_usuario($nome, $senha); } ?> </body> </html>
     
    principal.php:
     

    <?php // incluo a pagina de protecao que faz a verificação do usuario include "protecao.php"; ?>
     
    pagina2.php:
     

    <?php include "protecao.php"; ?>
     
    Banco de Dados usado no exemplo:
     
    Já tem o usuário Teste senha 123.
    Observação: Lembre-se na hora de gravar mais um usuario usar md5 na senha.
     

    CREATE TABLE usuarios ( id_usuario smallint(5) UNSIGNED NOT NULL AUTO_INCREMENT, nome varchar(40) NOT NULL DEFAULT '', senha varchar(32) NOT NULL DEFAULT '', PRIMARY KEY (id_usuario) ) INSERT INTO usuarios VALUES >(1, 'Teste', '202cb962ac59075b964b07152d234b70');
     

    Fonte:
    Clique aqui

     
    Créditos:

    Fabyo
    O sistema é muito simples e é funcional, espero que gostem :smile_positivo:
    Abraços.
  15. Upvote
    Diogo recebeu reputação de Mophus em Altos E Baixos. Uma Realidade Até No Xtibia   
    Não sou seu braço direito, sou independente =(
     
    Agora vira o rosto que quero coçar esse nariz.
     
    =P
     
    Meu trabalho como Coordenador de Qualidade será basicamente garantir que o usuário seja o cara mais feliz do mundo, recebendo tratamento e serviços de qualidade máxima!
     
    E quando a Equipe tiver fazendo algo ruim, puxar a orelha.
     
    Enfim, sou o cara que tava faltando pra garantir que o que tá ruim seja corrigido, que o que tá bom seja melhorado.
     
    Venerem-me!
  16. Upvote
    Diogo deu reputação a xdtibia16 em [Source] Pesquisador De Produto   
    [source] Pesquisador de Produto

    Meu amigo duvidou que eu fizesse um programa para pesquisar um produto, ai eu falei para ele: eu vou fazer e postar no XTibia.
    Eu fiz o pesquisador e vim postar a source aqui.
    Fiz o programa rápido, não arrumei ele direito, mas funciona.
    Espero que gostem.
     
    Código:

    #include <windows.h> #include <iostream> #include <conio.c> #include <string> #include <vector> #include <map> char *convertCharacter(char *characterConvert) { char *characterConverted; CharToOem(characterConvert, characterConverted); return characterConverted; } using namespace std; int a, order = 1; string produto_in; map<string, int> produto; map<string, int>::iterator pesquisar; void add(string a, int t) { produto[a] = t; } int main() { while (true) { clrscr(); cout << "1- Pesquisar\n2- Adicionar/Alterar para Disponivel\n3- Adicionar/Alterar para Indisponivel\n4- Deletar\n\n"; cin >> a; switch (a) { case 1: clrscr(); if (produto.size() == 0) { cout << "Nao existe nenhum produto."; } else if (produto.size() == 1) { cout << "Produto:\n"; for (pesquisar = produto.begin(); pesquisar != produto.end(); pesquisar++) { if (pesquisar->second == 0x10) { cout << " " << order << "- " << pesquisar->first << " (Dispon" << convertCharacter("í") << "vel)" << "\n"; } else if (pesquisar->second == 0x20) { cout << " " << order << "- " << pesquisar->first << " (Indispon" << convertCharacter("í") << "vel)" << "\n"; } order++; } } else if (produto.size() > 1) { cout << "Produtos:\n"; for (pesquisar = produto.begin(); pesquisar != produto.end(); pesquisar++) { if (pesquisar->second == 0x10) { cout << " " << order << "- " << pesquisar->first << " (Dispon" << convertCharacter("í") << "vel)" << "\n"; } else if (pesquisar->second == 0x20) { cout << " " << order << "- " << pesquisar->first << " (Indispon" << convertCharacter("í") << "vel)" << "\n"; } order++; } } order = 1; getch(); break; case 2: clrscr(); cout << "Nome do produto para ficar disponível: "; cin >> produto_in; add(produto_in, 0x10); break; case 3: clrscr(); cout << "Nome do produto para ficar indisponível: "; cin >> produto_in; add(produto_in, 0x20); break; case 4: clrscr(); cout << "Nome do produto para deletar: "; cin >> produto_in; produto.erase(produto_in); break; }; } }
    Para compilar você deve incluir a lib: -lconio.
    Pesquisador de Produto.rar
  17. Upvote
    Diogo deu reputação a fsg em [Curso Php] 16 Partes   
    Olá XTibianos, hoje venho postar um Curso de PHP em 16 Partes pelo Gustavo Guanabara,
    dono do site Guanabara.Info, basta a pena conferir.
    Semana passada, já foi postado o curso de HTML do mesmo local, do Guanabara.Info, se quiser aprender também Clique aqui.
     

    Aula 1 – Introdução à Linguagem - Clique aqui
    Aula 2 – Instalando o EasyPHP - Clique aqui
    Aula 3 – Configurando o EasyPHP - Clique aqui
    Aula 4 – Primeiro Exemplo PHP - Clique aqui
    Aula 5 – Variáveis e Constantes - Clique aqui
    Aula 6 – Operadores - Clique aqui
    Aula 7 – Estruturas de Controle I - Clique aqui
    Aula 8 – Estruturas de Controle II - Clique aqui
    Aula 9 – Formulários HTML - Clique aqui
    Aula 10 – Dados em Formulários II - Clique aqui
    Aula 11 – Validação de Dados Sem Previsão - Clique aqui
    Aula 12 – Validando CPF - Clique aqui
    Aula 13 – Usando o PHPMyAdmin - Clique aqui
    Aula 14 – Abrindo Bancos MySQL - Clique aqui
    Aula 15 – Sintaxe SQL (Parte 1) - Clique aqui
    Aula 16 – Sintaxe SQL (Parte 2) - Clique aqui

     

    Fonte:
    Clique aqui


    Guanabara.Info:
    Clique aqui

    Espero que gostem :smile_positivo:
    Abraços.
  18. Upvote
    Diogo recebeu reputação de realquimista em Rpg #2 - Criação De História   
    Oi oi. Quer tc?
     



    Sou loira, magra, olhos verdes, malhadinha...

     
    Antes de continuar a série de artigos, devo alertar para algo importante:
     
     
    Ou seja, se você não sabe que jogo fazer, ou como definir os objetivos de um jogo, não sou eu quem vai dizer aprenderá aqui.
     
    Irei, sim, falar sobre isso depois que terminar essa série de artigos.
     
    Se não puder esperar, sugiro esse blog de Game Design. Tem muita coisa legal lá.
     
    Continuando…
     
    Quando você cria um jogo (ou seu OTServ), a segunda coisa que deve fazer (logo depois de denifir os objetivos), é criar a história.
     



    Era uma vez...

     
    Pense comigo:
     
     
    E o que tudo em qualquer mundo possui?
     
     
    Se você vê uma pedrinha na rua, com certeza ela tem uma história.
     
     



    Eu tenho uma história tãããão interessante pra contar...

     
    E desde quando ela foi feita até chegar na rua, ela interagiu com outras peças e pessoas do ambiente, que também tem sua história.
     
    Se você parar para pensar, essa é uma das coisas que dá o aspecto de realidade a nós. A história.
     
    Ela nos garante que temos um local de onde viemos e que vamos para algum lugar, que o universo está se movendo, que o Tempo não para.
     



    Já falei que o tempo não para, P*#RA!

     
    Da mesma forma, seu mundo virtual precisa de uma história.
     
    Na verdade não precisa, mas é útil.
     
    Quando você cria uma quest, ela parece muito mais “real” se tem alguma história, algum motivo para existir. E fica melhor ainda, se essa história faz parte, ou interage, com a história do mundo.
     
    Por exemplo, se no seu jogo a cidade Amber tem uma história antiga de inimizade com a cidade Aqua, mesmo que a maioria tenha esquecido atualmente, pode existir um NPC em Amber que guarda rancor e te pede para sabotar o suplimento de água da cidade Aqua.
     
    Nessa quest, você precisa ir até a nascente do rio que fornece água à cidade, e jogar um pó de veneno.
     



    Joga purpurina na água, nega! Vamos criar um mundo GAY!

     
    Obviamente, no caminho para essa nascente, alguns outros desafiam aguarda o personagem.
     
    Esse é um exemplo simples e básico. Poderia continuar, mas deixarei isso para um artigo posterior. Agora estamos falando da criação da história.
     
    Quando a história do jogo está sendo criada, é necessário deixar a imaginação fluir.
     
    Quanto mais locais e personagens tiverem uma história, e quanto mais antiga ela conseguir ser, melhor.
     
    Há duas linhas possíveis para se seguir:
     
    A primeira é de dentro para fora. Isso é, de um local específico para um mais amplo. Do presente para o passado.
     
    Primeira forma - Expansiva
     
    Por exemplo, a cidade Amber:
     
     
    Vou parar por aqui.
     
    Essa é uma história criada de dentro para fora. Vamos chamá-la de Expansiva.
     
    Depois de acabar com essa linha de raciocínio, poderíamos voltar e rever algumas coisas.
     
    Por exemplo, se os Deuses governam o mundo, faz sentido que a cidade Amber adore um deus específico, por exemplo Feuer, deus do Fogo, já que Amber é construída sobre um vulcão.
     
    Também por isso, faríamos com que magias do fogo fossem aprendidas ali (se houver magias em nosso jogo).
     
    Depois de fazer essa pequena revisão, passamos à história do próximo elemento.
     
    Durante a construção da história de Amber, foi introduzido o Personagem (NPC) Rei Taurus.
     
     
    Novamente, usamos a criação Expansiva.
     



    Também sou Expansiva! Entendeu? Expansiva! Haha!

     
    Segunda forma - Especializante
     
    A segunda linha de construção de história é a de fora para dentro, ou seja, do mais antigo ao atual, do mundo para locais específicos. Vamos chamá-la de Especializante.
     
    UPS, me empolguei…
     



    Eleita a funcionária do milênio da empresa de entregas UPS.

     
    Esse é um exemplo de processo criativo Especializante.
     
    Deve-se escolher um ponto a partir do qual a história começa. No exemplo, escolhi a criação de tudo.
     
    Em qualquer dos casos, pode-se exitir coisas já existentes, e criar uma história para justificá-las.
     
    Mas apenas com o processo Especializante, é possível criar um mundo inexistente a partir da criação da história.
     
    Isso é: o processo Expansor responde perguntas. Como aquilo foi parar ali? Como foi criado?
     
    O processo Especializante, apenas continua uma história; todas as perguntas que seriam feitas no processo Expansor, já estão automaticamente respondidas.
     
    O processo Especializante acaba abrangindo muito mais, muitas dessas coisas possivelmente inúteis em um primeiro momento, mas com certeza dão maior possibilidade de criar novas quests e personagens depois, sem precisar responder novas perguntas.
     
    Entretanto, também exige mais tempo, maior esforço e uma capacidade criativa maior.
     
    O processo Expansor é mais simples, já que simplesmente responde perguntas. Mas é essencial saber quais perguntas responder.
     
    Menos tempo, menos esforço e uma menor capacidade criativa são necessários.
     
    Fica a pergunta: por que usar o processo Especializante?
     
    A resposta é clara:
     
    Enquanto você cria uma história do nada, vários e vários elementos novos podem ser incluídos mais facilmente, várias e várias idéias novas para quests e afins acabam surgindo.
     
    Por exemplo, os primeiros monstros do mundo poderiam ser simplesmente seres banhados em magia, criados por Feuer e Sui para destruir as cidades um do outro.
     
    Por causa do excesso de magia e do processo de evolução e seleção natural, eles acabaram se transformando em outros, cruzando com animais criados antes mesmo dos humanos, e panz.
     
    E se só esses dois Deuses possuem cidades no mundo, que tal uma nova cidade surgir do nada, criada pelo deus do Ar, que se arrependeu de ter criado os humanos e decidiu os destruir com novas criaturas mágicas?
     



    Tô meio zonzno...

     
    Cada processo criativo de uma história tem seus prós e contras.
     
    Escolher entre um deles depende do perfil do projeto, como por exemplo o tempo e nível dos profissionais disponíveis.
     
    Por exemplo, se você já tem um jogo ou OTServ pronto e rodando, mas sem história, não tem tempo e não quer contratar alguém só para criar a história do jogo (por mais importante que seja), com certeza é melhor usar o processo Expansor.
     
    É também possível, e provavelmente ideal, usar os dois processos juntos.
     
    Isso é, para a construção do mundo como um todo, em um primeiro momento, usa-se o processo Especializante.
     
    Depois, à medida que novos elementos forem incluídos, usa-se o processo Expansor, para criar a nova história desse elemento e adequar a história já existente sobre todo o resto à nova história criada.
     
    Mas para que tudo isso? Para que meu mundo virtual precisa de uma história?
     
    A história do jogo é vital no Role Play. É com ela que se cria:
     
     
    Tudo do jogo pode – e, em um cenário ideal, deve – ser baseado na história.
     
    Ela é usada para que nada fique fora do contexto e para que o jogador se sinta dentro de um mundo mais real.
     
    E é isso. Um beijo e um queijo.
     



    Por hoje é só, pessoal!

  19. Upvote
    Diogo deu reputação a tibiaa4e em [Arquivado]Scripts #1 - Inicio   
    Bom dia, Boa tarde e Boa noite. Não sei que horario você está lendo isto, mas agradeço pela atenção. Quando aceitei participar desse projeto esperava ter mais tempo para me dedicar, porém esses dias trabalho,vida pessoal me atrapalho muito um pouco.
    Fiquei pensando algo interressante para falar nessa primeira parte, meu tema é esse ao lado... Scripts!
    É uma área grande e que aborda muito temas. Pensei que tal no começo...
    Bem o tema é LUA, a maioria dos scripters são freelancers, começam apenas para editar algo, fazer alguma coisa legal e normalmente besta.
     



    Primeira coisa que pensa a pessoa escutando que você programa em LUA

     
    Para quem ainda não sabe LUA é Brasileira e Carioca (talvez seu unico defeito), foi feita na PUC-Rio por Roberto Ierusalimschy, Luiz Henrique de Figueiredo e Waldemar Celes eles eram da TECGRAF (Tecnologia em Computação Gráfica) e criaram para um projeto para a Petrobras.
     



    Primeira Ultima coisa que um paulista deseja ao RJ.

     
     
    A principal caracteristica dele é que ele é leve e flexivel, podendo adaptar-se com varias outras linguagens, como nosso caso XML e C++. Bem metade dos scripters não sabe disso, 2/3 não querem saber, restando 1/3 que são os scripters que se interressam e tem uma chance maior de futuro nessa área.
    Claro que LUA não é a maior linguagem de programação e sem dúvida não irá dar um emprego para você, até porque ela é mais usada em projetos de jogos, como Ragnarok e Warcraft. Até alguns aparelhos como microondas utilizam essa linguagem quando são simples, quando se tornam mais complexos
    já é utilizado o bom e velho C ou JAVA.
    Outra coisa é que o LUA é a linguagem de script mais rapida e mais usada em jogos. Bem voltando ao nosso bom e velho tibia, hoje em dia quase tudo é editavel em LUA, praticamente abandonando o velho C++, que apesar de poderoso, é mais complexo para os novos scripters que infelizmente apesar da extrema maior versatilidade e facilidade para se fazer codigos, vemos codigos pobres e mal feitos, alguns com uso incorreto de loopings e outros recurso que tornam complexo para novatos ou até para mais experientes.
    Nessa parte sugiro aos novos scripters que acompanharão essa minha coluna a sempre se preparar da melhor maneira. Para começar a ser um bom scripter recomendo certos passos:
     
    1-Conhecimento em inglês: Obvio, sem ele você ficará perdidos nas coisas mais simples, não saberá que if significa SE e se perderá totalmente, pois as funções criadas para otserver são em inglês e sabendo você não ficará na dúvida para saber o que faz a doSendTextMessage.
     
    2-Boas fontes: Um script que você sabe como funciona, como a Fishing Rod, te ajuda a saber o basico de um scipt, apesar da equipe TFS adorar enfiar classes e vetores aonde não prescisa (ou podiam evitar em certos casos), é facilmente compreensivel.
     
    3-Programas auxiliares: Eu aconselho o NOTEPAD++, que depois passarei o link, pois ele exibe em cores os codigos e evita que o código fique em apenas uma linha, para quem não usa ele. Deixar o Map Editor aberto para verificar as IDS, poupa um tempo.
     
    4-Vontade: Não adianta você querer fazer isso forçado, deve-se ter paciencia e vontade. Para quem não sabe quando está com sono, você absorve pouquissima informação de que aprende. Pois é apenas na hora de dormir que o cerebro grava as informações.
     



    Ninguem te força a programar. Pelo menos não que eu conheça

     
    5-Objetivo: Terminantemente é mais facil aprender quando se tem um objetivo, é bom você querer um script para fazer, de preferencia simples, normalmente quem começa a aprender, quer fazer o script gigante que nenhum programador mais experiente aceitou fazer e acaba ficando com raiva da linguagem. Tente fazer algo simples, mas objetivo.
     
    Seguindo esses passos, você não será um scripter (Estagiario de Programador) mais terá ferramentas e noção boa de como começar ou se aprimorar.
     



    ta bom exagerei estagiario eh osso

     
    Eu por exemplo comecei em scripts LUA na epoca de Ouro do Xtibia, quando o forum ficava lerdo de tanta gente on e choviam scripts. E acabei fazendo ETEC (Curso tecnico do governo de SP) e hoje trabalho com delphi. Para quem deseja seguir carreira é um começo para saber se não está entrando em alguma área que não vai gostar, e temos varias ramificações, como WEB.
     
    PS: EU amo cariocas...
  20. Upvote
    Diogo deu reputação a Oneshot em Advanced Spell System   
    Bem-vindos, Ékstibianos.

    Este é um dos tutoriais que explicam os Advanced Systems que eu criei


    para um projeto de servidor alternativo que não se efetivou.

    Além de mostrar-lhes o sistema, explicarei cada função usada e como

    configurar cada magia no seu servidor.

     
    1 - Requisitos
     
    Ékstibiano, você irá precisar de:
    - Uma dose de conhecimento em LUA.
    - Uma dose de funções.
    - E... senso de localização... os scripts das magias irão ficar grandes.
     
    2 - O corpo do script
     
     
     
     
    Esse é o script mais básico de Spell System que criei, ele permite que a magia Ice Strike possa avançar do nível 1 (básico) ao nível 3 (ótimo)
     
    Irei explicar o script em blocos, exatamente abaixo:
     
    3 - Explicações


    3.1 - Bloco 1

    local combat_lv1 = createCombatObject() setCombatParam(combat_lv1, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(combat_lv1, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK) local combat_lv2 = createCombatObject() setCombatParam(combat_lv2, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(combat_lv2, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK) local combat_lv3 = createCombatObject() setCombatParam(combat_lv3, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(combat_lv3, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)

     
    Este é o bloco do script que irá determinar como é o "rosto" da sua magia, veja que eu criei três variáveis local nomeadas de combat_lv1, combat_lv2 e combat_lv3, o efeito delas é determinado pela função SetCombatParam, e as três tem efeitos idênticos com duas diferenças, uma é o dano e a outra é a área.  


    3.2 - Bloco 2, Áreas


    local area_lv1 = createCombatArea({ {3} }) local area_lv2 = createCombatArea({ {1}, {3} }) local area_lv3 = createCombatArea({ {0, 1, 0}, {1, 3, 1} }) setCombatArea(combat_lv1, area_lv1) setCombatArea(combat_lv2, area_lv2) setCombatArea(combat_lv3, area_lv3)

    Veja no Bloco 2, que eu crei três váriaveis local nomeadas de area_lv1, area_lv2 e area_lv3.
    Cada uma dessas variáveis, cria uma área pela função createCombatArea, perceba também que as três áreas são diferentes, é o nosso objetivo não, quanto mais nível, mas poder de magia! Ah, e a função setCombarArea é responsável por associar cada área ao seu respectivo combat. Vamos ao Bloco 3, de Danos.  


    3.3 Bloco 3, Danos.


    function onGetFormulaValues_lv1(cid, level, maglevel) local magDamage, levelDamage = maglevel, level / 5 return -(magDamage * 1 + levelDamage), -(magDamage * 2 + levelDamage) end function onGetFormulaValues_lv2(cid, level, maglevel) local magDamage, levelDamage = maglevel, level / 5 return -(magDamage * 1.5 + levelDamage), -(magDamage * 3 + levelDamage) end function onGetFormulaValues_lv3(cid, level, maglevel) local magDamage, levelDamage = maglevel, level / 5 return -(magDamage * 2.25 + levelDamage), -(magDamage * 4.5 + levelDamage) end setCombatCallback(combat_lv1, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues_lv1") setCombatCallback(combat_lv2, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues_lv2") setCombatCallback(combat_lv3, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues_lv3")

     
    Essa é uma parte complicadinha (hehe), agora não são mais variavéis locais e sim três funções onGetFormulaValues, elas são responsáveis por definir o dano que o jogador irá fazer quando utilizar a magia. A estrutura é a mesma, você pode criar quantos onGetFormulaValues quiser para cada nível de magia, mas deve colocar um sufixo _lvX para evitar erros, onde X é o level que cada função é relacionada.
     
    A magia Ice Strike causa dano conforme o level e o maglevel do usuário, as fórmulas de dano tem o prefixo return. Veja abaixo:
     
    return -(magDamage * 1 + levelDamage), -(magDamage * 2 + levelDamage) --Ice Strike Nv1, dano 40~60 return -(magDamage * 1.5 + levelDamage), -(magDamage * 3 + levelDamage) --Ice Strike Nv2, dano 30~80 return -(magDamage * 2.25 + levelDamage), -(magDamage * 4.5 + levelDamage) --Ice Strike Nv3, dano 45~110

     
    Cada fórmula de cada função onGetFormulaValues faz danos diferentes. A função setCombatCallback, associa cada onGetFormulaValues ao seu respectivo combat. Ou seja, cada dano ao seu respectivo nível. Agora, vamos, ao último bloco e o mais complicadinho.  


    Bloco 4, Avançando o nível

    local function onCastSpell1(parameters) doCombat(parameters.cid, combat_lv1, parameters.var) end local function onCastSpell2(parameters) doCombat(parameters.cid, combat_lv2, parameters.var) end local function onCastSpell3(parameters) doCombat(parameters.cid, combat_lv3, parameters.var) end function onCastSpell(cid, var) local parameters = { cid = cid, var = var} local SPELL_LEVEL_STORAGE = 70000 local SPELL_TRIES_STORAGE = 70001 local spell_level = getPlayerStorageValue(cid, SPELL_LEVEL_STORAGE) local spell_tries = getPlayerStorageValue(cid, SPELL_TRIES_STORAGE) if spell_level == -1 then spell_level = 1 end if spell_level == 1 then addEvent(onCastSpell1, 0, parameters) if spell_tries >= 1 then setPlayerStorageValue(cid, SPELL_TRIES_STORAGE, spell_tries+1) else setPlayerStorageValue(cid, SPELL_TRIES_STORAGE, 1) end elseif spell_level == 2 then addEvent(onCastSpell2, 0, parameters) if spell_tries >= 1 then setPlayerStorageValue(cid, SPELL_TRIES_STORAGE, spell_tries+1) else setPlayerStorageValue(cid, SPELL_TRIES_STORAGE, 1) end elseif spell_level == 3 then addEvent(onCastSpell3, 0, parameters) end if spell_tries >= ((spell_level)*12) then if spell_level < 3 then setPlayerStorageValue(cid, SPELL_LEVEL_STORAGE, spell_level + 1) setPlayerStorageValue(cid, SPELL_TRIES_STORAGE, 0) doPlayerSendTextMessage(cid, 22, "You advanced from level " .. spell_level .. " to level " .. spell_level + 1 .. " in Ice Strike spell") doSendMagicEffect(getCreaturePosition(cid),14) doSendAnimatedText(getCreaturePosition(cid), 'Advanced!', 18) end end return TRUE end

     
    Okay, você está saturado de informação se leu até aqui, descanse um pouco, respire e vamos lá:
     
    - Observe no Bloco 4, as funções locais onCastSpell1, onCastSpell2 e onCastSpell3, elas são responsáveis para que quando o personagem invocar a magia Ice Strike, ela seja realmente invocada. E há abaixo da última função local, a onCastSpell mais importante, ela que irá nos trazer a sintaxe geral do script de magia.
     
    - O código abaixo é responsável por duas coisas, ele irá determinar dois Storages onde serão armazenados os pontos de uso da magia e onde será armazenado o valor do nível da magia. LEMBRE-SE que os Storages que você usar aqui não deverão ser usadas em Quests e cada magia deve ter dois Storages distintos.
    local SPELL_LEVEL_STORAGE = 70000 local SPELL_TRIES_STORAGE = 70001 local spell_level = getPlayerStorageValue(cid, SPELL_LEVEL_STORAGE) local spell_tries = getPlayerStorageValue(cid, SPELL_TRIES_STORAGE)

     
    - Este outro código abaixo é responsável pela invocação da magia conforme o nível da magia que o personagem detêm.
    if spell_level == -1 then spell_level = 1 end if spell_level == 1 then addEvent(onCastSpell1, 0, parameters) if spell_tries >= 1 then setPlayerStorageValue(cid, SPELL_TRIES_STORAGE, spell_tries+1) else setPlayerStorageValue(cid, SPELL_TRIES_STORAGE, 1) end elseif spell_level == 2 then addEvent(onCastSpell2, 0, parameters) if spell_tries >= 1 then setPlayerStorageValue(cid, SPELL_TRIES_STORAGE, spell_tries+1) else setPlayerStorageValue(cid, SPELL_TRIES_STORAGE, 1) end elseif spell_level == 3 then addEvent(onCastSpell3, 0, parameters) end

     
    Veja que o verificador [if spell_level == -1 then] é necessário, porque todo Storage começa em -1, então se o Storage que você atribuiu para ser responsável pelo nível da magia em questão estiver em -1, então o script mudará seu valor para 1.
     
    O verificador [if spell_level == 1 then] faz a função de, SE o nível da magia é 1, invocar a sintaxe do nível 1 e adicionar 1 ponto de uso. O mesmo acontece para os dois outros verificadores [if spell_level == 2 then] e [if spell_level == 3 then], com exceção de quê quando a magia estiver no nível 3, você não ganhará mais pontos de uso.
     
    E o último código:
     
    if spell_tries >= ((spell_level)*12) then if spell_level < 3 then setPlayerStorageValue(cid, SPELL_LEVEL_STORAGE, spell_level + 1) setPlayerStorageValue(cid, SPELL_TRIES_STORAGE, 0) doPlayerSendTextMessage(cid, 22, "You advanced from level " .. spell_level .. " to level " .. spell_level + 1 .. " in Ice Strike spell") doSendMagicEffect(getCreaturePosition(cid),14) doSendAnimatedText(getCreaturePosition(cid), 'Advanced!', 18) end end return TRUE end

     
    Querendo ou não esse é o código mais importante do script, ele verifica que quando os pontos de uso forem maiores iguais a 12 vezes o nível atual da magia em questão, e se o nível da magia for menor que 3, eles adicionem +1 no SPELL_LEVEL_STORAGE e zerem o contador de pontos de uso da magia. Mandando uma mensagem de "Sua magia avançou de nível" com um "Advanced!" bonitinho em cor verde.  
     
     
     
     
    Até mais, te vejo no próximo tutorial de Advanced System.
  21. Upvote
    Diogo recebeu reputação de Alissow em Rpg #4 - Os Detalhes Da Ambientação   
    Inicialmente pensei em chamar esse artigo de "ambientação psicológica" ou algo do tipo.
     



    Quer bater um x1 de "psicológico", X-Man? Entendeu? X-Man, haha!

     
    Felizmente, percebi qeu não faria muito sentido, já que eu não tenho conhecimento algum em psicologia, fazendo com que qualquer coisa que viesse a ser dita não passasse de merda especulação.
     
    No final, fiquei com o título simples (KISS): os detalhes da ambientação.
     
    No artigo anterior, foram ressaltadas várias e várias vezes a parte geral da ambientação e como é necessário bom senso na criação do ambiente.
     



    Bom senso de novo, não! Não! NÃÃÃÃÃÃOOOO!!!!!

     
    Já nesse artigo será ressaltada a importância dos detalhes, e os problemas do excesso deles.
     
    Os detalhes são o principal diferencial em ambientes, reais ou virtuais.
     
    Imagine uma casa de um membro da família real inglesa.
     
    Agora imagine que essa casa é antiga, que está na família há gerações...
     
    Em um cenário como esse, é de se esperar que seja uma grande mansão, já que esse era e continua sendo o padrão arquitetônico dos nobres.
     
    Espera-se também que seja bem conservada, já que teoricamente a família real inglesa não está falida.
     
    No Hall de Entrada, onde também se realizam os bailes, um grande lustre de cristal está pendurado.
     
    Tudo isso é parte da ambientação geral, tudo fruto do bom senso.
     



    Sou um aristocrata milhonário - um de muito bom senso.

     
    Os detalhes nessa casa estariam não nas grandes demonstrações públicas de riqueza e poder, coisas esperadas na casa de um aristocrata, mas sim naquilo que contasse a história da casa e de seus habitantes:
     
     
    São os detalhes que contam histórias quando nada mais o faz.
     
    Os detalhes mexem com o imaginário da pessoa, fazem ela se perguntar "o que aconteceu para ter esse negócio aqui?" ou "o que será que essas pessoas dos retratos fizeram?".
     
    E mais importante que tudo, os detalhes são o acabamento final do portal que transporta o jogador para a pele do personagem.
     



    Acabamento final do portal? Que droga de analogia, hein!?

     
    Lembro-me até hoje de quando entrei na cripta do cemitério do segundo boss do Diablo II:
     
    Corpos torturados e dilacerados por todos os lados.
     
    Até esse momento eu jogava mais um jogo de RPG. Depois disso eu estava participando da salvação de um mundo decaído, corrompido, tomado pelo mal.
     
    No Tibia, esses detalhes são as caveirinhas bem posicionadas para dar um alerta aos intrusos, ou para demonstrar o "refeitório" de um monstro; as fogueiras onde os trolls se reunem; as aranhas fracas (filhotes) antes de se chegar às maiores.
     
    Guardas em uma fortaleza, portões que se fecham em horários determinados para simular dia e noite, NPCs que deixam de vender armas e armaduras por uma explosão em uma mina de ferro.
     
    Um túmulo no meio do nada, sem motivo aparente, que não faz nada senão dar respawn de um ghoul a cada 20 dias, que quando se fala a palavra secreta se transforma em uma banshee, devido a uma maldição antiga lançada sobre um rei antigo.
     
    Um rato que sempre surge em um local específico do esgoto onde só há rotworms (que deveriam comer todos os ratos dali), mostrando uma entrada secreta para um armazém que é o início de uma quest.
     
    "Sujeirinhas" e pedrinhas pelo chão, sangue e ossos onde se tem necromantes, rachaduras nas paredes de um edifício que está caindo por causa de uma explosão que aconteceu no subterrâneo.
     
    Não há limites para a imaginação, ou melhor, há.
     



    Deixa eu ver se consigo adivinhar... BOM SENSO.

     
    E o excesso, ao invés de dar o toque de mestre, polui e estraga tudo.
     
    Tome como exemplo a comidinha da mamãe: tem dias que está perfeita, e tem dias que ela exagera no sal.
     
    Sujeira demais no ambiente, estraga. Ossos por todos os lados, sem critério, tiram todo o drama da coisa.
     
    Os detalhes mexem sim com o psicológico da coisa, dão o ar de realidade, tiram um pouco da falsidade do jogo.
     
    E é isso.
     
    Só tente não se esquecer:
     



    Ah, tá me tirando já.

     
    O segredo está nos detalhes.
     



    AAAAAAAAAHHHHHHHHHHHH!!!!!

  22. Upvote
    Diogo recebeu reputação de Doidin em Rpg #4 - Os Detalhes Da Ambientação   
    Inicialmente pensei em chamar esse artigo de "ambientação psicológica" ou algo do tipo.
     



    Quer bater um x1 de "psicológico", X-Man? Entendeu? X-Man, haha!

     
    Felizmente, percebi qeu não faria muito sentido, já que eu não tenho conhecimento algum em psicologia, fazendo com que qualquer coisa que viesse a ser dita não passasse de merda especulação.
     
    No final, fiquei com o título simples (KISS): os detalhes da ambientação.
     
    No artigo anterior, foram ressaltadas várias e várias vezes a parte geral da ambientação e como é necessário bom senso na criação do ambiente.
     



    Bom senso de novo, não! Não! NÃÃÃÃÃÃOOOO!!!!!

     
    Já nesse artigo será ressaltada a importância dos detalhes, e os problemas do excesso deles.
     
    Os detalhes são o principal diferencial em ambientes, reais ou virtuais.
     
    Imagine uma casa de um membro da família real inglesa.
     
    Agora imagine que essa casa é antiga, que está na família há gerações...
     
    Em um cenário como esse, é de se esperar que seja uma grande mansão, já que esse era e continua sendo o padrão arquitetônico dos nobres.
     
    Espera-se também que seja bem conservada, já que teoricamente a família real inglesa não está falida.
     
    No Hall de Entrada, onde também se realizam os bailes, um grande lustre de cristal está pendurado.
     
    Tudo isso é parte da ambientação geral, tudo fruto do bom senso.
     



    Sou um aristocrata milhonário - um de muito bom senso.

     
    Os detalhes nessa casa estariam não nas grandes demonstrações públicas de riqueza e poder, coisas esperadas na casa de um aristocrata, mas sim naquilo que contasse a história da casa e de seus habitantes:
     
     
    São os detalhes que contam histórias quando nada mais o faz.
     
    Os detalhes mexem com o imaginário da pessoa, fazem ela se perguntar "o que aconteceu para ter esse negócio aqui?" ou "o que será que essas pessoas dos retratos fizeram?".
     
    E mais importante que tudo, os detalhes são o acabamento final do portal que transporta o jogador para a pele do personagem.
     



    Acabamento final do portal? Que droga de analogia, hein!?

     
    Lembro-me até hoje de quando entrei na cripta do cemitério do segundo boss do Diablo II:
     
    Corpos torturados e dilacerados por todos os lados.
     
    Até esse momento eu jogava mais um jogo de RPG. Depois disso eu estava participando da salvação de um mundo decaído, corrompido, tomado pelo mal.
     
    No Tibia, esses detalhes são as caveirinhas bem posicionadas para dar um alerta aos intrusos, ou para demonstrar o "refeitório" de um monstro; as fogueiras onde os trolls se reunem; as aranhas fracas (filhotes) antes de se chegar às maiores.
     
    Guardas em uma fortaleza, portões que se fecham em horários determinados para simular dia e noite, NPCs que deixam de vender armas e armaduras por uma explosão em uma mina de ferro.
     
    Um túmulo no meio do nada, sem motivo aparente, que não faz nada senão dar respawn de um ghoul a cada 20 dias, que quando se fala a palavra secreta se transforma em uma banshee, devido a uma maldição antiga lançada sobre um rei antigo.
     
    Um rato que sempre surge em um local específico do esgoto onde só há rotworms (que deveriam comer todos os ratos dali), mostrando uma entrada secreta para um armazém que é o início de uma quest.
     
    "Sujeirinhas" e pedrinhas pelo chão, sangue e ossos onde se tem necromantes, rachaduras nas paredes de um edifício que está caindo por causa de uma explosão que aconteceu no subterrâneo.
     
    Não há limites para a imaginação, ou melhor, há.
     



    Deixa eu ver se consigo adivinhar... BOM SENSO.

     
    E o excesso, ao invés de dar o toque de mestre, polui e estraga tudo.
     
    Tome como exemplo a comidinha da mamãe: tem dias que está perfeita, e tem dias que ela exagera no sal.
     
    Sujeira demais no ambiente, estraga. Ossos por todos os lados, sem critério, tiram todo o drama da coisa.
     
    Os detalhes mexem sim com o psicológico da coisa, dão o ar de realidade, tiram um pouco da falsidade do jogo.
     
    E é isso.
     
    Só tente não se esquecer:
     



    Ah, tá me tirando já.

     
    O segredo está nos detalhes.
     



    AAAAAAAAAHHHHHHHHHHHH!!!!!

  23. Upvote
    Diogo recebeu reputação de moskitinho em Rpg #4 - Os Detalhes Da Ambientação   
    Inicialmente pensei em chamar esse artigo de "ambientação psicológica" ou algo do tipo.
     



    Quer bater um x1 de "psicológico", X-Man? Entendeu? X-Man, haha!

     
    Felizmente, percebi qeu não faria muito sentido, já que eu não tenho conhecimento algum em psicologia, fazendo com que qualquer coisa que viesse a ser dita não passasse de merda especulação.
     
    No final, fiquei com o título simples (KISS): os detalhes da ambientação.
     
    No artigo anterior, foram ressaltadas várias e várias vezes a parte geral da ambientação e como é necessário bom senso na criação do ambiente.
     



    Bom senso de novo, não! Não! NÃÃÃÃÃÃOOOO!!!!!

     
    Já nesse artigo será ressaltada a importância dos detalhes, e os problemas do excesso deles.
     
    Os detalhes são o principal diferencial em ambientes, reais ou virtuais.
     
    Imagine uma casa de um membro da família real inglesa.
     
    Agora imagine que essa casa é antiga, que está na família há gerações...
     
    Em um cenário como esse, é de se esperar que seja uma grande mansão, já que esse era e continua sendo o padrão arquitetônico dos nobres.
     
    Espera-se também que seja bem conservada, já que teoricamente a família real inglesa não está falida.
     
    No Hall de Entrada, onde também se realizam os bailes, um grande lustre de cristal está pendurado.
     
    Tudo isso é parte da ambientação geral, tudo fruto do bom senso.
     



    Sou um aristocrata milhonário - um de muito bom senso.

     
    Os detalhes nessa casa estariam não nas grandes demonstrações públicas de riqueza e poder, coisas esperadas na casa de um aristocrata, mas sim naquilo que contasse a história da casa e de seus habitantes:
     
     
    São os detalhes que contam histórias quando nada mais o faz.
     
    Os detalhes mexem com o imaginário da pessoa, fazem ela se perguntar "o que aconteceu para ter esse negócio aqui?" ou "o que será que essas pessoas dos retratos fizeram?".
     
    E mais importante que tudo, os detalhes são o acabamento final do portal que transporta o jogador para a pele do personagem.
     



    Acabamento final do portal? Que droga de analogia, hein!?

     
    Lembro-me até hoje de quando entrei na cripta do cemitério do segundo boss do Diablo II:
     
    Corpos torturados e dilacerados por todos os lados.
     
    Até esse momento eu jogava mais um jogo de RPG. Depois disso eu estava participando da salvação de um mundo decaído, corrompido, tomado pelo mal.
     
    No Tibia, esses detalhes são as caveirinhas bem posicionadas para dar um alerta aos intrusos, ou para demonstrar o "refeitório" de um monstro; as fogueiras onde os trolls se reunem; as aranhas fracas (filhotes) antes de se chegar às maiores.
     
    Guardas em uma fortaleza, portões que se fecham em horários determinados para simular dia e noite, NPCs que deixam de vender armas e armaduras por uma explosão em uma mina de ferro.
     
    Um túmulo no meio do nada, sem motivo aparente, que não faz nada senão dar respawn de um ghoul a cada 20 dias, que quando se fala a palavra secreta se transforma em uma banshee, devido a uma maldição antiga lançada sobre um rei antigo.
     
    Um rato que sempre surge em um local específico do esgoto onde só há rotworms (que deveriam comer todos os ratos dali), mostrando uma entrada secreta para um armazém que é o início de uma quest.
     
    "Sujeirinhas" e pedrinhas pelo chão, sangue e ossos onde se tem necromantes, rachaduras nas paredes de um edifício que está caindo por causa de uma explosão que aconteceu no subterrâneo.
     
    Não há limites para a imaginação, ou melhor, há.
     



    Deixa eu ver se consigo adivinhar... BOM SENSO.

     
    E o excesso, ao invés de dar o toque de mestre, polui e estraga tudo.
     
    Tome como exemplo a comidinha da mamãe: tem dias que está perfeita, e tem dias que ela exagera no sal.
     
    Sujeira demais no ambiente, estraga. Ossos por todos os lados, sem critério, tiram todo o drama da coisa.
     
    Os detalhes mexem sim com o psicológico da coisa, dão o ar de realidade, tiram um pouco da falsidade do jogo.
     
    E é isso.
     
    Só tente não se esquecer:
     



    Ah, tá me tirando já.

     
    O segredo está nos detalhes.
     



    AAAAAAAAAHHHHHHHHHHHH!!!!!

  24. Upvote
    Diogo recebeu reputação de Jvchequer em Pesquisa Sobre O Sistema De Reputação   
    Se fosse na minha época esse NiceKid já teria sido convidado a se retirar do fórum.
     
    De que adianta contribuir pacaramba se só sabe reclamar?
     
    Vai pra concorrência e seja feliz com o sistema perfeito deles, fikdik.
  25. Upvote
    Diogo recebeu reputação de Jvchequer em [Sugestão] Nova Seção   
    Peço para criarem uma seção "Artigos" dentro de Role Play.
     
    Além disso, poderia haver uma elucidação sobre o que é um Role Play e o que é uma história/fanfiction.
     
    Bjs.
  • Quem Está Navegando   0 membros estão online

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