Connect 4 Опубликовано 29 апреля, 2012 (изменено) У кого есть квест на крылья для сборки l2jfrozen ? Ибо на этой сборке квест криво работает который лежит в шаре.... вот чё пишет когда пытаюсь взять кв в ГС: Скрытый текстTraceback (innermost last): File "__init__.py", line 61, in onTalk AttributeError: class 'com.l2jfrozen.gameserver.model.quest.State' has no attribute '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._pyx407.onTalk$4(__init__.py:61) at org.python.pycode._pyx407.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$405.onTalk(Unknown Source) at com.l2jfrozen.gameserver.model.quest.Quest.notifyTalk(Quest.java:512) at com.l2jfrozen.gameserver.model.actor.instance.L2NpcInstance.showQuestWindow(L2Np cInstance.java:1877) at com.l2jfrozen.gameserver.model.actor.instance.L2NpcInstance.showQuestWindow(L2Np cInstance.java:1956) at com.l2jfrozen.gameserver.model.actor.instance.L2NpcInstance.onBypassFeedback(L2N pcInstance.java:1132) at com.l2jfrozen.gameserver.network.clientpackets.RequestBypassToServer.runImpl(Req uestBypassToServer.java:237) at com.l2jfrozen.gameserver.network.clientpackets.L2GameClientPacket.run(L2GameClie ntPacket.java:75) at com.l2jfrozen.gameserver.network.L2GameClient.run(L2GameClient.java:1197) 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) Скрытый текст 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 = "906_Wings1" ## нпц NPC = 80028 ## Мобы MOBS = [21376,21377,21378,21394,21652,21379,21653,21380,21383,21654,21382] #босс BOSS = 25450 ## Дроп #id Сплава ADAMANIT = 10596 #сколько нужно? ADAMANIT_NEED = 1000 #шанс дропа, % ADAMANIT_CHANCE = 100 #id итема с босса BOSS_ITEM = 10598 ##Награда #id Коина COIN = 10599 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(ADAMANIT) >= ADAMANIT_NEED and st.getQuestItemsCount(BOSS_ITEM) >= 1: st.takeItems(ADAMANIT, -1) st.takeItems(BOSS_ITEM, -1) st.giveItems(COIN, 1) st.set("cond","0") st.playSound("ItemSound.quest_finish") st.setState(State.CREATED) 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(ADAMANIT) >= ADAMANIT_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 = ADAMANIT limit = ADAMANIT_NEED chance = ADAMANIT_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("905_GoddnessArmor") 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(906, qn, "Wings1") CREATED = State('Start', QUEST) STARTED = State('Started', QUEST) COMPLETED = State('Completed', QUEST) QUEST.addStartNpc(NPC) QUEST.addTalkId(NPC) QUEST.addKillId(BOSS) for m in MOBS: QUEST.addKillId(m) Изменено 29 апреля, 2012 пользователем Connect Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
(D)uality 700 Опубликовано 29 апреля, 2012 Импорты нужно было менять Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Connect 4 Опубликовано 29 апреля, 2012 (изменено) Да ты не считай меня таким тупым) Я всё поменял!) В верху сам кв. Изменено 29 апреля, 2012 пользователем Connect Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
AlexMan 27 Опубликовано 29 апреля, 2012 (изменено) if idd == State.COMPLETED if idd == COMPLETED вот так попробуй или же так if idd == COMPLETED : htmltext = "<html><body>Trolololo</body></html>" Изменено 29 апреля, 2012 пользователем AlexMan Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Connect 4 Опубликовано 29 апреля, 2012 (изменено) if idd == COMPLETED : htmltext = "<html><body>Trolololo</body></html>" За это большое спасибо! Но вот как теперь это перенаправить на hello1.htm ? НЕ писать же там это <button value="hello" action="bypass -h Quest 906_Wings1 hello1.htm" width=210 height=21 back="sek.cbui75" fore="sek.cbui75" Изменено 29 апреля, 2012 пользователем Connect Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
AlexMan 27 Опубликовано 29 апреля, 2012 (изменено) нет оставь все как есть и делай так if idd == State.COMPLETED if idd == COMPLETED то что красным удаляй и будет все норм пахать Изменено 29 апреля, 2012 пользователем AlexMan Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Connect 4 Опубликовано 29 апреля, 2012 нет оставь все как есть и делай такif idd == State.COMPLETED if idd == COMPLETED то что красным удаляй и будет все норм пахать Не будет будет писать это: Скрытый текстTraceback (innermost last):File "__init__.py", line 70, in onTalk UnboundLocalError: local: 'htmltext' at org.python.core.Py.UnboundLocalError(Unknown Source) at org.python.core.PyFrame.getlocal(Unknown Source) at org.python.core.PyFrame.getlocal(Unknown Source) at org.python.pycode._pyx407.onTalk$4(__init__.py:70) at org.python.pycode._pyx407.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$405.onTalk(Unknown Source) at com.l2jfrozen.gameserver.model.quest.Quest.notifyTalk(Quest.java:512) at com.l2jfrozen.gameserver.model.actor.instance.L2NpcInstance.showQuestWindow(L2Np cInstance.java:1877) at com.l2jfrozen.gameserver.model.actor.instance.L2NpcInstance.showQuestWindow(L2Np cInstance.java:1956) at com.l2jfrozen.gameserver.model.actor.instance.L2NpcInstance.onBypassFeedback(L2N pcInstance.java:1132) at com.l2jfrozen.gameserver.network.clientpackets.RequestBypassToServer.runImpl(Req uestBypassToServer.java:237) at com.l2jfrozen.gameserver.network.clientpackets.L2GameClientPacket.run(L2GameClie ntPacket.java:75) at com.l2jfrozen.gameserver.network.L2GameClient.run(L2GameClient.java:1197) 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) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
AlexMan 27 Опубликовано 29 апреля, 2012 Если интересует старый способ то вот пример одного из скриптов чат мутиш свой в unicode Скрытый текст htmltext = "<html><title>Exclusive Shop</title><body><center><br><br>" htmltext += "<img src=\"L2UI_CH3.onscrmsg_pattern01_1\" width=300 height=32><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br>" htmltext += u"<font color=\"LEVEL\">\u041c\u0438\u043d\u0438\u043c\u0443\u043c \u0445\u0438\u0440\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0430 10 \u0434\u043d\u0435\u0439 !</font>" htmltext += u"<img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br><img src=\"L2UI_CH3.onscrmsg_pattern01_2\" width=300 height=32><br>" htmltext += u"<table><tr><td align=center><button value=\"\u0412\u044b\u0445\u043e\u0434\" action=\"bypass -h npc_%objectId%_Close\" width=75 height=22 back=\"L2UI_ch3.Btn1_normalOn\" fore=\"L2UI_ch3.Btn1_normal\"></td></tr></table>" htmltext += "</center></body></html>" return htmltext Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Connect 4 Опубликовано 29 апреля, 2012 (изменено) А что подскажешь на счёт 38 строки? st.setState(State.STARTED) мб так? st.setState(STARTED) Тоже орёт Изменено 29 апреля, 2012 пользователем Connect Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
AlexMan 27 Опубликовано 29 апреля, 2012 я хз честно тут надо пол скрипта переделывать так как нету таких фишек даже как st.setState(COMPLETED) что бы мутить проверку без документации не поймешь че да как Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
AlexMan 27 Опубликовано 29 апреля, 2012 (изменено) че посоветую убери лишние State. и допиши onTalk там надо что бы тебя бросало на изначальный чат если реализуешь тогда будет пахать квест то есть так Скрытый текстdef onTalk (self, npc, player): htmltext = "<html><body>Твой текст или же мож указать пусть к html </body></html>" st = player.getQuestState(qn) if not st : return htmltext Изменено 29 апреля, 2012 пользователем AlexMan Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Connect 4 Опубликовано 29 апреля, 2012 вот всё спасибо всё сделал запахало! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты