Jump to content
  • 0

Npc Enchant Item


Question

Posted

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;
    }
}

3 answers to this question

Recommended Posts

  • 0
Posted

I guess I have nothing more to say, now it's all about your logic.

 

 

newEnchantLevel = setEnchant(player, item, currentEnchant + 1, armorType);
  • 0
Posted

 

I guess I have nothing more to say, now it's all about your logic.

newEnchantLevel = setEnchant(player, item, currentEnchant + 1, armorType);

 

  :dat:   you are da best :D +20 for you)))

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...