1megalord1 26 Опубликовано 31 января, 2013 не работает квест в lucera. где в lucera scripts.cfg или куда мне добавить строчку quests/q902_FeatherGathering/__init__.py Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
1megalord1 26 Опубликовано 31 января, 2013 __init__.py: import sys from ru.catssoftware.gameserver.model.quest import State from ru.catssoftware.gameserver.model.quest import QuestState from ru.catssoftware.gameserver.model.quest.jython import QuestJython as JQuest qn = "q902_FeatherGathering" # ID's NPC используемых в квесте # ######################################################### # ID NPC Для квеста # NPC = 99990 # ID Мобов, с которых падает квест итем # MOBS = [22126,22124,22128,22123,22122,22125] # ID Босса, которого нужно убить по квесту # BOSS = 15064 ######################################################### # ID's Items используемых в квест # ######################################################### # ID Итемов которые будут падать из MOBS # FEATHER = 13018 # Количество итемов, которое будет падать из MOBS Min # FEATHER_COUNT_MIN = 1 # Количество итемов, которое будет падать из MOBS Max # FEATHER_COUNT_MAX = 1 # Количество итемов, нужное собрать с MOBS # FEATHER_NEED = 1000 # Шанс дропа итемов с MOBS # FEATHER_CHANCE = 100 # ID Итема которое будет падать из BOSS # BOSS_ITEM = 13019 ######################################################### # Награда за квест # ######################################################### # ID Награды за квест # WINNER = 13017 # Количество награды Min # WINNER_COUNT_MIN = 1 # Количество награды Max # WINNER_COUNT_MAX = 1 # На сколько будет заточена награда # WINNER_ENCHANT = 0 ######################################################### class Quest (JQuest) : def __init__(self,id,name,descr) : JQuest.__init__(self,id,name,descr) def onEvent (self,event,st) : htmltext = event count = Rnd.get(WINNER_COUNT_MIN, WINNER_COUNT_MAX) 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(WINNER, count, WINNER_ENCHANT) 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) 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>" if not st: return htmltext 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 count = 1 if npcId in MOBS: reward = FEATHER limit = FEATHER_NEED chance = FEATHER_CHANCE count = Rnd.get(FEATHER_COUNT_MIN, FEATHER_COUNT_MAX) if npcId == BOSS: reward = BOSS_ITEM limit = 1 count = 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, count) 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, count) 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) __init__.py.error.log : Error on: /server/game/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', 105, 10, '\t count = Rnd.get(FEATHER_COUNT_MIN, FEATHER_COUNT_MAX)')) помогите с квестом. С меня + Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
1megalord1 26 Опубликовано 31 января, 2013 что никто не может помочь?! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
kekess 124 Опубликовано 31 января, 2013 (изменено) count = Rnd.get(FEATHER_COUNT_MIN, FEATHER_COUNT_MAX) Но класс то Rnd подтяни (импорта нет) а именно from ru.catssoftware.tools.random import Rnd Изменено 31 января, 2013 пользователем kekess Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
1megalord1 26 Опубликовано 31 января, 2013 (изменено) count = Rnd.get(FEATHER_COUNT_MIN, FEATHER_COUNT_MAX) Но класс то Rnd подтяни (импорта нет) а можно детальней обьяснить? я в этом мало что понимаю Изменено 31 января, 2013 пользователем 1megalord1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
kekess 124 Опубликовано 31 января, 2013 (изменено) from ru.catssoftware.tools.random import Rnd добавить к примеру перед from ru.catssoftware.gameserver.model.quest import State Изменено 31 января, 2013 пользователем kekess 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
1megalord1 26 Опубликовано 31 января, 2013 from ru.catssoftware.tools.random import Rnd добавить к примеру перед from ru.catssoftware.gameserver.model.quest import State ничего не изменилось, ошибка та самая Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
kekess 124 Опубликовано 31 января, 2013 значит ещё что-то но не тоже самое 100% 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
1megalord1 26 Опубликовано 31 января, 2013 Error on: /root/server/game/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', 105, 10, '\t count = Rnd.get(FEATHER_COUNT_MIN, FEATHER_COUNT_MAX)')) а сам нпц говорит : "Вы не соответствуете минимальным требованиям НПЦ или квеста..." Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mistral 2 Опубликовано 31 января, 2013 На работоспособность не проверялось... import sys from ru.catssoftware.gameserver.model.quest import State from ru.catssoftware.gameserver.model.quest import QuestState from ru.catssoftware.gameserver.model.quest.jython import QuestJython as JQuest from ru.catssoftware.tools.random import Rnd qn = "902_FeatherGathering" # ID's NPC используемых в квесте # ######################################################### # ID NPC Для квеста # NPC = 99990 # ID Мобов, с которых падает квест итем # MOBS = [22126,22124,22128,22123,22122,22125] # ID Босса, которого нужно убить по квесту # BOSS = 15064 ######################################################### # ID's Items используемых в квест # ######################################################### # ID Итемов которые будут падать из MOBS # FEATHER = 13018 # Количество итемов, которое будет падать из MOBS Min # FEATHER_COUNT_MIN = 1 # Количество итемов, которое будет падать из MOBS Max # FEATHER_COUNT_MAX = 1 # Количество итемов, нужное собрать с MOBS # FEATHER_NEED = 1000 # Шанс дропа итемов с MOBS # FEATHER_CHANCE = 100 # ID Итема которое будет падать из BOSS # BOSS_ITEM = 13019 ######################################################### # Награда за квест # ######################################################### # ID Награды за квест # WINNER = 13017 # Количество награды Min # WINNER_COUNT_MIN = 1 # Количество награды Max # WINNER_COUNT_MAX = 1 # На сколько будет заточена награда # WINNER_ENCHANT = 0 ######################################################### class Quest (JQuest) : def __init__(self, id, name, descr): JQuest.__init__(self, id, name, descr) def onEvent (self, event, st) : htmltext = event count = Rnd.get(WINNER_COUNT_MIN, WINNER_COUNT_MAX) 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(WINNER, count, WINNER_ENCHANT) st.set("cond","0") st.playSound("ItemSound.quest_finish") st.setState(State.COMPLETED) else: htmltext = "mobs.htm" 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() 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 count = 1 if npcId in MOBS: reward = FEATHER limit = FEATHER_NEED chance = FEATHER_CHANCE count = Rnd.get(FEATHER_COUNT_MIN, FEATHER_COUNT_MAX) if npcId == BOSS: reward = BOSS_ITEM limit = 1 count = 1 if reward > 0: party = player.getParty() if party: for member in party.getPartyMembers(): if not member.isAlikeDead(): st = member.getQuestState("902_FeatherGathering") if st and st.getQuestItemsCount(reward) < limit and st.getRandom(100) <= chance: st.giveItems(reward, count) 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, count) 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) 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
1megalord1 26 Опубликовано 31 января, 2013 (изменено) Error on: /root/server/game/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', 45, 1, 'def __init__(self,id,name,descr) : ') Изменено 31 января, 2013 пользователем 1megalord1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
1megalord1 26 Опубликовано 31 января, 2013 (изменено) короче, там в каждой строчке ошибки выбивает спасибо за помощь я сам что-нибудь придумаю + уже работает нормально Изменено 31 января, 2013 пользователем 1megalord1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
1megalord1 26 Опубликовано 31 января, 2013 (изменено) что поделать с ошибкой? Как ее исправить? Error on: /root/server/game/data/scripts/quests/q902_FeatherGathering/__init__.py.error.log Line: -1 - Column: -1 Traceback (innermost last): File "__init__.py", line 125, in ? NameError: QUEST Изменено 31 января, 2013 пользователем 1megalord1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты