F0gi 0 Опубликовано 6 января, 2016 По квесту на соски The Guard is Busy в деревне людей ПНЦ Gilbert не дает соски а дает адену. Вот инит ру : import sysfrom com.l2jcore.Game.model.quest import Statefrom com.l2jcore.Game.model.quest import QuestStatefrom com.l2jcore.Game.model.quest.jython import QuestJython as JQuestqn = "257_GuardIsBusy1"GLUDIO_LORDS_MARK = 1084ORC_AMULET = 752ORC_NECKLACE = 1085WEREWOLF_FANG = 1086ADENA = 57class Quest (JQuest) : def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr) def onEvent (self,event,st) : htmltext = event if event == "30039-03.htm" : st.set("cond","1") st.setState(STARTED) st.playSound("ItemSound.quest_accept") st.giveItems(GLUDIO_LORDS_MARK,1) elif event == "30039-05.htm" : st.takeItems(GLUDIO_LORDS_MARK,1) st.exitQuest(1) st.playSound("ItemSound.quest_finish") return htmltext def onTalk (self,npc,player): htmltext = "<html><body>You are either not carrying out your quest or don't meet the criteria.</body></html>" st = player.getQuestState(qn) if not st : return htmltext npcId = npc.getNpcId() id = st.getState() if id == CREATED : st.set("cond","0") if st.getInt("cond")==0 : if player.getLevel() >= 6 : htmltext = "30039-02.htm" else: htmltext = "30039-01.htm" st.exitQuest(1) else : orc_a=st.getQuestItemsCount(ORC_AMULET) orc_n=st.getQuestItemsCount(ORC_NECKLACE) wer_f=st.getQuestItemsCount(WEREWOLF_FANG) if orc_a==orc_n==wer_f==0 : htmltext = "30039-04.htm" else : st.giveItems(ADENA,5*orc_a+15*orc_n+10*wer_f) st.takeItems(ORC_AMULET,-1) st.takeItems(ORC_NECKLACE,-1) st.takeItems(WEREWOLF_FANG,-1) htmltext = "30039-07.htm" return htmltext def onKill(self,npc,player,isPet): st = player.getQuestState(qn) if not st : return if st.getState() != STARTED : return npcId = npc.getNpcId() chance=5 if npcId in [20130,20131,20006] : item = ORC_AMULET elif npcId in [20093,20096,20098] : item = ORC_NECKLACE else : item = WEREWOLF_FANG if npcId == 20343 : chance = 4 elif npcId == 20342 : chance = 2 if st.getQuestItemsCount(GLUDIO_LORDS_MARK) : if st.getRandom(10)<chance : st.giveItems(item,1) st.playSound("ItemSound.quest_itemget") returnQUEST = Quest(257,qn,"Guard Is Busy1")CREATED = State('Start', QUEST)STARTING = State('Starting', QUEST)STARTED = State('Started', QUEST)COMPLETED = State('Completed', QUEST)QUEST.setInitialState(CREATED)QUEST.addStartNpc(30039)QUEST.addTalkId(30039)QUEST.addKillId(20130)QUEST.addKillId(20131)QUEST.addKillId(20132)QUEST.addKillId(20342)QUEST.addKillId(20343)QUEST.addKillId(20006)QUEST.addKillId(20093)QUEST.addKillId(20096)QUEST.addKillId(20098)STARTED.addQuestDrop(20130,ORC_AMULET,1)STARTED.addQuestDrop(20093,ORC_NECKLACE,1)STARTED.addQuestDrop(20132,WEREWOLF_FANG,1)STARTED.addQuestDrop(30039,GLUDIO_LORDS_MARK,1) Что нужно поправить что бы давал соски как положено? Скрин тут: Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Hotaka 769 Опубликовано 6 января, 2016 Уровень: 6 — 16 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Hotaka 769 Опубликовано 6 января, 2016 и ещё... как же Вы [цензура] тестить всё админскими чарами 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
F0gi 0 Опубликовано 6 января, 2016 Уровень: 6 — 16 квест для персонажей 6 и выше а не 6-16 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Hotaka 769 Опубликовано 6 января, 2016 квест для персонажей 6 и выше а не 6-16 не буду спорить. Но вот И между прочим даже следуя логике на 20+ уровне НГ соски ой как нужны... Особенно что соски даются 1 раз Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
F0gi 0 Опубликовано 6 января, 2016 (изменено) не буду спорить. Но вот И между прочим даже следуя логике на 20+ уровне НГ соски ой как нужны... Особенно что соски даются 1 раз Я вижу ты опытный. Тогда помоги склеить один и тот же квест только с разных сборок так что бы давались соски за квест. Вот с одной сборки # Made by Mr. Have fun! - Version 0.3 by DrLecter import sys 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 = "257_GuardIsBusy1" GLUDIO_LORDS_MARK = 1084 ORC_AMULET = 752 ORC_NECKLACE = 1085 WEREWOLF_FANG = 1086 ADENA = 57 #Newbie/one time rewards section #Any quest should rely on a unique bit, but #it could be shared among quest that were mutually #exclusive or race restricted. #Bit #1 isn't used for backwards compatibility. NEWBIE_REWARD = 4 SPIRITSHOT_FOR_BEGINNERS = 5790 SOULSHOT_FOR_BEGINNERS = 5789 class Quest (JQuest) : def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr) self.questItemIds = [ORC_AMULET, ORC_NECKLACE, WEREWOLF_FANG, GLUDIO_LORDS_MARK] def onEvent (self,event,st) : htmltext = event if event == "30039-03.htm" : st.set("cond","1") st.setState(State.STARTED) st.playSound("ItemSound.quest_accept") st.giveItems(GLUDIO_LORDS_MARK,1) elif event == "30039-05.htm" : st.takeItems(GLUDIO_LORDS_MARK,1) st.exitQuest(1) st.playSound("ItemSound.quest_finish") return htmltext def onTalk (self,npc,player): 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>" st = player.getQuestState(qn) if not st : return htmltext npcId = npc.getNpcId() id = st.getState() if id == State.CREATED : st.set("cond","0") if st.getInt("cond")==0 : if player.getLevel() >= 6 : htmltext = "30039-02.htm" else: htmltext = "30039-01.htm" st.exitQuest(1) else : orc_a=st.getQuestItemsCount(ORC_AMULET) orc_n=st.getQuestItemsCount(ORC_NECKLACE) wer_f=st.getQuestItemsCount(WEREWOLF_FANG) if orc_a==orc_n==wer_f==0 : htmltext = "30039-04.htm" else : # check the player state against this quest newbie rewarding mark. newbie = player.getNewbie() if newbie | NEWBIE_REWARD != newbie : player.setNewbie(newbie|NEWBIE_REWARD) st.showQuestionMark(26) if player.getClassId().isMage() : st.playTutorialVoice("tutorial_voice_027") st.giveItems(SPIRITSHOT_FOR_BEGINNERS,3000) else : st.playTutorialVoice("tutorial_voice_026") st.giveItems(SOULSHOT_FOR_BEGINNERS,6000) st.giveItems(ADENA,5*orc_a+15*orc_n+10*wer_f) st.takeItems(ORC_AMULET,-1) st.takeItems(ORC_NECKLACE,-1) st.takeItems(WEREWOLF_FANG,-1) htmltext = "30039-07.htm" return htmltext def onKill(self,npc,player,isPet): st = player.getQuestState(qn) if not st : return if st.getState() != State.STARTED : return npcId = npc.getNpcId() chance=5 if npcId in [20130,20131,20006] : item = ORC_AMULET elif npcId in [20093,20096,20098] : item = ORC_NECKLACE else : item = WEREWOLF_FANG if npcId == 20343 : chance = 4 elif npcId == 20342 : chance = 2 if st.getQuestItemsCount(GLUDIO_LORDS_MARK) : if st.getRandom(10)<chance : st.giveItems(item,1) st.playSound("ItemSound.quest_itemget") return QUEST = Quest(257,qn,"Guard Is Busy1") QUEST.addStartNpc(30039) QUEST.addTalkId(30039) QUEST.addKillId(20130) QUEST.addKillId(20131) QUEST.addKillId(20132) QUEST.addKillId(20342) QUEST.addKillId(20343) QUEST.addKillId(20006) QUEST.addKillId(20093) QUEST.addKillId(20096) QUEST.addKillId(20098) а вот с другой # Made by Mr. Have fun! - Version 0.3 by DrLecter import sys from com.l2jcore.Game.model.quest import State from com.l2jcore.Game.model.quest import QuestState from com.l2jcore.Game.model.quest.jython import QuestJython as JQuest qn = "257_GuardIsBusy1" GLUDIO_LORDS_MARK = 1084 ORC_AMULET = 752 ORC_NECKLACE = 1085 WEREWOLF_FANG = 1086 ADENA = 57 #Newbie/one time rewards section #Any quest should rely on a unique bit, but #it could be shared among quest that were mutually #exclusive or race restricted. #Bit #1 isn't used for backwards compatibility. NEWBIE_REWARD = 4 SPIRITSHOT_FOR_BEGINNERS = 5790 SOULSHOT_FOR_BEGINNERS = 5789 class Quest (JQuest) : def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr) self.questItemIds = [ORC_AMULET, ORC_NECKLACE, WEREWOLF_FANG, GLUDIO_LORDS_MARK] def onEvent (self,event,st) : htmltext = event if event == "30039-03.htm" : st.set("cond","1") st.setState(State.STARTED) st.playSound("ItemSound.quest_accept") st.giveItems(GLUDIO_LORDS_MARK,1) elif event == "30039-05.htm" : st.takeItems(GLUDIO_LORDS_MARK,1) st.exitQuest(1) st.playSound("ItemSound.quest_finish") return htmltext def onTalk (self,npc,player): 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>" st = player.getQuestState(qn) if not st : return htmltext npcId = npc.getNpcId() id = st.getState() if id == State.CREATED : st.set("cond","0") if st.getInt("cond")==0 : if player.getLevel() >= 6 : htmltext = "30039-02.htm" else: htmltext = "30039-01.htm" st.exitQuest(1) else : orc_a=st.getQuestItemsCount(ORC_AMULET) orc_n=st.getQuestItemsCount(ORC_NECKLACE) wer_f=st.getQuestItemsCount(WEREWOLF_FANG) if orc_a==orc_n==wer_f==0 : htmltext = "30039-04.htm" else : # check the player state against this quest newbie rewarding mark. newbie = player.getNewbie() if newbie | NEWBIE_REWARD != newbie : player.setNewbie(newbie|NEWBIE_REWARD) st.showQuestionMark(26) if player.getClassId().isMage() : st.playTutorialVoice("tutorial_voice_027") st.giveItems(SPIRITSHOT_FOR_BEGINNERS,3000) else : st.playTutorialVoice("tutorial_voice_026") st.giveItems(SOULSHOT_FOR_BEGINNERS,6000) st.giveItems(ADENA,5*orc_a+15*orc_n+10*wer_f) st.takeItems(ORC_AMULET,-1) st.takeItems(ORC_NECKLACE,-1) st.takeItems(WEREWOLF_FANG,-1) htmltext = "30039-07.htm" return htmltext def onKill(self,npc,player,isPet): st = player.getQuestState(qn) if not st : return if st.getState() != State.STARTED : return npcId = npc.getNpcId() chance=5 if npcId in [20130,20131,20006] : item = ORC_AMULET elif npcId in [20093,20096,20098] : item = ORC_NECKLACE else : item = WEREWOLF_FANG if npcId == 20343 : chance = 4 elif npcId == 20342 : chance = 2 if st.getQuestItemsCount(GLUDIO_LORDS_MARK) : if st.getRandom(10)<chance : st.giveItems(item,1) st.playSound("ItemSound.quest_itemget") return QUEST = Quest(257,qn,"Guard Is Busy1") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30039) QUEST.addTalkId(30039) QUEST.addKillId(20130) QUEST.addKillId(20131) QUEST.addKillId(20132) QUEST.addKillId(20342) QUEST.addKillId(20343) QUEST.addKillId(20006) QUEST.addKillId(20093) QUEST.addKillId(20096) QUEST.addKillId(20098) STARTED.addQuestDrop(20130,ORC_AMULET,1) STARTED.addQuestDrop(20093,ORC_NECKLACE,1) STARTED.addQuestDrop(20132,WEREWOLF_FANG,1) STARTED.addQuestDrop(30039,GLUDIO_LORDS_MARK,1) Изменено 6 января, 2016 пользователем F0gi Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Hotaka 769 Опубликовано 6 января, 2016 создай чара нового, от 6 до 16 уровня. пройди им квест. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
F0gi 0 Опубликовано 6 января, 2016 (изменено) создай чара нового, от 6 до 16 уровня. пройди им квест. Честно делал все это. Создавал чара обычного проходил квест все тоже самое. Дает адену. Вон видишь я выше скинул один и тот же квест с разных сборок, в одном есть стоки с сосками а в другой сборке нет. Как сделать что бы квест работал и давало не адену а соски? Быть может изменить вот тут что то связано с аденой? GLUDIO_LORDS_MARK = 1084 ORC_AMULET = 752 ORC_NECKLACE = 1085 WEREWOLF_FANG = 1086 ADENA = 57 Изменено 6 января, 2016 пользователем F0gi Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Hotaka 769 Опубликовано 6 января, 2016 (изменено) Честно делал все это. Создавал чара обычного проходил квест все тоже самое. Дает адену. Вон видишь я выше скинул один и тот же квест с разных сборок, в одном есть стоки с сосками а в другой сборке нет. Как сделать что бы квест работал и давало не адену а соски? Быть может изменить вот тут что то связано с аденой? GLUDIO_LORDS_MARK = 1084 ORC_AMULET = 752 ORC_NECKLACE = 1085 WEREWOLF_FANG = 1086 ADENA = 57 По квесту соски даются только одина раз. В дальнейшем должно давать только адену. Выделенный красным текст есть в обоих квестах что ты скинул. Блин а что за сборка у тебя? И под какие рейты ты планируешь эту сборку? ps у меня как-то было такое на ОБТ на х100... тоже этот квест не работал так мне его тестировали уроды))) Требовали пофиксить... нафиг он нужен им только не смогли и сами понять))) чуть позже могу посмотреть у себя, работает/не работает. если что скину свой. Изменено 6 января, 2016 пользователем Hotaka Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
F0gi 0 Опубликовано 6 января, 2016 (изменено) По квесту соски даются только одина раз. В дальнейшем должно давать только адену. Выделенный красным текст есть в обоих квестах что ты скинул. Блин а что за сборка у тебя? И под какие рейты ты планируешь эту сборку? ps у меня как-то было такое на ОБТ на х100... тоже этот квест не работал так мне его тестировали уроды))) Требовали пофиксить... нафиг он нужен им только не смогли и сами понять))) чуть позже могу посмотреть у себя, работает/не работает. если что скину свой. О черт, извини сплю уже просто. Я тебе скинул 2 одинаковых просто, потому то что выделено красным есть и там и там. Хочу сделать чтото типа х30. Вот то что с другой сборки. Тут нет нечего о сосках. # Made by Mr. Have fun! - Version 0.3 by DrLecter import sys from com.l2jcore.Game.model.quest import State from com.l2jcore.Game.model.quest import QuestState from com.l2jcore.Game.model.quest.jython import QuestJython as JQuest qn = "257_GuardIsBusy1" GLUDIO_LORDS_MARK = 1084 ORC_AMULET = 752 ORC_NECKLACE = 1085 WEREWOLF_FANG = 1086 ADENA = 57 class Quest (JQuest) : def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr) def onEvent (self,event,st) : htmltext = event if event == "30039-03.htm" : st.set("cond","1") st.setState(STARTED) st.playSound("ItemSound.quest_accept") st.giveItems(GLUDIO_LORDS_MARK,1) elif event == "30039-05.htm" : st.takeItems(GLUDIO_LORDS_MARK,1) st.exitQuest(1) st.playSound("ItemSound.quest_finish") return htmltext def onTalk (self,npc,player): htmltext = "<html><body>You are either not carrying out your quest or don't meet the criteria.</body></html>" st = player.getQuestState(qn) if not st : return htmltext npcId = npc.getNpcId() id = st.getState() if id == CREATED : st.set("cond","0") if st.getInt("cond")==0 : if player.getLevel() >= 6 : htmltext = "30039-02.htm" else: htmltext = "30039-01.htm" st.exitQuest(1) else : orc_a=st.getQuestItemsCount(ORC_AMULET) orc_n=st.getQuestItemsCount(ORC_NECKLACE) wer_f=st.getQuestItemsCount(WEREWOLF_FANG) if orc_a==orc_n==wer_f==0 : htmltext = "30039-04.htm" else : st.giveItems(ADENA,5*orc_a+15*orc_n+10*wer_f) st.takeItems(ORC_AMULET,-1) st.takeItems(ORC_NECKLACE,-1) st.takeItems(WEREWOLF_FANG,-1) htmltext = "30039-07.htm" return htmltext def onKill(self,npc,player,isPet): st = player.getQuestState(qn) if not st : return if st.getState() != STARTED : return npcId = npc.getNpcId() chance=5 if npcId in [20130,20131,20006] : item = ORC_AMULET elif npcId in [20093,20096,20098] : item = ORC_NECKLACE else : item = WEREWOLF_FANG if npcId == 20343 : chance = 4 elif npcId == 20342 : chance = 2 if st.getQuestItemsCount(GLUDIO_LORDS_MARK) : if st.getRandom(10)<chance : st.giveItems(item,1) st.playSound("ItemSound.quest_itemget") return QUEST = Quest(257,qn,"Guard Is Busy1") CREATED = State('Start', QUEST) STARTING = State('Starting', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(30039) QUEST.addTalkId(30039) QUEST.addKillId(20130) QUEST.addKillId(20131) QUEST.addKillId(20132) QUEST.addKillId(20342) QUEST.addKillId(20343) QUEST.addKillId(20006) QUEST.addKillId(20093) QUEST.addKillId(20096) QUEST.addKillId(20098) STARTED.addQuestDrop(20130,ORC_AMULET,1) STARTED.addQuestDrop(20093,ORC_NECKLACE,1) STARTED.addQuestDrop(20132,WEREWOLF_FANG,1) STARTED.addQuestDrop(30039,GLUDIO_LORDS_MARK,1) чуть позже могу посмотреть у себя, работает/не работает. если что скину свой. Хорошо! Изменено 7 января, 2016 пользователем F0gi Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
DeadForzz 152 Опубликовано 7 января, 2016 каким нужно быть (цензура) что бы делать квест на соски в 21 веке Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
F0gi 0 Опубликовано 7 января, 2016 каким нужно быть (цензура) что бы делать квест на соски в 21 веке Хочу понять как правильно править квесты. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
CalypsoToolz 451 Опубликовано 7 января, 2016 (изменено) В питоне не силен, но думаю суть понятна: if st.getInt("nofirst")==1 : # выдаем адену else : st.set("nofirst","1") # выдаем соски Изменено 7 января, 2016 пользователем Calyps0 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
se1dhe 501 Опубликовано 7 января, 2016 ><SPIRITSHOT_FOR_BEGINNERS - замени на id сосок. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Elione 265 Опубликовано 8 января, 2016 >< SPIRITSHOT_FOR_BEGINNERS - замени на id сосок. Чем поможет? Там и так указаны магшоты лол)))) просто воспользовались переменной int, дабы постоянно не писать айди Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SmokiMo 892 Опубликовано 8 января, 2016 Чего-то уже не первый раз смотрю в темах такого рода собирается народ и начинает глобалить, а в чем же епта проблема? А проблема в не знании английского языка и отсутствии желания внимательно посмотретьПервое на что стоит обратить внимание #Newbie/one time rewards section #Any quest should rely on a unique bit, but #it could be shared among quest that were mutually #exclusive or race restricted. #Bit #1 isn't used for backwards compatibility. NEWBIE_REWARD = 4 SPIRITSHOT_FOR_BEGINNERS = 5790 SOULSHOT_FOR_BEGINNERS = 5789 По-моему там все понятно написано в описании этой наградыА второй момент вот он if newbie | NEWBIE_REWARD != newbie : player.setNewbie(newbie|NEWBIE_REWARD) st.showQuestionMark(26) if player.getClassId().isMage() : st.playTutorialVoice("tutorial_voice_027") st.giveItems(SPIRITSHOT_FOR_BEGINNERS,3000) else : st.playTutorialVoice("tutorial_voice_026") st.giveItems(SOULSHOT_FOR_BEGINNERS,6000) Я надеюсь теперь глаза хоть немного откроются. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
se1dhe 501 Опубликовано 8 января, 2016 Чем поможет? Там и так указаны магшоты лол)))) просто воспользовались переменной int, дабы постоянно не писать айди Верно. просто не увидел объявление и инициализацию этой переменной Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
F0gi 0 Опубликовано 14 января, 2016 if newbie | NEWBIE_REWARD != newbie : player.setNewbie(newbie|NEWBIE_REWARD) st.showQuestionMark(26) if player.getClassId().isMage() : st.playTutorialVoice("tutorial_voice_027") st.giveItems(SPIRITSHOT_FOR_BEGINNERS,3000) else : st.playTutorialVoice("tutorial_voice_026") st.giveItems(SOULSHOT_FOR_BEGINNERS,6000) Я надеюсь теперь глаза хоть немного откроются. Вот как раз этих строчек нет в моем квесте, эти строчки с копировал с другой сборки, а в моей сборке нет этих строчек. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Hotaka 769 Опубликовано 15 января, 2016 Вот как раз этих строчек нет в моем квесте, эти строчки с копировал с другой сборки, а в моей сборке нет этих строчек. в итоге квест работает? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
F0gi 0 Опубликовано 20 января, 2016 в итоге квест работает? Нет Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Desperate 1 Опубликовано 21 января, 2016 и ещё... как же Вы [цензура] тестить всё админскими чарами Зато с админскими Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты