Hello MxC
I have on my server a npc, what it does is increase your items +1, +2, +3 to SafeMax +20 ... (Default config)
I want to know if anyone can modify the code, to do the enchant directly to +20 (1 Click = +20)
thx so much
This is the code
package net.sf.l2j.gameserver.scripting.scripts.custom;
import java.util.logging.Logger;
import net.sf.l2j.gameserver.model.actor.L2Npc;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
import net.sf.l2j.gameserver.model.itemcontainer.Inventory;
import net.sf.l2j.gameserver.model.olympiad.OlympiadManager;
import net.sf.l2j.gameserver.network.serverpackets.CharInfo;
import net.sf.l2j.gameserver.network.serverpackets.InventoryUpdate;
import net.sf.l2j.gameserver.network.serverpackets.UserInfo;
import net.sf.l2j.gameserver.scripting.Quest;
import net.sf.l2j.gameserver.scripting.QuestState;
public class Enchant extends Quest
{
public static final Logger _log = Logger.getLogger(Enchant.class.getName());
int npcId = 9994;
// Item required to enchant armor +1
int itemRequiredArmor = 6393;
int itemRequiredArmorCount = 50;
// Item required to enchant jewels +1
int itemRequiredJewels = 6393;
int itemRequiredJewelsCount = 50;
// Item required to enchant weapon +1
int itemRequiredWeapon = 6393;
int itemRequiredWeaponCount = 150;
// Item required to enchant belt/shirt +1
int itemRequiredBeltShirt = 6393;
int itemRequiredBeltShirtCount = 100;
public Enchant()
{
super(-1, "custom");
addStartNpc(npcId);
addFirstTalkId(npcId);
addTalkId(npcId);
}
@Override
public String onFirstTalk(L2Npc npc, L2PcInstance player)
{
String enchantType = "Enchant.htm";
if (player.getQuestState(getName()) == null)
newQuestState(player);
else if (player.isInCombat())
return drawHtml("You are in combat", "Don't fight if you want to talk with me!", enchantType);
else if (player.getPvpFlag() == 1)
return drawHtml("You are flagged", "Don't fight if you want to talk with me!", enchantType);
else if (player.getKarma() != 0)
return drawHtml("You are in chaotic state", "Don't fight if you want to talk with me!", enchantType);
else if (OlympiadManager.getInstance().isRegistered(player))
return drawHtml("You are registered for Olympiad", "You can't use my services<br1>while playing the Olympiad.", enchantType);
return "Enchant.htm";
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
String htmlText = event;
String enchantType = "Enchant.htm";
int armorType = -1;
// Armor parts
if (event.equals("enchantHelmet"))
{
armorType = Inventory.PAPERDOLL_HEAD;
enchantType = "EnchantArmor.htm";
htmlText = enchant(enchantType, player, armorType, itemRequiredArmor, itemRequiredArmorCount);
}
else if (event.equals("enchantChest"))
{
armorType = Inventory.PAPERDOLL_CHEST;
enchantType = "EnchantArmor.htm";
htmlText = enchant(enchantType, player, armorType, itemRequiredArmor, itemRequiredArmorCount);
}
else if (event.equals("enchantLeggings"))
{
armorType = Inventory.PAPERDOLL_LEGS;
enchantType = "EnchantArmor.htm";
htmlText = enchant(enchantType, player, armorType, itemRequiredArmor, itemRequiredArmorCount);
}
else if (event.equals("enchantGloves"))
{
armorType = Inventory.PAPERDOLL_GLOVES;
enchantType = "EnchantArmor.htm";
htmlText = enchant(enchantType, player, armorType, itemRequiredArmor, itemRequiredArmorCount);
}
else if (event.equals("enchantBoots"))
{
armorType = Inventory.PAPERDOLL_FEET;
enchantType = "EnchantArmor.htm";
htmlText = enchant(enchantType, player, armorType, itemRequiredArmor, itemRequiredArmorCount);
}
else if (event.equals("enchantShieldOrSigil"))
{
armorType = Inventory.PAPERDOLL_LHAND;
enchantType = "EnchantArmor.htm";
htmlText = enchant(enchantType, player, armorType, itemRequiredArmor, itemRequiredArmorCount);
}
// Jewels
else if (event.equals("enchantUpperEarring"))
{
armorType = Inventory.PAPERDOLL_LEAR;
enchantType = "EnchantJewels.htm";
htmlText = enchant(enchantType, player, armorType, itemRequiredJewels, itemRequiredJewelsCount);
}
else if (event.equals("enchantLowerEarring"))
{
armorType = Inventory.PAPERDOLL_REAR;
enchantType = "EnchantJewels.htm";
htmlText = enchant(enchantType, player, armorType, itemRequiredJewels, itemRequiredJewelsCount);
}
else if (event.equals("enchantNecklace"))
{
armorType = Inventory.PAPERDOLL_NECK;
enchantType = "EnchantJewels.htm";
htmlText = enchant(enchantType, player, armorType, itemRequiredJewels, itemRequiredJewelsCount);
}
else if (event.equals("enchantUpperRing"))
{
armorType = Inventory.PAPERDOLL_LFINGER;
enchantType = "EnchantJewels.htm";
htmlText = enchant(enchantType, player, armorType, itemRequiredJewels, itemRequiredJewelsCount);
}
else if (event.equals("enchantLowerRing"))
{
armorType = Inventory.PAPERDOLL_RFINGER;
enchantType = "EnchantJewels.htm";
htmlText = enchant(enchantType, player, armorType, itemRequiredJewels, itemRequiredJewelsCount);
}
else if (event.equals("enchantShirt"))
{
armorType = Inventory.PAPERDOLL_UNDER;
enchantType = "EnchantBeltShirt.htm";
htmlText = enchant(enchantType, player, armorType, itemRequiredBeltShirt, itemRequiredBeltShirtCount);
}
// Weapon
else if (event.equals("enchantWeapon"))
{
armorType = Inventory.PAPERDOLL_RHAND;
enchantType = "EnchantWeapon.htm";
htmlText = enchant(enchantType, player, armorType, itemRequiredWeapon, itemRequiredWeaponCount);
}
return htmlText;
}
private String enchant(String enchantType, L2PcInstance player, int armorType, int itemRequired, int itemRequiredCount)
{
QuestState st = player.getQuestState(getName());
int currentEnchant = 0;
int newEnchantLevel = 0;
if (st.getQuestItemsCount(itemRequired) >= itemRequiredCount)
{
try
{
ItemInstance item = getItemToEnchant(player, armorType);
if (item != null)
{
currentEnchant = item.getEnchantLevel();
if (currentEnchant < 20)
{
newEnchantLevel = setEnchant(player, item, currentEnchant + 1, armorType);
if (newEnchantLevel > 0)
{
st.takeItems(itemRequired, itemRequiredCount);
player.sendMessage("You successfully enchanted your " + item.getItem().getName() + " from +" + currentEnchant + " to +" + newEnchantLevel + "!");
String htmlContent = "<center>You successfully enchanted your:<br>" + "<font color=\"FF7200\">" + item.getItem().getName() + "</font><br>" + "From: <font color=\"AEFF00\">+" + currentEnchant + "</font> to <font color=\"AEFF00\">+" + newEnchantLevel + "</font>" + "</center>";
return drawHtml("Congratulations!", htmlContent, enchantType);
}
}
else
{
player.sendMessage("Your " + item.getItem().getName() + " is already +20!");
return drawHtml("It's already +20", "<center>Your <font color=\"FF7200\">" + item.getItem().getName() + "</font> is already +20!</center>", enchantType);
}
}
}
catch (StringIndexOutOfBoundsException e)
{
player.sendMessage("Something went wrong. Are equiped with the item?");
return drawHtml("Error Enchant", "<center>Something went wrong.<br>Are equiped with the item?</center>", enchantType);
}
catch (NumberFormatException e)
{
player.sendMessage("Something went wrong. Are equiped with the item?");
return drawHtml("Error Enchant", "<center>Something went wrong.<br>Are equiped with the item?</center>", enchantType);
}
player.sendMessage("Something went wrong. Are equiped with the item?");
return drawHtml("Error Enchant", "<center>Something went wrong.<br>Are equiped with the item?</center>", enchantType);
}
String content = "<center>" + "Not enough <font color=\"FF7200\">Event - Glitering Medals</font>!<br>";
if (st.getQuestItemsCount(itemRequired) > 0)
content += "You have " + st.getQuestItemsCount(itemRequired) + " Glittering Medals,<br1>" + "Need " + (itemRequiredCount - st.getQuestItemsCount(itemRequired)) + " more.";
else
content += "You need <font color=\"FF7200\">" + itemRequiredCount + " Event - Glitering Medals</font>!";
content += "</center>";
return drawHtml("Not Enough Items", content, enchantType);
}
@SuppressWarnings("null")
private static ItemInstance getItemToEnchant(L2PcInstance player, int armorType)
{
ItemInstance itemInstance = null;
ItemInstance parmorInstance = player.getInventory().getPaperdollItem(armorType);
if ((parmorInstance != null) && (parmorInstance.getLocationSlot() == armorType))
{
itemInstance = parmorInstance;
if (itemInstance != null)
{
return itemInstance;
}
}
return null;
}
private static int setEnchant(L2PcInstance player, ItemInstance item, int newEnchantLevel, int armorType)
{
if (item != null)
{
// set enchant value
player.getInventory().unEquipItemInSlot(armorType);
item.setEnchantLevel(newEnchantLevel);
player.getInventory().equipItem(item);
// send packets
InventoryUpdate iu = new InventoryUpdate();
iu.addModifiedItem(item);
player.sendPacket(iu);
player.broadcastPacket(new CharInfo(player));
player.sendPacket(new UserInfo(player));
return newEnchantLevel;
}
return -1;
}
public String drawHtml(String title, String content, String enchantType)
{
String html = "<html>" + "<title>L2Mondial Enchanter</title>" + "<body>" + "<center><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br>" + "<font color=\"FF9900\">" + title + "</font></center><br>" + content + "<br><br>" + "<center><a action=\"bypass -h Quest Enchant " + enchantType + "\">Go Back</a></center>" + "</body>" + "</html>";
return html;
}
}