TrueMan 742 Опубликовано 8 мая, 2012 (изменено) Не работает квест на сборке фрозен Вот скрипт import sys from com.l2jfrozen import Config from com.l2jfrozen.gameserver.model.quest import State from com.l2jfrozen.gameserver.model.quest import QuestState from com.l2jfrozen.gameserver.model.quest.jython import QuestJython as JQuest qn = "q902_FeatherGathering" ## нпц NPC = 77777 ## Мобы MOBS = [22126,22124,22123] #босс BOSS = 70020 ## Дроп #id перьев с мобов в мос FEATHER = 9983 #сколько нужно? FEATHER_NEED = 300 #шанс дропа, % FEATHER_CHANCE = 50 #id итема с босса BOSS_ITEM = 9984 ##Награда #id крыльев WINGS = 9996 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.COMPLETED : htmltext = "completed.htm" 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 QUEST = Quest(902, qn, "Feather Gathering") QUEST.addStartNpc(NPC) QUEST.addTalkId(NPC) QUEST.addKillId(BOSS) for m in MOBS: QUEST.addKillId(m) Вот ошибка E:\L2JFroZeNN\gameserver\data\scripts\quests\q902_FeatherGathering\__init__.py Traceback (innermost last): File "__init__.py", line 61, in onTalk AttributeError: class 'com.l2jfrozen.gameserver.model.quest.State' has no attrib ute 'COMPLETED' at org.python.core.Py.AttributeError(Unknown Source) at org.python.core.PyObject.noAttributeError(Unknown Source) at org.python.core.PyObject.__getattr__(Unknown Source) at org.python.pycode._pyx406.onTalk$4(__init__.py:61) at org.python.pycode._pyx406.call_function(__init__.py) at org.python.core.PyTableCode.call(Unknown Source) at org.python.core.PyTableCode.call(Unknown Source) at org.python.core.PyTableCode.call(Unknown Source) at org.python.core.PyFunction.__call__(Unknown Source) at org.python.core.PyMethod.__call__(Unknown Source) at org.python.core.PyObject.__call__(Unknown Source) at org.python.core.PyObject._jcallexc(Unknown Source) at org.python.core.PyObject._jcall(Unknown Source) at org.python.proxies.main$Quest$404.onTalk(Unknown Source) at com.l2jfrozen.gameserver.model.quest.Quest.notifyTalk(Quest.java:519) at com.l2jfrozen.gameserver.model.actor.instance.L2NpcInstance.showQuest Window(L2NpcInstance.java:2028) at com.l2jfrozen.gameserver.model.actor.instance.L2NpcInstance.onBypassF eedback(L2NpcInstance.java:1273) at com.l2jfrozen.gameserver.network.clientpackets.RequestBypassToServer. runImpl(RequestBypassToServer.java:234) at com.l2jfrozen.gameserver.network.clientpackets.L2GameClientPacket.run (L2GameClientPacket.java:75) at com.l2jfrozen.gameserver.network.L2GameClient.run(L2GameClient.java:1 203) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source ) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Изменено 8 мая, 2012 пользователем TrueMan Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
TryBat9 20 Опубликовано 8 мая, 2012 если не ошибаюсь скрипт на криля? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
TrueMan 742 Опубликовано 8 мая, 2012 (изменено) Да, на сборке еон работало все Изменено 8 мая, 2012 пользователем TrueMan Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
TryBat9 20 Опубликовано 8 мая, 2012 (изменено) Вот лови я его чуть переделал под себя (но думаю разберешся) Скрытый текстimport sysfrom com.l2jfrozen.gameserver.model.quest import State from com.l2jfrozen.gameserver.model.quest import QuestState from com.l2jfrozen.gameserver.model.quest.jython import QuestJython as JQuest from com.l2jfrozen.gameserver.network.serverpackets import PledgeShowInfoUpdate from com.l2jfrozen.gameserver.network.serverpackets import RadarControl from com.l2jfrozen.gameserver.network.serverpackets import SystemMessage qn = "q902_FeatherGathering" ## нпц NPC = 77777 ## Мобы MOBS = [22126,22124,22123] #босс BOSS = 25366 ## Дроп #id перьев с мобов в мос FEATHER = 3344 #сколько нужно? FEATHER_NEED = 150 #шанс дропа, % FEATHER_CHANCE = 100 #id итема с босса BOSS_ITEM = 9305 ##Награда #id крыльев WINGS = 3481 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): htmltext = "hello1.htm" 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) жду спасибку =) Изменено 8 мая, 2012 пользователем TryBat9 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
TrueMan 742 Опубликовано 8 мая, 2012 Спс, щас попробую Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
TrueMan 742 Опубликовано 8 мая, 2012 Error on: E:\L2JFroZeNN\gameserver\data\scripts\quests\q902_FeatherGathering\__init__.py.error.log Line: -1 - Column: -1 Traceback (innermost last): (no code object) at line 0 SyntaxError: ('invalid syntax', ('__init__.py', 35, 1, 'def __init__(self,id,name,descr) : JQuest.__init__(self,id,name,descr)')) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
TryBat9 20 Опубликовано 8 мая, 2012 (изменено) у тебя путь правельно прописан? в scripts.cfg посмотри или все так же написано с таким размером букв как називается папка. я хз у меня он работает ( сборка фрозен ) Изменено 8 мая, 2012 пользователем TryBat9 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
TrueMan 742 Опубликовано 8 мая, 2012 (изменено) все правильно но не пашет Дай свой файлик __init__.py Изменено 8 мая, 2012 пользователем TrueMan Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
VREDNbIi 145 Опубликовано 8 мая, 2012 (изменено) питон слишком чуствительный к отступам, форум кривит код заливайте куда-нить.... сам файл Изменено 8 мая, 2012 пользователем VREDNbIi Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
TrueMan 742 Опубликовано 8 мая, 2012 Дайте файлик плиз Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
TryBat9 20 Опубликовано 8 мая, 2012 http://rghost.ru/37974920 Не забивай что сам скрипт должен бить в quest а не в custom Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
TrueMan 742 Опубликовано 8 мая, 2012 Он в quest у меня Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
TrueMan 742 Опубликовано 8 мая, 2012 Заработало! Спасибо!) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты