Secret Experience

Secret Experience (https://secretexperience.net/index.php)
-   [Lineage] Java Mods (https://secretexperience.net/forumdisplay.php?f=636)
-   -   [L2JServer] Enchant Chance System (https://secretexperience.net/showthread.php?t=22760)

Guma 29-06-2010 09:15 PM

Enchant Chance System
 
nao esta 100% testado
codigo feito em gracia final [L2JServer]


Código:

Index: java/config/Character.properties
===================================================================
--- java/config/Character.properties        (revision 3492)
+++ java/config/Character.properties        (working copy)
@@ -270,6 +270,38 @@
 BlessedEnchantChanceArmor = 66
 BlessedEnchantChanceJewelry = 66
 
+# This is a list where you define different enchant chance on different enchant levels
+# Format: enchantLevel1,enchantChance1;enchantLevel2,enchantChance2...
+# Example:
+#        The "\"indicates new line, and is only set for formating purposes.
+#        EnchantChanceWeaponList = 4,90;5,80;6,75;7,70;8,65;\
+#        9,60;10,50;11,20;12,10;13,50;14,25;15,20
+#        No ";" or ";\" at the end
+# So, if the enchant chance for +15 is set to 30%, the enchanter will have 30%
+# chance to enchant the weapon from +14 to +15
+# If a specific enchant level isnt described in the list, or the list is empty,
+# the chance will be the one set at default configs
+# (ex. EnchantChanceWeapon = ?? / EnchantChanceArmor = ?? / EnchantChanceJewelry = ??)
+# So if you miss in the list for example, +15 for weapon, the chance will be
+# the one set at EnchantChanceWeapon (BlessedEnchantChanceWeapon for blessed)
+EnchantChanceWeaponList =
+EnchantChanceArmorList =
+EnchantChanceJewelryList =
+
+BlessedEnchantChanceWeaponList =
+BlessedEnchantChanceArmorList =
+BlessedEnchantChanceJewelryList =
+
+# List of item id that will be affected by EnchantChance lists
+# (separated by "," like 77,78,79).
+# Notes:
+#        *Make sure the lists do NOT CONTAIN trailing spaces or spaces between the numbers!
+#        *Items on this list will be affected by normal enchant restrictions aswell.
+#    For example, even if you add a hero weapon here, you wont be able to enchant it.
+#  *Default is 0, that means all items will be affected, and if there is 0 somewhere
+#    in the list, it will still affect all items! Be aware of that!
+EnchantChanceListsRestriction = 0
+
 # This is the enchant limit, if set to 0, there will be no limit.
 # Example: If this is set to 10, the maximum enchant will be 10.
 # Default: 0, 0, 0
Index: java/net/sf/l2j/gameserver/network/clientpackets/AbstractEnchantPacket.java
===================================================================
--- java/net/sf/l2j/gameserver/network/clientpackets/AbstractEnchantPacket.java        (revision 3492)
+++ java/net/sf/l2j/gameserver/network/clientpackets/AbstractEnchantPacket.java        (working copy)
@@ -18,6 +18,7 @@
 import java.util.Map;
 
 import javolution.util.FastMap;
+import gnu.trove.TIntIntHashMap;
 
 import net.sf.l2j.Config;
 import net.sf.l2j.gameserver.model.L2ItemInstance;
@@ -172,20 +173,20 @@
                                        return -1;
 
                                if (_isWeapon)
-                                        chance = Config.BLESSED_ENCHANT_CHANCE_WEAPON;
+                                        chance = getListChance(Config.BLESSED_ENCHANT_CHANCE_WEAPON_LIST,Config.BLESSED_ENCHANT_CHANCE_WEAPON,enchantItem);               
                                else if (isAccessory)
-                                        chance = Config.BLESSED_ENCHANT_CHANCE_JEWELRY;
+                                        chance = getListChance(Config.BLESSED_ENCHANT_CHANCE_JEWELRY_LIST,Config.BLESSED_ENCHANT_CHANCE_JEWELRY,enchantItem);
                                else
-                                        chance = Config.BLESSED_ENCHANT_CHANCE_ARMOR;
+                                        chance = getListChance(Config.BLESSED_ENCHANT_CHANCE_ARMOR_LIST,Config.BLESSED_ENCHANT_CHANCE_ARMOR,enchantItem);
                        }
                        else
                        {
                                if (_isWeapon)
-                                        chance = Config.ENCHANT_CHANCE_WEAPON;
+                                        chance = getListChance(Config.ENCHANT_CHANCE_WEAPON_LIST,Config.ENCHANT_CHANCE_WEAPON,enchantItem);               
                                else if (isAccessory)
-                                        chance = Config.ENCHANT_CHANCE_JEWELRY;
+                                        chance = getListChance(Config.ENCHANT_CHANCE_JEWELRY_LIST,Config.ENCHANT_CHANCE_JEWELRY,enchantItem);       
                                else
-                                        chance = Config.ENCHANT_CHANCE_ARMOR;
+                                        chance = getListChance(Config.ENCHANT_CHANCE_ARMOR_LIST,Config.ENCHANT_CHANCE_ARMOR,enchantItem);
                        }
 
                        chance += _chanceAdd;
@@ -196,6 +197,24 @@
                        return chance;
                }
        }
+       
+        public static boolean isInRestrictionList(L2ItemInstance item)
+        {
+                if (Config.LIST_ENCHANT_CHANCE_LISTS_RESTRICTION.contains(0)) return true;
+                return Config.LIST_ENCHANT_CHANCE_LISTS_RESTRICTION.contains(item.getItemId());               
+        }
+        public static int getListChance(TIntIntHashMap ConfigEnchantChanceList, Integer ConfigEnchantChance, L2ItemInstance item)
+        {
+                int chance = 0;
+                if (!ConfigEnchantChanceList.isEmpty() && isInRestrictionList(item))
+                {
+                        if (ConfigEnchantChanceList.containsKey(item.getEnchantLevel()+1))
+                        chance = ConfigEnchantChanceList.get(item.getEnchantLevel()+1);
+                        else chance = ConfigEnchantChance;
+                }
+                else chance = ConfigEnchantChance;       
+                return chance;
+        }
 
        static
        {
Index: java/net/sf/l2j/Config.java
===================================================================
--- java/net/sf/l2j/Config.java        (revision 3492)
+++ java/net/sf/l2j/Config.java        (working copy)
@@ -29,6 +29,7 @@
 
 import javolution.util.FastList;
 import javolution.util.FastMap;
+import gnu.trove.TIntIntHashMap;
 import net.sf.l2j.gameserver.util.FloodProtectorConfig;
 import net.sf.l2j.gameserver.util.StringUtil;
 
@@ -38,7 +39,6 @@
 
        //--------------------------------------------------
        // 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";
@@ -800,9 +800,17 @@
        public static int ENCHANT_CHANCE_WEAPON;
        public static int ENCHANT_CHANCE_ARMOR;
        public static int ENCHANT_CHANCE_JEWELRY;
+        public static TIntIntHashMap ENCHANT_CHANCE_WEAPON_LIST;
+        public static TIntIntHashMap ENCHANT_CHANCE_ARMOR_LIST;
+        public static TIntIntHashMap ENCHANT_CHANCE_JEWELRY_LIST;
        public static int BLESSED_ENCHANT_CHANCE_WEAPON;
        public static int BLESSED_ENCHANT_CHANCE_ARMOR;
        public static int BLESSED_ENCHANT_CHANCE_JEWELRY;
+        public static TIntIntHashMap BLESSED_ENCHANT_CHANCE_WEAPON_LIST;
+        public static TIntIntHashMap BLESSED_ENCHANT_CHANCE_ARMOR_LIST;
+        public static TIntIntHashMap BLESSED_ENCHANT_CHANCE_JEWELRY_LIST;
+        public static String ENCHANT_CHANCE_LISTS_RESTRICTION;
+        public static List<Integer> LIST_ENCHANT_CHANCE_LISTS_RESTRICTION = new FastList<Integer>();
        public static int ENCHANT_MAX_WEAPON;
        public static int ENCHANT_MAX_ARMOR;
        public static int ENCHANT_MAX_JEWELRY;
@@ -1221,9 +1229,93 @@
                                        ENCHANT_CHANCE_WEAPON = Integer.parseInt(Character.getProperty("EnchantChanceWeapon", "66"));
                                        ENCHANT_CHANCE_ARMOR = Integer.parseInt(Character.getProperty("EnchantChanceArmor", "66"));
                                        ENCHANT_CHANCE_JEWELRY = Integer.parseInt(Character.getProperty("EnchantChanceJewelry", "66"));
+                                                String[] propertySplitWeapon = Character.getProperty("EnchantChanceWeaponList", "").split(";");
+                                                String[] propertySplitArmor = Character.getProperty("EnchantChanceArmorList", "").split(";");
+                                                String[] propertySplitJewelry = Character.getProperty("EnchantChanceJewelryList", "").split(";");
+                                                String[] propertySplitBlessedWeapon = Character.getProperty("BlessedEnchantChanceWeaponList", "").split(";");
+                                                String[] propertySplitBlessedArmor = Character.getProperty("BlessedEnchantChanceArmorList", "").split(";");
+                                                String[] propertySplitBlessedJewelry = Character.getProperty("BlessedEnchantChanceJewelryList", "").split(";");
+                                                ENCHANT_CHANCE_WEAPON_LIST = new TIntIntHashMap(propertySplitWeapon.length);
+                                                ENCHANT_CHANCE_ARMOR_LIST = new TIntIntHashMap(propertySplitArmor.length);
+                                                ENCHANT_CHANCE_JEWELRY_LIST = new TIntIntHashMap(propertySplitJewelry.length);
+                                                BLESSED_ENCHANT_CHANCE_WEAPON_LIST = new TIntIntHashMap(propertySplitBlessedWeapon.length);
+                                                BLESSED_ENCHANT_CHANCE_ARMOR_LIST = new TIntIntHashMap(propertySplitBlessedArmor.length);
+                                                BLESSED_ENCHANT_CHANCE_JEWELRY_LIST = new TIntIntHashMap(propertySplitBlessedJewelry.length);
+                                                for (String enchant : propertySplitWeapon)
+                                                {
+                                                        String[] enchantSplit = enchant.split(",");
+                                                        if (enchantSplit.length != 2)_log.warning(StringUtil.concat("[CustomEnchantSystem]: invalid config property -> EnchantList \"", enchant, "\""));
+                                                        else
+                                                        {
+                                                                try{ENCHANT_CHANCE_WEAPON_LIST.put(Integer.valueOf(enchantSplit[0]), Integer.valueOf(enchantSplit[1]));}
+                                                                catch (NumberFormatException nfe){
+                                                                if (!enchant.isEmpty())_log.warning(StringUtil.concat("[CustomEnchantSystem]: invalid config property -> EnchantList \"", enchantSplit[0], "\"", enchantSplit[1]));}
+                                                        }
+                                                }
+                                                for (String enchant : propertySplitArmor)
+                                                {
+                                                        String[] enchantSplit = enchant.split(",");
+                                                        if (enchantSplit.length != 2)_log.warning(StringUtil.concat("[CustomEnchantSystem]: invalid config property -> EnchantList \"", enchant, "\""));
+                                                        else
+                                                        {
+                                                                try{ENCHANT_CHANCE_ARMOR_LIST.put(Integer.valueOf(enchantSplit[0]), Integer.valueOf(enchantSplit[1]));}
+                                                                catch (NumberFormatException nfe){
+                                                                if (!enchant.isEmpty())_log.warning(StringUtil.concat("[CustomEnchantSystem]: invalid config property -> EnchantList \"", enchantSplit[0], "\"", enchantSplit[1]));}
+                                                        }
+                                                }
+                                                for (String enchant : propertySplitJewelry)
+                                                {
+                                                        String[] enchantSplit = enchant.split(",");
+                                                        if (enchantSplit.length != 2)_log.warning(StringUtil.concat("[CustomEnchantSystem]: invalid config property -> EnchantList \"", enchant, "\""));
+                                                        else
+                                                        {
+                                                                try{ENCHANT_CHANCE_JEWELRY_LIST.put(Integer.valueOf(enchantSplit[0]), Integer.valueOf(enchantSplit[1]));}
+                                                                catch (NumberFormatException nfe){
+                                                                if (!enchant.isEmpty())_log.warning(StringUtil.concat("[CustomEnchantSystem]: invalid config property -> EnchantList \"", enchantSplit[0], "\"", enchantSplit[1]));}
+                                                        }
+                                                }
                                        BLESSED_ENCHANT_CHANCE_WEAPON = Integer.parseInt(Character.getProperty("BlessedEnchantChanceWeapon", "66"));
                                        BLESSED_ENCHANT_CHANCE_ARMOR = Integer.parseInt(Character.getProperty("BlessedEnchantChanceArmor", "66"));
                                        BLESSED_ENCHANT_CHANCE_JEWELRY = Integer.parseInt(Character.getProperty("BlessedEnchantChanceJewelry", "66"));
+                                        for (String enchant : propertySplitBlessedWeapon)
+                                        {
+                                                String[] enchantSplit = enchant.split(",");
+                                                if (enchantSplit.length != 2)_log.warning(StringUtil.concat("[CustomEnchantSystem]: invalid config property -> EnchantList \"", enchant, "\""));
+                                                else
+                                                {
+                                                        try{BLESSED_ENCHANT_CHANCE_WEAPON_LIST.put(Integer.valueOf(enchantSplit[0]), Integer.valueOf(enchantSplit[1]));}
+                                                        catch (NumberFormatException nfe){
+                                                        if (!enchant.isEmpty())_log.warning(StringUtil.concat("[CustomEnchantSystem]: invalid config property -> EnchantList \"", enchantSplit[0], "\"", enchantSplit[1]));}
+                                                }
+                                        }
+                                        for (String enchant : propertySplitBlessedArmor)
+                                        {
+                                                String[] enchantSplit = enchant.split(",");
+                                                if (enchantSplit.length != 2)_log.warning(StringUtil.concat("[CustomEnchantSystem]: invalid config property -> EnchantList \"", enchant, "\""));
+                                                else
+                                                {
+                                                        try{BLESSED_ENCHANT_CHANCE_ARMOR_LIST.put(Integer.valueOf(enchantSplit[0]), Integer.valueOf(enchantSplit[1]));}
+                                                        catch (NumberFormatException nfe){
+                                                        if (!enchant.isEmpty())_log.warning(StringUtil.concat("[CustomEnchantSystem]: invalid config property -> EnchantList \"", enchantSplit[0], "\"", enchantSplit[1]));}
+                                                }
+                                        }
+                                        for (String enchant : propertySplitBlessedJewelry)
+                                        {
+                                                String[] enchantSplit = enchant.split(",");
+                                                if (enchantSplit.length != 2)_log.warning(StringUtil.concat("[CustomEnchantSystem]: invalid config property -> EnchantList \"", enchant, "\""));
+                                                else
+                                                {
+                                                        try{BLESSED_ENCHANT_CHANCE_JEWELRY_LIST.put(Integer.valueOf(enchantSplit[0]), Integer.valueOf(enchantSplit[1]));}
+                                                        catch (NumberFormatException nfe){
+                                                        if (!enchant.isEmpty())_log.warning(StringUtil.concat("[CustomEnchantSystem]: invalid config property -> EnchantList \"", enchantSplit[0], "\"", enchantSplit[1]));}
+                                                }
+                                        }
+                                        ENCHANT_CHANCE_LISTS_RESTRICTION = Character.getProperty("EnchantChanceListsRestriction", "0");
+                                        LIST_ENCHANT_CHANCE_LISTS_RESTRICTION = new FastList<Integer>();
+                                        for (String id : ENCHANT_CHANCE_LISTS_RESTRICTION.split(","))
+                                        {
+                                                LIST_ENCHANT_CHANCE_LISTS_RESTRICTION.add(Integer.parseInt(id));
+                                        }
                                        ENCHANT_MAX_WEAPON = Integer.parseInt(Character.getProperty("EnchantMaxWeapon", "0"));
                                        ENCHANT_MAX_ARMOR = Integer.parseInt(Character.getProperty("EnchantMaxArmor", "0"));
                                        ENCHANT_MAX_JEWELRY = Integer.parseInt(Character.getProperty("EnchantMaxJewelry", "0"));


creditos : TheEnd

Donator 06-01-2012 08:44 PM

para cronica freya en l2jserver le faltan algunas importaciones! ;P :spinny:

OliverSykes 07-01-2012 07:18 PM

Nem precisa alterar nada basta por seguindo como está que funcionara normalmente mais o pack tem que ser so da l2jserver então a cronica sera o de menos !


Horários baseados na GMT -3. Agora são 12:54 AM.

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