Tpоuka 269 Опубликовано 8 июня, 2015 Всем привет, помогите дописать квест, а точнее добавить в событие onTalk, проверку на уже выполненый этот квест (т.е. сделать этот квест одноразовым) А если кто то щедрый, еще 1 вопрос, у меня по квесту нужно выбить 10 итемов, и есть такая строчка: return "Вы получили душу гремлина, нужно собрать 10 душ!\nОтнесите души гремлина нпц НОНЕ и получите вознаграждение!" Как добавить в событие onKill счетчик уже выбитых предметов, и вывести их в этот чат? т.е. сделать вот так *тут счетчик итемов" return "Вы получили душу гремлина, у вас в инвентаре "тут счетчик" из 10 душ!\nОтнесите души гремлина нпц НОНЕ и получите вознаграждение!" # Made by Mr. Have fun! - Version 0.3 by DrLecterimport sysfrom ru.catssoftware.gameserver.model.quest import Statefrom ru.catssoftware.gameserver.model.quest import QuestStatefrom ru.catssoftware.gameserver.network.serverpackets import SocialActionfrom ru.catssoftware.gameserver.model.quest.jython import QuestJython as JQuestqn = "303_CollectArrowheads"ORCISH_ARROWHEAD = 15002ADENA = 57class Quest (JQuest) :def __init__(self,id,name,descr):JQuest.__init__(self,id,name,descr)self.questItemIds = [ORCISH_ARROWHEAD]def onEvent (self,event,st) :htmltext = eventif event == "30029-04.htm" :st.set("cond","1")st.setState(State.STARTED)st.playSound("ItemSound.quest_accept")return htmltextdef onTalk (self,npc,player):htmltext = "You are either not on a quest that involves this NPC, or you don't meet this NPC's minimum quest requirements."st = player.getQuestState(qn)if not st : return htmltextnpcId = npc.getNpcId()id = st.getState()if id == State.CREATED :st.set("cond","0")if st.getInt("cond")==0 :if player.getLevel() < 10 :htmltext = "30029-03.htm"else:htmltext = "30029-02.htm"st.exitQuest(1)else :if st.getQuestItemsCount(ORCISH_ARROWHEAD)<10 :htmltext = "30029-05.htm"else :st.rewardItems(ADENA,1000)st.takeItems(ORCISH_ARROWHEAD,-1)st.playSound("ItemSound.quest_finish")st.addExpAndSp(50000,50000)ObjectId=player.getObjectId()player.broadcastPacket(SocialAction(ObjectId,3))htmltext = "30029-06.htm"st.exitQuest(1)return htmltextdef onKill(self,npc,player,isPet):st = player.getQuestState(qn)if not st : returnif st.getState() != State.STARTED : returncount=st.getQuestItemsCount(ORCISH_ARROWHEAD)if count<10 and st.getRandom(0)<0 :st.giveItems(ORCISH_ARROWHEAD,1)if count == 9 :st.set("cond","2")st.playSound("ItemSound.quest_middle")else:st.playSound("ItemSound.quest_itemget")return "Вы получили душу гремлина, нужно собрать 10 душ!\nОтнесите души гремлина нпц НОНЕ и получите вознаграждение!"QUEST = Quest(303,qn,"Collect Arrowheads")QUEST.addStartNpc(30029)QUEST.addTalkId(30029)QUEST.addKillId(20001) Большое спасибо Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
HideWar 143 Опубликовано 8 июня, 2015 Опирайтесь на разовый Квест в Говорящем Острове. (Лекарство от лихорадки). 2 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
CalypsoToolz 451 Опубликовано 8 июня, 2015 Насчет одноразового квеста: st.exitQuest(0) или st.exitQuest(false) 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Tpоuka 269 Опубликовано 8 июня, 2015 Насчет одноразового квеста: st.exitQuest(0) или st.exitQuest(false) Значения 0 и false равносильны? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
CalypsoToolz 451 Опубликовано 8 июня, 2015 (изменено) А счетчик: count = st.getInventory().getInventoryItemCount(ORCISH_ARROWHEAD, 0); return "Вы получили душу гремлина, у вас в инвентаре " + count + " из 10 душ!\nОтнесите души гремлина нпц НОНЕ и получите вознаграждение!" Изменено 8 июня, 2015 пользователем BymerOK Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
CalypsoToolz 451 Опубликовано 8 июня, 2015 Значения 0 и false равносильны? Точно не скажу без сурса, просто 1 метод принимает int, а второй boolean. Думаю оба параметра отвечают за repeatable. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Tpоuka 269 Опубликовано 8 июня, 2015 Точно не скажу без сурса, просто 1 метод принимает int, а второй boolean. Думаю оба параметра отвечают за repeatable. Благодарю. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты