Mod que bloqueia o uso de itens que estejão na lsita de itens proibidos para uso nas ollys

Código:
Index: /Trunk/L2JStep_CORE/config/altsettings.properties
===================================================================
--- /Trunk/L2JStep_CORE/config/altsettings.properties (revision 99)
+++ /Trunk/L2JStep_CORE/config/altsettings.properties (revision 100)
@@ -133,2 +133,19 @@

+
+# This is the item restriction for olympiad. if an item is restricted , then a player cannot 
+# Use it in olympiad mode. this is a fastlist. so it has to be like  (OlyRestrictedItems = 1,2,3)  
+OlyRestrictedItems = 0
+

Index: /TrunK/L2JStep_CORE/java/com/l2jstep/Config.java
===================================================================
--- /TrunK/L2JStep_CORE/java/com/l2jstep/Config.java (revision 99)
+++ /TrunK/L2JStep_CORE/java/com/l2jstep/Config.java (revision 100)
@@ -834,4 +834,9 @@
 
+    public static FastList<Integer> ALT_OLY_RESTRICTED_ITEMS = new FastList<Integer>(); 

@@ -1984,4 +1989,8 @@
+                ALT_OLY_RESTRICTED_ITEMS = new FastList<Integer>();  
+                     for (String id : AltSettings.getProperty("OlyRestrictedItems","0").split(","))  
+                     {  
+                                ALT_OLY_RESTRICTED_ITEMS.add(Integer.parseInt(id));  
+                     } 

Index: /Trunk/L2JStep_CORE/java/com/l2jstep/gameserver/model/L2ItemInstance.java
===================================================================
--- /Trunk/L2JStep_CORE/java/com/l2jstep/gameserver/model/L2ItemInstance.java (revision 99)
+++ /Trunk/L2JStep_CORE/java/com/l2jstep/gameserver/model/L2ItemInstance.java (revision 100)
@@ -107,4 +107,10 @@
 
     public long getDropTime()
     {
         return _dropTime;
     }
+    public boolean isOlyRestrictedItem()
+    {
+        return (Config.ALT_OLY_RESTRICTED_ITEMS.contains(_itemId));
+    }
    
Index: /Trunk/L2JStep_CORE/java/com/l2jstep/gameserver/Olympiad.java
===================================================================
--- /Trunk/L2JStep_CORE/java/com/l2jstep/gameserver/Olympiad.java (revision 99)
+++ /Trunk/L2JStep_CORE/java/com/l2jstep/gameserver/Olympiad.java (revision 100)
@@ -107,4 +107,10 @@
             //Remove Hero Weapons
             //Possible fix for Exploits With Conversion SA Weapons
             // check to prevent the using of weapon/shield on strider/wyvern
-            L2ItemInstance wpn = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND);
-            if (wpn == null) wpn = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_LRHAND);
-            if (wpn != null &&
-                    (
-                            (wpn.getItemId() >= 6611 && wpn.getItemId() <= 6621) ||
-                            wpn.getItemId() == 6842 ||
-                            wpn.getItemId() == 5597 || 
-                            wpn.getItemId() == 5605 || 
-                            wpn.getItemId() == 6314 || 
-                            wpn.getItemId() == 7715 || 
-                            wpn.getItemId() == 8119 || 
-                            wpn.getItemId() == 8138 || 
-                            wpn.getItemId() == 8146 || 
-                            wpn.getItemId() == 8815 
-                    )
-                )
+            L2ItemInstance wpn;
+            if (player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND) != null)
             {
-                L2ItemInstance[] unequiped = player.getInventory().unEquipItemInBodySlotAndRecord(wpn.getItem().getBodyPart());
-                InventoryUpdate iu = new InventoryUpdate();
-                for (int i = 0; i < unequiped.length; i++)
-                    iu.addModifiedItem(unequiped[i]);
-                player.sendPacket(iu);
-                player.abortAttack();
-                player.broadcastUserInfo();
-
-                // this can be 0 if the user pressed the right mousebutton twice very fast
-                if (unequiped.length > 0)
-                {
-                    if (unequiped[0].isWear())
-                        return;
-                    SystemMessage sm = null;
-                    if (unequiped[0].getEnchantLevel() > 0)
-                    {
-                        sm = new SystemMessage(SystemMessageId.EQUIPMENT_S1_S2_REMOVED);
-                        sm.addNumber(unequiped[0].getEnchantLevel());
-                        sm.addItemName(unequiped[0].getItemId());
-                    }
-                    else
-                    {
-                        sm = new SystemMessage(SystemMessageId.S1_DISARMED);
-                        sm.addItemName(unequiped[0].getItemId());
-                    }
-                    player.sendPacket(sm);
-                }
+                wpn = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND);
+                checkWeaponArmor(player, wpn);
             }
+            if (player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_LRHAND) != null)
+            {
+                wpn = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_LRHAND);
+                checkWeaponArmor(player, wpn);
+            }
+            if (player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_LHAND) != null)
+            {
+                wpn = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_LHAND);
+                checkWeaponArmor(player, wpn);
+            }
+            if (player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_UNDER) != null)
+            {
+                wpn = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_UNDER);
+                checkWeaponArmor(player, wpn);
+            }
+            if (player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_LEAR) != null)
+            {
+                wpn = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_LEAR);
+                checkWeaponArmor(player, wpn);
+            }
+            if (player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_REAR) != null)
+            {
+                wpn = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_REAR);
+                checkWeaponArmor(player, wpn);
+            }
+            if (player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_NECK) != null)
+            {
+                wpn = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_NECK);
+                checkWeaponArmor(player, wpn);
+            }
+            if (player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_LFINGER) != null)
+            {
+                wpn = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_LFINGER);
+                checkWeaponArmor(player, wpn);
+            }
+            if (player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RFINGER) != null)
+            {
+                wpn = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RFINGER);
+                checkWeaponArmor(player, wpn);
+            }
+            if (player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_HEAD) != null)
+            {
+                wpn = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_HEAD);
+                checkWeaponArmor(player, wpn);
+            }
+            if (player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_GLOVES) != null)
+            {
+                wpn = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_GLOVES);
+                checkWeaponArmor(player, wpn);
+            }
+            if (player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_CHEST) != null)
+            {
+                wpn = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_CHEST);
+                checkWeaponArmor(player, wpn);
+            }
+            if (player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_LEGS) != null)
+            {
+                wpn = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_LEGS);
+                checkWeaponArmor(player, wpn);
+            }
+            if (player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_FEET) != null)
+            {
+                wpn = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_FEET);
+                checkWeaponArmor(player, wpn);
+            }
+            if (player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_BACK) != null)
+            {
+                wpn = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_BACK);
+                checkWeaponArmor(player, wpn);
+            }
+            if (player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_FACE) != null)
+            {
+                wpn = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_FACE);
+                checkWeaponArmor(player, wpn);
+            }
+            if (player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_HAIR) != null)
+            {
+                wpn = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_HAIR);
+                checkWeaponArmor(player, wpn);
+            }
+            if (player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_DHAIR) != null)
+            {
+                wpn = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_DHAIR);
+                checkWeaponArmor(player, wpn);
+            }
 
             //Remove ss/sps/bsps automation
             Map<Integer, Integer> activeSoulShots = player.getAutoSoulShot();
@@ -702,4 +748,35 @@
                 }
         }
     }
-}
\ No newline at end of file
+    private void checkWeaponArmor(L2PcInstance player, L2ItemInstance wpn)
+    {
+        if (wpn != null && (wpn.isOlyRestrictedItem()))
+        {
+            L2ItemInstance[] unequiped = player.getInventory().unEquipItemInBodySlotAndRecord(wpn.getItem().getBodyPart());
+            InventoryUpdate iu = new InventoryUpdate();
+            for (L2ItemInstance element : unequiped)
+                iu.addModifiedItem(element);
+            player.sendPacket(iu);
+            player.abortAttack();
+            player.broadcastUserInfo();
+            if (unequiped.length > 0)
+            {
+                if (unequiped[0].isWear())
+                    return;
+                SystemMessage sm = null;
+                if (unequiped[0].getEnchantLevel() > 0)
+                {
+                    sm = new SystemMessage(SystemMessageId.EQUIPMENT_S1_S2_REMOVED);
+                    sm.addNumber(unequiped[0].getEnchantLevel());
+                    sm.addItemName(unequiped[0].getItemId());
+                }
+                else
+                {
+                    sm = new SystemMessage(SystemMessageId.S1_DISARMED);
+                    sm.addItemName(unequiped[0].getItemId());
+                }
+                player.sendPacket(sm);
+            }
+        }
+    }
+}

Index: TrunK/*********_CORE/java/com/it/br/gameserver/clientpackets/UseItem.java
===================================================================
--- TrunK/*********_CORE/java/com/it/br/gameserver/clientpackets/UseItem.java (revision 1332)
+++ TrunK/*********_CORE/java/com/it/br/gameserver/clientpackets/UseItem.java (revision 1430)
@@ -337,6 +337,10 @@
                                             return; 
                                     }    
                             } 
+                if (activeChar.isInOlympiadMode() && (item.isOlyRestrictedItem()))
+                {
+                    return;
+                }
                 // Don't allow weapon/shield hero equipment during Olympiads
                 if (activeChar.isInOlympiadMode() && (bodyPart == L2Item.SLOT_LR_HAND || bodyPart == L2Item.SLOT_L_HAND || bodyPart == L2Item.SLOT_R_HAND) && ((item.getItemId() >= 6611 && item.getItemId() <= 6621) || item.getItemId() == 6842))
                 {return;}
Creditos: Guma