Михаил_Гриц 0 Опубликовано 8 апреля, 2017 (изменено) Приветствую друзья!Не смог прочитать рекомендации к размещению поста по причине отображения «??????? ???????» вместо текста.Скачал сборку 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; } } П.с.: Если нарушил правила размещения - прошу меня поправить, т.к. не смог их прочитать Изменено 8 апреля, 2017 пользователем Михаил_Гриц Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 8 апреля, 2017 Приветствую друзья! Не смог прочитать рекомендации к размещению поста по причине отображения «??????? ???????» вместо текста. Скачал сборку 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; } 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Михаил_Гриц 0 Опубликовано 8 апреля, 2017 (изменено) 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; } Благодарю за оперативность! Плюсанул! Исправляю свой некорректный вопрос Мне нужно, чтобы перед заточной итема, например бижи, проверялся её грейд. Сейчас скрипт позволяет точить грейд от Д до Ы, хотелось бы разделить их. Для этого сделаю несколько скриптов для каждого вида грейда. Т.е. если игрок подходит к НПС со скриптом на Д шмот, то он точит только Д. Изменено 8 апреля, 2017 пользователем Михаил_Гриц Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 8 апреля, 2017 (изменено) Благодарю за оперативность! Плюсанул! Мне нужно, чтобы перед заточной итема, например бижи, проверялся её грейд. Сейчас скрипт позволяет точить грейд от Д до Ы, хотелось бы разделить их. Для этого сделаю несколько скриптов для каждого вида грейда. Т.е. если игрок подходит к НПС со скриптом на Д шмот, то он точит только Д. 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) { // точим! } Изменено 8 апреля, 2017 пользователем zGosu 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Михаил_Гриц 0 Опубликовано 8 апреля, 2017 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) { // точим! } Может я рукожоп... Есть возможность созвониться в скайпе? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Михаил_Гриц 0 Опубликовано 8 апреля, 2017 Платные услуги оказываешь? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 9 апреля, 2017 (изменено) Платные услуги оказываешь? Заменяешь: 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 Если что-то не получится, пиши в скайп. Изменено 9 апреля, 2017 пользователем zGosu 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Михаил_Гриц 0 Опубликовано 9 апреля, 2017 (изменено) Заменяешь: 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 Если что-то не получится, пиши в скайп. Ошибка импорта Импорты в type (для Брони - хеви, лайт маг; Для пух блант, даггер т.д.) Кристаллы упоминаются тут: Ещё ТУТ Изменено 9 апреля, 2017 пользователем Михаил_Гриц Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 9 апреля, 2017 Ошибка импорта Импорты в type (для Брони - хеви, лайт маг; Для пух блант, даггер т.д.) Кристаллы упоминаются тут: Ну я со своей сборки делал. Тогда меняйте импорт на свои и это условие тоже под свою сборку перепишите: (item.getItem().getItemGrade() == CrystalType.D) 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Михаил_Гриц 0 Опубликовано 9 апреля, 2017 Ну я со своей сборки делал. Тогда меняйте импорт на свои и это условие тоже под свою сборку перепишите: (item.getItem().getItemGrade() == CrystalType.D) Можешь скинуть файл исхода импорта, в личку или тут, чтобы я хоть сообразил как и что нужно писать Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 9 апреля, 2017 Можешь скинуть файл исхода импорта, в личку или тут, чтобы я хоть сообразил как и что нужно писать У меня своя сборка, и у меня отличаются от вашей. Попробуйте прописать так: (item.getItem().getItemGrade() == L2Item.CRYSTAL_D) 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Михаил_Гриц 0 Опубликовано 9 апреля, 2017 У меня своя сборка, и у меня отличаются от вашей. Попробуйте прописать так: (item.getItem().getItemGrade() == L2Item.CRYSTAL_D) Добавлен импорт com.l2jserver.gameserver.model.items.L2Item Проверка на грейд успешна. Благодарю! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Apuc 0 Опубликовано 7 мая, 2017 (изменено) Добавлен импорт com.l2jserver.gameserver.model.items.L2Item Проверка на грейд успешна. Благодарю! Это снова я. Не пустило через ВК) (item.getItem().getItemGrade() == L2Item.CRYSTAL_D) Вопрос: Как сделать в коде проверку по ID предмета? Изменено 7 мая, 2017 пользователем Apuc Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 7 мая, 2017 Это снова я. Не пустило через ВК) (item.getItem().getItemGrade() == L2Item.CRYSTAL_D) Вопрос: Как сделать в коде проверку по ID предмета? if (item.getItem().getId() == ID_PREDMETA) 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Михаил_Гриц 0 Опубликовано 8 мая, 2017 (изменено) if (item.getItem().getId() == ID_PREDMETA) Поплясал с бубном для компенсации незнаний в скриптинге. Всё работает. Благодарю! Изменено 8 мая, 2017 пользователем Михаил_Гриц Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты