Skip to content

Instantly share code, notes, and snippets.

@Williams0ff
Created December 29, 2022 23:43
Show Gist options
  • Save Williams0ff/7a3867eaec6f458c6fb32a4d6a90ebd8 to your computer and use it in GitHub Desktop.
Save Williams0ff/7a3867eaec6f458c6fb32a4d6a90ebd8 to your computer and use it in GitHub Desktop.
Novo Comando Enchant
diff --git a/aCis_datapack/data/html/en/admin/enchant.htm b/aCis_datapack/data/html/en/admin/enchant.htm
new file mode 100644
index 0000000..887727f
--- /dev/null
+++ b/aCis_datapack/data/html/en/admin/enchant.htm
@@ -0,0 +1,16 @@
+<html><title>Enchant</title><body>
+<table width=260><tr>
+<td width=40><button value="Main" action="bypass -h admin_admin" width=40 height=15 back="sek.cbui94" fore="sek.cbui92"></td>
+<td width=180><center>Item Enchant Menu</center></td>
+<td width=40><button value="Back" action="bypass -h admin_admin" width=40 height=15 back="sek.cbui94" fore="sek.cbui92"></td>
+</tr></table><br>
+ <center>
+ <table width=280 bgcolor=000000>
+ <tr>
+ <td width="10" valign="top" align="center">Enchant 0-65535:</td>
+ <td width=10><combobox width=55 height=21 var="enchant" list=all;Weapon;Shield;Helmet;Chest;Gloves;legs;Boots;Necklace;Earring;Ring;Tattoos;Cloak></td>
+ <td><edit var="val" width=40 height=15></td>
+ <td width=10><button value="Set" action="bypass -h admin_enchant $enchant $val " width=45 height=15 back="sek.cbui94" fore="sek.cbui92"></td>
+ </tr>
+ </table><img src="L2UI.SquareGray" width=280 height=1>
+</body></html>
\ No newline at end of file
diff --git a/aCis_gameserver/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminEnchant.java b/aCis_gameserver/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminEnchant.java
index 1dc26c2..097299d 100644
--- a/aCis_gameserver/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminEnchant.java
+++ b/aCis_gameserver/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminEnchant.java
@@ -6,13 +6,14 @@
import net.sf.l2j.gameserver.data.xml.ArmorSetData;
import net.sf.l2j.gameserver.enums.Paperdoll;
import net.sf.l2j.gameserver.handler.IAdminCommandHandler;
+import net.sf.l2j.gameserver.model.WorldObject;
import net.sf.l2j.gameserver.model.actor.Player;
import net.sf.l2j.gameserver.model.item.ArmorSet;
import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
import net.sf.l2j.gameserver.model.item.kind.Armor;
import net.sf.l2j.gameserver.model.item.kind.Item;
import net.sf.l2j.gameserver.model.item.kind.Weapon;
-import net.sf.l2j.gameserver.network.serverpackets.InventoryUpdate;
+import net.sf.l2j.gameserver.network.serverpackets.ItemList;
import net.sf.l2j.gameserver.skills.L2Skill;
public class AdminEnchant implements IAdminCommandHandler
@@ -28,141 +29,181 @@
final StringTokenizer st = new StringTokenizer(command, " ");
st.nextToken(); // skip command
- if (st.countTokens() == 2)
+ if (command.equals("admin_enchant"))
+ sendFile(player, "enchant.htm");
+ else
{
- try
+ final String subCommand = st.nextToken();
+ final int ench = Integer.parseInt(st.nextToken());
+
+ Paperdoll type = Paperdoll.NULL;
+ switch (subCommand)
{
- final Paperdoll paperdoll = Paperdoll.getEnumByName(st.nextToken());
- if (paperdoll == Paperdoll.NULL)
+ case "all":
+ for (ItemInstance test : player.getInventory().getPaperdollItems())
+ setEnchant(player, ench, Paperdoll.getEnumById(test.getLocationSlot()));
+ break;
+ case "Weapon":
+ type = Paperdoll.RHAND;
+ break;
+ case "Shield":
+ type = Paperdoll.LHAND;
+ break;
+ case "Helmet":
+ type = Paperdoll.HEAD;
+ break;
+ case "Chest":
+ type = Paperdoll.CHEST;
+ break;
+ case "Gloves":
+ type = Paperdoll.GLOVES;
+ break;
+ case "Legs":
+ type = Paperdoll.LEGS;
+ break;
+ case "Boots":
+ type = Paperdoll.FEET;
+ break;
+ case "Necklace":
+ type = Paperdoll.NECK;
+ break;
+ case "Earring":
+ type = Paperdoll.LEAR;
+ type = Paperdoll.REAR;
+ break;
+ case "Ring":
+ type = Paperdoll.LFINGER;
+ type = Paperdoll.RFINGER;
+ break;
+ case "Tattoos":
+ type = Paperdoll.UNDER;
+ break;
+ case "Cloak":
+ type = Paperdoll.CLOAK;
+ break;
+ }
+
+ if (type != Paperdoll.NULL)
+ {
+ try
{
- player.sendMessage("Unknown paperdoll slot.");
- return;
+ // check value
+ if (ench < 0 || ench > 65535)
+ player.sendMessage("You must set the enchant level to be between 0-65535.");
+ else
+ setEnchant(player, ench, type);
}
-
- final int enchant = Integer.parseInt(st.nextToken());
- if (enchant < 0 || enchant > 65535)
+ catch (Exception e)
{
- player.sendMessage("You must set the enchant level between 0 - 65535.");
- return;
+ player.sendMessage("Please specify a new enchant value.");
}
+ }
+
+ // show the enchant menu after an action
+ sendFile(player, "enchant.htm");
+ }
+ }
+
+ private void setEnchant(Player player, int ench, Paperdoll armorType)
+ {
+ final WorldObject targetWorldObject = getTarget(WorldObject.class, player, true);
+ if (!(targetWorldObject instanceof Player))
+ return;
+
+ final Player targetPlayer = (Player) targetWorldObject;
+
+ final ItemInstance item = targetPlayer.getInventory().getItemFrom(armorType);
+ if (item != null && item.getLocationSlot() == armorType.getId())
+ {
+ final Item it = item.getItem();
+ final int oldEnchant = item.getEnchantLevel();
+
+ item.setEnchantLevel(ench);
+ item.updateDatabase();
+
+ // If item is equipped, verify the skill obtention/drop (+4 duals, +6 armorset).
+ if (item.isEquipped())
+ {
+ final int currentEnchant = item.getEnchantLevel();
- final Player targetPlayer = getTargetPlayer(player, true);
-
- final ItemInstance item = targetPlayer.getInventory().getItemFrom(paperdoll);
- if (item == null)
+ // Skill bestowed by +4 duals.
+ if (it instanceof Weapon)
{
- player.sendMessage(targetPlayer.getName() + " doesn't wear any item in " + paperdoll + " slot.");
- return;
- }
-
- final Item toTestItem = item.getItem();
- final int oldEnchant = item.getEnchantLevel();
-
- // Do nothing if both values are the same.
- if (oldEnchant == enchant)
- {
- player.sendMessage(targetPlayer.getName() + "'s " + toTestItem.getName() + " enchant is already set to " + enchant + ".");
- return;
- }
-
- item.setEnchantLevel(enchant);
- item.updateDatabase();
-
- // If item is equipped, verify the skill obtention/drop (+4 duals, +6 armorset).
- if (item.isEquipped())
- {
- final int currentEnchant = item.getEnchantLevel();
-
- // Skill bestowed by +4 duals.
- if (toTestItem instanceof Weapon)
+ // Old enchant was >= 4 and new is lower : we drop the skill.
+ if (oldEnchant >= 4 && currentEnchant < 4)
{
- // Old enchant was >= 4 and new is lower : we drop the skill.
- if (oldEnchant >= 4 && currentEnchant < 4)
+ final L2Skill enchant4Skill = ((Weapon) it).getEnchant4Skill();
+ if (enchant4Skill != null)
{
- final L2Skill enchant4Skill = ((Weapon) toTestItem).getEnchant4Skill();
- if (enchant4Skill != null)
- {
- targetPlayer.removeSkill(enchant4Skill.getId(), false);
- targetPlayer.sendSkillList();
- }
+ targetPlayer.removeSkill(enchant4Skill.getId(), false);
+ targetPlayer.sendSkillList();
}
- // Old enchant was < 4 and new is 4 or more : we add the skill.
- else if (oldEnchant < 4 && currentEnchant >= 4)
+ }
+ // Old enchant was < 4 and new is 4 or more : we add the skill.
+ else if (oldEnchant < 4 && currentEnchant >= 4)
+ {
+ final L2Skill enchant4Skill = ((Weapon) it).getEnchant4Skill();
+ if (enchant4Skill != null)
{
- final L2Skill enchant4Skill = ((Weapon) toTestItem).getEnchant4Skill();
- if (enchant4Skill != null)
+ targetPlayer.addSkill(enchant4Skill, false);
+ targetPlayer.sendSkillList();
+ }
+ }
+ }
+ // Add skill bestowed by +6 armorset.
+ else if (it instanceof Armor)
+ {
+ // Old enchant was >= 6 and new is lower : we drop the skill.
+ if (oldEnchant >= 6 && currentEnchant < 6)
+ {
+ // Check if player is wearing a chest item.
+ final int itemId = targetPlayer.getInventory().getItemIdFrom(Paperdoll.CHEST);
+ if (itemId > 0)
+ {
+ final ArmorSet armorSet = ArmorSetData.getInstance().getSet(itemId);
+ if (armorSet != null)
{
- targetPlayer.addSkill(enchant4Skill, false);
- targetPlayer.sendSkillList();
+ final int skillId = armorSet.getEnchant6skillId();
+ if (skillId > 0)
+ {
+ targetPlayer.removeSkill(skillId, false);
+ targetPlayer.sendSkillList();
+ }
}
}
}
- // Add skill bestowed by +6 armorset.
- else if (toTestItem instanceof Armor)
+ // Old enchant was < 6 and new is 6 or more : we add the skill.
+ else if (oldEnchant < 6 && currentEnchant >= 6)
{
- // Old enchant was >= 6 and new is lower : we drop the skill.
- if (oldEnchant >= 6 && currentEnchant < 6)
+ // Checks if player is wearing a chest item
+ // Check if player is wearing a chest item.
+ final int itemId = targetPlayer.getInventory().getItemIdFrom(Paperdoll.CHEST);
+ if (itemId > 0)
{
- // Check if player is wearing a chest item.
- final int itemId = targetPlayer.getInventory().getItemIdFrom(Paperdoll.CHEST);
- if (itemId > 0)
+ final ArmorSet armorSet = ArmorSetData.getInstance().getSet(itemId);
+ if (armorSet != null && armorSet.isEnchanted6(targetPlayer)) // has all parts of set enchanted to 6 or more
{
- final ArmorSet armorSet = ArmorSetData.getInstance().getSet(itemId);
- if (armorSet != null)
+ final int skillId = armorSet.getEnchant6skillId();
+ if (skillId > 0)
{
- final int skillId = armorSet.getEnchant6skillId();
- if (skillId > 0)
+ final L2Skill skill = SkillTable.getInstance().getInfo(skillId, 1);
+ if (skill != null)
{
- targetPlayer.removeSkill(skillId, false);
+ targetPlayer.addSkill(skill, false);
targetPlayer.sendSkillList();
}
}
}
}
- // Old enchant was < 6 and new is 6 or more : we add the skill.
- else if (oldEnchant < 6 && currentEnchant >= 6)
- {
- // Check if player is wearing a chest item.
- final int itemId = targetPlayer.getInventory().getItemIdFrom(Paperdoll.CHEST);
- if (itemId > 0)
- {
- final ArmorSet armorSet = ArmorSetData.getInstance().getSet(itemId);
- if (armorSet != null && armorSet.isEnchanted6(targetPlayer)) // has all parts of set enchanted to 6 or more
- {
- final int skillId = armorSet.getEnchant6skillId();
- if (skillId > 0)
- {
- final L2Skill skill = SkillTable.getInstance().getInfo(skillId, 1);
- if (skill != null)
- {
- targetPlayer.addSkill(skill, false);
- targetPlayer.sendSkillList();
- }
- }
- }
- }
- }
}
}
-
- final InventoryUpdate iu = new InventoryUpdate();
- iu.addModifiedItem(item);
- targetPlayer.sendPacket(iu);
-
- targetPlayer.broadcastUserInfo();
-
- player.sendMessage(targetPlayer.getName() + "'s " + toTestItem.getName() + " enchant was modified from " + oldEnchant + " to " + enchant + ".");
}
- catch (Exception e)
- {
- player.sendMessage("Please specify a new enchant value.");
- }
- }
- else
- {
- player.sendMessage("Usage: //enchant slot enchant");
- player.sendMessage("Slots: under|lear|rear|neck|lfinger|rfinger|head|rhand|lhand");
- player.sendMessage("Slots: gloves|chest|legs|feet|cloak|face|hair|hairall");
+
+ targetPlayer.sendPacket(new ItemList(targetPlayer, false));
+ targetPlayer.broadcastUserInfo();
+
+ player.sendMessage("Changed enchantment of " + targetPlayer.getName() + "'s " + it.getName() + " from " + oldEnchant + " to " + ench + ".");
+ targetPlayer.sendMessage("A GM has changed the enchantment of your " + it.getName() + " from " + oldEnchant + " to " + ench + ".");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment