Jump to content

12 Anos Online! 🎂



⭐ Parcerias





⚔️ Servers Apoiadores



🎁 Ofertas







  • Recently Browsing

    No registered users viewing this page.

  • Similar Content

    • By KhayrusS
      Existem diferentes formas de contribuição em projetos open source, sendo uma das principais a contribuição de implementações através do Pull Request. Nesse guia, vou abordar como criar um Pull Request no projeto L2jOrg, mas que poderá ser usado em qualquer projeto que utilize git.
      Eu trabalho com git há alguns anos, e durante esse tempo experimentei diversas formas de utilização. Um dos melhores fluxos de trabalho pra utilizar git, na minha opinião, é o modelo "short lived branches" ou "topic branches",  nesse link você pode encontrar mais detalhes.
       
      Requisitos para seguir o guia:
      Git; IDE (eu irei utilizar o IntelliJ IDEA, mas pode ser usada  a que preferi); Uma conta no github.  
      Obs.: a IDE é opcional, você pode utilizar apenas o cliente git para realizar os passos desse guia, mas por simplicidade será demonstrado apenas com o uso da IDE.
       
      1º Passo - Criando um fork do projeto no github
      O projeto L2jOrg utiliza submódulos, é necessário realizar o fork de todos os repositórios que pretende fazer contribuições.
      A criação de um fork é bastante simples, apenas é necessário estar logado no github, e utilizar o botão fork na página dos repositórios:
       
      Vamos criar o fork para o primeiro repositório: https://github.com/L2jOrg/L2JOrg
       
      Clique no botão fork no canto superior direito

       
      Caso participe de alguma organização no github, aparecerá uma tela para escolher onde será criado o fork

       
      Agora faça o mesmo processo para o repositório do Datapack: https://github.com/L2jOrg/Datapack.
      Após feito o fork dos dois repositórios,  você terá uma cópia dos repositórios.
       

       
      2º Passo - Clonando  seu repositório
      Antes de seguir esse passo, é necessário ter o git instalado.
      Após a criação do fork,  iremos fazer o clone dos seus repositório. Esse clone nada mais é do que fazer uma cópia do seu repositório remoto, que está no github, para sua máquina. Assim, podemos modificar os arquivos com mais facilidade.
       
      Para realizar o clone, precisamos saber qual o endereço dos nossos repositórios. Podemos encontrar essa informação no github:
      Aqui teremos duas opções de url. Utilizando ssh ou https. Eu particulamente utilizo a com ssh por achar mais simples, já que utilizando https é necessário fornecer o usuário e senha do github para se comunicar com o repositório remoto. Caso queira utilizar ssh, mas não sabe como configurar, segue a documentação.
       
      No botão "code" do github é onde podemos encontrar as urls necessárias para fazer o clone do repositório. Copie a url que iremos utilizar na IDE, no nosso caso no IntelliJ IDEA.

       
      A primeira vez que o IntelliJ é aberto, é apresentada uma tela de "Bem Vindo". Apartir dessa tela já podemos realizar o clone do repositório, utilizando o botão "Get from VCS".

       
      Se no seu caso, ele já abriu algum projeto que você não queira fechar, é só utlizar o menu "File" -> "New" -> "Project from Version Control"

       
      Irá aparecer uma janela para colocar a url do projeto, após adicionar a url e escolher onde seu projeto vai ficar é só clicar em "clone".

       
      Ao finalizar o clone, o IntelliJ abre a janela com o arquivos do projeto:
      Algo que vale à pena mencionar é que mesmo sem ter feito o clone do Datapack, o Intellij realizou o clone automaticamente. Isso ocorre devido ao projeto utlizar submodules. Para mais detalhes veja esse artigo!

       
      Vemos verificar o conteúdo dos repositório, para isso clique no nome da branch "development" no canto inferior direito.  Aqui é mostrado as branches existentes no repositório.
      Nesse caso, o Datapack está em um estado que chamamos de "detached head". Rudemente falando, esse estado indica que fizemos o checkout de um commit específico ao ínves de uma branch. Aqui você encontra mais detalhes!

       
      Vamos "corrigir" esse estado fazendo o checkout da branch development. Clique em origin/development e checkout:

       
      3º Passo - Configurando Remotes
      Agora vamos para uma das mais importantes partes desse guia. Uma das maiores dificuldades que algumas pessoas têm ao se trabalhar com o modelo colaborativo do git, é manter seu repositório atualizado com o repositório oficial.
      Quando realizamos um clone de um repositório fork, para o git aquele repositório é o principal. Mas no modelo colaborativo, é necessário configurar o git para reconhecer o repositório oficial também. Isso nos ajudará a manter o repositório atualizado com o oficial.
      Para isso vamos configurar "os  Remotes" do git.
       
      Vá no menu "Git" -> "Manage Remotes"

       
      Irá aparecer uma janela para configurar os remotes. Note que já temos dois remotes configurados, um para o Core e outro para o Datapack. O remote do core está correto, mas o Datapack está configurado para o repositório oficial. Isso ocorre devido ao arquivo de configuração responsável pelo submodule.

       
      Vamos corrigir o Datapack e adicionar mais dois remotes. Para isso vamos pegar a url dos repositórios oficiais. Após a configuração os remotes ficaram assim:

       
      Após a configuração, vamos atualizar o repositório com o conteúdo dos novos remotes, para isso vá no menu  "Git" -> Fetch.
      Vamos acessar a tab git do IntelliJ, por padrão fica no canto inferior esquerdo, para vermos com mais detalhes o conteúdo do repositório. Aqui podemos ver os conteúdo tanto do repositório fork quanto do oficial.

       
      4º Passo - Realizando mudanças
      Vamos realizar um mudança simples, apenas para demonstrar como o workflow funciona.
      A primeira coisa a fazer antes de realizar a mudança é criar uma nova branch.
      Clique na branch development, canto inferior direito, depois "New Branch".

       
      Der um nome sugestivo para a branch, de forma a dar uma ideia o que aquela branch vai corrigir ou modificar.

       
      Agora podemos realizar a mudança desejada. Após realizar a mudança, vamos abrir a aba "commit" que fica do lado esquerdo. Nessa janela  podemos selecionar quais os arquivos que fazem parte da mudança, para enviar a modificação para o repositório.
      Após selecionar os arquivos necessários, preenchemos a mensagem do commit com uma algo que descreva o que está sendo mudado. O ideal é que se utilize poucas palavras para descrever a mudança.
      Em casos em que é necessário algo mais detalhado, escreva na primeira uma descrição breve, e após uma linha escreva a descrição completa.
      Agora podemos fazer o commit e o push das mudanças.
      Commit -> realiza a mudança no seu repositório local
      Push -> envia a mudança para o respositório remoto ( github)

       
      Abrirar uma tela para alterar alguma opção do push, se necessário. Aqui podemos ver que será criada uma nova branch no repositório remoto, sinalizado pelo label "new" após o nome da branch. Após verificar que está tudo correto, clique no "push".
      *Lembrando que o remote origin é o repositório fork, então a mudança vai para esse repositório e não para o oficial.

       
      Após o push, vamos olhar como ficou o repositório no github. 
      Podemos ver que ao entrar no github ele já nos mostra que foi realizado um push recentemente no repositório. E finalmente fornece um botão para realizarmos o pull request.

       
      Clique no botão "compare & pull request".
      O github abrirá a página de pull request do repositório oficial, automaticamente preencherar algumas informações com a mensagem que colocamos no commit.
      Nessa página, podemos configurar para qual branch o pull request será feito. Por padrão ele fará o pull request na branch "development", caso o pull request seja para outra branch você pode alterá-la.

       
       
      Clique no botão "Create pull request". Ao criar o pull request a mudança vai passar por algumas checagens automáticas, e ficará aberto para alguém da equipe analisar o que foi mudado.
      Essa é fase que chamamos de code review, aqui fazemos uma verificação geral da mudança.
      Algumas das coisas que verificamos aqui:
      A qualidade do código; Se a mudança faz sentido; Se a mudança é necessária; Se o código faz o que supostamente deveria fazer; Se não existe código malicioso; entre outras coisas;
       
      Alguma pessoa do time irá realizar o review do código, podendo aprovar, pedir mudanças ou apenas não aceitar o pull request

       
      5º Passo - Atualizando o repositório com o conteúdo do repositório oficial
      Após o pull request ser aceito, ele é incorporado ao repositório oficial. Então é necessário que o repositório fork e o local seja sempre atualizado também. 
      Para isso, vamos voltar ao IntelliJ. A primeira coisa a fazer é retornar para nossa branch padrão "development". Vamos fazer o checkout dela.

       
      Agora vamos fazer o pull (copiar) das alterações realizados no repositório oficial. Você pode clicar com o botão direito em algum arquivo do projeto -> Git -> Pull...
       

       
      Vamos configurar de onde queremos receber as atualizações, nesse caso queremos atualizar a nossa branch com o repositório oficial e branch development, que foi a que submetemos o pull request.

       
      Podemos ver que nossa branch local está atualizada com a mudança que fizemos no pull request:

       
      Após realizar o pull dessas alterações, você pode fazer push para o seu repositório fork, para mantê-lo sempre atualizado.
       
      Esse processo pode parecer um pouco complicado, ou até mesmo com vários passos. Mas é uma forma de coloboração bastante eficaz que permite a fácil utilização de múltiplos repositórios, sem muitas complicações de merge. Mas isso já é uma outra história.
      O importante é sempre lembrar:
      Antes de fazer qualquer mudança crie uma nova branch sempre a partir da branch padrão, nesse caso "development" Se seu pull request não foi aprovado ainda, e você precisa fazer uma alteração diferente, volte para branch padrão, crie uma nova branch apartir dela e só então comece a realizar a próxima mudança Lembre-se de manter seu repositório sempre atualizado com o oficial De vez em quando faça uma limpeza, delete as branchs que foram criadas e as mudanças já foram aprovadas. Lembre-se o modelo é "short lived branch" então elas tem vida curta mesmo. []'s
       
       
       
    • By Kelvin
      Salve rapaziada, 
      Tenho uma grande novidade para compartilhar com vocês, a parceria oficial entre a L2JBrasil e a Lucera. Portanto, leia toda a postagem para ter informações completas sobre tudo.
       
      O que é Lucera?
      Lucera é a nome da revisão Interlude e Classic russa, que é tão antiga quanta a nossa comunidade e que por longos anos vem sendo trabalhada pelos seus desenvolvedores. Apesar de não ser uma revisão brasileira ela possui toda a sua estruturação em inglês, portanto, pode ser usada facilmente por qualquer.
       
      Porque escolher Lucera?
      Trabalhar com L2J é um trabalho árduo que muitos adotam por paixão e outros por motivos financeiros. Independente do seu interesse você usando uma rev com base Lucera, terá uma opção de revisão que já vem sendo trabalhada a vários anos.
      Muito dos grandes servidores da Europa e América do Norte utilizam a base Lucera para terem sucesso e conseguem muito bem!
      Por aqui a utilização da revisão ainda é um TABU, tanto pela dificuldade na linguagem (apesar do fórum deles ter uma sessão em PT_BR) quanto a ausência de um suporte mais "Friend Frendly", isso por muitas vezes afasta o usuário mais iniciante. Muito dos usuários da L2JBrasil já utilizam ou utilizaram em alguma oportunidade essa pack e uma grande parcela recomenda.
      Eu particularmente dediquei o ano de 2020 para abrir alguns servidores com diversas bases, aCis (excelente para PVP), Sunrise para H5 (falaremos disso posteriormente :P), e Lucera para bases mais MID-LOW rate e foi muito gratificante o retorno.
      Lucera é uma revisão L2J que comparam as suas mecânicas próxima ao L2OFF, isso se deve a cultura que L2OFF são arquivos "oficiais" portanto atestam essa qualidade neste comparativo também.
       
      E a L2JBrasil o que tem com isso?
      Nossa parceria rende a você acesso a um conteúdo semelhante ao do fórum oficial, mas, com uma linguagem mais "amigável" e com conteúdo extra que aprendi ao utilizar a revisão.
      VIA MP: https://www.l2jbrasil.com/messenger/compose/?to=1
      VIA EMAIL: [email protected]
      VIA DISCORD https://discord.gg/sjneErZ3
      Descontos exclusivos postados exclusivamente na área Lucera em VPS, Epic Server e Hospedagem, além de otimização insana na L2JCenter.com.
      Cargo Lucera User

      Acesso a ferramentas de forma mais facilitada através dos anexos no Sub-Forum Lucera na L2JBrasil.


      Guias direcionados a Lineage 2 produzidos por mim para utilização e noções básicas de servidores em Windows e Linux, segurança digital, manutenção e rotinas de backup para banco de dados e muitas outras bizarrices que usuários iniciais cometem, esse recurso será gratuito para o fórum, porém, tópicos relacionados a Lucera serão exclusivos dos nossos membros doadores.
      E de que quebra: a satisfação de contribuir com a manutenção da maior comunidade de Lineage 2 do Mundo que se mantem 100% free até hoje 🙂, já que parte das vendas serão doadas para as despesas do nosso fórum.
       
      O que mais eu ganho com isso?
      Você adquirindo uma licença Lucera através da L2JBrasil terá:
      Participação em uma comunidade internacional criada a vários anos e extremamente ativa.  
      Acesso a 1 Licença Interlude ou Classic por IP sem a necessidade de doações adicionais.
      2.1 Atualizações custam 20 USD mensal e não são obrigatórias. Acesso a SVN do projeto para receber atualizações**, bug report e sugestão de adoções de mods.  
      Uma revisão o mais estável possível com praticamente todos os sistemas e subsistemas funcionais.  
      O que eu não ganho?
      Você não terá um assistente pessoal para criar seu servidor a seu gosto, você recebera uma licença de uma revisão premium, não um desenvolvedor particular 😛 Um java moder particular, todos os mods pertencentes na Lucera são oficialmente colocados na revisão, então, não existe "mods exclusivos", você pode desenvolver se quiser ou sugerir, dependendo da quantidade de interessados o desenvolvedor poderá avaliar a implementação. Tratamento diferencial junto a L2JBrasil ou qualquer extensão da comunidade.  
      Interlude
      A versão Interlude é o projeto principal da Lucera, trabalhado ao longo de diversos anos é bem estável.

      Teste o servidor Interlude baixando o patch pelo link: 
      📦 Tenha o cliente Interlude e use está system para conectar-se.
      Pra quem gosta de procurar coisas na pasta config link abaixo:
      📦 Baixe a pasta config L2 Lucera Interlude.

      Senha para arquivos: l2jbrasil.com
       
      Classic (Interlude Remastered)
      A versão Classic é o novo projeto Lucera, usada todos os principais mecanismos da versão Interlude, essa rev trabalha com o cliente Classic Secret of Empire / Fafurion, portanto a ideia é limitar o conteúdo ao Interlude mas inevitavelmente exisatem coisas de interface e do cliente que podem ser usados caso existam ou forem implementados como: braceletes, agathions, transformações entre outras coisas.
      A Lucera Classic é uma revisão que ainda está em desenvolvimento. As atualizações são periódicas. É uma excelente exclusividade comparada a outros concorrentes com valores bem maiores e com qualidade inferir. Se é um iniciante e precisa de algo sólido talvez a versão interlude seja para você.

      Outra coisa que acho legal nesse cliente é a qualidade gráfica superior, HDR, Surround e mais uma penca de melhorias em relação aos outros clientes.
      Teste o servidor Interlude baixando o patch pelo link: 
      📦 Baixe o cliente completo e inclua este l2.ini dentro da pasta /sytem_en/
      Pra quem gosta de procurar coisas na pasta config link abaixo:
      📦 Baixe a pasta config L2 Lucera Classic.
       
      FAQ
      Kelvin vocês estão vendendo revisões de L2J? Vai ser liberado pra todo mundo então?
      Não, para essas parcerias acontecerem o time ou desenvolvedor precisa provar algumas qualidades tais como tempo de desenvolvimento, pelo menos uma micro comunidade estabelecida com o mínimo do desenvolvedor ativo nela e/ou site organizado e detalhado com informações claras e transparentes sobre o serviço.
      É oferecido a oportunidade de participar de um projeto de qualidade mediante doação para sua subsistência, não venda.
      Qual a melhor rev Interlude ou Classic?
      Ambas são bem idênticas no que diz respeito à mecânicas ingame já que defendem a jogabilidade do interlude.
      Claro a Classic ainda é uma versão em construção já que possuem mais sistemas que a versão canonica.
      Posso ter acesso admin?
      Sim, envie um MP com o nick do seu personagem.
      Posso trocar minha Licença de Interlude para Classic?
      Não, são projetos separados e esforços separados para cada projeto acontecer, portanto, não aventure-se. Escolha bem a versão que deseja trabalhar, conheça, estude-a, veja feedbacks e assim tenha sucesso. 
      Qual nível de rates a Lucera é recomendada?
      Já utilizei em servidores base 3x até 100x portanto é uma excelente escolha em ambos os aspectos. 
      Qual o papel da L2JBrasil nisso?
      A L2JBrasil é um parceiro, uma ponte, facilitamos tanto a aquisição da licença quanto damos facilidades nela sem que você gaste 1 centavo a mais de contribuição nisso.
      Não consigo doar porque os valores são em dólares ou é difícil pagar como faz?
      Nós podemos fazer a ponte entre isso, os valores dependerão da cotação do dólar da operadora do cartão + iof, portanto, esteja certo de sua aquisição.
      Vou usar uma versão crackeada!
      Você não precisa arriscar tempo e dinheiro em algo vazado, sem updates, use uma aCis, Mobius ou Frozen, tem versões open source e grátis, não seja seu pior inimigo.
      Quem já possui uma licença Lucera antiga como fica?
      Não teremos uma politica de acessos a membros que não participem desse programa de parceria a principio, porém, se você tem conhecimento sobre a área e gostaria de ajudar, você recebera um acesso diferenciado e sua permanência decorrera da sua atividade e qualidade desta.
    • By junin00
      Pack 01



      Pack 02

       
      Pack 03

       
      Pack 04

       
      Pack 05

       
      Pack 06

      Use o L2ViewUTX.rar para visualizar o nome dos ícones, pois nem todos estão igual ao da imagem.

      Arquivo com as texturas para download: 
      favero_l2_icons.rar


      Créditos: NCSoft, e eu por Adaptar.

      SE GOSTOU DEIXA O LIKE AI 👍
    • By Kelvin
      Caminho: Gameserver\config\olympiad.properties\
      *Para Classic
      1. Procure por OlympiadNewStadiums = False e troque para True.
      2. Atualize os arquivos do jogo 
      \Maps\17_10_Classic.unr (arquivo em anexo). 
      2.1 Atualize os arquivos do geodata
      Gameserver\geodata\17_10.l2g (arquivo em anexo).
      3. A nova área já estará disponivel:

       
      17_10_Classic.zip 17_10.zip
    • By Kelvin
      Caminho: gameserver/data/multisell/
      Uma multisell com chance é uma lista de compra onde você exige determinados itens para entrega e o NPC dentre uma lista sorteia e entrega no seu inventário. Mantenha o parâmetro is_chanced habilitado.
      <config showall="true" is_chanced="true" notax="true" keepenchanted="false" />
      Exemplo da multisell completa:
      <?xml version='1.0' encoding='utf-8'?> <list> <config showall="true" is_chanced="true" notax="true" keepenchanted="false" /> <item id="1"> <ingredient id="1459" count="1"/> <!-- Item exigido para ser entregue e trocado --> <production id="71" count="1" chance="0"/> <!-- O primeiro item tem que ser posto com a chance de 0 para que o cliente identifique os restantes e mostre. Isso não afeta em nada --> <production id="71" count="1" chance="50"/> <!-- 50% de Chance de ter oo item --> <production id="72" count="1" chance="50"/> <!-- 50% de Chance de ter oo item --> </item> </list> Vai ficar algo semelhante a isso:

  • Posts

Message added by Grundor,

😍 L2jOrg agora tem um espaço próprio no fórum.

👉 Ao invés de postar tudo por aqui e ficar perdido pelo tempo, você pode usar o fórum especifico do projeto:

📍 Acesse https://www.l2jbrasil.com/forums/forum/509-l2jorg/

Recommended Posts

21 horas atrás, shokokung disse:

Some question this patch max lv 90 not have weapon or armor   s grade? dynasty or vesper alegia ect?

No, it doesn't.

 

Atualização Release 1.5.0

As principais atualizações: https://github.com/JoeAlisson/L2jOrg/milestone/5?closed=1

O que foi feito com relação a release 1.4.0: https://github.com/JoeAlisson/L2jOrg/compare/r1.4.0...r1.5.0

Link to post
Share on other sites
  • Replies 226
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

A um tempo atrás, Kelvin falou comigo sobre a possibilidade de termos um projeto classic, visto a escassez desse tipo de servidor,   com mais visibilidade para a comunidade. A ideia é termos um p

Louvável a iniciativa do @KhayrusS, estou subindo uma estrutura para estimular o desenvolvimento dos projetos mais movimentados do fórum e em breve vamos por um test live on. Vamos organizar tamb

Wisdom is a weapon of the strong, congratulations. The guarantee that the project is public is the pillar for it to grow. In this way, L2JBrasil can contribute with higher quality and we are avai

Posted Images

6 horas atrás, KhayrusS disse:

No, it doesn't.

 

Atualização Release 1.5.0

As principais atualizações: https://github.com/JoeAlisson/L2jOrg/milestone/5?closed=1

O que foi feito com relação a release 1.4.0: https://github.com/JoeAlisson/L2jOrg/compare/r1.4.0...r1.5.0

Vou ver se dou uma moral nas HTM, XML parece ser bem promissor o projeto 😄

qj40.jpg
Link to post
Share on other sites

Estou com alguns erros aqui

 

Spoiler

Starting GameServer.

[INFO ][2020-05-24 23:46:43][GameServer:printSection:318]: ---------------------
------------------------=[ Server Info Version ]
[INFO ][2020-05-24 23:46:43][GameServer:logVersionInfo:305]: Update: ...........
....... Classic - Kamael [Dawn of Heroes]
[INFO ][2020-05-24 23:46:43][GameServer:logVersionInfo:306]: Protocol: .........
....... [272]
[INFO ][2020-05-24 23:46:43][GameServer:logVersionInfo:307]: Build Version: ....
....... 1.5.0
[INFO ][2020-05-24 23:46:43][GameServer:logVersionInfo:308]: Build Revision: ...
....... cf72b01
[INFO ][2020-05-24 23:46:43][GameServer:logVersionInfo:309]: Build date: .......
....... 2020-05-24T21:56:38.356-0300
[INFO ][2020-05-24 23:46:43][GameServer:logVersionInfo:310]: Compiler JDK versio
n: .... 14.0.1 (Oracle Corporation 14.0.1+7)
[INFO ][2020-05-24 23:46:43][GameServer:printSection:318]: ---------------------
------------------------=[ Datasource Settings ]
[INFO ][2020-05-24 23:46:43][HikariDataSource:<init>:80]: HikariPool-1 - Startin
g...
[ERROR][2020-05-24 23:46:44][HikariPool:throwPoolInitializationException:593]: H
ikariPool-1 - Exception during pool initialization.
java.sql.SQLException: The server time zone value 'Hora oficial do Brasil' is un
recognized or represents more than one time zone. You must configure either the
server or JDBC driver (via the 'serverTimezone' configuration property) to use a
 more specifc time zone value if you want to utilize time zone support.
        at [email protected]/com.mysql.cj.jdbc.exceptions.SQLError.cre
ateSQLException(SQLError.java:129)
        at [email protected]/com.mysql.cj.jdbc.exceptions.SQLError.cre
ateSQLException(SQLError.java:97)
        at [email protected]/com.mysql.cj.jdbc.exceptions.SQLError.cre
ateSQLException(SQLError.java:89)
        at [email protected]/com.mysql.cj.jdbc.exceptions.SQLError.cre
ateSQLException(SQLError.java:63)
        at [email protected]/com.mysql.cj.jdbc.exceptions.SQLError.cre
ateSQLException(SQLError.java:73)
        at [email protected]/com.mysql.cj.jdbc.exceptions.SQLException
sMapping.translateException(SQLExceptionsMapping.java:76)
        at [email protected]/com.mysql.cj.jdbc.ConnectionImpl.createNe
wIO(ConnectionImpl.java:836)
        at [email protected]/com.mysql.cj.jdbc.ConnectionImpl.<init>(C
onnectionImpl.java:456)
        at [email protected]/com.mysql.cj.jdbc.ConnectionImpl.getInsta
nce(ConnectionImpl.java:246)
        at [email protected]/com.mysql.cj.jdbc.NonRegisteringDriver.co
nnect(NonRegisteringDriver.java:197)
        at [email protected]/com.mysql.cj.jdbc.MysqlDataSource.getConn
ection(MysqlDataSource.java:416)
        at [email protected]/com.mysql.cj.jdbc.MysqlDataSource.getConn
ection(MysqlDataSource.java:128)
        at [email protected]/com.mysql.cj.jdbc.MysqlDataSource.getConn
ection(MysqlDataSource.java:113)
        at [email protected]/com.zaxxer.hikari.pool.PoolBase.newConnection
(PoolBase.java:358)
        at [email protected]/com.zaxxer.hikari.pool.PoolBase.newPoolEntry(
PoolBase.java:206)
        at [email protected]/com.zaxxer.hikari.pool.HikariPool.createPoolE
ntry(HikariPool.java:477)
        at [email protected]/com.zaxxer.hikari.pool.HikariPool.checkFailFa
st(HikariPool.java:560)
        at [email protected]/com.zaxxer.hikari.pool.HikariPool.<init>(Hika
riPool.java:115)
        at [email protected]/com.zaxxer.hikari.HikariDataSource.<init>(Hik
ariDataSource.java:81)
        at org.l2j.commons/org.l2j.commons.database.DatabaseFactory.<init>(Datab
aseFactory.java:23)
        at org.l2j.commons/org.l2j.commons.database.DatabaseFactory.getInstance(
DatabaseFactory.java:38)
        at org.l2j.commons/org.l2j.commons.database.DatabaseAccess.initialize(Da
tabaseAccess.java:28)
        at org.l2j.gameserver/org.l2j.gameserver.GameServer.configureDatabase(Ga
meServer.java:289)
        at org.l2j.gameserver/org.l2j.gameserver.GameServer.main(GameServer.java
:243)
Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The serv
er time zone value 'Hora oficial do Brasil' is unrecognized or represents more t
han one time zone. You must configure either the server or JDBC driver (via the
'serverTimezone' configuration property) to use a more specifc time zone value i
f you want to utilize time zone support.
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInsta
nce0(Native Method)
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInsta
nce(NativeConstructorAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newI
nstance(DelegatingConstructorAccessorImpl.java:45)
        at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constru
ctor.java:500)
        at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:
481)
        at [email protected]/com.mysql.cj.exceptions.ExceptionFactory.
createException(ExceptionFactory.java:61)
        at [email protected]/com.mysql.cj.exceptions.ExceptionFactory.
createException(ExceptionFactory.java:85)
        at [email protected]/com.mysql.cj.util.TimeUtil.getCanonicalTi
mezone(TimeUtil.java:132)
        at [email protected]/com.mysql.cj.protocol.a.NativeProtocol.co
nfigureTimezone(NativeProtocol.java:2120)
        at [email protected]/com.mysql.cj.protocol.a.NativeProtocol.in
itServerSession(NativeProtocol.java:2143)
        at [email protected]/com.mysql.cj.jdbc.ConnectionImpl.initiali
zePropsFromServer(ConnectionImpl.java:1310)
        at [email protected]/com.mysql.cj.jdbc.ConnectionImpl.connectO
neTryOnly(ConnectionImpl.java:967)
        at [email protected]/com.mysql.cj.jdbc.ConnectionImpl.createNe
wIO(ConnectionImpl.java:826)
        ... 17 more
Exception in thread "main" com.zaxxer.hikari.pool.HikariPool$PoolInitializationE
xception: Failed to initialize pool: The server time zone value 'Hora oficial do
 Brasil' is unrecognized or represents more than one time zone. You must configu
re either the server or JDBC driver (via the 'serverTimezone' configuration prop
erty) to use a more specifc time zone value if you want to utilize time zone sup
port.
        at [email protected]/com.zaxxer.hikari.pool.HikariPool.throwPoolIn
itializationException(HikariPool.java:595)
        at [email protected]/com.zaxxer.hikari.pool.HikariPool.checkFailFa
st(HikariPool.java:581)
        at [email protected]/com.zaxxer.hikari.pool.HikariPool.<init>(Hika
riPool.java:115)
        at [email protected]/com.zaxxer.hikari.HikariDataSource.<init>(Hik
ariDataSource.java:81)
        at org.l2j.commons/org.l2j.commons.database.DatabaseFactory.<init>(Datab
aseFactory.java:23)
        at org.l2j.commons/org.l2j.commons.database.DatabaseFactory.getInstance(
DatabaseFactory.java:38)
        at org.l2j.commons/org.l2j.commons.database.DatabaseAccess.initialize(Da
tabaseAccess.java:28)
        at org.l2j.gameserver/org.l2j.gameserver.GameServer.configureDatabase(Ga
meServer.java:289)
        at org.l2j.gameserver/org.l2j.gameserver.GameServer.main(GameServer.java
:243)
Caused by: java.sql.SQLException: The server time zone value 'Hora oficial do Br
asil' is unrecognized or represents more than one time zone. You must configure
either the server or JDBC driver (via the 'serverTimezone' configuration propert
y) to use a more specifc time zone value if you want to utilize time zone suppor
t.
        at [email protected]/com.mysql.cj.jdbc.exceptions.SQLError.cre
ateSQLException(SQLError.java:129)
        at [email protected]/com.mysql.cj.jdbc.exceptions.SQLError.cre
ateSQLException(SQLError.java:97)
        at [email protected]/com.mysql.cj.jdbc.exceptions.SQLError.cre
ateSQLException(SQLError.java:89)
        at [email protected]/com.mysql.cj.jdbc.exceptions.SQLError.cre
ateSQLException(SQLError.java:63)
        at [email protected]/com.mysql.cj.jdbc.exceptions.SQLError.cre
ateSQLException(SQLError.java:73)
        at [email protected]/com.mysql.cj.jdbc.exceptions.SQLException
sMapping.translateException(SQLExceptionsMapping.java:76)
        at [email protected]/com.mysql.cj.jdbc.ConnectionImpl.createNe
wIO(ConnectionImpl.java:836)
        at [email protected]/com.mysql.cj.jdbc.ConnectionImpl.<init>(C
onnectionImpl.java:456)
        at [email protected]/com.mysql.cj.jdbc.ConnectionImpl.getInsta
nce(ConnectionImpl.java:246)
        at [email protected]/com.mysql.cj.jdbc.NonRegisteringDriver.co
nnect(NonRegisteringDriver.java:197)
        at [email protected]/com.mysql.cj.jdbc.MysqlDataSource.getConn
ection(MysqlDataSource.java:416)
        at [email protected]/com.mysql.cj.jdbc.MysqlDataSource.getConn
ection(MysqlDataSource.java:128)
        at [email protected]/com.mysql.cj.jdbc.MysqlDataSource.getConn
ection(MysqlDataSource.java:113)
        at [email protected]/com.zaxxer.hikari.pool.PoolBase.newConnection
(PoolBase.java:358)
        at [email protected]/com.zaxxer.hikari.pool.PoolBase.newPoolEntry(
PoolBase.java:206)
        at [email protected]/com.zaxxer.hikari.pool.HikariPool.createPoolE
ntry(HikariPool.java:477)
        at [email protected]/com.zaxxer.hikari.pool.HikariPool.checkFailFa
st(HikariPool.java:560)
        ... 7 more
Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The serv
er time zone value 'Hora oficial do Brasil' is unrecognized or represents more t
han one time zone. You must configure either the server or JDBC driver (via the
'serverTimezone' configuration property) to use a more specifc time zone value i
f you want to utilize time zone support.
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInsta
nce0(Native Method)
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInsta
nce(NativeConstructorAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newI
nstance(DelegatingConstructorAccessorImpl.java:45)
        at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constru
ctor.java:500)
        at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:
481)
        at [email protected]/com.mysql.cj.exceptions.ExceptionFactory.
createException(ExceptionFactory.java:61)
        at [email protected]/com.mysql.cj.exceptions.ExceptionFactory.
createException(ExceptionFactory.java:85)
        at [email protected]/com.mysql.cj.util.TimeUtil.getCanonicalTi
mezone(TimeUtil.java:132)
        at [email protected]/com.mysql.cj.protocol.a.NativeProtocol.co
nfigureTimezone(NativeProtocol.java:2120)
        at [email protected]/com.mysql.cj.protocol.a.NativeProtocol.in
itServerSession(NativeProtocol.java:2143)
        at [email protected]/com.mysql.cj.jdbc.ConnectionImpl.initiali
zePropsFromServer(ConnectionImpl.java:1310)
        at [email protected]/com.mysql.cj.jdbc.ConnectionImpl.connectO
neTryOnly(ConnectionImpl.java:967)
        at [email protected]/com.mysql.cj.jdbc.ConnectionImpl.createNe
wIO(ConnectionImpl.java:826)
        ... 17 more

Server terminated abnormaly ...


Server terminated ...

Pressione qualquer tecla para continuar. . .

@KhayrusS alguma ideia desse erro ?

qj40.jpg
Link to post
Share on other sites
1 hora atrás, KhayrusS disse:

posta como ficou o teu arquivo database.properties

 

Spoiler

dataSourceClassName=com.mysql.cj.jdbc.MysqlConnectionPoolDataSource
dataSource.url=jdbc:mysql://localhost:3306/l2kamael?useUnicode=true&characterEncoding=utf-8&systemTimezone=UTC
dataSource.user=root
dataSource.password=kamael
dataSource.cachePrepStmts=true
dataSource.prepStmtCacheSize=250
dataSource.prepStmtCacheSqlLimit=2048
dataSource.useServerPrepStmts=true
dataSource.useLocalSessionState=true
dataSource.rewriteBatchedStatements=true
dataSource.cacheResultSetMetadata=true
dataSource.cacheServerConfiguration=true
dataSource.elideSetAutoCommits=true
dataSource.maintainTimeStats=false
dataSource.logger=com.mysql.cj.log.Slf4JLogger
 

Olhei no tópico antigo do projeto, e vi que outra pessoa teve este problema porem não foi resolvido.

qj40.jpg
Link to post
Share on other sites
17 minutos atrás, KhayrusS disse:

troque o systemTimezone no datasource.url por serverTimezone.

Para utilizar o horário do Brasil, você pode utilizar dessa forma:

serverTimezone=GMT%2D3

Funcionou, obg
agora posso contribuir também, tem algo em especifico ou ordem para produzir ou verificar ?

qj40.jpg
Link to post
Share on other sites

Boa noite, após compilar, está retornando esses erros ao tentar ligar o servidor:

Authserver:

Starting Auth Server.

Picked up _JAVA_OPTIONS: -Xmx512M
[INFO ][2020-05-26 19:06:34][EhcacheManager:createCache:305]: Cache 'settings' created in EhcacheManager.
[INFO ][2020-05-26 19:06:34][BanManager:loadBanFile:34]: Loaded 2 IP Bans.
[INFO ][2020-05-26 19:06:34][AuthController:load:72]: Loading Auth Controller...
[INFO ][2020-05-26 19:06:36][AuthController:initializeScrambledKeys:87]: Cached 10 KeyPairs for RSA communication
[INFO ][2020-05-26 19:06:36][GameServerManager:loadServerNames:55]: Loaded 127 server names
[INFO ][2020-05-26 19:06:36][EhcacheManager:createCache:305]: Cache 'dao' created in EhcacheManager.
[INFO ][2020-05-26 19:06:36][EhcacheManager:createCache:305]: Cache 'sql-descriptors' created in EhcacheManager.
[INFO ][2020-05-26 19:06:36][EhcacheManager:createCache:305]: Cache 'sql-save-descriptors' created in EhcacheManager.
[INFO ][2020-05-26 19:06:36][HikariDataSource:<init>:80]: HikariPool-1 - Starting...
[INFO ][2020-05-26 19:06:36][HikariDataSource:<init>:82]: HikariPool-1 - Start completed.
Exception in thread "main" java.lang.ExceptionInInitializerError
        at org.l2j.authserver/org.l2j.authserver.controller.GameServerManager.getInstance(GameServerManager.java:128)
        at org.l2j.authserver/org.l2j.authserver.AuthServer.<init>(AuthServer.java:38)
        at org.l2j.authserver/org.l2j.authserver.AuthServer.main(AuthServer.java:68)
Caused by: java.lang.reflect.UndeclaredThrowableException
        at jdk.proxy2/com.sun.proxy.jdk.proxy2.$Proxy49.findAll(Unknown Source)
        at org.l2j.authserver/org.l2j.authserver.controller.GameServerManager.loadRegisteredGameServers(GameServerManager.java:62)
        at org.l2j.authserver/org.l2j.authserver.controller.GameServerManager.load(GameServerManager.java:41)
        at org.l2j.authserver/org.l2j.authserver.controller.GameServerManager.<init>(GameServerManager.java:36)
        at org.l2j.authserver/org.l2j.authserver.controller.GameServerManager$Singleton.<clinit>(GameServerManager.java:136)
        ... 3 more
Caused by: java.sql.SQLSyntaxErrorException: Table 'l2jg.gameservers' doesn't exist
        at [email protected]/com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
        at [email protected]/com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
        at [email protected]/com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
        at [email protected]/com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953)
        at [email protected]/com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:370)
        at [email protected]/com.zaxxer.hikari.pool.ProxyPreparedStatement.execute(ProxyPreparedStatement.java:44)
        at [email protected]/com.zaxxer.hikari.pool.HikariProxyPreparedStatement.execute(HikariProxyPreparedStatement.java)
        at org.l2j.commons/org.l2j.commons.database.helpers.QueryDescriptor.executeSingle(QueryDescriptor.java:123)
        at org.l2j.commons/org.l2j.commons.database.helpers.QueryDescriptor.execute(QueryDescriptor.java:96)
        at org.l2j.commons/org.l2j.commons.database.JDBCInvocation.invoke(JDBCInvocation.java:71)
        ... 8 more

 

Gameserver:

Starting GameServer.

Picked up _JAVA_OPTIONS: -Xmx512M
[INFO ][2020-05-26 19:12:16][GameServer:printSection:318]: ---------------------------------------------=[ Server Info Version ]
[INFO ][2020-05-26 19:12:16][GameServer:logVersionInfo:305]: Update: .................. Classic - Kamael [Dawn of Heroes]
[INFO ][2020-05-26 19:12:16][GameServer:logVersionInfo:306]: Protocol: ................ [272]
[INFO ][2020-05-26 19:12:16][GameServer:logVersionInfo:307]: Build Version: ........... 1.5.0
[INFO ][2020-05-26 19:12:16][GameServer:logVersionInfo:308]: Build Revision: .......... cf72b01
[INFO ][2020-05-26 19:12:16][GameServer:logVersionInfo:309]: Build date: .............. 2020-05-25T22:22:26.210-0300
[INFO ][2020-05-26 19:12:16][GameServer:logVersionInfo:310]: Compiler JDK version: .... 14.0.1 (Oracle Corporation 14.0.1+7)
[INFO ][2020-05-26 19:12:16][GameServer:printSection:318]: ---------------------------------------------=[ Datasource Settings ]
[INFO ][2020-05-26 19:12:16][HikariDataSource:<init>:80]: HikariPool-1 - Starting...
[INFO ][2020-05-26 19:12:17][HikariDataSource:<init>:82]: HikariPool-1 - Start completed.
[INFO ][2020-05-26 19:12:17][GameServer:printSection:318]: --------------------------------------------=[ Server Configuration ]
[INFO ][2020-05-26 19:12:17][Config:load:2040]: Network Config: ipconfig.xml doesn't exists using automatic configuration...
[INFO ][2020-05-26 19:12:18][Config:autoIpConfig:2116]: Network Config: Adding new subnet: 127.0.0.0/8 address: 127.0.0.1
[INFO ][2020-05-26 19:12:18][Config:autoIpConfig:2116]: Network Config: Adding new subnet: 192.168.1.0/24 address: 192.168.1.100
[INFO ][2020-05-26 19:12:18][Config:autoIpConfig:2116]: Network Config: Adding new subnet: 172.18.86.96/28 address: 172.18.86.97
[INFO ][2020-05-26 19:12:18][Config:autoIpConfig:2124]: Network Config: Adding new subnet: 0.0.0.0/0 address: 45.65.228.194
[INFO ][2020-05-26 19:12:18][Config:load:1588]: Loaded 6 Filter Words.
[INFO ][2020-05-26 19:12:18][GameServer:printSection:318]: ------------------------------------------------=[ Scripting Engine ]
[INFO ][2020-05-26 19:12:18][ScriptEngineManager:registerEngine:67]: Java Engine 14 (Java [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
[WARN ][2020-05-26 19:12:23][JavaExecutionContext:report:222]: .\data\scripts\org.l2j.scripts\module-info.java -1:-1 - .\data\scripts\org.l2j.scripts\module-info.java uses preview language features.
[WARN ][2020-05-26 19:12:23][JavaExecutionContext:report:222]: .\data\scripts\org.l2j.scripts\module-info.java -1:-1 - Recompile with -Xlint:preview for details.
[WARN ][2020-05-26 19:12:47][JavaExecutionContext:report:222]: .\data\scripts\org.l2j.scripts\handlers\communityboard\MemoBoard.java -1:-1 - Some input files use preview language features.
[WARN ][2020-05-26 19:12:47][JavaExecutionContext:report:222]: .\data\scripts\org.l2j.scripts\handlers\communityboard\MemoBoard.java -1:-1 - Recompile with -Xlint:preview for details.
[INFO ][2020-05-26 19:12:48][GameServer:printSection:318]: ------------------------------------------------=[ Identity Factory ]
Exception in thread "main" java.lang.ExceptionInInitializerError
        at org.l2j.gameserver/org.l2j.gameserver.idfactory.IdFactory.getInstance(IdFactory.java:73)
        at org.l2j.gameserver/org.l2j.gameserver.GameServer.<init>(GameServer.java:72)
        at org.l2j.gameserver/org.l2j.gameserver.GameServer.main(GameServer.java:255)
Caused by: java.lang.reflect.UndeclaredThrowableException
        at com.sun.proxy.$Proxy56.deleteWithoutAccount(Unknown Source)
        at org.l2j.gameserver/org.l2j.gameserver.idfactory.IdFactory.cleanUpDatabase(IdFactory.java:29)
        at org.l2j.gameserver/org.l2j.gameserver.idfactory.IdFactory.<init>(IdFactory.java:21)
        at org.l2j.gameserver/org.l2j.gameserver.idfactory.BitSetIDFactory.<init>(BitSetIDFactory.java:20)
        at org.l2j.gameserver/org.l2j.gameserver.idfactory.IdFactory$Singleton.<clinit>(IdFactory.java:77)
        ... 3 more
Caused by: java.sql.SQLSyntaxErrorException: Table 'l2jg.account_data' doesn't exist
        at [email protected]/com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
        at [email protected]/com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
        at [email protected]/com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
        at [email protected]/com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953)
        at [email protected]/com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:370)
        at [email protected]/com.zaxxer.hikari.pool.ProxyPreparedStatement.execute(ProxyPreparedStatement.java:44)
        at [email protected]/com.zaxxer.hikari.pool.HikariProxyPreparedStatement.execute(HikariProxyPreparedStatement.java)
        at org.l2j.commons/org.l2j.commons.database.helpers.QueryDescriptor.executeSingle(QueryDescriptor.java:123)
        at org.l2j.commons/org.l2j.commons.database.helpers.QueryDescriptor.execute(QueryDescriptor.java:96)
        at org.l2j.commons/org.l2j.commons.database.JDBCInvocation.invoke(JDBCInvocation.java:71)
        ... 8 more
Link to post
Share on other sites

Tentei importar direto via arquivo sql da pasta, mas retornou erro:

[SQL] Query 1_characters start
[ERR] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(CURRENT_DATE)

 

Link to post
Share on other sites
  • 2 weeks later...

Deixa eu perguntar: o servidor é compatível com MariaDB ou é restrito ao MySQL V8?

 

Outra pergunta, essa mais besta: o serverpack é de Classic ou será apta para as últimas versões do oficial (Dawn of Heroes)?

Edited by Aníbal Duarte Bersagui de Oliveira
Link to post
Share on other sites

Oficialmente só é suportado o MySQL 8. Não verifiquei a compatibilidade com o MariaDB, mas é bem provável que algumas consultas precisem ser refeitas para suportá-lo.

Atualmente, só o Classic é suportado. Algumas pessoas estão querendo/tentando fazer um fork para o Live, como já tentaram também fazer para Essence, mas não sei até onde vão 🙂 . Hoje eu não tenho condições de manter dois ou três versões diferentes, não teria tempo o suficiente para isso.

Link to post
Share on other sites

It's a Classic Project. Homunculus is a Live feature so it won't work.

 

Algumas informações para quem quer ficar mais por dentro do projeto:

Test Server Patch

Download

Atualmente existe um server para testes caso queira ver como está o andamento do projeto. O servidor não é o oficial do projeto, mas um colaborador disponibilizou para testes. Como temos  poucos testers, estamos precisando de mais pessoas para testar os Bosses.

 

Discord

Até hoje só tinha o servidor 1, algumas pessoas me pediram para ter um servidor em português, então segue os dois servidores existentes:

Discord Server 1 [ENGLISH ONLY - Principal]

Discord Server 2 [Português]

 

 

 

 

Edited by KhayrusS
Link to post
Share on other sites
Em 10/06/2020 at 13:14, Aníbal Duarte Bersagui de Oliveira disse:

Deixa eu perguntar: o servidor é compatível com MariaDB ou é restrito ao MySQL V8?

Não funciona no MariaDB, já testei.

 

 

 

Link to post
Share on other sites
Em 12/06/2020 at 12:57, KhayrusS disse:

It's a Classic Project. Homunculus is a Live feature so it won't work.

 

Algumas informações para quem quer ficar mais por dentro do projeto:

Test Server Patch

Download

Atualmente existe um server para testes caso queira ver como está o andamento do projeto. O servidor não é o oficial do projeto, mas um colaborador disponibilizou para testes. Como temos  poucos testers, estamos precisando de mais pessoas para testar os Bosses.

 

Discord

Até hoje só tinha o servidor 1, algumas pessoas me pediram para ter um servidor em português, então segue os dois servidores existentes:

Discord Server 1 [ENGLISH ONLY - Principal]

Discord Server 2 [Português]

 

 

 

 

Estarei participando do teste, queria muito utilizar o projeto, porem mt coisa estava incorreta / faltando ainda. Mas irei ajudar nos testes para que projeto possa andar mais rapido 😃

19028-361.gif

Link to post
Share on other sites

eita, parabens pela iniciativa de disponibilizar algo novo para a comunidade, estou mto empolgado para passar meu tempo testando e melhorando esse projeto, porém minha cabeça sai faisca ao tentar instalar o mysql novo e o java, ja q eu so mechi com coisa antiga, ate acostumar com os programas novos vai ser dificil kkkkk se alguém puder disponibilizar um tuturial instalando os programas necessarios seria top. instalei o mysql e o java mais n consigo abrir o gameserver ainda.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...