Jump to content

[Share] Java Sub-Class Weapon Passive Ability Stacking Bug


Kazeno

Recommended Posts

As you may have noticed, this bug works in almost every pack and the only way to avoid it is to add this code in your server's source. I've seen characters having 100.000 HP using this bug, because they can do it over and over again.

 

Index: /java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- /java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java	(revision 1434)
+++ /java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java	(working copy)
@@ -9680,6 +9680,90 @@

public boolean setActiveClass(int classIndex)
    {
+	      L2ItemInstance rhand = getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND);
+	      if (rhand != null)
+	      {
+	         
+	            L2ItemInstance[] unequipped = getInventory().unEquipItemInBodySlotAndRecord(rhand.getItem().getBodyPart());
+	            InventoryUpdate iu = new InventoryUpdate();
+	            for (L2ItemInstance element : unequipped)
+	               iu.addModifiedItem(element);
+	            sendPacket(iu);
+	         
+	      }
+	      
+	      L2ItemInstance lhand = getInventory().getPaperdollItem(Inventory.PAPERDOLL_LHAND);
+	      if (lhand != null)
+	      {
+	         
+	            L2ItemInstance[] unequipped = getInventory().unEquipItemInBodySlotAndRecord(lhand.getItem().getBodyPart());
+	            InventoryUpdate iu = new InventoryUpdate();
+	            for (L2ItemInstance element : unequipped)
+	               iu.addModifiedItem(element);
+	            sendPacket(iu);
+	         
+	      }
        /*
         * 1. Call store() before modifying _classIndex to avoid skill effects rollover.
         * 2. Register the correct _classId against applied 'classIndex'.
         */
        store();

 

After you add this code, compile your pack and the bug will be fixed.

Once this code is added in your source, a character's weapon or shield is automatically unequipped while changing or canceling a sub-class, before the passive ability is stacked.

 

Credits To: Kazeno

Link to comment
Share on other sites

man i want to ask something cause i don't know many things about compile or java

everytime that i use a code i have to compile my pack again? i am asking cause u saying:

After you add this code, compile your pack and the bug will be fixed.

 

Link to comment
Share on other sites

Better => http://www.maxcheaters.com/forum/index.php?topic=41734.0

 

Or Even Better >

 

Index: /java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java

===================================================================

--- /java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 2789)

+++ /java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (working copy)

@@ -9680,6 +9680,90 @@

      */

    public boolean setActiveClass(int classIndex)

    {

+       L2ItemInstance chest = getInventory().getPaperdollItem(Inventory.PAPERDOLL_CHEST);

+       if (chest != null)

+       {

+        

+             L2ItemInstance[] unequipped = getInventory().unEquipItemInBodySlotAndRecord(chest.getItem().getBodyPart());

+             InventoryUpdate iu = new InventoryUpdate();

+             for (L2ItemInstance element : unequipped)

+               iu.addModifiedItem(element);

+             sendPacket(iu);

+        

+       }

+      

+       L2ItemInstance head = getInventory().getPaperdollItem(Inventory.PAPERDOLL_HEAD);

+       if (head != null)

+       {

+        

+             L2ItemInstance[] unequipped = getInventory().unEquipItemInBodySlotAndRecord(head.getItem().getBodyPart());

+             InventoryUpdate iu = new InventoryUpdate();

+             for (L2ItemInstance element : unequipped)

+               iu.addModifiedItem(element);

+             sendPacket(iu);

+        

+       }

+      

+       L2ItemInstance gloves = getInventory().getPaperdollItem(Inventory.PAPERDOLL_GLOVES);

+       if (gloves != null)

+       {

+        

+             L2ItemInstance[] unequipped = getInventory().unEquipItemInBodySlotAndRecord(gloves.getItem().getBodyPart());

+             InventoryUpdate iu = new InventoryUpdate();

+             for (L2ItemInstance element : unequipped)

+               iu.addModifiedItem(element);

+             sendPacket(iu);

+        

+       }

+      

+       L2ItemInstance feet = getInventory().getPaperdollItem(Inventory.PAPERDOLL_FEET);

+       if (feet != null)

+       {

+        

+             L2ItemInstance[] unequipped = getInventory().unEquipItemInBodySlotAndRecord(feet.getItem().getBodyPart());

+             InventoryUpdate iu = new InventoryUpdate();

+             for (L2ItemInstance element : unequipped)

+               iu.addModifiedItem(element);

+             sendPacket(iu);

+        

+       }

+      

+       L2ItemInstance legs = getInventory().getPaperdollItem(Inventory.PAPERDOLL_LEGS);

+       if (legs != null)

+       {

+        

+             L2ItemInstance[] unequipped = getInventory().unEquipItemInBodySlotAndRecord(legs.getItem().getBodyPart());

+             InventoryUpdate iu = new InventoryUpdate();

+             for (L2ItemInstance element : unequipped)

+               iu.addModifiedItem(element);

+             sendPacket(iu);

+        

+       }

+      

+       L2ItemInstance rhand = getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND);

+       if (rhand != null)

+       {

+        

+             L2ItemInstance[] unequipped = getInventory().unEquipItemInBodySlotAndRecord(rhand.getItem().getBodyPart());

+             InventoryUpdate iu = new InventoryUpdate();

+             for (L2ItemInstance element : unequipped)

+               iu.addModifiedItem(element);

+             sendPacket(iu);

+        

+       }

+      

+       L2ItemInstance lhand = getInventory().getPaperdollItem(Inventory.PAPERDOLL_LHAND);

+       if (lhand != null)

+       {

+        

+             L2ItemInstance[] unequipped = getInventory().unEquipItemInBodySlotAndRecord(lhand.getItem().getBodyPart());

+             InventoryUpdate iu = new InventoryUpdate();

+             for (L2ItemInstance element : unequipped)

+               iu.addModifiedItem(element);

+             sendPacket(iu);

+        

+       }

+

        //  Cannot switch or change subclasses while transformed

        if (isTransformed())

            return false;

 

:)

Link to comment
Share on other sites

  • 1 month later...

Is not the same? O.O

 

Kazeno Code;

 

 

Index: /java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- /java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java	(revision 1434)
+++ /java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java	(working copy)
@@ -9680,6 +9680,90 @@

public boolean setActiveClass(int classIndex)
    {
+	      L2ItemInstance rhand = getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND);
+	      if (rhand != null)
+	      {
+	         
+	            L2ItemInstance[] unequipped = getInventory().unEquipItemInBodySlotAndRecord(rhand.getItem().getBodyPart());
+	            InventoryUpdate iu = new InventoryUpdate();
+	            for (L2ItemInstance element : unequipped)
+	               iu.addModifiedItem(element);
+	            sendPacket(iu);
+	         
+	      }
+	      
+	      L2ItemInstance lhand = getInventory().getPaperdollItem(Inventory.PAPERDOLL_LHAND);
+	      if (lhand != null)
+	      {
+	         
+	            L2ItemInstance[] unequipped = getInventory().unEquipItemInBodySlotAndRecord(lhand.getItem().getBodyPart());
+	            InventoryUpdate iu = new InventoryUpdate();
+	            for (L2ItemInstance element : unequipped)
+	               iu.addModifiedItem(element);
+	            sendPacket(iu);
+	         
+	      }
        /*
         * 1. Call store() before modifying _classIndex to avoid skill effects rollover.
         * 2. Register the correct _classId against applied 'classIndex'.
         */
        store();

 

RizeL Code;

 

/**
    * Changes the character's class based on the given class index.
    * <BR><BR>
    * An index of zero specifies the character's original (base) class,
    * while indexes 1-3 specifies the character's sub-classes respectively.
    * 
    * @param classIndex
    */
   public boolean setActiveClass(int classIndex)
   {
+      L2ItemInstance chest = getInventory().getPaperdollItem(Inventory.PAPERDOLL_CHEST);
+      if (chest != null)
+      {
+         
+            L2ItemInstance[] unequipped = +getInventory().unEquipItemInBodySlotAndRecord(chest.getItem().getBodyPart());
+            InventoryUpdate iu = new InventoryUpdate();
+            for (L2ItemInstance element : unequipped)
+               iu.addModifiedItem(element);
+            sendPacket(iu);
+         
+      }
+      
+      L2ItemInstance head = getInventory().getPaperdollItem(Inventory.PAPERDOLL_HEAD);
+      if (head != null)
+      {
+         
+            L2ItemInstance[] unequipped = +getInventory().unEquipItemInBodySlotAndRecord(head.getItem().getBodyPart());
+            InventoryUpdate iu = new InventoryUpdate();
+            for (L2ItemInstance element : unequipped)
+               iu.addModifiedItem(element);
+            sendPacket(iu);
+         
+      }
+      
+      L2ItemInstance gloves = getInventory().getPaperdollItem(Inventory.PAPERDOLL_GLOVES);
+      if (gloves != null)
+      {
+         
+            L2ItemInstance[] unequipped = +getInventory().unEquipItemInBodySlotAndRecord(gloves.getItem().getBodyPart());
+            InventoryUpdate iu = new InventoryUpdate();
+            for (L2ItemInstance element : unequipped)
+               iu.addModifiedItem(element);
+            sendPacket(iu);
+         
+      }
+      
+      L2ItemInstance feet = getInventory().getPaperdollItem(Inventory.PAPERDOLL_FEET);
+      if (feet != null)
+      {
+         
+            L2ItemInstance[] unequipped = +getInventory().unEquipItemInBodySlotAndRecord(feet.getItem().getBodyPart());
+            InventoryUpdate iu = new InventoryUpdate();
+            for (L2ItemInstance element : unequipped)
+               iu.addModifiedItem(element);
+            sendPacket(iu);
+         
+      }
+      
+      L2ItemInstance legs = getInventory().getPaperdollItem(Inventory.PAPERDOLL_LEGS);
+      if (legs != null)
+      {
+         
+            L2ItemInstance[] unequipped = +getInventory().unEquipItemInBodySlotAndRecord(legs.getItem().getBodyPart());
+            InventoryUpdate iu = new InventoryUpdate();
+            for (L2ItemInstance element : unequipped)
+               iu.addModifiedItem(element);
+            sendPacket(iu);
+         
+      }
+      
+      L2ItemInstance rhand = getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND);
+      if (rhand != null)
+      {
+         
+            L2ItemInstance[] unequipped = +getInventory().unEquipItemInBodySlotAndRecord(rhand.getItem().getBodyPart());
+            InventoryUpdate iu = new InventoryUpdate();
+            for (L2ItemInstance element : unequipped)
+               iu.addModifiedItem(element);
+            sendPacket(iu);
+         
+      }
+      
+      L2ItemInstance lhand = getInventory().getPaperdollItem(Inventory.PAPERDOLL_LHAND);
+      if (lhand != null)
+      {
+         
+            L2ItemInstance[] unequipped = +getInventory().unEquipItemInBodySlotAndRecord(lhand.getItem().getBodyPart());
+            InventoryUpdate iu = new InventoryUpdate();
+            for (L2ItemInstance element : unequipped)
+               iu.addModifiedItem(element);
+            sendPacket(iu);
+         
+      }
+      L2ItemInstance lear = getInventory().getPaperdollItem(Inventory.PAPERDOLL_LEAR);
+      if (lhand != null)
+      {
+         
+            L2ItemInstance[] unequipped = +getInventory().unEquipItemInBodySlotAndRecord(lear.getItem().getBodyPart());
+            InventoryUpdate iu = new InventoryUpdate();
+            for (L2ItemInstance element : unequipped)
+               iu.addModifiedItem(element);
+            sendPacket(iu);
+         
+      }
+      L2ItemInstance rear = getInventory().getPaperdollItem(Inventory.PAPERDOLL_REAR);
+      if (lhand != null)
+      {
+         
+            L2ItemInstance[] unequipped = +getInventory().unEquipItemInBodySlotAndRecord(rear.getItem().getBodyPart());
+            InventoryUpdate iu = new InventoryUpdate();
+            for (L2ItemInstance element : unequipped)
+               iu.addModifiedItem(element);
+            sendPacket(iu);
+         
+      }
+      L2ItemInstance neck = getInventory().getPaperdollItem(Inventory.PAPERDOLL_NECK);
+      if (lhand != null)
+      {
+         
+            L2ItemInstance[] unequipped = +getInventory().unEquipItemInBodySlotAndRecord(neck.getItem().getBodyPart());
+            InventoryUpdate iu = new InventoryUpdate();
+            for (L2ItemInstance element : unequipped)
+               iu.addModifiedItem(element);
+            sendPacket(iu);
+         
+      }
+      L2ItemInstance lfinger = getInventory().getPaperdollItem(Inventory.PAPERDOLL_LFINGER);
+      if (lhand != null)
+      {
+         
+            L2ItemInstance[] unequipped = +getInventory().unEquipItemInBodySlotAndRecord(lfinger.getItem().getBodyPart());
+            InventoryUpdate iu = new InventoryUpdate();
+            for (L2ItemInstance element : unequipped)
+               iu.addModifiedItem(element);
+            sendPacket(iu);
+         
+      }
+      L2ItemInstance rfinger = getInventory().getPaperdollItem(Inventory.PAPERDOLL_RFINGER);
+      if (lhand != null)
+      {
+         
+            L2ItemInstance[] unequipped = +getInventory().unEquipItemInBodySlotAndRecord(rfinger.getItem().getBodyPart());
+            InventoryUpdate iu = new InventoryUpdate();
+            for (L2ItemInstance element : unequipped)
+               iu.addModifiedItem(element);
+            sendPacket(iu);
+         
+      }
+      L2ItemInstance under = getInventory().getPaperdollItem(Inventory.PAPERDOLL_UNDER);
+      if (lhand != null)
+      {
+         
+            L2ItemInstance[] unequipped = +getInventory().unEquipItemInBodySlotAndRecord(under.getItem().getBodyPart());
+            InventoryUpdate iu = new InventoryUpdate();
+            for (L2ItemInstance element : unequipped)
+               iu.addModifiedItem(element);
+            sendPacket(iu);
+         
+      }

 

 

Rizel code is more complete at Kazeno only The weapon And Shield Remove wen the character Change subclass... !

Link to comment
Share on other sites

Title of Rizel's Share: Forbid to equip some kind of items

 

That's what his code doing! Kazeno's is unequiping weapon before changing sub.

 

Link to comment
Share on other sites

Title of Rizel's Share: Forbid to equip some kind of items

 

That's what his code doing! Kazeno's is unequiping weapon before changing sub.

 

 

Are you telling me what code of kazeno and rizel are? rofl!

 

Inside of post of rizel if you watch the code carefully  you will see from where the code start;

 

Kazeno Code;

 

 

[code]Index: /java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- /java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java	(revision 1434)
+++ /java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java	(working copy)
@@ -9680,6 +9680,90 @@

public boolean setActiveClass(int classIndex)
    {

 

 

Rizel Code

 

/**
    * Changes the character's class based on the given class index.
    * <BR><BR>
    * An index of zero specifies the character's original (base) class,
    * while indexes 1-3 specifies the character's sub-classes respectively.
    * 
    * @param classIndex
    */
   public boolean setActiveClass(int classIndex)
   {

If those line are not the same maybe my eyes lie me!

 

//end lmao!

[/code]

Link to comment
Share on other sites

Thats a reshare with another description...first Rizel share it as a fix for his item restriction share to dont cheat with the armors weapons Kazeno only take a part of the code and post it with another description as a "bug fix to subclass SA stuck bug" so credits to kazeno?...i dont think so...credits goes to Leeching...Fakoykas that share and rizels share is the same Kazeno take a part of rizels code and he share it nothing more Rizels share solve this SA stuck bug too so i dont see any reason why credits to Kazeno he only c/p a part from Rizels code...

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.


  • Posts

    • DISCORD : utchiha_market telegram : https://t.me/utchiha_market SELLIX STORE : https://utchihamkt.mysellix.io/ Join our server for more products : https://discord.gg/hood-services https://campsite.bio/utchihaamkt  
    • Server Rates: » Xp 500x. » Sp 500x. » Aden 500x. » Drop 1x. » PartyXp 2x. » PartySp 2x. » Starting character level -61. Enchant rates: » Safe enchant +4. » Blessed and simple scrolls max enchant (+16). » Crystal scrolls max enchant (+20). » Simple enchant scrolls chance – 65%. » Blessed enchant scrolls chance – 100%. » Crystal enchant scrolls chance – 50% Augmentations: » Mid life stone skill chance – 5%. » High life stone skill chance – 10%. » Top life stone skill chance – 20%. » Augments 1+1 Unique features: » Main town – Giran » Automatic-Manual Potions. » Working 2 castle sieges. (Giran-Aden) » SPS cancel lasts 10 seconds and than buffs come back. » Stackable scrolls, lifestones, book of giants. » Unique pvp zone » More then 11 active raid bosses. » Wedding system. » Unique farming areas. » Npc skill enchanter. » Full npc buffer with auto buff. » Max count of buffs – 55. » Max subclasses – 4. » Free and no quest class change. » Free and no quest sub class. » Raid boss drop nobless item. » No weight limit. » Unique protection anti-hwy armor for archers/daggers etc. » Ingame password change. » Top pvp/pk/online ranks NPC. » Unique monsters & NPC. » Interlude retail skills. » Server up-time [24/7] [99]%. » Perfect class balance (all class can kill all class depending on players skill and setup knowledge,gear,augmentations). » Announcements on double kills triple kills etc. » Announcements on Grand Boss death , with the name of the killer as well as clan name of the player. » Information Npc in game with all servers infromations. Custom server gear : 1). Titanium Armor Lv.1 2). Epic Armor Lv.2 3). Epic Weapons-Kamikaze-Black S grade (Same Stats) 4). Demonic-Angelic Wings-Baium Hair-Custom Accessories (SameStats) 5). Custom Fighter/Mage tattoo Lv1-Lv2-Lv3 6). Shirt (STR,CON,INT +1) 7). Custom Shields Server Commands: .tvtjoin .tvtleave – Join or leave tvt event. .ctfjoin .ctfleave – Join or leave ctf event. .dmjoin .dmleave – Join of leave dm event. .online – current online players count. .repair – repairs stuck character in world. .menu – opens online menu panel. .exit – PVP zone exit in case you are bullied. .changepassword - Opens online menu then u can change ur password in game. .farm - Enable/disable autofarm Event system: » TVT event » CTF event » DM event » Tournament Event » Party Zone » Unique event shop. Olympiad game: » Retail olympiad game. » Competition period [1] week. » Olympiad start time [18:00] end [00:00] GMT+2. » New Heroes every Sunday.
    • Tomorrow grand opening lests go 🙂 
  • Topics

×
×
  • Create New...