Created
December 29, 2022 23:43
-
-
Save Williams0ff/7a3867eaec6f458c6fb32a4d6a90ebd8 to your computer and use it in GitHub Desktop.
Novo Comando Enchant
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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