Перейти к содержанию
Авторизация  
Михаил_Гриц

Проверка предмета на CRYSTAL_ITEM_ID при заточки у НПС

Рекомендуемые сообщения

Приветствую друзья!
Не смог прочитать рекомендации к размещению поста по причине отображения «??????? ???????» вместо текста.

Скачал сборку L2JWorldZone_HF_170 в ней есть НПС, который точит шмот за определённый итем. Вопрос: как задать в нём проверку на CRYSTAL_ITEM_ID?

Как я понял нужно:

1) добавить

 import com.l2jserver.gameserver.model.items.instance.L2Item;
2) добавить проверку что-то вроде if CRYSTAL_ITEM_ID == 0; (для Д грейда), то выполняется  
try
            {
                L2ItemInstance item = getItemToEnchant(player, armorType); и тд

 

Прошу помощи в виде подсказок. 

Сам код java

package custom.EnchantD;
 
import java.util.logging.Logger;
 
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.itemcontainer.Inventory;
import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
import com.l2jserver.gameserver.model.olympiad.OlympiadManager;
import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.model.quest.QuestState;
import com.l2jserver.gameserver.network.serverpackets.CharInfo;
import com.l2jserver.gameserver.network.serverpackets.ExBrExtraUserInfo;
import com.l2jserver.gameserver.network.serverpackets.InventoryUpdate;
import com.l2jserver.gameserver.network.serverpackets.UserInfo;
 
public class EnchantD extends Quest
{
    public static final Logger _log = Logger.getLogger(EnchantD.class.getName());
 
    private final static int npcId = 9989;
 
    // Item required to enchant armor +100
    private final static int itemRequiredArmor = 958;
    private final static int itemRequiredArmorCount = 100;
 
    // Item required to enchant jewels +100
    private final static int itemRequiredJewels = 958;
    private final static int itemRequiredJewelsCount = 100;
 
    // Item required to enchant weapon +100
    private final static int itemRequiredWeapon = 957;
    private final static int itemRequiredWeaponCount = 100;
 
    // Item required to enchant belt/shirt +100
    private final static int itemRequiredBeltShirt = 958;
    private final static int itemRequiredBeltShirtCount = 100;
 
    public EnchantD(int questId, String name, String descr)
    {
        super(questId, name, descr);
       
        addStartNpc(npcId);
        addFirstTalkId(npcId);
        addTalkId(npcId);
    }
    
    public static void main(String[] args)
    {
        new EnchantD(-1, EnchantD.class.getSimpleName(), "custom");
    }
    
    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";
    }
 
    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);
        }
        // Belt/Shirt
        else if (event.equals("enchantBelt"))
        {
            armorType = Inventory.PAPERDOLL_BELT;
            enchantType = "EnchantBeltShirt.htm";
            
            htmlText = enchant(enchantType, player, armorType, itemRequiredBeltShirt, itemRequiredBeltShirtCount);
        }
        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
            {
                L2ItemInstance item = getItemToEnchant(player, armorType);
 
                if (item != null)
                {
                    if ( item.isItem() && item.isEquipable() && !item.isConsumable() && !item.isCommonItem() && !item.isOlyRestrictedItem() && !item.isShadowItem() && !item.isQuestItem())
                    {
                        currentEnchant = item.getEnchantLevel();
 
                        if ( currentEnchant < 65500 )
                        {
                            newEnchantLevel = setEnchant(player, item, currentEnchant+100, 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);
                        }
                    }
                    else
                    {
                        player.sendMessage("Your " + item.getItem().getName() + " is not enchantable!");
                        return drawHtml("Not enchantable item!", "<center>Your <font color=\"FF7200\">" + item.getItem().getName() +"</font> is not enchantable!</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);
        }
        else
        {
            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);
        }
    }
 
    private L2ItemInstance getItemToEnchant(L2PcInstance player, int armorType)
    {
        L2ItemInstance itemInstance = null;
        L2ItemInstance parmorInstance = player.getInventory().getPaperdollItem(armorType);
 
        if ((parmorInstance != null) && (parmorInstance.getLocationSlot() == armorType))
        {
            itemInstance = parmorInstance;
 
            if (itemInstance != null)
            {
                return itemInstance;
            }
        }
 
        return null;
    }
 
    private int setEnchant(L2PcInstance player, L2ItemInstance 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));
            player.broadcastPacket(new ExBrExtraUserInfo(player));
 
            return newEnchantLevel;
        }
 
        return -1;
    }
 
    public String drawHtml(String title, String content, String enchantType)
    {
        String html = "<html>"+
                        "<title>NPC 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;
    }
}

П.с.: Если нарушил правила размещения - прошу меня поправить, т.к. не смог их прочитать

Изменено пользователем Михаил_Гриц

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую друзья!

Не смог прочитать рекомендации к размещению поста по причине отображения «??????? ???????» вместо текста.

 

Скачал сборку L2JWorldZone_HF_170 в ней есть НПС, который точит шмот за определённый итем. Вопрос: как задать в нём проверку на CRYSTAL_ITEM_ID?

 

Как я понял нужно:

1) добавить

 import com.l2jserver.gameserver.model.items.instance.L2Item;

2) добавить проверку что-то вроде if CRYSTAL_ITEM_ID == 0; (для Д грейда), то выполняется  

try

            {

                L2ItemInstance item = getItemToEnchant(player, armorType); и тд

 

Прошу помощи в виде подсказок. 

Сам код java

package custom.EnchantD;
 
import java.util.logging.Logger;
 
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.itemcontainer.Inventory;
import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
import com.l2jserver.gameserver.model.olympiad.OlympiadManager;
import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.model.quest.QuestState;
import com.l2jserver.gameserver.network.serverpackets.CharInfo;
import com.l2jserver.gameserver.network.serverpackets.ExBrExtraUserInfo;
import com.l2jserver.gameserver.network.serverpackets.InventoryUpdate;
import com.l2jserver.gameserver.network.serverpackets.UserInfo;
 
public class EnchantD extends Quest
{
    public static final Logger _log = Logger.getLogger(EnchantD.class.getName());
 
    private final static int npcId = 9989;
 
    // Item required to enchant armor +100
    private final static int itemRequiredArmor = 958;
    private final static int itemRequiredArmorCount = 100;
 
    // Item required to enchant jewels +100
    private final static int itemRequiredJewels = 958;
    private final static int itemRequiredJewelsCount = 100;
 
    // Item required to enchant weapon +100
    private final static int itemRequiredWeapon = 957;
    private final static int itemRequiredWeaponCount = 100;
 
    // Item required to enchant belt/shirt +100
    private final static int itemRequiredBeltShirt = 958;
    private final static int itemRequiredBeltShirtCount = 100;
 
    public EnchantD(int questId, String name, String descr)
    {
        super(questId, name, descr);
       
        addStartNpc(npcId);
        addFirstTalkId(npcId);
        addTalkId(npcId);
    }
    
    public static void main(String[] args)
    {
        new EnchantD(-1, EnchantD.class.getSimpleName(), "custom");
    }
    
    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";
    }
 
    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);
        }
        // Belt/Shirt
        else if (event.equals("enchantBelt"))
        {
            armorType = Inventory.PAPERDOLL_BELT;
            enchantType = "EnchantBeltShirt.htm";
            
            htmlText = enchant(enchantType, player, armorType, itemRequiredBeltShirt, itemRequiredBeltShirtCount);
        }
        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
            {
                L2ItemInstance item = getItemToEnchant(player, armorType);
 
                if (item != null)
                {
                    if ( item.isItem() && item.isEquipable() && !item.isConsumable() && !item.isCommonItem() && !item.isOlyRestrictedItem() && !item.isShadowItem() && !item.isQuestItem())
                    {
                        currentEnchant = item.getEnchantLevel();
 
                        if ( currentEnchant < 65500 )
                        {
                            newEnchantLevel = setEnchant(player, item, currentEnchant+100, 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);
                        }
                    }
                    else
                    {
                        player.sendMessage("Your " + item.getItem().getName() + " is not enchantable!");
                        return drawHtml("Not enchantable item!", "<center>Your <font color=\"FF7200\">" + item.getItem().getName() +"</font> is not enchantable!</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);
        }
        else
        {
            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);
        }
    }
 
    private L2ItemInstance getItemToEnchant(L2PcInstance player, int armorType)
    {
        L2ItemInstance itemInstance = null;
        L2ItemInstance parmorInstance = player.getInventory().getPaperdollItem(armorType);
 
        if ((parmorInstance != null) && (parmorInstance.getLocationSlot() == armorType))
        {
            itemInstance = parmorInstance;
 
            if (itemInstance != null)
            {
                return itemInstance;
            }
        }
 
        return null;
    }
 
    private int setEnchant(L2PcInstance player, L2ItemInstance 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));
            player.broadcastPacket(new ExBrExtraUserInfo(player));
 
            return newEnchantLevel;
        }
 
        return -1;
    }
 
    public String drawHtml(String title, String content, String enchantType)
    {
        String html = "<html>"+
                        "<title>NPC 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;
    }
}

П.с.: Если нарушил правила размещения - прошу меня поправить, т.к. не смог их прочитать

final int CRYSTAL_ITEM_ID = 666; // тут ID кристала

if (player.getInventory().getItemByItemId(CRYSTAL_ITEM_ID) != null)
{
   // тут идет сам процесс точки
}

либо перед "процессом точки" написать:

final int CRYSTAL_ITEM_ID = 666; // тут ID кристала

if (player.getInventory().getItemByItemId(CRYSTAL_ITEM_ID) == null)
{
   player.sendMessage("Кристальные точки отсутствуют!");
   return;
}
  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
final int CRYSTAL_ITEM_ID = 666; // тут ID кристала

if (player.getInventory().getItemByItemId(CRYSTAL_ITEM_ID) != null)
{
   // тут идет сам процесс точки
}

либо перед "процессом точки" написать:

final int CRYSTAL_ITEM_ID = 666; // тут ID кристала

if (player.getInventory().getItemByItemId(CRYSTAL_ITEM_ID) == null)
{
   player.sendMessage("Кристальные точки отсутствуют!");
   return;
}

Благодарю за оперативность!  Плюсанул! Исправляю свой некорректный вопрос

Мне нужно, чтобы перед заточной итема, например бижи, проверялся её грейд. Сейчас скрипт позволяет точить грейд от Д до Ы, хотелось бы разделить их. Для этого сделаю несколько скриптов для каждого вида грейда. Т.е. если игрок подходит к НПС со скриптом на Д шмот, то он точит только Д. 

Изменено пользователем Михаил_Гриц

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Благодарю за оперативность!  Плюсанул!

Мне нужно, чтобы перед заточной итема, например бижи, проверялся её грейд. Сейчас скрипт позволяет точить грейд от Д до Ы, хотелось бы разделить их. Для этого сделаю несколько скриптов для каждого вида грейда. Т.е. если игрок подходит к НПС со скриптом на Д шмот, то он точит только Д. 

		final L2ItemInstance[] items = player.getInventory().getItems();
		for (final L2ItemInstance item : items) {
		    if (item.isWeapon()) {
			final int itemLevel = item.getItem().getItemGrade()
				.getId();
			if (itemLevel == Grade.S) {
			    return true;
			}
		    }
		}

Тут идет поиск оружия S грейда (для примера)

 

Если итем выбирается игроком, то можно написать так:

if (item.getItemGrade().getId() == Grade.D)
{
   // точим!
}
Изменено пользователем zGosu
  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
		final L2ItemInstance[] items = player.getInventory().getItems();
		for (final L2ItemInstance item : items) {
		    if (item.isWeapon()) {
			final int itemLevel = item.getItem().getItemGrade()
				.getId();
			if (itemLevel == Grade.S) {
			    return true;
			}
		    }
		}

Тут идет поиск оружия S грейда (для примера)

 

Если итем выбирается игроком, то можно написать так:

if (item.getItemGrade().getId() == Grade.D)
{
   // точим!
}

Может я рукожоп...  Есть возможность созвониться в скайпе?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Платные услуги оказываешь?

 

Заменяешь:

 if ( item.isItem() && item.isEquipable() && !item.isConsumable() && !item.isCommonItem() && !item.isOlyRestrictedItem() && !item.isShadowItem() && !item.isQuestItem())

на:

if ( item.isItem() && (item.getItem().getItemGrade() == CrystalType.D) && item.isEquipable() && !item.isConsumable() && !item.isCommonItem() && !item.isOlyRestrictedItem() && !item.isShadowItem() && !item.isQuestItem())
     

И не забудь импорт добавить com.l2jserver.gameserver.model.items.type.CrystalType

Если что-то не получится, пиши в скайп. 

Изменено пользователем zGosu
  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Заменяешь:

 if ( item.isItem() && item.isEquipable() && !item.isConsumable() && !item.isCommonItem() && !item.isOlyRestrictedItem() && !item.isShadowItem() && !item.isQuestItem())

на:

if ( item.isItem() && (item.getItem().getItemGrade() == CrystalType.D) && item.isEquipable() && !item.isConsumable() && !item.isCommonItem() && !item.isOlyRestrictedItem() && !item.isShadowItem() && !item.isQuestItem())
     

И не забудь импорт добавить com.l2jserver.gameserver.model.items.type.CrystalType

Если что-то не получится, пиши в скайп. 

Ошибка импорта

47c062c593be40b2bffa4ae58fc4c993.png

 

Импорты в type (для Брони - хеви, лайт маг; Для пух блант, даггер  т.д.)

595a5a6418fb4ccbafcb8f6463bbb331.png

 

Кристаллы упоминаются тут:

5260f69bca8f4146bb9e54ba0377d1dc.png

 

Ещё ТУТ

12b7965e352a49798108dfb2da761083.png

 

Изменено пользователем Михаил_Гриц

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ошибка импорта

47c062c593be40b2bffa4ae58fc4c993.png

 

Импорты в type (для Брони - хеви, лайт маг; Для пух блант, даггер  т.д.)

595a5a6418fb4ccbafcb8f6463bbb331.png

 

Кристаллы упоминаются тут:

5260f69bca8f4146bb9e54ba0377d1dc.png

 

Ну я со своей сборки делал. Тогда меняйте импорт на свои и это условие тоже под свою сборку перепишите:

(item.getItem().getItemGrade() == CrystalType.D)
  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Ну я со своей сборки делал. Тогда меняйте импорт на свои и это условие тоже под свою сборку перепишите:

(item.getItem().getItemGrade() == CrystalType.D)

Можешь скинуть файл исхода импорта, в личку или тут, чтобы я хоть сообразил как и что нужно писать

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можешь скинуть файл исхода импорта, в личку или тут, чтобы я хоть сообразил как и что нужно писать

У меня своя сборка, и  у меня отличаются от вашей. 

Попробуйте прописать так:

(item.getItem().getItemGrade() == L2Item.CRYSTAL_D)
  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

У меня своя сборка, и  у меня отличаются от вашей. 

Попробуйте прописать так:

(item.getItem().getItemGrade() == L2Item.CRYSTAL_D)

Добавлен импорт com.l2jserver.gameserver.model.items.L2Item

 

Проверка на грейд успешна. Благодарю!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добавлен импорт com.l2jserver.gameserver.model.items.L2Item

 

Проверка на грейд успешна. Благодарю!

 

Это снова я. Не пустило через ВК)

 

(item.getItem().getItemGrade() == L2Item.CRYSTAL_D)

 

Вопрос: Как сделать в коде проверку по ID предмета?

Изменено пользователем Apuc

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это снова я. Не пустило через ВК)

 

(item.getItem().getItemGrade() == L2Item.CRYSTAL_D)

 

Вопрос: Как сделать в коде проверку по ID предмета?

if (item.getItem().getId() == ID_PREDMETA)
  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
if (item.getItem().getId() == ID_PREDMETA)

Поплясал с бубном для компенсации незнаний в скриптинге. 

Всё работает. Благодарю!

Изменено пользователем Михаил_Гриц

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...