U3Games

Games | Desarrollo & Soporte => L2 | Sección de Servidores => Lineage => L2 | Implementaciones => Mensaje iniciado por: Swarlog en Jul 25, 2025, 11:33 PM

Título: PvP Title Color Change System
Publicado por: Swarlog en Jul 25, 2025, 11:33 PM
Index: /java/config/l2jmods.properties
===================================================================
--- /java/config/l2jmods.properties (revision 174)
+++ /java/config/l2jmods.properties (working copy)
@@ -161,4 +161,62 @@
 #----------------------------------
 EnableWarehouseSortingClan = False
 EnableWarehouseSortingPrivate = False
-EnableWarehouseSortingFreight = False
\ No newline at end of file
+EnableWarehouseSortingFreight = False
+
+# ---------------------------------------
+# Section: PvP Title Color Change System by Level
+# ---------------------------------------
+# Each Amount will change the name color to the values defined here.
+# Example: PvpAmmount1 = 500, when a character's PvP counter reaches 500, their name color will change
+# according to the ColorForAmount value.
+# Note: Colors Must Use RBG format
+EnablePvPColorSystem = false
+
+# Pvp Amount & Name color level 1.
+PvpAmount1 = 500
+ColorForAmount1 = CCFF00
+
+# Pvp Amount & Name color level 2.
+PvpAmount2 = 1000
+ColorForAmount2 = 00FF00
+
+# Pvp Amount & Name color level 3.
+PvpAmount3 = 1500
+ColorForAmount3 = 00FF00
+
+# Pvp Amount & Name color level 4.
+PvpAmount4 = 2500
+ColorForAmount4 = 00FF00
+
+# Pvp Amount & Name color level 5.
+PvpAmount5 = 5000
+ColorForAmount5 = 00FF00
+
+# ---------------------------------------
+# Section: PvP Nick Color System by Level
+# ---------------------------------------
+# Same as above, with the difference that the PK counter changes the title color.
+# Example:  PkAmmount1 = 500, when a character's PK counter reaches 500, their title color will change
+# according to the Title For Amount
+# WAN: Colors Must Use RBG format
+EnablePkColorSystem = false
+
+# Pk Amount & Title color level 1.
+PkAmount1 = 500
+TitleForAmount1 = 00FF00
+
+# Pk Amount & Title color level 2.
+PkAmount2 = 1000
+TitleForAmount2 = 00FF00
+
+# Pk Amount & Title color level 3.
+PkAmount3 = 1500
+TitleForAmount3 = 00FF00
+
+# Pk Amount & Title color level 4.
+PkAmount4 = 2500
+TitleForAmount4 = 00FF00
+
+# Pk Amount & Title color level 5.
+PkAmount5 = 5000
+TitleForAmount5 = 00FF00
\ No newline at end of file
Index: /java/net/sf/l2j/Config.java
===================================================================
--- /java/net/sf/l2j/Config.java (revision 174)
+++ /java/net/sf/l2j/Config.java (working copy)
@@ -544,6 +546,28 @@
     public static boolean L2JMOD_ENABLE_WAREHOUSESORTING_CLAN;
     public static boolean L2JMOD_ENABLE_WAREHOUSESORTING_PRIVATE;
     public static boolean L2JMOD_ENABLE_WAREHOUSESORTING_FREIGHT;
+ public static boolean PVP_COLOR_SYSTEM_ENABLED;
+ public static int PVP_AMOUNT1;
+ public static int PVP_AMOUNT2;
+ public static int PVP_AMOUNT3;
+ public static int PVP_AMOUNT4;
+ public static int PVP_AMOUNT5;
+ public static int NAME_COLOR_FOR_PVP_AMOUNT1;
+ public static int NAME_COLOR_FOR_PVP_AMOUNT2;
+ public static int NAME_COLOR_FOR_PVP_AMOUNT3;
+ public static int NAME_COLOR_FOR_PVP_AMOUNT4;
+ public static int NAME_COLOR_FOR_PVP_AMOUNT5;
+ public static boolean PK_COLOR_SYSTEM_ENABLED;
+ public static int PK_AMOUNT1;
+ public static int PK_AMOUNT2;
+ public static int PK_AMOUNT3;
+ public static int PK_AMOUNT4;
+ public static int PK_AMOUNT5;
+ public static int TITLE_COLOR_FOR_PK_AMOUNT1;
+ public static int TITLE_COLOR_FOR_PK_AMOUNT2;
+ public static int TITLE_COLOR_FOR_PK_AMOUNT3;
+ public static int TITLE_COLOR_FOR_PK_AMOUNT4;
+ public static int TITLE_COLOR_FOR_PK_AMOUNT5;
     
     /** ************************************************** **/
  /** L2JMods Settings -End                              **/
@@ -1654,6 +1678,34 @@
                 L2JMOD_ENABLE_WAREHOUSESORTING_CLAN     = Boolean.valueOf(L2JModSettings.getProperty("EnableWarehouseSortingClan", "False"));
                 L2JMOD_ENABLE_WAREHOUSESORTING_PRIVATE  = Boolean.valueOf(L2JModSettings.getProperty("EnableWarehouseSortingPrivate", "False"));
                 L2JMOD_ENABLE_WAREHOUSESORTING_FREIGHT  = Boolean.valueOf(L2JModSettings.getProperty("EnableWarehouseSortingFreight", "False"));
+               
+    // PVP Name Color System configs - Start
+    PVP_COLOR_SYSTEM_ENABLED = Boolean.parseBoolean(L2JModSettings.getProperty("EnablePvPColorSystem", "false"));
+    PVP_AMOUNT1 = Integer.parseInt(L2JModSettings.getProperty("PvpAmount1", "500"));
+    PVP_AMOUNT2 = Integer.parseInt(L2JModSettings.getProperty("PvpAmount2", "1000"));
+    PVP_AMOUNT3 = Integer.parseInt(L2JModSettings.getProperty("PvpAmount3", "1500"));
+    PVP_AMOUNT4 = Integer.parseInt(L2JModSettings.getProperty("PvpAmount4", "2500"));
+    PVP_AMOUNT5 = Integer.parseInt(L2JModSettings.getProperty("PvpAmount5", "5000"));
+    NAME_COLOR_FOR_PVP_AMOUNT1 = Integer.decode("0x" + L2JModSettings.getProperty("ColorForAmount1", "00FF00"));
+    NAME_COLOR_FOR_PVP_AMOUNT2 = Integer.decode("0x" + L2JModSettings.getProperty("ColorForAmount2", "00FF00"));
+    NAME_COLOR_FOR_PVP_AMOUNT3 = Integer.decode("0x" + L2JModSettings.getProperty("ColorForAmount3", "00FF00"));
+    NAME_COLOR_FOR_PVP_AMOUNT4 = Integer.decode("0x" + L2JModSettings.getProperty("ColorForAmount4", "00FF00"));
+    NAME_COLOR_FOR_PVP_AMOUNT5 = Integer.decode("0x" + L2JModSettings.getProperty("ColorForAmount4", "00FF00"));
+    // PvP Name Color System configs - End
+   
+    // PK Title Color System configs - Start
+    PK_COLOR_SYSTEM_ENABLED = Boolean.parseBoolean(L2JModSettings.getProperty("EnablePkColorSystem", "false"));
+    PK_AMOUNT1 = Integer.parseInt(L2JModSettings.getProperty("PkAmount1", "500"));
+    PK_AMOUNT2 = Integer.parseInt(L2JModSettings.getProperty("PkAmount2", "1000"));
+    PK_AMOUNT3 = Integer.parseInt(L2JModSettings.getProperty("PkAmount3", "1500"));
+    PK_AMOUNT4 = Integer.parseInt(L2JModSettings.getProperty("PkAmount4", "2500"));
+    PK_AMOUNT5 = Integer.parseInt(L2JModSettings.getProperty("PkAmount5", "5000"));
+    TITLE_COLOR_FOR_PK_AMOUNT1 = Integer.decode("0x" + L2JModSettings.getProperty("TitleForAmount1", "00FF00"));
+    TITLE_COLOR_FOR_PK_AMOUNT2 = Integer.decode("0x" + L2JModSettings.getProperty("TitleForAmount2", "00FF00"));
+    TITLE_COLOR_FOR_PK_AMOUNT3 = Integer.decode("0x" + L2JModSettings.getProperty("TitleForAmount3", "00FF00"));
+    TITLE_COLOR_FOR_PK_AMOUNT4 = Integer.decode("0x" + L2JModSettings.getProperty("TitleForAmount4", "00FF00"));
+    TITLE_COLOR_FOR_PK_AMOUNT5 = Integer.decode("0x" + L2JModSettings.getProperty("TitleForAmount5", "00FF00"));
+    //PK Title Color System configs - End
 
                 if (TVT_EVENT_PARTICIPATION_NPC_ID == 0)
                 {
Index: /java/net/sf/l2j/gameserver/clientpackets/EnterWorld.java
===================================================================
--- /java/net/sf/l2j/gameserver/clientpackets/EnterWorld.java (revision 174)
+++ /java/net/sf/l2j/gameserver/clientpackets/EnterWorld.java (working copy)
@@ -177,6 +177,16 @@
         Quest.playerEnter(activeChar);
         activeChar.sendPacket(new QuestList());
         loadTutorial(activeChar);
+
+        // =================================================================================
+        // Color System checks - Start =====================================================
+        // Check if the custom PvP and PK color systems are enabled and if so ==============
+        // check the character's counters and apply any color changes that must be done. ===
+        if (activeChar.getPvpKills()>=(Config.PVP_AMOUNT1) && (Config.PVP_COLOR_SYSTEM_ENABLED)) activeChar.updatePvPColor(activeChar.getPvpKills());
+        if (activeChar.getPkKills()>=(Config.PK_AMOUNT1) && (Config.PK_COLOR_SYSTEM_ENABLED)) activeChar.updatePkColor(activeChar.getPkKills());
+        // Color System checks - End =======================================================
+        // =================================================================================
+       
         
         if (Config.PLAYER_SPAWN_PROTECTION > 0)
             activeChar.setProtection(true);
@@ -3660,7 +3661,75 @@
          DuelManager.getInstance().broadcastToOppositTeam(this, update);
         }
  }
-   
+
+ // Custom PVP Color System - Start
+ public void updatePvPColor(int pvpKillAmount)
+ {
+ if (Config.PVP_COLOR_SYSTEM_ENABLED)
+ {
+ //Check if the character has GM access and if so, let them be.
+ if (isGM())
+ return;
+ {
+ if ((pvpKillAmount >= (Config.PVP_AMOUNT1)) && (pvpKillAmount <= (Config.PVP_AMOUNT2)))
+ {
+ getAppearance().setNameColor(Config.NAME_COLOR_FOR_PVP_AMOUNT1);
+ }
+ else if ((pvpKillAmount >= (Config.PVP_AMOUNT2)) && (pvpKillAmount <= (Config.PVP_AMOUNT3)))
+ {
+ getAppearance().setNameColor(Config.NAME_COLOR_FOR_PVP_AMOUNT2);
+ }
+ else if ((pvpKillAmount >= (Config.PVP_AMOUNT3)) && (pvpKillAmount <= (Config.PVP_AMOUNT4)))
+ {
+ getAppearance().setNameColor(Config.NAME_COLOR_FOR_PVP_AMOUNT3);
+ }
+ else if ((pvpKillAmount >= (Config.PVP_AMOUNT4)) && (pvpKillAmount <= (Config.PVP_AMOUNT5)))
+ {
+ getAppearance().setNameColor(Config.NAME_COLOR_FOR_PVP_AMOUNT4);
+ }
+ else if (pvpKillAmount >= (Config.PVP_AMOUNT5))
+ {
+ getAppearance().setNameColor(Config.NAME_COLOR_FOR_PVP_AMOUNT5);
+ }
+ }
+ }
+ }
+ //Custom PVP Color System - End
+
+ // Custom Pk Color System - Start
+ public void updatePkColor(int pkKillAmount)
+ {
+ if (Config.PK_COLOR_SYSTEM_ENABLED)
+ {
+ //Check if the character has GM access and if so, let them be, like above.
+ if (isGM())
+ return;
+ {
+ if ((pkKillAmount >= (Config.PK_AMOUNT1)) && (pkKillAmount <= (Config.PVP_AMOUNT2)))
+ {
+ getAppearance().setTitleColor(Config.TITLE_COLOR_FOR_PK_AMOUNT1);
+ }
+ else if ((pkKillAmount >= (Config.PK_AMOUNT2)) && (pkKillAmount <= (Config.PVP_AMOUNT3)))
+ {
+ getAppearance().setTitleColor(Config.TITLE_COLOR_FOR_PK_AMOUNT2);
+ }
+ else if ((pkKillAmount >= (Config.PK_AMOUNT3)) && (pkKillAmount <= (Config.PVP_AMOUNT4)))
+ {
+ getAppearance().setTitleColor(Config.TITLE_COLOR_FOR_PK_AMOUNT3);
+ }
+ else if ((pkKillAmount >= (Config.PK_AMOUNT4)) && (pkKillAmount <= (Config.PVP_AMOUNT5)))
+ {
+ getAppearance().setTitleColor(Config.TITLE_COLOR_FOR_PK_AMOUNT4);
+ }
+ else if (pkKillAmount >= (Config.PK_AMOUNT5))
+ {
+ getAppearance().setTitleColor(Config.TITLE_COLOR_FOR_PK_AMOUNT5);
+ }
+ }
+ }
+ }
+ //Custom Pk Color System - End
+
     @Override
     public final void updateEffectIcons(boolean partyOnly)
     {
@@ -4996,6 +5065,10 @@
         // Add karma to attacker and increase its PK counter
         setPvpKills(getPvpKills() + 1);
 
+      //Update the character's name color if they reached any of the 5 PvP levels.
+        updatePvPColor(getPvpKills());
+        broadcastUserInfo();
+
         // Send a Server->Client UserInfo packet to attacker with its Karma and PK Counter
         sendPacket(new UserInfo(this));
     }
@@ -5047,6 +5120,10 @@
         setPkKills(getPkKills() + 1);
         setKarma(getKarma() + newKarma);
 
+        //Update the character's title color if they reached any of the 5 PK levels.
+        updatePkColor(getPkKills());
+        broadcastUserInfo();
+       
         // Send a Server->Client UserInfo packet to attacker with its Karma and PK Counter
         sendPacket(new UserInfo(this));
     }