Ir para conteúdo
  • Cadastre-se
Entre para seguir isso  
KhayrusS

Classic (Zaken)

Posts recomendados

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.

GITHUB

Requisitos

  • Java 11
  • Mysql 8

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 11 (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

Editado por KhayrusS
  • Gostei 7
  • Amei 2
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros 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

  • Gostei 1

Compartilhar este post


Link para o post
Compartilhar em outros 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

  • Gostei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Entre para seguir isso  

  • Mudanças no Login

    Preste atenção às mudanças no método de login.

    Com a migração para nomes de usuário IPB4 não existe mais.

    Você deve usar seu nome de exibição ou email em vez de nome de usuário.




     



  • Quem Está Navegando

    Nenhum usuário registrado visualizando esta página.

  • Posts

    • L2JFROZEN-1132 Não consigo colocar essa flagzone já tentei de várias formas, só consegui colocar uma pequena parte, muito pequena mesmo. Alguém me ajuda.. O lugar que eu quero colocar flag é Valley of the Lords <!-- Area PVP Zone -->     <zone id='9999' type='FlagZone' shape='NPoly' minZ='-1750' maxZ='-1049'>           <node X="13962" Y="-120492" />           <node X="16534" Y="-132593" />           <node X="21955" Y="-133760" />           <node X="24727" Y="-129213" />           <node X="36718" Y="-119645" />           <node X="35583" Y="-117613" />         </zone>
    • Alguém poderia disponibilizar essas tatoos para mim por favor? para cronica Freya. Tattoo of Power - 10% P.Atk Tattoo of Fire - 10% M.Def Tattoo of Resolve - 10% Speed Tattoo of Flame - 10% M.atk Tattoo of Bravery - 5% Critical Rate Tattoo of Absolute - 5% HP Tattoo of Soul - 10% Atk Speed Tattoo of Avadon - 10% Caste Speed Tattoo of Doom - 10% P.def Tattoo of Divine - 10% Critical Atk
    • BUENOS DIAS ME PUEDEN AYUDAR PORFAVOR  ,COMO TENGO QUE CREAR ESTA TABLE EN NAVICAT  LES DEJO LA INFORMACION CREATE TABLE `subclass_list` (   `player_id` varchar(40) NOT NULL,   `currentsub` int(3) NOT NULL DEFAULT '0',   `sub_index` int(3) NOT NULL DEFAULT '0',   `subclassid0` int(3) NOT NULL DEFAULT '-1',   `subclassid1` int(3) NOT NULL DEFAULT '-1',   `subclassid2` int(3) NOT NULL DEFAULT '-1',   `subclassid3` int(3) NOT NULL DEFAULT '-1' ) ENGINE=MyISAM DEFAULT CHARSET=latin1;  
    • resolvido.
×
×
  • Criar Novo...