L2Angel 3 Опубликовано 1 января, 2021 Помогите разобраться, не влияет на шанс дропа второе число, как написано в комментарии, оно влияет на колличество выпадемого: //DROPLIST (MOB_ID, CHANCE) private final static int[][] DROPLIST = { {21376, 100}, - даже при значении 100 итем выпадает не каждый раз. Весь код ниже. package quests; import l2.commons.util.Rnd; import l2.gameserver.model.instances.NpcInstance; import l2.gameserver.model.quest.Quest; import l2.gameserver.model.quest.QuestState; import l2.gameserver.scripts.ScriptFile; public class _617_GatherTheFlames extends Quest implements ScriptFile { //npc private final static int VULCAN = 31539; private final static int HILDA = 31271; //items private final static int TORCH = 7264; //DROPLIST (MOB_ID, CHANCE) private final static int[][] DROPLIST = { {21376, 100}, {21377, 100}, {21378, 100}, {21652, 100}, {21380, 100}, {21381, 103}, {21653, 103}, {21383, 103}, {21394, 103}, {21385, 103}, {21386, 103}, {21388, 105}, {21655, 105}, {21387, 105}, {21390, 108}, {21656, 108}, {21395, 108}, {21389, 108}, {21391, 108}, {21392, 108}, {21393, 110}, {21657, 110}, {21382, 112}, {21379, 112}, {21654, 116}, {21384, 116}}; public static final int[] Recipes = { 6881, 6883, 6885, 6887, 7580, 6891, 6893, 6895, 6897, 6899 }; @Override public void onLoad() {} @Override public void onReload() {} @Override public void onShutdown() {} public _617_GatherTheFlames() { super(true); addStartNpc(VULCAN); addStartNpc(HILDA); for(int[] element : DROPLIST) addKillId(element[0]); } @Override public String onEvent(String event, QuestState st, NpcInstance npc) { String htmltext = event; if(event.equalsIgnoreCase("warsmith_vulcan_q0617_03.htm")) //VULCAN { if(st.getPlayer().getLevel() < 74) return "warsmith_vulcan_q0617_02.htm"; st.setState(STARTED); st.playSound(SOUND_ACCEPT); st.setCond(1); } else if(event.equalsIgnoreCase("blacksmith_hilda_q0617_03.htm")) //HILDA { if(st.getPlayer().getLevel() < 74) return "blacksmith_hilda_q0617_02.htm"; st.setState(STARTED); st.playSound(SOUND_ACCEPT); st.setCond(1); } else if(event.equalsIgnoreCase("warsmith_vulcan_q0617_08.htm")) { st.playSound(SOUND_FINISH); st.takeItems(TORCH, -1); st.exitCurrentQuest(true); } else if(event.equalsIgnoreCase("warsmith_vulcan_q0617_07.htm")) { if(st.getQuestItemsCount(TORCH) < 1000) return "warsmith_vulcan_q0617_05.htm"; st.takeItems(TORCH, 1000); st.giveItems(Recipes[Rnd.get(Recipes.length)], 1); st.playSound(SOUND_MIDDLE); } return htmltext; } @Override public String onTalk(NpcInstance npc, QuestState st) { String htmltext = "noquest"; int npcId = npc.getNpcId(); int cond = st.getCond(); if(npcId == VULCAN) { if(cond == 0) { if(st.getPlayer().getLevel() < 74) { htmltext = "warsmith_vulcan_q0617_02.htm"; st.exitCurrentQuest(true); } else htmltext = "warsmith_vulcan_q0617_01.htm"; } else htmltext = st.getQuestItemsCount(TORCH) < 1000 ? "warsmith_vulcan_q0617_05.htm" : "warsmith_vulcan_q0617_04.htm"; } else if(npcId == HILDA) if(cond < 1) htmltext = st.getPlayer().getLevel() < 74 ? "blacksmith_hilda_q0617_02.htm" : "blacksmith_hilda_q0617_01.htm"; else htmltext = "blacksmith_hilda_q0617_04.htm"; return htmltext; } @Override public String onKill(NpcInstance npc, QuestState st) { for(int[] element : DROPLIST) if(npc.getNpcId() == element[0]) { st.rollAndGive(TORCH, 1, element[1]); return null; } return null; } } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты