Noticias:

No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.

Menú Principal

Skill Enchanting custom options

Iniciado por Swarlog, Jul 26, 2025, 10:52 PM

Tema anterior - Siguiente tema

Swarlog

# Created by Zoey76
# Version 0.3
# Updated to High Five Rev.5771
# Shortened the algorithm.
# Added check to avoid skill overenchanting.
# Based on Starter's idea/work to cutoff skill enchanting.
# Based on Lineage's Work to avoid skill overenchanting.
# Thanks SolidSnake for time and tips.
#P L2J_Server_BETA
Index: java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java	(revision 5769)
+++ java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java	(working copy)
@@ -15769,6 +15769,31 @@
 		for (int id : getSkills().keySet())
 		{
 			int level = getSkillLevel(id);
+			if (Config.ENABLE_SKILL_MAX_ENCHANT_LIMIT)
+			{
+				L2Skill fixedSkill = null;
+				int oldLevel = level % 100;
+				if (Config.SKILL_MAX_ENCHANT_LIMIT_LEVEL > 0) // Nerf enchantment
+				{
+					if (oldLevel > Config.SKILL_MAX_ENCHANT_LIMIT_LEVEL)
+					{
+						level = ((level / 100) * 100) + Config.SKILL_MAX_ENCHANT_LIMIT_LEVEL;
+						fixedSkill = SkillTable.getInstance().getInfo(id, level);
+					}
+				}
+				else if (Config.SKILL_MAX_ENCHANT_LIMIT_LEVEL == 0) // Remove enchantment
+				{
+					level = SkillTable.getInstance().getMaxLevel(id);
+					fixedSkill = SkillTable.getInstance().getInfo(id, level);
+				}
+				// Setting the new level enchat for the skill.
+				if (fixedSkill != null)
+				{
+					_log.info("Decreasing skill enchantment from " + oldLevel + " to " + level + " on skill " + id + " from Player: " + getName() + "!");
+					addSkill(fixedSkill, true);
+				}
+			}
+			
 			if (level >= 100)
 			{
 				level = SkillTable.getInstance().getMaxLevel(id);
Index: java/com/l2jserver/Config.java
===================================================================
--- java/com/l2jserver/Config.java	(revision 5741)
+++ java/com/l2jserver/Config.java	(working copy)
@@ -252,6 +252,9 @@
 	public static boolean STORE_UI_SETTINGS;
 	public static String[] FORBIDDEN_NAMES;
 	public static boolean SILENCE_MODE_EXCLUDE;
+	public static boolean ENABLE_SKILL_ENCHANT;
+	public static boolean ENABLE_SKILL_MAX_ENCHANT_LIMIT;
+	public static int SKILL_MAX_ENCHANT_LIMIT_LEVEL;
 	
 	// --------------------------------------------------
 	// ClanHall Settings
@@ -1720,6 +1723,9 @@
 			FORBIDDEN_NAMES = Character.getProperty("ForbiddenNames", "").split(",");
 			SILENCE_MODE_EXCLUDE = Boolean.parseBoolean(Character.getProperty("SilenceModeExclude", "False"));
 			PLAYER_MOVEMENT_BLOCK_TIME = Integer.parseInt(Character.getProperty("NpcTalkBlockingTime", "0")) * 1000;
+			ENABLE_SKILL_ENCHANT = Boolean.parseBoolean(Character.getProperty("EnableSkillEnchant", "True"));
+			ENABLE_SKILL_MAX_ENCHANT_LIMIT = Boolean.parseBoolean(Character.getProperty("EnableSkillMaxEnchantLimit", "False"));
+			SKILL_MAX_ENCHANT_LIMIT_LEVEL = Integer.parseInt(Character.getProperty("SkillMaxEnchantLimitLevel", "30"));
 			
 			// Load L2J Server Version L2Properties file (if exists)
 			L2Properties serverVersion = new L2Properties();
Index: java/com/l2jserver/gameserver/network/clientpackets/RequestExEnchantSkill.java
===================================================================
--- java/com/l2jserver/gameserver/network/clientpackets/RequestExEnchantSkill.java	(revision 5741)
+++ java/com/l2jserver/gameserver/network/clientpackets/RequestExEnchantSkill.java	(working copy)
@@ -73,6 +73,20 @@
 			return;
 		}
 		
+		if (Config.ENABLE_SKILL_ENCHANT)
+		{
+			if ((_skillLvl % 100) >= Config.SKILL_MAX_ENCHANT_LIMIT_LEVEL)
+			{
+				player.sendMessage("You have reached maximum skill enchantment level. Allowed on this server up to " + Config.SKILL_MAX_ENCHANT_LIMIT_LEVEL + ".");
+				return;
+			}
+		}
+		else
+		{
+			player.sendMessage("You may not use the skill enchantment system is currently turned off.");
+			return;
+		}
+		
 		if (player.getClassId().level() < 3) // requires to have 3rd class quest completed
 		{
 			player.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILL_ENCHANT_IN_THIS_CLASS);
Index: java/com/l2jserver/gameserver/network/clientpackets/RequestExEnchantSkillSafe.java
===================================================================
--- java/com/l2jserver/gameserver/network/clientpackets/RequestExEnchantSkillSafe.java	(revision 5741)
+++ java/com/l2jserver/gameserver/network/clientpackets/RequestExEnchantSkillSafe.java	(working copy)
@@ -73,6 +73,20 @@
 			return;
 		}
 		
+		if (Config.ENABLE_SKILL_ENCHANT)
+		{
+			if ((_skillLvl % 100) >= Config.SKILL_MAX_ENCHANT_LIMIT_LEVEL)
+			{
+				player.sendMessage("You have reached maximum skill enchantment level. Allowed on this server up to " + Config.SKILL_MAX_ENCHANT_LIMIT_LEVEL + ".");
+				return;
+			}
+		}
+		else
+		{
+			player.sendMessage("You may not use the skill enchantment system is currently turned off.");
+			return;
+		}
+		
 		if (player.getClassId().level() < 3) // requires to have 3rd class quest completed
 		{
 			player.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILL_ENCHANT_IN_THIS_CLASS);
Index: dist/game/config/Character.properties
===================================================================
--- dist/game/config/Character.properties	(revision 5722)
+++ dist/game/config/Character.properties	(working copy)
@@ -81,7 +81,18 @@
 # Default: False
 AutoLearnForgottenScrollSkills = False
 
+# Turn this off to avoid skill enchanting.
+# Default: True
+EnableSkillEnchant = True
+# When this is enabled it will read the "SkillMaxEnchantLimitLevel" option.
 # Default: False
+EnableSkillMaxEnchantLimit = False
+# When this is over 0, it will cutoff the skill enchant level to it's value.
+# When it's 0 it will removed the current skill enchant.
+# Default: 30
+SkillMaxEnchantLimitLevel = 30
+
+# Default: False
 AutoLootHerbs = False
 
 # Maximum number of buffs and songs/dances.

Básicamente es para configurar algo mas el encantamiento de las habilidades, el si se pueden mejorar las skills o no, el nivel máximo de enchant, etc.. todo lo configurable esta en la properties de este código.

Créditos en el código.