Natzugen 172 Опубликовано 6 февраля, 2016 Привет, решил изменить в квесте дроп определнного итема на х5, не пойму где именно добавить / значение. Item ID: 6007 < который хочу менять. /* * This program is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation, either version 3 of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with * this program. If not, see <http://www.gnu.org/licenses/>. */ package net.sf.l2j.gameserver.scripting.quests; import net.sf.l2j.commons.random.Rnd; import net.sf.l2j.gameserver.model.actor.L2Npc; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.scripting.Quest; import net.sf.l2j.gameserver.scripting.QuestState; import java.util.HashMap; import java.util.Map; public class Q373_SupplierOfReagents extends Quest { private static final String qn = "Q373_SupplierOfReagents"; // Variables private static final String _ingredient = "ingredient"; private static final String _catalyst = "catalyst"; // NPCs private static final int WESLEY = 30166; private static final int URN = 31149; // Monsters private static final int CRENDION = 20813; private static final int HALLATE_MAID = 20822; private static final int HALLATE_GUARDIAN = 21061; private static final int PLATINUM_TRIBE_SHAMAN = 20828; private static final int PLATINUM_GUARDIAN_SHAMAN = 21066; private static final int LAVA_WYRM = 21111; private static final int HAMES_ORC_SHAMAN = 21115; // Quest items private static final int MIXING_STONE = 5904; private static final int MIXING_MANUAL = 6317; // Items - pouches private static final int REAGENT_POUCH_1 = 6007; private static final int REAGENT_POUCH_2 = 6008; private static final int REAGENT_POUCH_3 = 6009; private static final int REAGENT_BOX = 6010; // Items - ingredients private static final int WYRMS_BLOOD = 6011; private static final int LAVA_STONE = 6012; private static final int MOONSTONE_SHARD = 6013; private static final int ROTTEN_BONE = 6014; private static final int DEMONS_BLOOD = 6015; private static final int INFERNIUM_ORE = 6016; // Items - catalysts private static final int BLOOD_ROOT = 6017; private static final int VOLCANIC_ASH = 6018; private static final int QUICKSILVER = 6019; private static final int SULFUR = 6020; private static final int DEMONIC_ESSENCE = 6031; private static final int MIDNIGHT_OIL = 6030; // Items - products private static final int DRACOPLASM = 6021; private static final int MAGMA_DUST = 6022; private static final int MOON_DUST = 6023; private static final int NECROPLASM = 6024; private static final int DEMONPLASM = 6025; private static final int INFERNO_DUST = 6026; private static final int FIRE_ESSENCE = 6028; private static final int LUNARGENT = 6029; // Items - products final private static final int DRACONIC_ESSENCE = 6027; private static final int ABYSS_OIL = 6032; private static final int HELLFIRE_OIL = 6033; private static final int NIGHTMARE_OIL = 6034; private static final int PURE_SILVER = 6320; /** * This droplist defines the npcId, the item dropped and the luck. * <ul> * <li>HAMES_ORC_SHAMAN : 47% chance to drop - reagent pouch (47%)</li> * <li>HALLATES_MAID : 84,4% chance to drop - reageant pouch (66,4%) and volcanic ash (18%)</li> * <li>HALLATES_GUARDIAN : 83,3% chance to drop - demon's blood (72,9%) and moonstone shard (10,4%)</li> * <li>PLATINUM_GUARDIAN_SHAMAN : 44,2% chance to drop - reagent box (44,2%)</li> * <li>PLATINUM_TRIBE_SHAMAN : 100% chance to drop - reagent pouch (68%) and quichsilver (32%)</li> * <li>CRENDION : 100% chance to drop - rotten bone piece (61,8%) and quicksilver (38,2%)</li> * <li>LAVA_WYRM : 75% chance to drop - wyrm's blood (50,5%) and lava stone (24,5%)</li> * </ul> */ private static final Map<Integer, int[]> DROPLIST = new HashMap<>(); { DROPLIST.put(PLATINUM_GUARDIAN_SHAMAN, new int[] { REAGENT_BOX, 442000, 0 }); DROPLIST.put(HAMES_ORC_SHAMAN, new int[] { REAGENT_POUCH_3, 470000, 0 }); DROPLIST.put(PLATINUM_TRIBE_SHAMAN, new int[] { REAGENT_POUCH_2, QUICKSILVER, 680, 1000 }); DROPLIST.put(HALLATE_MAID, new int[] { REAGENT_POUCH_1, VOLCANIC_ASH, 664, 844 }); DROPLIST.put(HALLATE_GUARDIAN, new int[] { DEMONS_BLOOD, MOONSTONE_SHARD, 729, 833 }); DROPLIST.put(CRENDION, new int[] { ROTTEN_BONE, QUICKSILVER, 618, 1000 }); DROPLIST.put(LAVA_WYRM, new int[] { WYRMS_BLOOD, LAVA_STONE, 505, 750 }); } private static final int[][] FORMULAS = { { 10, WYRMS_BLOOD, BLOOD_ROOT, DRACOPLASM }, { 10, LAVA_STONE, VOLCANIC_ASH, MAGMA_DUST }, { 10, MOONSTONE_SHARD, VOLCANIC_ASH, MOON_DUST }, { 10, ROTTEN_BONE, BLOOD_ROOT, NECROPLASM }, { 10, DEMONS_BLOOD, BLOOD_ROOT, DEMONPLASM }, { 10, INFERNIUM_ORE, VOLCANIC_ASH, INFERNO_DUST }, { 10, DRACOPLASM, QUICKSILVER, DRACONIC_ESSENCE }, { 10, MAGMA_DUST, SULFUR, FIRE_ESSENCE }, { 10, MOON_DUST, QUICKSILVER, LUNARGENT }, { 10, NECROPLASM, QUICKSILVER, MIDNIGHT_OIL }, { 10, DEMONPLASM, SULFUR, DEMONIC_ESSENCE }, { 10, INFERNO_DUST, SULFUR, ABYSS_OIL }, { 1, FIRE_ESSENCE, DEMONIC_ESSENCE, HELLFIRE_OIL }, { 1, LUNARGENT, MIDNIGHT_OIL, NIGHTMARE_OIL }, { 1, LUNARGENT, QUICKSILVER, PURE_SILVER } }; private static final int[][] TEMPERATURES = { { 1, 100, 1 }, { 2, 45, 3 }, { 3, 15, 5 } }; public Q373_SupplierOfReagents() { super(373, "Supplier of Reagents"); setItemsIds(MIXING_STONE, MIXING_MANUAL); addStartNpc(WESLEY); addTalkId(WESLEY, URN); addKillId(CRENDION, HALLATE_MAID, HALLATE_GUARDIAN, PLATINUM_TRIBE_SHAMAN, PLATINUM_GUARDIAN_SHAMAN, LAVA_WYRM, HAMES_ORC_SHAMAN); } @Override public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) { String htmltext = event; QuestState st = player.getQuestState(qn); if (st == null) return htmltext; // Wesley if (event.equalsIgnoreCase("30166-04.htm")) { st.setState(STATE_STARTED); st.set("cond", "1"); st.playSound(QuestState.SOUND_ACCEPT); st.giveItems(MIXING_STONE, 1); st.giveItems(MIXING_MANUAL, 1); } else if (event.equalsIgnoreCase("30166-09.htm")) { st.playSound(QuestState.SOUND_FINISH); st.exitQuest(true); } // Urn else if (event.equalsIgnoreCase("31149-02.htm")) { if (!st.hasQuestItems(MIXING_STONE)) htmltext = "31149-04.htm"; } else if (event.startsWith("31149-03-")) { int regentId = Integer.parseInt(event.substring(9, 13)); for (int[] formula : FORMULAS) { if (formula[1] != regentId) continue; // Not enough items, cancel the operation. if (st.getQuestItemsCount(regentId) < formula[0]) break; st.set(_ingredient, Integer.toString(regentId)); return htmltext; } htmltext = "31149-04.htm"; } else if (event.startsWith("31149-06-")) { int catalyst = Integer.parseInt(event.substring(9, 13)); // Not enough items, cancel the operation. if (!st.hasQuestItems(catalyst)) return "31149-04.htm"; st.set(_catalyst, Integer.toString(catalyst)); } else if (event.startsWith("31149-12-")) { int regent = st.getInt(_ingredient); int catalyst = st.getInt(_catalyst); for (int[] formula : FORMULAS) { if (formula[1] != regent || formula[2] != catalyst) continue; // Not enough regents. if (st.getQuestItemsCount(regent) < formula[0]) break; // Not enough catalysts. if (!st.hasQuestItems(catalyst)) break; st.takeItems(regent, formula[0]); st.takeItems(catalyst, 1); int tempIndex = Integer.parseInt(event.substring(9, 10)); for (int temperature[] : TEMPERATURES) { if (temperature[0] != tempIndex) continue; if (Rnd.get(100) < temperature[1]) { st.giveItems(formula[3], temperature[2]); return "31149-12-" + formula[3] + ".htm"; } return "31149-11.htm"; } } htmltext = "31149-13.htm"; } return htmltext; } @Override public String onTalk(L2Npc npc, L2PcInstance player) { String htmltext = Quest.getNoQuestMsg(); QuestState st = player.getQuestState(qn); if (st == null) return htmltext; switch (st.getState()) { case STATE_CREATED: htmltext = (player.getLevel() < 57) ? "30166-01.htm" : "30166-02.htm"; break; case STATE_STARTED: if (npc.getNpcId() == WESLEY) htmltext = "30166-05.htm"; else htmltext = "31149-01.htm"; break; } return htmltext; } @Override public String onKill(L2Npc npc, L2PcInstance player, boolean isPet) { L2PcInstance partyMember = getRandomPartyMemberState(player, npc, STATE_STARTED); if (partyMember == null) return null; QuestState st = partyMember.getQuestState(qn); final int[] drop = DROPLIST.get(npc.getNpcId()); if (drop[2] == 0) st.dropItems(drop[0], 1, 0, drop[1]); else { final int random = Rnd.get(1000); if (random < drop[3]) st.dropItemsAlways((random < drop[2]) ? drop[0] : drop[1], 1, 0); } return null; } } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
terege 110 Опубликовано 6 февраля, 2016 private static final int REAGENT_POUCH_1 = 6007; А эту строчку видешь Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Natzugen 172 Опубликовано 6 февраля, 2016 Я это вижу, а как сделать чтобы был дроп на данный итем х5 ? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Natzugen 172 Опубликовано 6 февраля, 2016 private static final int REAGENT_POUCH_1 = 6007,5; так что ли? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Tenny 40 Опубликовано 6 февраля, 2016 (изменено) Мне кажется только если в конфигах ставить квест дроп х5 и тогда все итемы х5. либо ждать знатоков просто в квесте не вижу кол-во итемов DROPLIST.put(HALLATE_MAID, new int[] { REAGENT_POUCH_1, VOLCANIC_ASH, 664, 844 }); либо вот здесь попробуй что ни то пошаманить Изменено 6 февраля, 2016 пользователем Tenny 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
terege 110 Опубликовано 6 февраля, 2016 Мне кажется только если в конфигах ставить квест дроп х5 и тогда все итемы х5. либо ждать знатоков просто в квесте не вижу кол-во итемов DROPLIST.put(HALLATE_MAID, new int[] { REAGENT_POUCH_1, VOLCANIC_ASH, 664, 844 }); либо вот здесь попробуй что ни то пошаманить private static final int REAGENT_POUCH_1 = 6007,5; так что ли? if (drop[2] == 0) if (drop[0] == REAGENT_POUCH_1) st.dropItems(drop[0], 5, 0, drop[1]); else st.dropItems(drop[0], 1, 0, drop[1]); вот думать надо 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Natzugen 172 Опубликовано 6 февраля, 2016 Всем спасибо разобрался. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты