Secret Experience

Secret Experience (https://secretexperience.net/index.php)
-   [Lineage] Java Mods (https://secretexperience.net/forumdisplay.php?f=636)
-   -   Java Core - Modificações (https://secretexperience.net/showthread.php?t=12366)

AnthonyNichols~ 01-09-2009 07:58 PM

Java Core - Modificações
 
O que nós precisamos:

Eclipse Classic 3.4.2 (152MB) - [Somente Usuários Registrados Podem Visualizar os Links Desta PáginaClique aqui para se Registrar]


Aplicando os patches:


• Em primeiro lugar, precisamos saber o que é um Patch. Um patch é arquivo de texto simples que contém dados sobre as diferenças entre duas versões do mesmo arquivo.

• Como aplicar o patch para o nosso código fonte?

- Abra seu Eclipse
- Vá para o marcador Project Explorer
- Se você não veja o mesmo , vá em: Window -> Show View -> Project Explorer
- Clique com botão direito em sua origem, clique em Equipe e depois aplly Patch
- Assim como nesta tela:

[Somente Usuários Registrados Podem Visualizar os Links Desta PáginaClique aqui para se Registrar]


- Em seguida, coloquea localização do patch e pressione Concluir

• Mas em algum momento nosso patch pode não corresponder à sua versão actual fonte. Então o que devemos fazer? Devemos adicioná-lo manualmente.

• Como ler as alterações do patch? É simples, aqui está o código de exemplo:

Código:

Index: C:/workspace/L2_GameServer/java/net/sf/l2j/Config.java
===================================================================
--- C:/workspace/L2_GameServer/java/net/sf/l2j/Config.java        (revision 3148)
+++ C:/workspace/L2_GameServer/java/net/sf/l2j/Config.java        (working copy)
@@ -507,8 +507,21 @@
-        public static boolean CUSTOM_TELEPORT_TABLE;
-        public static boolean CUSTOM_DROPLIST_TABLE;
-        public static boolean CUSTOM_MERCHANT_TABLES;

+        public static boolean CHARTITLESTART;
+        public static String CHARTITLE;

• E agora eu vou explicar isso:

Código:

Index: C:/workspace/L2_GameServer/java/net/sf/l2j/Config.java

- Esta é a informação sobre qual arquivo foi modificado. Neste caso Config.java Assim, devemos abrir este arquivo.

Código:

(revision 3148)

- Revisão para que o patch foi criado

Código:

@@ -507,8 +507,21 @@
- Linhas que devem ser editadas

Código:

-        public static boolean CUSTOM_TELEPORT_TABLE;
-  public static boolean CUSTOM_DROPLIST_TABLE;
-        public static boolean CUSTOM_MERCHANT_TABLES;

- Menos significa que devemos excluir essas linhas.

Código:

+  public static boolean CHARTITLESTART;
+  public static String CHARTITLE;


- Mais significa que devemos adicionar estas linhas.

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Principais Configurações


• Antes de tudo, antes de adicionar novas Propriedades do arquivo devemos saber como adicionar novas opções de configuração já existente. Arquivos de propriedades.

• Por exemplo, vamos criar uma nova opção de configuração permitirá (ou não) ir automaticamente para o level 75 todos os novos characters

- Em primeiro lugar, você deve abrir Config.java , arquivo situa-se em: (Java \ net \ sf \ l2j) pasta.

- Olhe onde a Class Config começa, você deve olhar que:

Código:

public final class Config
{

                protected static final Logger _log = Logger.getLogger(Config.class.getName());
 ...etc

- Nossa configuração permitirá ou não (True or False), de modo que deve registrar novo boolean

- Nós o chamamos: ALLOW_CREATE_LVL;

- Então você deve adicionar essa linha:

Código:

public static boolean ALLOW_CREATE_LVL;
- Vamos adicioná-lo no início desta classe. Assim deve ficar:

Código:

public final class Config
{
        // Custom Starting Level
        public static boolean ALLOW_CREATE_LVL;
 
        protected static final Logger _log = Logger.getLogger(Config.class.getName());

        ...etc

• É simples. Ok , o passo seguinte é:

- Agora vamos acrescentar esta configuração, por exemplo, em Other.properties assim Você deve encontrar isso:

Código:

                        // other
                        try
                        {
                                Properties otherSettings        = new Properties();
                                InputStream is                          = new FileInputStream(new File(OTHER_CONFIG_FILE));
                                otherSettings.load(is);
                                is.close();

                                DEEPBLUE_DROP_RULES=Boolean.parseBoolean(otherSettings.getProperty("UseDeepBlueDropRules","True"));                                                                                                                                                                 
 ...etc


- Aqui podemos acrescentar coisas que pertencem à configuração (neste caso Other.properties)

- Agora você deve adicionar essa linha:

Código:

ALLOW_CREATE_LVL = Boolean.parseBoolean(otherSettings.getProperty("CostumStartLvl", "False"));
- Você deve se lembrar de incluir o nome do arquivo de propriedades. Neste código foi marcado cor vermelha

- Deve ficar assim:

Código:

                  // other
                        try
                        {
                                Properties otherSettings        = new Properties();
                                InputStream is                          = new FileInputStream(new File(OTHER_CONFIG_FILE));
                                otherSettings.load(is);
                                is.close();
                       
                          ALLOW_CREATE_LVL = Boolean.parseBoolean(otherSettings.getProperty("CostumStartLvl", "False"));

                                DEEPBLUE_DROP_RULES = Boolean.parseBoolean(otherSettings.getProperty("UseDeepBlueDropRules", "True"));

                  ... etc

Agora de uma olhada ( é uma parte desta linha ) :

Código:

("CostumStartLvl", "False"));
- Então, agora você tem que adicionar a opção de configuração em Other.properties e ele deve ter esta aparência:

CostumStartLvl = False

- Este é um exemplo. Você pode colocar como quiser. (Neste caso, False é o padrão)

- Agora você deve abrir CharacterCreate.java arquivo e adicionar algumas linhas de código:

- Encontre estas linhas:

Código:

        // cSdddddddddddd
        private String _name;
        private int _race;
        private byte _sex;
        private int _classId;
        private int _int;
        private int _str;
        private int _con;
        private int _men;
        private int _dex;
        private int _wit;
        private byte _hairStyle;
        private byte _hairColor;
        private byte _face;


- E adicionar uma nova entrada sobre a experiência

Código:

private long _exp;

- Agora temos que definir _exp; (neste caso, quantidade de experiência para o nível 75)

- Encontre estas linhas:

Código:

        @Override
        protected void readImpl()
        {
                _name          = readS();
                _race          = readD();
                _sex          = (byte)readD();
                _classId  = readD();
                _int          = readD();
                _str          = readD();
                _con          = readD();
                _men          = readD();
                _dex          = readD();
                _wit          = readD();
                _hairStyle = (byte)readD();
                _hairColor = (byte)readD();
                _face          = (byte)readD();

- E adicionar isto:

Código:

          _exp          = 804219972;
  }

- 804219972 é a quantidade de experiencia nescessária para o level 75;

- Ok agora encontrar estas linhas:

Código:

                newChar.setXYZInvisible(template.spawnX, template.spawnY, template.spawnZ);
- E adicionar isto:

Código:

          if(Config.ALLOW_CREATE_LVL)
          {
                newChar.removeExpAndSp(newChar.getExp(), 0);
                newChar.addExpAndSp(_exp, 0);
          }

- OK , agora vou explicar como funciona:

Código:

f(Config.ALLOW_CREATE_LVL)

- Significa que irá se checar se a config vai permitir a criação de nível (deve ser apenas executado pelo código)

- Então, se a config permitir (TRUE) ele vai adicionar instant level 75 para cada novo personagem. É simples, certo?

----------------------------------------------------------------------------------------------------------------------------


Novo arquivo de configuração:

Ok, Você deve saber como adicionar a nova opção de configuração , propriedades de arquivos etc Então agora eu vou mostrar como criar novas propriedades do arquivo. Por exemplo: TryZ.properties


- Ok, em primeiro lugar, vamos criar novas propriedades chamado TryZ.java (este é o exemplo) em java / configfolder.

- Agora abra o arquivo Config.java. Ok, em primeiro lugar vamos registrar nossa nova config, encontre estas linhas:

Código:

        //--------------------------------------------------
        // L2J Property File Definitions
        //--------------------------------------------------
        public static final String CHARACTER_CONFIG_FILE = "./config/Character.properties";
        public static final String EXTENSIONS_CONFIG_FILE = "./config/extensions.properties";
        public static final String FEATURE_CONFIG_FILE = "./config/Feature.properties";
        public static final String FORTSIEGE_CONFIGURATION_FILE = "./config/fortsiege.properties";
        public static final String GENERAL_CONFIG_FILE = "./config/General.properties";
        public static final String HEXID_FILE = "./config/hexid.txt";
        public static final String ID_CONFIG_FILE = "./config/idfactory.properties";
        public static final String SERVER_VERSION_FILE = "./config/l2j-version.properties";
        public static final String DATAPACK_VERSION_FILE = "./config/l2jdp-version.properties";
        public static final String L2JMOD_CONFIG_FILE = "./config/l2jmods.properties";
        public static final String LOGIN_CONFIGURATION_FILE = "./config/loginserver.properties";
        public static final String NPC_CONFIG_FILE = "./config/NPC.properties";
        public static final String PVP_CONFIG_FILE = "./config/pvp.properties";
        public static final String RATES_CONFIG_FILE = "./config/rates.properties";
        public static final String CONFIGURATION_FILE = "./config/server.properties";
        public static final String SIEGE_CONFIGURATION_FILE = "./config/siege.properties";
        public static final String TELNET_FILE = "./config/telnet.properties";
        public static final String FLOOD_PROTECTOR_FILE = "./config/floodprotector.properties";
        public static final String MMO_CONFIG_FILE = "./config/mmo.properties";

- E vamos adicionar isto:

Código:

public static final String TryZ_CONFIG_FILE = "./config/TryZ.properties";

- Ok, nosso arquivo de configuração já está registrado agora. Agora devemos acrescentar algumas coisas na parte que inicializa todas as variáveis globais para a configuração.

- Encontre estas linhas:

Código:

                                }
                                catch (Exception e)
                                {
                                        e.printStackTrace();
                                        throw new Error("Failed to Load "+L2JMOD_CONFIG_FILE+" File.");
                                }

e sobre eles cole isso:

Código:

                        // Load PvP Properties file (if exists)
                        try
                        {
                          Properties TryZSettings = new Properties();
                          is = new FileInputStream(new File(TryZ_CONFIG_FILE));
                          TryZSettings.load(is);

                                                          /** Here You can put Your configs (look at "Your Own Config") This is sample:

                                                                ALLOW_CREATE_LVL = Boolean.parseBoolean(TryZSettings.getProperty("CostumStartLvl", "False"));

                                                                  */

                                                         

                        }
                        catch (Exception e)
                        {
                          e.printStackTrace();
                          throw new Error("Failed to Load " + TryZ_CONFIGURATION_FILE + " File.");
                        }

• Feito, agora seu arquivo personalizado de configuração foi criado! Mas as linhas marcadas em verde são apenas como exemplo!

---------------------------------------------------------------------------------------------------------------------

Inovando os enchants:

Geralmente, um enchant bem sucedido nos dá +1 nos itens. Como mudar isso? é otimo para servidores de PVP que tem um enchant max ALTO.

- Abra esta pasta: \ Java \ net sf \ \ l2j \ gameserver \ clientpackets

- Agora, localize o arquivo: RequestEnchantItem.java

- Encontre estas linhas:

Código:

                                else
                                {
                                        sm = new SystemMessage(SystemMessageId.S1_S2_SUCCESSFULLY_ENCHANTED);
                                        sm.addNumber(item.getEnchantLevel());
                                        sm.addItemName(item.getItemId());
                                        activeChar.sendPacket(sm);
                                }
                                item.setEnchantLevel(item.getEnchantLevel()+1);
                                item.updateDatabase();
                        }
                }

- Agora apenas modifique esta linha:

Código:

item.setEnchantLevel(item.getEnchantLevel()+1);

- Salve este arquivo e é isso! Agora compile seu servidor. E Pronto.

---------------------------------------------------------------------------------------------------------------------

Novos Comandos:

• Primeiro você tem que saber alguma coisa sobre comandos em L2J:

Mas você tem que saber os seus contras (Você tem que editar osystem) Assim a melhor maneira é criar um comando como. Comando

• Você pode criar esses comandos, as básicas são:

- Voicedcommandhandlers (Comandos para todos)
- Admincommandhandlers (Comandos para Admins / Gm 's)

• Se você quer criar novo comando (por exemplo voicedcommand, Você tem que criar novos arquivos java chamado como seu comando. Por exemplo, se o comando for: Online, o seu novo arquivo java deve ser chamado online.java)

• Então você tem que registrar o seu novo comando. Mas lembre-se que nas versões mais recentes dos emuladores L2J foi transferido para DataPack, então você tem que adicioná-los em data / scripts / handlers / e registrá-los em arquivo MasterHandlers . Mas se você estiver usando por exemplo client Interlude, Você tem que adicioná-los no core (e, em seguida, compilação) e também registrá-los no core.

---------------------------------------------------------------------------------------------------------------------

Códigos de documentação

• Ok, acho que você tem que saber algumas coisas sobre o código de documentação

• E agora pouco uma explicação sobre os comentários (distingue dois tipos de comentários)

- Em primeiro lugar, estendendo-se para uma linha:

Código:

// Custom Starting Level



- Em segundo lugar, estendendo-se sobre uma linha:

Código:

/** Custom
Starting
Level */


• Outra coisa ESSENCIAL:

- Você tem que saber sobre uma ferramenta útil chamado javadoc. Esta ferramenta ler os comentários do código, resultado do programa é um arquivo no formato HTML

- Também você pode colocar em seu arquivo html java (para javadoc) Seu html para javadoc deve ser contido assim:

Código:

/**
 * <ol>
 * <li>Something
 * <li>Again
 * <li>Once Again
 * </ol>
 */

• Agora vamos dar uma olhada para "documentario tags" Por exemplo:

@ version - Informações sobre a versão
@ autor - informações sobre o autor
@ param - parâmetro desctription

• Provavelmente você já viu quando alguém usa algo parecido com isso no início do código:

Código:

/**
 *
 * @author TryZ
 *
 */



@Créditos: Matim [Tutorial]
Tryz [Tradução e post]


obs: Nao vi nenhum tutorial em relação a isso aqui no forum , caso ja tenha , perdão .

Por favor agradece ai se o tutorial serviu de alguma coisa pra vocês :D

Misho 01-09-2009 08:09 PM

Perfeito,me ajudando muito nas minhas compilaçoes,rou preparando aos poucos uma revo pro SE e esta me ajudando muito,antes nao tinha acessoa essa area,hoje nao sei por que consigo acesasr,vou ver tudo que posso,vai que foi erro e jaja me blokeia..

porem ta perfeito, vou postar algumas coisas javas que tbem peguei na net aqui na SE, como correçoes das AI de alguns bosses, quest etc..

AnthonyNichols~ 01-09-2009 08:11 PM

Misho , eu acho que nao é erro do forum não amigo , pois eu desde quando tenho 1 post , e era iniciante aqui no forum , tenho acesso a essa área , e você que tem 250+ posts não tem? acho que era erro do forum em relação a você NAO poder acessar.. :P sei la ne kkk

Misho 01-09-2009 08:21 PM

Putz mano agora que vi ta na area de tutorial mesmo kkk

acho que tem a area de acesso restrito a alguns membros com codigos java,mas acho que sao apenas pro pessoal que ajuda of orum e talz...

Misho 02-09-2009 11:28 PM

Uma coisa que fico perdido as vezes e o seguinte:

tenho esse Codigo que vc uso como exemplo:

Código:

ndex: /Trunk/L2_GameServer/java/config/secretwarez.properties
===================================================================
--- /Trunk/L2_GameServer/java/config/secretwarez.properties (revision 37)
+++ /Trunk/L2_GameServer/java/config/secretwarez.properties (revision 38)
@@ -121,2 +121,9 @@
 # UseDefaultSystem need to be False!
 UseCostumSystem = False
+
+#---------------------------------------------------------------
+# Character settings                                          -
+#---------------------------------------------------------------
+# Allow costum starting lvl False by default
+# lvl 85 and 100% instantly
+CostumStartLvl = False
Index: /Trunk/L2_GameServer/java/net/sf/l2j/Config.java
===================================================================
--- /Trunk/L2_GameServer/java/net/sf/l2j/Config.java (revision 37)
+++ /Trunk/L2_GameServer/java/net/sf/l2j/Config.java (revision 38)
@@ -704,4 +704,5 @@
        public static boolean DEFAULT_PK_SYSTEM;
        public static boolean COSTUM_PK_SYSTEM;
+        public static boolean ALLOW_CREATE_LVL;
       
        //--------------------------------------------------
@@ -1383,4 +1384,5 @@
                                        DEFAULT_PK_SYSTEM = Boolean.parseBoolean(secretwarez.getProperty("UseDefaultSystem", "True"));
                                        COSTUM_PK_SYSTEM = Boolean.parseBoolean(secretwarez.getProperty("UseCostumSystem", "False"));
+                                        ALLOW_CREATE_LVL = Boolean.parseBoolean(secretwarez.getProperty("CostumStartLvl", "False"));
                                }
                                catch (Exception e)
Index: /Trunk/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/CharacterCreate.java
===================================================================
--- /Trunk/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/CharacterCreate.java (revision 7)
+++ /Trunk/L2_GameServer/java/net/sf/l2j/gameserver/network/clientpackets/CharacterCreate.java (revision 38)
@@ -67,4 +67,5 @@
        private byte _hairColor;
        private byte _face;
+        private long _exp;


No caso como saber onde por o inicio do codigo no arquivo java?

No caso essa linha

Código:

@@ -704,4 +704,5 @@
        public static boolean DEFAULT_PK_SYSTEM;
        public static boolean COSTUM_PK_SYSTEM;
+        public static boolean ALLOW_CREATE_LVL;

Como saber onde entra no Arquivo java?

Código:

* This program is free software: you can redistribute it and/or modify it under
 * the terms of the GNU General Public License as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option) any later
 * version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
 * details.
 *
 * You should have received a copy of the GNU General Public License along with
 * this program. If not, see <http://www.gnu.org/licenses/>.
 */
package net.sf.l2j;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.logging.Logger;

import javolution.util.FastList;
import javolution.util.FastMap;
import net.sf.l2j.gameserver.util.FloodProtectorConfig;
import net.sf.l2j.gameserver.util.StringUtil;

public final class Config
{
        protected static final Logger _log = Logger.getLogger(Config.class.getName());

Muitas vezes pego alguns codigos e nao sei onde comecar add a linha,como descobrir isso?

igual esse que vc postou,seguindo pelo meus eu nao saberia onde iniciar pra add ele..?

Nota se que em uma parte no inicio esta assim:

[CODE]
Código:

ndex: /Trunk/L2_GameServer/java/config/secretwarez.properties
===================================================================
--- /Trunk/L2_GameServer/java/config/secretwarez.properties (revision 37)
+++ /Trunk/L2_GameServer/java/config/secretwarez.properties (revision 38)

onde esta secretwarez estava com outro nome de 1 forum, porem onde achar esse local correto?

Sparatizo 28-09-2009 10:49 AM

Galera , alguem poderiia me dizer onde fica localizadoo a pasta do Java para eu poder fazer algumas coisas..:wubclub:

CavaleiroNegro 29-09-2009 12:49 AM

Citação:

GameServer/java/net/sf/l2j/
Depende de qual projeto vc esta trabalhando procure dentro da pasta gameserver no eclipse concerteza encontrara a pasta java la.

{João P.} 22-10-2009 06:35 PM

acha que vou faer isso na boa deve dar certo néeh =D

guytisl2 04-11-2009 04:23 AM

Muchas gracias, la verdad que este foro es exelente por la cantidad de aportes :)
Saludos!!!

christiand 07-07-2010 05:43 PM

Muito bem explicado, parabéns!
Agora que tem aqui explicado o q fazer, mesmo não conseguinto colocar uma path no servidor de preferencia, é so seguir o que cada código dentro do arquivo .path faz e fazer na mão.

PARABÉNS...


Horários baseados na GMT -3. Agora são 10:26 PM.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.