Jump to content
KhayrusS

Classic (Seven Signs)

Recommended Posts

Há um tempo venho utilizando uma source antiga L2-Script (26360) para estudo, com o objetivo de utilizar o mmocore assíncrono. Como não vejo projetos Classic open source por aí, resolvi compartilhar.

 

Atualização do código base

 O código base foi alterada para Mobius, visto que a base antiga estava um pouco antiga. Essa mudança foi acompanhada de um update para a versão Seven Signs, assim o protocolo suportado passa a ser o 152.

 

GITHUB

System

Requisitos

  • Java 12
  • Mysql 8

As últimas versões compiladas podem ser encontradas em Releases

Atualmente estou em um estágio de melhoria geral do código, otimizações de recursos e atualização de tecnologia.

Basicamente o que está sendo feito:

  • Atualização para Java 12 (Será atualizado assim que novas releases forem saindo);
  • Atualização do mmocore;
  • Utilização de sistema de módulos (JPMS - Disponível a partir do Java 9);
  • Atualização de dependências;
  • Melhoria na camada de acesso a Dados (Tanto no Database como nos arquivos)

Um exemplo de melhoria na camada de acesso a dados:

Antes

private void globalRemoveItems(){
  int itemToDeleteCount = 0;
  StringBuilder itemsToDelete = new StringBuilder();

  Connection con = null;
  PreparedStatement statement = null;
  ResultSet rset = null;
  try
  {
    con = DatabaseFactory.getInstance().getConnection();
    statement = con.prepareStatement("SELECT item_id FROM items_to_delete");
    rset = statement.executeQuery();
    while(rset.next())
    {
      if(itemsToDelete.length() > 0)
        itemsToDelete.append(",");
      itemsToDelete.append(rset.getInt("item_id"));
      itemToDeleteCount++;
    }

    DbUtils.closeQuietly(statement, rset);

    statement = con.prepareStatement("DELETE FROM items_to_delete");
    statement.execute();
  }
  catch(SQLException e)
  {
    _log.error("Error while select items for global remove:", e);
  }
  finally
  {
    DbUtils.closeQuietly(con, statement);
  }

  if(itemsToDelete.length() > 0)
  {
    try
    {
      con = DatabaseFactory.getInstance().getConnection();
      statement = con.prepareStatement("DELETE FROM items WHERE item_id IN (?)");
      statement.setString(1, itemsToDelete.toString());
      statement.execute();

      DbUtils.closeQuietly(statement);

      statement = con.prepareStatement("DELETE FROM items_delayed WHERE item_id IN (?)");
      statement.setString(1, itemsToDelete.toString());
      statement.execute();
    }
    catch(SQLException e)
    {
      _log.error("Error while global remove items:", e);
    }
    finally
    {
      DbUtils.closeQuietly(con, statement);
    }
  }
}

Depois

public interface IItemsDAO extends DAO {
    @Query("WITH ids AS (SELECT item_id FROM items_to_delete) DELETE i, id, ide FROM items i JOIN items_delayed id ON i.item_id = id.item_id JOIN items_to_delete ide ON i.item_id = ide.item_id WHERE  i.item_id IN (SELECT item_id FROM ids)")
    int deleteGlobalItemsToRemove();
}

 

Quanto as correções de bugs, poucos bugs foram corrigidos, apenas os que encontrei enquanto implementava alguns dos pontos citados, pois não tenho tanto tempo disponível para testar e corrigir. Então no primeiro momento estou apenas focando nos pontos citados.

 

Ficou interessado e quer ajudar ? 

  • Fiquei
    • Entra em contato comigo pra gente conversar, ou pode fazer um fork do projeto e fazer pull request
  • Fiquei, mas não tenho conhecimento em Java
    • Toda a ajuda é bem vinda, tem muita coisa pra ser testada/corrigida
    • Existem muitos status de items, skills, htmls, xmls para serem corrigidos
    • É tentando que se aprende 🙂

 

 

 

[]'s

Edited by KhayrusS
  • Like 13
  • I love it 2
  • Thanks 1

Share this post


Link to post
Share on other sites

Precisando de Dedicado ou VPS?

Conheça a L2JCenter

Show de Bola @KhayrusS!
A Mobius liberou open source a fonte deles!
Seria interessante mexer com eles, ja que é algo atualizado constantemente e nao deve faltar tantos arquivos como essa da script vazada a anos =D

  • Like 1

Share this post


Link to post
Share on other sites
Em 04/03/2019 at 00:20, Dwbryel disse:

Show de Bola @KhayrusS!
A Mobius liberou open source a fonte deles!
Seria interessante mexer com eles, ja que é algo atualizado constantemente e nao deve faltar tantos arquivos como essa da script vazada a anos =D

Há alguns dias venho analisando o código da Mobius. Embora ainda não seja de certeza, estou atualizando aos poucos com  base do gameserver com a versão 7 signs

  • Like 1

Share this post


Link to post
Share on other sites
3 horas atrás, KhayrusS disse:

Obrigado mano ! 

Baixando aqui para testes :)

qualquer erro posto aqui 

 

seria possível postar um backup limpo fazendo o favor manin ?

to tentando estalar o Mysql aqui ta osso ! :S

Edited by SaYmOn Cordeiro
ajuste

Share this post


Link to post
Share on other sites
5 horas atrás, SaYmOn Cordeiro disse:

seria possível postar um backup limpo fazendo o favor manin ?

to tentando estalar o Mysql aqui ta osso ! :S

Opa, fala qual o problema que está acontecendo, assim posso te ajudar

  • Confused 1

Share this post


Link to post
Share on other sites
4 horas atrás, lineage2MasterGame disse:

estou com o seguinte erro 

Aparentemente o Driver do Mysql não suporta o Timezone configurado no Windows

no arquivo database.properties adiciona o timezone na url de conexão:

jdbcUrl= jdbc:mysql://localhost:3306/l2jdb?useUnicode=true&characterEncoding=utf-8&systemTimezone=UTC

ou

jdbcUrl= jdbc:mysql://localhost:3306/l2jdb?useUnicode=true&characterEncoding=utf-8&serverTimeZone=UTC

Share this post


Link to post
Share on other sites
9 horas atrás, KhayrusS disse:

Opa, fala qual o problema que está acontecendo, assim posso te ajudar

tipo assim manin, essa versão mais nova do mysql precisa baixar um instalador.

contendo nele vários programas, ate ai tudo bem !

so que na hora de configurar ele que nem o 5.0 5.5 e totalmente diferente, acaba eu fazendo merda e o navicat não reconhece ! 😞

Share this post


Link to post
Share on other sites

posta como configurou o Mysql e o Navicat.

Lembrando que o Navicat é apenas um utilitário que serve para facilitar a manipulação do DB, mas existem outras alternativa Grátis como é o caso do Mysql Workbanch

  • I love it 1
  • Thanks 1

Share this post


Link to post
Share on other sites
58 minutos atrás, KhayrusS disse:

posta como configurou o Mysql e o Navicat.

Lembrando que o Navicat é apenas um utilitário que serve para facilitar a manipulação do DB, mas existem outras alternativa Grátis como é o caso do Mysql Workbanch

Blz manin, assim que chegar do trabalho posto para tu ver !

 

Share this post


Link to post
Share on other sites
5 horas atrás, KhayrusS disse:

Aparentemente o Driver do Mysql não suporta o Timezone configurado no Windows

no arquivo database.properties adiciona o timezone na url de conexão:

jdbcUrl= jdbc:mysql://localhost:3306/l2jdb?useUnicode=true&characterEncoding=utf-8&systemTimezone=UTC

ou

jdbcUrl= jdbc:mysql://localhost:3306/l2jdb?useUnicode=true&characterEncoding=utf-8&serverTimeZone=UTC

eu adicionei , os erros diminuiram so que aparece isso aqui

 

wa3FULY.png

Share this post


Link to post
Share on other sites
31 minutos atrás, lineage2MasterGame disse:

eu adicionei , os erros diminuiram so que aparece isso aqui

Você abriu com algum editor de texto que inseriu alguns caracteres estranhos após o "mysql" e após a porta 🙂

Se copiou a linha que coloquei aqui pode ter sido durante a cópia, tenta digitar.

 

20 minutos atrás, JyhaD disse:

Queria saber uma coisa: essa versão é a classic 2.8?

Isso, mas ainda está em progresso 🙂

Share this post


Link to post
Share on other sites
1 minuto atrás, KhayrusS disse:

Você abriu com algum editor de texto que inseriu alguns caracteres estranhos após o "mysql" e após a porta 🙂

Se copiou a linha que coloquei aqui pode ter sido durante a cópia, tenta digitar.

 

 

eu abri com notepad++ e no arquivo ta normal conforme a linha que voce me mandou , poderia me dar uma ajudinha aqui por favor se não for encomodo!

e as 2 linhas que voce me mandou sao iguais kkk 

6 horas atrás, KhayrusS disse:

Aparentemente o Driver do Mysql não suporta o Timezone configurado no Windows

no arquivo database.properties adiciona o timezone na url de conexão:

jdbcUrl= jdbc:mysql://localhost:3306/l2jdb?useUnicode=true&characterEncoding=utf-8&systemTimezone=UTC

ou

jdbcUrl= jdbc:mysql://localhost:3306/l2jdb?useUnicode=true&characterEncoding=utf-8&serverTimeZone=UTC

Voce falou pra mim tentar uma das 2 linhas , mais as duas sao iguais rsrs

Share this post


Link to post
Share on other sites
4 minutos atrás, KhayrusS disse:

Na mensagem do erro você pode ver que tem alguns caracteres estranhos  Ver se a codificação do notepad++ está em UTF-8

entao ele ja esta em UTF-8 e não tem caracteres a mais no arquivo olha , so da isso no start login server quando ligo

 

Ntv2d4g.png

Share this post


Link to post
Share on other sites




     



×
×
  • Create New...