Laneq 10 Опубликовано 4 апреля, 2014 (изменено) как зделать дроп итема по пати? это в бд ставить?если да то где и что? или вот сам квест package quests.Wings; import net.sf.l2j.gameserver.model.L2Party; import net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.model.quest.QuestState; import net.sf.l2j.gameserver.model.quest.State; import net.sf.l2j.gameserver.model.quest.jython.QuestJython; import net.sf.l2j.util.Rnd; public class Wings extends QuestJython { //NPC private final static int npcId = 77777; private final static int[] MOBS = {22125, 22124, 22126, 22128,22123}; private final static int RaidBoss = 50013; //QuestItem private final static int BLACK_FEATHER = 10857; private final static int ITEM_FROM_RB = 10859; //Chance from mobs private final static int chance1 = 80; //Item private final static int FEATHER = 18016; private int count; //Разрешено ли повторять квест? private static boolean REPEATABLE = true; private int cond = 0; private State STARTED = new State("Started", this); public Wings(int questId, String name, String descr) { super(questId, name, descr, 1); State st = new State("Start", this); this.setInitialState(st); addStartNpc(npcId); addTalkId(npcId); for (int mobs : MOBS) addKillId(mobs); addKillId(RaidBoss); } public String onEvent(String event, QuestState st) { L2PcInstance player = st.getPlayer(); if (event.equalsIgnoreCase("start")) { st.set("cond","1"); event = "77777-2.htm"; st.setState(STARTED); } else if (event.equalsIgnoreCase("sobral")) { count = player.getInventory().getInventoryItemCount(BLACK_FEATHER,0); if (count < 300) event = "77777-no.htm"; else { st.takeItems(BLACK_FEATHER,300); st.set("cond","2"); event = "77777-4.htm"; } } else if (event.equalsIgnoreCase("item_RB")) { count = player.getInventory().getInventoryItemCount(ITEM_FROM_RB,0); if (count < 1) event = "77777-no1.htm"; else { st.takeItems(ITEM_FROM_RB,1); st.giveItems(FEATHER,1); st.exitQuest(REPEATABLE); event = "kvest zavershen"; } } else if (event.equalsIgnoreCase("otmena")) { event = "kvest otmenen"; st.exitQuest(true); } return event; } public String onTalk(L2NpcInstance npc, L2PcInstance talker) { QuestState st = talker.getQuestState(getName()); String htmltext = "You are either not on a quest that involves this NPC, or you don't meet this NPC's minimum quest requirements."; if(st == null) return htmltext; int npcId = npc.getNpcId(); cond = st.getInt("cond"); if(npcId == npcId) { if (cond == 0) htmltext = "77777-1.htm"; else if (cond == 1) htmltext = "77777-3.htm"; else if (cond == 2) htmltext = "77777-5.htm"; } return htmltext; } public String onKill(L2NpcInstance npc, L2PcInstance killer, boolean isPet) { QuestState st = killer.getQuestState(getName()); if(st == null) return null; int npcId = npc.getNpcId(); int cond = st.getInt("cond"); switch(cond) { case 1: for(int id : MOBS) if(npcId == id && Rnd.get(100) < chance1 && st.getPlayer().getInventory().getInventoryItemCount(BLACK_FEATHER,0) < 300) st.giveItems(BLACK_FEATHER,1); break; case 2: if(npcId == RaidBoss) { L2Party party = killer.getParty(); if(party != null) { for(L2PcInstance member : party.getPartyMembers()) if(member.getInventory().getInventoryItemCount(ITEM_FROM_RB,0) < 1) { st = member.getQuestState(getName()); if(st != null && st.getInt("cond") == 2) st.giveItems(ITEM_FROM_RB,1); } } else if(killer.getInventory().getInventoryItemCount(ITEM_FROM_RB,0) < 1) st.giveItems(ITEM_FROM_RB,1); } break; } return null; } public static void main(String[] args) { new Wings(-1, "Wings", "quests"); } } Изменено 4 апреля, 2014 пользователем Laneq Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
mcwa 295 Опубликовано 4 апреля, 2014 Итак по пати ведь Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Laneq 10 Опубликовано 4 апреля, 2014 (изменено) не падает им почему то,падает ток одному вот и спрашиваю через бд можно это организовать? Изменено 4 апреля, 2014 пользователем Laneq Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SoFace 315 Опубликовано 4 апреля, 2014 Вот код с вашего скрипта: for(L2PcInstance member : party.getPartyMembers()) if(member.getInventory().getInventoryItemCount(ITEM_FROM_RB,0) < 1) { st = member.getQuestState(getName()); if(st != null && st.getInt("cond") == 2) st.giveItems(ITEM_FROM_RB,1); } } Т.е. при убийстве РБ, награда даётся всей пати (Если такая имеется). Тут всё в порядке. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SoFace 315 Опубликовано 4 апреля, 2014 (изменено) не падает им почему то Можно попробовать поставить метод addItem к партийным игрокам, т.е. members.addItem(Тут предметы); За отдельную плату смогу помочь. Изменено 4 апреля, 2014 пользователем SoFace Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Grek 63 Опубликовано 4 апреля, 2014 (изменено) Можно попробовать поставить метод addItem к партийным игрокам, т.е. members.addItem(Тут предметы); За отдельную плату смогу помочь. Не рекомендую данного ТС, так же мне скачал за отдельную плату оплатил, в итоге он не чего не сделал и деньги так и не вернул, так что имейте ввиду, клуб форума, ему наверно не чем не обязывает, кстати может все таки отпишишь мне в скайпе и вернешь деньги, или ты считаешь что ты не должен это сделать Изменено 4 апреля, 2014 пользователем Grek Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Capitan 9 Опубликовано 4 апреля, 2014 Тс ты же говорил что ты тру адм и все знаешь как настроить? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SoFace 315 Опубликовано 4 апреля, 2014 Не рекомендую данного ТС, так же мне скачал за отдельную плату оплатил, в итоге он не чего не сделал и деньги так и не вернул, так что имейте ввиду, клуб форума, ему наверно не чем не обязывает Я вам написал, чтобы вы мне дали код протекции и я вам вернул деньги обратно. От вас я получил игнор. Ждите 120 дней, когда ваши 50 рублей придут обратно. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Grek 63 Опубликовано 4 апреля, 2014 (изменено) Я вам написал, чтобы вы мне дали код протекции и я вам вернул деньги обратно. От вас я получил игнор. Ждите 120 дней, когда ваши 50 рублей придут обратно. когда вы мне писали? может сообщение не пришло напишите еще раз, поскольку у меня не как у вас, тоесть не очень много времени пропадать за ПК, поскольку есть еще основная работа Изменено 4 апреля, 2014 пользователем Grek Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SoFace 315 Опубликовано 4 апреля, 2014 когда вы мне писали? может сообщение не пришло напишите еще раз, поскольку у меня не как у вас, тоесть не очень много времени пропадать за ПК, поскольку есть еще основная работа Отпишите мне в скайп, решим проблему. Не хочу разбираться публично. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Grek 63 Опубликовано 4 апреля, 2014 Отпишите мне в скайп, решим проблему. Не хочу разбираться публично. окей Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Detect 618 Опубликовано 4 апреля, 2014 пати дроп на пв , можно указать как мобов так и босов http://rghost.ru/53762132 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Laneq 10 Опубликовано 4 апреля, 2014 пати дроп на пв , можно указать как мобов так и босов http://rghost.ru/53762132 спс) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Laneq 10 Опубликовано 4 апреля, 2014 Тс ты же говорил что ты тру адм и все знаешь как настроить? мой вам ответ ---> Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты