Saha250 52 Опубликовано 1 марта, 2013 (изменено) Ребят подскажите плс так как я в этом не силен у меня вот есть квест как сделать так что б можно было эго брать повторно. с меня+++ import sysfrom net.sf.l2j import Config from net.sf.l2j.gameserver.model.quest import State from net.sf.l2j.gameserver.model.quest import QuestState from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest qn = "q902_FeatherGathering" ## нпц NPC = 80028 ## Мобы MOBS = [15105] #босс BOSS = 15106 ## Дроп #id перьев с мобов в мос FEATHER = 9239 #сколько нужно? FEATHER_NEED = 300 #шанс дропа, % FEATHER_CHANCE = 100 #id итема с босса BOSS_ITEM = 9241 ##Награда #id крыльев WINGS = 4037 class Quest (JQuest) : def __init__(self,id,name,descr) : JQuest.__init__(self,id,name,descr) def onEvent (self,event,st) : htmltext = event if event == "accept.htm": st.setState(STARTED) st.playSound("ItemSound.quest_accept") st.set("cond","1") elif event == "finish.htm": if st.getQuestItemsCount(FEATHER) >= FEATHER_NEED and st.getQuestItemsCount(BOSS_ITEM) >= 1: st.takeItems(FEATHER, -1) st.takeItems(BOSS_ITEM, -1) st.giveItems(WINGS, 1) st.set("cond","0") st.playSound("ItemSound.quest_finish") st.setState(COMPLETED) else: htmltext = "mobs.htm" return htmltext def onTalk (self,npc,player): st = player.getQuestState(qn) if not st: return "<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>" npcId = npc.getNpcId() idd = st.getState() cond = st.getInt("cond") if npcId == NPC: if idd == COMPLETED: htmltext = "completed.htm" if idd == CREATED: htmltext = "hello1.htm" elif cond == 1: if st.getQuestItemsCount(FEATHER) >= FEATHER_NEED and st.getQuestItemsCount(BOSS_ITEM) >= 1: htmltext = "mobs2.htm" else: htmltext = "mobs.htm" return htmltext def onKill(self,npc,player,isPet): st = player.getQuestState(qn) if not st or st.getInt("cond") != 1: return npcId = npc.getNpcId() reward = 0 limit = 1 chance = 100 if npcId in MOBS: reward = FEATHER limit = FEATHER_NEED chance = FEATHER_CHANCE if npcId == BOSS: reward = BOSS_ITEM limit = 1 if reward > 0: party = player.getParty() if party: for member in party.getPartyMembers(): if not member.isAlikeDead(): st = member.getQuestState("q902_FeatherGathering") if st and st.getQuestItemsCount(reward) < limit and st.getRandom(100) <= chance: st.giveItems(reward, 1) st.playSound("ItemSound.quest_itemget") if st.getQuestItemsCount(reward) >= limit: st.playSound("ItemSound.quest_middle") else: if st.getQuestItemsCount(reward) < limit and st.getRandom(100) <= chance: st.giveItems(reward, 1) st.playSound("ItemSound.quest_itemget") return QUEST = Quest(902, qn, "Feather Gathering") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(NPC) QUEST.addTalkId(NPC) QUEST.addKillId(BOSS) for m in MOBS: QUEST.addKillId(m) Изменено 1 марта, 2013 пользователем Saha250 2 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Abnormal 254 Опубликовано 1 марта, 2013 С чего ты взял, что он одноразовый? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Saha250 52 Опубликовано 1 марта, 2013 С чего ты взял, что он одноразовый? Уже пробовал проходить!! 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
GOODPower 58 Опубликовано 1 марта, 2013 if idd == COMPLETED: htmltext = "completed.htm" if idd == CREATED: htmltext = "hello1.htm" Смотрите пример у повторяющихся квестов. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Saha250 52 Опубликовано 1 марта, 2013 Смотрите пример у повторяющихся квестов. Я понимаю что можно глянуть но я в этом полный 0 так что просто не умею подскажите кто может с меня много ++++++ 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ploolp 115 Опубликовано 1 марта, 2013 АП Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
NewTrend 159 Опубликовано 2 марта, 2013 QUEST = Quest(902, qn, "Feather Gathering") Вроде вот,проверяй 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ploolp 115 Опубликовано 2 марта, 2013 QUEST = Quest(902, qn, "Feather Gathering") Вроде вот,проверяй а что ты вобше изменил??? что то я нечего не догнал Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Saha250 52 Опубликовано 2 марта, 2013 ребята что некто не может помочь?????? 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Saha250 52 Опубликовано 2 марта, 2013 Блин ребят мне сегодня нада этот долбаный квест кто сделает дам на пивасик 100 рублей!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
taste 501 Опубликовано 2 марта, 2013 (изменено) import sys from net.sf.l2j import Config from net.sf.l2j.gameserver.model.quest import State from net.sf.l2j.gameserver.model.quest import QuestState from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest qn = "q902_FeatherGathering" ## нпц NPC = 80028 ## Мобы MOBS = [15105] #босс BOSS = 15106 ## Дроп #id перьев с мобов в мос FEATHER = 9239 #сколько нужно? FEATHER_NEED = 300 #шанс дропа, % FEATHER_CHANCE = 100 #id итема с босса BOSS_ITEM = 9241 ##Награда #id крыльев WINGS = 4037 class Quest (JQuest) : def __init__(self,id,name,descr) : JQuest.__init__(self,id,name,descr) def onEvent (self,event,st) : htmltext = event if event == "accept.htm": st.setState(STARTED) st.playSound("ItemSound.quest_accept") st.set("cond","1") elif event == "finish.htm": if st.getQuestItemsCount(FEATHER) >= FEATHER_NEED and st.getQuestItemsCount(BOSS_ITEM) >= 1: st.takeItems(FEATHER, -1) st.takeItems(BOSS_ITEM, -1) st.giveItems(WINGS, 1) st.set("cond","0") st.playSound("ItemSound.quest_finish") else: htmltext = "mobs.htm" return htmltext def onTalk (self,npc,player): st = player.getQuestState(qn) if not st: return "You are either not on a quest that involves this NPC, or you don't meet this NPC's minimum quest requirements." npcId = npc.getNpcId() idd = st.getState() cond = st.getInt("cond") if npcId == NPC: if idd == CREATED: htmltext = "hello1.htm" elif cond == 1: if st.getQuestItemsCount(FEATHER) >= FEATHER_NEED and st.getQuestItemsCount(BOSS_ITEM) >= 1: htmltext = "mobs2.htm" else: htmltext = "mobs.htm" return htmltext def onKill(self,npc,player,isPet): st = player.getQuestState(qn) if not st or st.getInt("cond") != 1: return npcId = npc.getNpcId() reward = 0 limit = 1 chance = 100 if npcId in MOBS: reward = FEATHER limit = FEATHER_NEED chance = FEATHER_CHANCE if npcId == BOSS: reward = BOSS_ITEM limit = 1 if reward > 0: party = player.getParty() if party: for member in party.getPartyMembers(): if not member.isAlikeDead(): st = member.getQuestState("q902_FeatherGathering") if st and st.getQuestItemsCount(reward) < limit and st.getRandom(100) <= chance: st.giveItems(reward, 1) st.playSound("ItemSound.quest_itemget") if st.getQuestItemsCount(reward) >= limit: st.playSound("ItemSound.quest_middle") else: if st.getQuestItemsCount(reward) < limit and st.getRandom(100) <= chance: st.giveItems(reward, 1) st.playSound("ItemSound.quest_itemget") return QUEST = Quest(902, qn, "Feather Gathering") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(NPC) QUEST.addTalkId(NPC) QUEST.addKillId(BOSS) for m in MOBS: QUEST.addKillId(m) так пробуй, хотя не будет нифага работать потому что криво копируеться удали строчки где есть слово COMPLETED Изменено 2 марта, 2013 пользователем taste 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Saha250 52 Опубликовано 2 марта, 2013 (изменено) import sys from net.sf.l2j import Config from net.sf.l2j.gameserver.model.quest import State from net.sf.l2j.gameserver.model.quest import QuestState from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest qn = "q902_FeatherGathering" ## нпц NPC = 80028 ## Мобы MOBS = [15105] #босс BOSS = 15106 ## Дроп #id перьев с мобов в мос FEATHER = 9239 #сколько нужно? FEATHER_NEED = 300 #шанс дропа, % FEATHER_CHANCE = 100 #id итема с босса BOSS_ITEM = 9241 ##Награда #id крыльев WINGS = 4037 class Quest (JQuest) : def __init__(self,id,name,descr) : JQuest.__init__(self,id,name,descr) def onEvent (self,event,st) : htmltext = event if event == "accept.htm": st.setState(STARTED) st.playSound("ItemSound.quest_accept") st.set("cond","1") elif event == "finish.htm": if st.getQuestItemsCount(FEATHER) >= FEATHER_NEED and st.getQuestItemsCount(BOSS_ITEM) >= 1: st.takeItems(FEATHER, -1) st.takeItems(BOSS_ITEM, -1) st.giveItems(WINGS, 1) st.set("cond","0") st.playSound("ItemSound.quest_finish") else: htmltext = "mobs.htm" return htmltext def onTalk (self,npc,player): st = player.getQuestState(qn) if not st: return "You are either not on a quest that involves this NPC, or you don't meet this NPC's minimum quest requirements." npcId = npc.getNpcId() idd = st.getState() cond = st.getInt("cond") if npcId == NPC: if idd == CREATED: htmltext = "hello1.htm" elif cond == 1: if st.getQuestItemsCount(FEATHER) >= FEATHER_NEED and st.getQuestItemsCount(BOSS_ITEM) >= 1: htmltext = "mobs2.htm" else: htmltext = "mobs.htm" return htmltext def onKill(self,npc,player,isPet): st = player.getQuestState(qn) if not st or st.getInt("cond") != 1: return npcId = npc.getNpcId() reward = 0 limit = 1 chance = 100 if npcId in MOBS: reward = FEATHER limit = FEATHER_NEED chance = FEATHER_CHANCE if npcId == BOSS: reward = BOSS_ITEM limit = 1 if reward > 0: party = player.getParty() if party: for member in party.getPartyMembers(): if not member.isAlikeDead(): st = member.getQuestState("q902_FeatherGathering") if st and st.getQuestItemsCount(reward) < limit and st.getRandom(100) <= chance: st.giveItems(reward, 1) st.playSound("ItemSound.quest_itemget") if st.getQuestItemsCount(reward) >= limit: st.playSound("ItemSound.quest_middle") else: if st.getQuestItemsCount(reward) < limit and st.getRandom(100) <= chance: st.giveItems(reward, 1) st.playSound("ItemSound.quest_itemget") return QUEST = Quest(902, qn, "Feather Gathering") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(NPC) QUEST.addTalkId(NPC) QUEST.addKillId(BOSS) for m in MOBS: QUEST.addKillId(m) так пробуй, хотя не будет нифага работать потому что криво копируеться удали строчки где есть слово COMPLETED сделал как ты сказал ну когда я нажымаю на кнопку взять квест хтмл просто закрываеться и все больше нечего не происходит за старание лови ++ Изменено 2 марта, 2013 пользователем Saha250 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
taste 501 Опубликовано 2 марта, 2013 (изменено) class Quest (JQuest) : def __init__(self,id,name,descr) : JQuest.__init__(self,id,name,descr) def onEvent (self,event,st) : htmltext = event if event == "accept.htm": st.setState(State.STARTED) st.playSound("ItemSound.quest_accept") st.set("cond","1") elif event == "finish.htm": if st.getQuestItemsCount(FEATHER) >= FEATHER_NEED and st.getQuestItemsCount(BOSS_ITEM) >= 1: st.takeItems(FEATHER, -1) st.takeItems(BOSS_ITEM, -1) st.giveItems(WINGS, 1) st.set("cond","0") st.playSound("ItemSound.quest_finish") st.setState(State.COMPLETED) else: htmltext = "mobs.htm" return htmltext def onTalk (self,npc,player): st = player.getQuestState(qn) if not st: return "<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>" npcId = npc.getNpcId() idd = st.getState() cond = st.getInt("cond") if npcId == NPC: if idd == State.CREATED : htmltext = "hello1.htm" elif cond == 1: if st.getQuestItemsCount(FEATHER) >= FEATHER_NEED and st.getQuestItemsCount(BOSS_ITEM) >= 1: htmltext = "mobs2.htm" else: htmltext = "mobs.htm" return htmltext def onKill(self,npc,player,isPet): st = player.getQuestState(qn) if not st or st.getInt("cond") != 1: return npcId = npc.getNpcId() reward = 0 limit = 1 chance = 100 if npcId in MOBS: reward = FEATHER limit = FEATHER_NEED chance = FEATHER_CHANCE if npcId == BOSS: reward = BOSS_ITEM limit = 1 if reward > 0: party = player.getParty() if party: for member in party.getPartyMembers(): if not member.isAlikeDead(): st = member.getQuestState("q902_FeatherGathering") if st and st.getQuestItemsCount(reward) < limit and st.getRandom(100) <= chance: st.giveItems(reward, 1) st.playSound("ItemSound.quest_itemget") if st.getQuestItemsCount(reward) >= limit: st.playSound("ItemSound.quest_middle") else: if st.getQuestItemsCount(reward) < limit and st.getRandom(100) <= chance: st.giveItems(reward, 1) st.playSound("ItemSound.quest_itemget") return а так Изменено 2 марта, 2013 пользователем taste 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Saha250 52 Опубликовано 2 марта, 2013 class Quest (JQuest) : def __init__(self,id,name,descr) : JQuest.__init__(self,id,name,descr) def onEvent (self,event,st) : htmltext = event if event == "accept.htm": st.setState(State.STARTED) st.playSound("ItemSound.quest_accept") st.set("cond","1") elif event == "finish.htm": if st.getQuestItemsCount(FEATHER) >= FEATHER_NEED and st.getQuestItemsCount(BOSS_ITEM) >= 1: st.takeItems(FEATHER, -1) st.takeItems(BOSS_ITEM, -1) st.giveItems(WINGS, 1) st.set("cond","0") st.playSound("ItemSound.quest_finish") st.setState(State.COMPLETED) else: htmltext = "mobs.htm" return htmltext def onTalk (self,npc,player): st = player.getQuestState(qn) if not st: return "<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>" npcId = npc.getNpcId() idd = st.getState() cond = st.getInt("cond") if npcId == NPC: if idd == State.CREATED : htmltext = "hello1.htm" elif cond == 1: if st.getQuestItemsCount(FEATHER) >= FEATHER_NEED and st.getQuestItemsCount(BOSS_ITEM) >= 1: htmltext = "mobs2.htm" else: htmltext = "mobs.htm" return htmltext def onKill(self,npc,player,isPet): st = player.getQuestState(qn) if not st or st.getInt("cond") != 1: return npcId = npc.getNpcId() reward = 0 limit = 1 chance = 100 if npcId in MOBS: reward = FEATHER limit = FEATHER_NEED chance = FEATHER_CHANCE if npcId == BOSS: reward = BOSS_ITEM limit = 1 if reward > 0: party = player.getParty() if party: for member in party.getPartyMembers(): if not member.isAlikeDead(): st = member.getQuestState("q902_FeatherGathering") if st and st.getQuestItemsCount(reward) < limit and st.getRandom(100) <= chance: st.giveItems(reward, 1) st.playSound("ItemSound.quest_itemget") if st.getQuestItemsCount(reward) >= limit: st.playSound("ItemSound.quest_middle") else: if st.getQuestItemsCount(reward) < limit and st.getRandom(100) <= chance: st.giveItems(reward, 1) st.playSound("ItemSound.quest_itemget") return а так importing quests data ...failed to import quests : q902_FeatherGathering та шо с етим хреновым квестом 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ZooTee 29 Опубликовано 2 марта, 2013 (изменено) Что за сборка кстати ? Квесты на java у вас читает квест движок, могу дать аналогию на java только замените иды все и импорты под свою сборку, в питоне не очень силен, а разбираться с питон квестом не особо хочется.. P.S: ну а что бы квест на питоне повторялся, вам надо в правильные места вставить данный кусочек кода st.exitQuest(True) а от этой части кода - st.setState(COMPLETED) и COMPLETED нужно избавится. Изменено 2 марта, 2013 пользователем ZooTee 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Saha250 52 Опубликовано 2 марта, 2013 Что за сборка кстати ? Квесты на java у вас читает квест движок, могу дать аналогию на java только замените иды все и импорты под свою сборку, в питоне не очень силен, а разбираться с питон квестом не особо хочется.. P.S: ну а что бы квест на питоне повторялся, вам надо в правильные места вставить данный кусочек кода st.exitQuest(True) а от этой части кода - st.setState(COMPLETED) и COMPLETED нужно избавится. у меня платная PW сборка. Не знаю может и четает на Java Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
4eKucT 108 Опубликовано 2 марта, 2013 апп, тоже интересует этот квест. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ZooTee 29 Опубликовано 2 марта, 2013 Вот ловите http://rghost.ru/44225661, переделаете все под себя + включая импорты, PW должна читать java квесты, я просто больше чем уверен. 2 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты