Holsten 43 Опубликовано 10 сентября, 2014 (изменено) Собственно квест на геройство. Помогите убрать проверку на то что персонаж уже проходил квест. Иначе сейчас он получается одноразовый. С меня +) Показать контент package quests.Hero; 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 Hero extends QuestJython { //NPC private final static int npcId = 80010; private final static int[] Monster = {21335,21338,21337,21348,21349,21347,21336,21340,21341,18286,21339,21330,21325,31324,31326,31328,31329,31327,31334,31334,31346,31345,31331,31332}; //QuestItem private final static int Stone = 750; //Chance from mobs private final static int chance1 = 50; private int count; private int cond = 0; private State STARTED = new State("Started", this); private State COMPLETED = new State("Completed", this); public Hero(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 : Monster) addKillId(mobs); } public String onEvent(String event, QuestState st) { L2PcInstance player = st.getPlayer(); if (event.equalsIgnoreCase("start")) { st.set("cond","1"); event = "80028-2.htm"; st.setState(STARTED); } else if (event.equalsIgnoreCase("sobral")) { count = player.getInventory().getInventoryItemCount(Stone,0); if (count < 100) event = "80028-no.htm"; else { st.takeItems(Stone,100); st.setState(COMPLETED); if (!player.isHero()) { player.setHero(1); } event = "80028-5.htm"; event = "<html><body>\u0412\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0425\u0438\u0440\u043e \u043d\u0430 1 \u0434\u0435\u043d\u044c.</body><html>"; } } else if (event.equalsIgnoreCase("otmena")) { event = "<html><body>Quest Cancel</body></html>"; st.exitQuest(true); } return event; } public String onTalk(L2NpcInstance npc, L2PcInstance talker) { QuestState st = talker.getQuestState("Hero"); String htmltext = "<html><body>You are either not on a quest that involves this NPC, or you don't meet this NPC's minimum quest requirements.</body></html>"; if (st == null || st.getState() == COMPLETED) return "<html><body>\u0412\u044b \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0438 \u043a\u0432\u0435\u0441\u0442.</body></html>"; int npcId = npc.getNpcId(); cond = st.getInt("cond"); if(npcId == npcId) { if (cond == 0) htmltext = "80028-1.htm"; else if (cond == 1) htmltext = "80028-3.htm"; } return htmltext; } public String onKill(L2NpcInstance npc, L2PcInstance killer, boolean isPet) { QuestState st = killer.getQuestState("Hero"); if(st == null) return null; int npcId = npc.getNpcId(); int cond = st.getInt("cond"); switch(cond) { case 1: for (int id : Monster) if (npcId == id) if (Rnd.get(100) < chance1) if (st.getPlayer().getInventory().getInventoryItemCount(Stone,0) < 100) st.giveItems(Stone,1); break; } return null; } public static void main(String[] args) { new Hero(901, "Hero", "quests"); } } Изменено 10 сентября, 2014 пользователем Holsten Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Boolean 121 Опубликовано 10 сентября, 2014 if (st == null || st.getState() == COMPLETED) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Holsten 43 Опубликовано 10 сентября, 2014 (изменено) В 10.09.2014 в 21:20, Boolean сказал: if (st == null || st.getState() == COMPLETED) Её вычеркнуть или "COMPLETED" заменить на "Started" ? Изменено 10 сентября, 2014 пользователем Holsten Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
JoeyTribbiani 822 Опубликовано 10 сентября, 2014 В 10.09.2014 в 21:01, Holsten сказал: Собственно квест на геройство. Помогите убрать проверку на то что персонаж уже проходил квест. Иначе сейчас он получается одноразовый. С меня +) Показать контент package quests.Hero; 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 Hero extends QuestJython { //NPC private final static int npcId = 80010; private final static int[] Monster = {21335,21338,21337,21348,21349,21347,21336,21340,21341,18286,21339,21330,21325,31324,31326,31328,31329,31327,31334,31334,31346,31345,31331,31332}; //QuestItem private final static int Stone = 750; //Chance from mobs private final static int chance1 = 50; private int count; private int cond = 0; private State STARTED = new State("Started", this); private State COMPLETED = new State("Completed", this); public Hero(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 : Monster) addKillId(mobs); } public String onEvent(String event, QuestState st) { L2PcInstance player = st.getPlayer(); if (event.equalsIgnoreCase("start")) { st.set("cond","1"); event = "80028-2.htm"; st.setState(STARTED); } else if (event.equalsIgnoreCase("sobral")) { count = player.getInventory().getInventoryItemCount(Stone,0); if (count < 100) event = "80028-no.htm"; else { st.takeItems(Stone,100); st.setState(COMPLETED); if (!player.isHero()) { player.setHero(1); } event = "80028-5.htm"; event = "<html><body>\u0412\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0425\u0438\u0440\u043e \u043d\u0430 1 \u0434\u0435\u043d\u044c.</body><html>"; } } else if (event.equalsIgnoreCase("otmena")) { event = "<html><body>Quest Cancel</body></html>"; st.exitQuest(true); } return event; } public String onTalk(L2NpcInstance npc, L2PcInstance talker) { QuestState st = talker.getQuestState("Hero"); String htmltext = "<html><body>You are either not on a quest that involves this NPC, or you don't meet this NPC's minimum quest requirements.</body></html>"; if (st == null || st.getState() == COMPLETED) return "<html><body>\u0412\u044b \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0438 \u043a\u0432\u0435\u0441\u0442.</body></html>"; int npcId = npc.getNpcId(); cond = st.getInt("cond"); if(npcId == npcId) { if (cond == 0) htmltext = "80028-1.htm"; else if (cond == 1) htmltext = "80028-3.htm"; } return htmltext; } public String onKill(L2NpcInstance npc, L2PcInstance killer, boolean isPet) { QuestState st = killer.getQuestState("Hero"); if(st == null) return null; int npcId = npc.getNpcId(); int cond = st.getInt("cond"); switch(cond) { case 1: for (int id : Monster) if (npcId == id) if (Rnd.get(100) < chance1) if (st.getPlayer().getInventory().getInventoryItemCount(Stone,0) < 100) st.giveItems(Stone,1); break; } return null; } public static void main(String[] args) { new Hero(901, "Hero", "quests"); } } Поделитесь квестом) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Holsten 43 Опубликовано 10 сентября, 2014 Квест перед тобой) Нужно только до ума довести. Потому что сейчас он одноразовый. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
12300 1 Опубликовано 10 сентября, 2014 В 10.09.2014 в 21:25, Holsten сказал: Её вычеркнуть или "COMPLETED" заменить на "Started" ? А что мешает сделать и то и то? Проверить будет ли работать? А нет я же ленивая свинья сделайте за меня Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Detect 618 Опубликовано 10 сентября, 2014 Интересное чудо, это типо бьешь перья и рб и герой? ... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
JoeyTribbiani 822 Опубликовано 10 сентября, 2014 В 10.09.2014 в 21:50, Holsten сказал: Квест перед тобой) Нужно только до ума довести. Потому что сейчас он одноразовый. А html'ки? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
JoeyTribbiani 822 Опубликовано 10 сентября, 2014 В 10.09.2014 в 22:08, Flayter сказал: Интересное чудо, это типо бьешь перья и рб и герой? ... Только мобы! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
12300 1 Опубликовано 10 сентября, 2014 (изменено) В 10.09.2014 в 22:09, joejo сказал: А html'ки? В данном скрипте указаны название всех html которые используются. Так сложно взять обычный квест "Крылья" - "тату" и прочее лабуду. Перенести в данный, и подправить под квест "геройство" ? Изменено 10 сентября, 2014 пользователем 12300 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Detect 618 Опубликовано 10 сентября, 2014 В 10.09.2014 в 22:11, 12300 сказал: В данном скрипте указаны название всех html которые используются. Так сложно взять обычный квест "Крылья" - "тату" и прочее лабуду. Перенести в данный, и подправить под квест "геройство" ? не все знают яву даже на минимальном уровне Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
12300 1 Опубликовано 10 сентября, 2014 В 10.09.2014 в 22:13, Flayter сказал: не все знают яву даже на минимальном уровне Это питон. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Detect 618 Опубликовано 10 сентября, 2014 В 10.09.2014 в 22:13, 12300 сказал: Это питон. Я знаю, ну под пв оно компилируется в яву если я правильно понимаю) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
12300 1 Опубликовано 10 сентября, 2014 В 10.09.2014 в 22:16, Flayter сказал: Я знаю, ну под пв оно компилируется в яву если я правильно понимаю) Ну точно не в php. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
JoeyTribbiani 822 Опубликовано 10 сентября, 2014 В 10.09.2014 в 22:11, 12300 сказал: В данном скрипте указаны название всех html которые используются. Так сложно взять обычный квест "Крылья" - "тату" и прочее лабуду. Перенести в данный, и подправить под квест "геройство" ? А так сложно взять и скинуть html'ки? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
12300 1 Опубликовано 10 сентября, 2014 (изменено) В 10.09.2014 в 22:24, joejo сказал: А так сложно взять и скинуть html'ки? А в друг его жестока обманули и он купил данный кв за овер 100 бутылок партвейна "777"? И он думаешь тебе скинет html`ки ? Изменено 10 сентября, 2014 пользователем 12300 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
JoeyTribbiani 822 Опубликовано 10 сентября, 2014 В 10.09.2014 в 22:26, 12300 сказал: А в друг его нае* и он купил данный кв за овер 100 бутылок партвейна "777"? И он думаешь тебе скинет html`ки ? Маловероятно,3-мя топорами уже никто не убивается.. З.Ы. Сообщение измени,а то балл еще выпишут! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Ronaldo 11 Опубликовано 10 сентября, 2014 (изменено) Та сделали бы уже Шару! Зачем посты набивать! Изменено 10 сентября, 2014 пользователем Ronaldo Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
12300 1 Опубликовано 10 сентября, 2014 В 10.09.2014 в 22:31, joejo сказал: Маловероятно,3-мя топорами уже никто не убивается.. З.Ы. Сообщение измени,а то балл еще выпишут! Изменил, спасибо. В 10.09.2014 в 22:32, Ronaldo сказал: Та сделали бы уже Шару! Зачем посты набивать! ТС задал вопрос, мы ему морально и физически помогаем. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
LifeGame32 312 Опубликовано 10 сентября, 2014 В 10.09.2014 в 22:13, 12300 сказал: Это питон. В 10.09.2014 в 22:16, Flayter сказал: Я знаю, ну под пв оно компилируется в яву если я правильно понимаю) В 10.09.2014 в 21:25, Holsten сказал: Её вычеркнуть или "COMPLETED" заменить на "Started" ? Написано на Java удалить st.setState(COMPLETED); и if (st == null || st.getState() == COMPLETED) return "<html><body>\u0412\u044b \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0438 \u043a\u0432\u0435\u0441\u0442.</body></html>"; И всё) 2 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Holsten 43 Опубликовано 11 сентября, 2014 В 10.09.2014 в 22:57, LifeGame32 сказал: Написано на Java удалить st.setState(COMPLETED); и if (st == null || st.getState() == COMPLETED) return "<html><body>\u0412\u044b \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0438 \u043a\u0432\u0435\u0441\u0442.</body></html>"; И всё) не пашет. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
LifeGame32 312 Опубликовано 11 сентября, 2014 В 11.09.2014 в 14:42, Holsten сказал: не пашет. там где было st.setState(COMPLETED); поставте st.set("cond","1"); и подчистить записи квеста в базе 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Holsten 43 Опубликовано 11 сентября, 2014 В 11.09.2014 в 14:50, LifeGame32 сказал: там где было st.setState(COMPLETED); поставте st.set("cond","1"); и подчистить записи квеста в базе Сработало, но после получения геройства, квест не завершается. Помимо этого изменения, удалял ещё строчки if (st == null || st.getState() == COMPLETED) return "<html><body>\u0412\u044b \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0438 \u043a\u0432\u0435\u0441\u0442.</body></html>"; Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Holsten 43 Опубликовано 11 сентября, 2014 В 11.09.2014 в 14:50, LifeGame32 сказал: там где было st.setState(COMPLETED); поставте st.set("cond","1"); и подчистить записи квеста в базе Короче достаточно было только эту манипуляцию проделать и всё) Спасибо, дал +) 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты