P1ckw1ck 158 Опубликовано 18 марта, 2015 Всем привет. есть квест, уже готовый хочу добавить к нему тп т.е взял кв и тебя тп от нпц в нужную локу. Брал пример от 4ой части нубл квеста. неполучается. Сам код, Подскажите навечку в скриптах. что куда вставлять. Сам код телепорта. def onEvent (self,event,st) : htmltext = event cond = st.getInt("cond") if event == "31740-3.htm" : if cond == 0 : st.set("cond","1") st.setState(State.STARTED) st.playSound("ItemSound.quest_accept") elif event == "31740-5.htm" : if cond == 1 : st.set("cond","2") st.takeItems(CARADINE_LETTER_LAST,1) st.getPlayer().teleToLocation(143209,43968,-3038) Сам квест import sys from ru.catssoftware import Config 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 = "540_GoodHelmet" #NPC WILLIE = 60053 #ITEMS TARLK_EYE = 9986 #REWARDS EARTH_FISHING_LURE = 9987 #MOB TARLK_BASILISK = 60003 class Quest (JQuest) : def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr) self.questItemIds = [TARLK_EYE] def onEvent (self,event,st) : htmltext = event if event == "31574-03.htm" : st.set("cond","1") st.setState(State.STARTED) st.playSound("ItemSound.quest_accept") elif event == "31574-07.htm" and st.getQuestItemsCount(TARLK_EYE) == 200 : htmltext = "31574-06.htm" st.giveItems(EARTH_FISHING_LURE,1) st.takeItems(TARLK_EYE,-1) st.playSound("ItemSound.quest_finish") st.unset("cond") st.exitQuest(False) 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() cond = st.getInt("cond") if id == State.COMPLETED : htmltext = "<html><body>Вы уже прошли этот квест, Досвидания.</body></html>" elif cond == 0 : if player.getLevel() >= 80 : htmltext = "31574-01.htm" else: htmltext = "31574-02.htm" st.exitQuest(1) elif id == State.STARTED : if st.getQuestItemsCount(TARLK_EYE) == 200 : htmltext = "31574-04.htm" else : htmltext = "31574-05.htm" return htmltext def onKill(self,npc,player,isPet): partyMember = self.getRandomPartyMember(player,"1") if not partyMember : return st = partyMember.getQuestState(qn) if st : count = st.getQuestItemsCount(TARLK_EYE) if st.getInt("cond") == 1 and count < 200 : chance = 33 * Config.RATE_DROP_QUEST numItems, chance = divmod(chance,100) if st.getRandom(100) < chance : numItems += 1 if numItems : if count + numItems >= 200 : numItems = 200 - count st.playSound("ItemSound.quest_middle") st.set("cond","2") else: st.playSound("ItemSound.quest_itemget") st.giveItems(TARLK_EYE,int(numItems)) return QUEST = Quest(540,qn,"Good Helmet") QUEST.addStartNpc(WILLIE) QUEST.addTalkId(WILLIE) QUEST.addKillId(TARLK_BASILISK) Буду очень Благодарен. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Nha 22 Опубликовано 18 марта, 2015 После строки st.playSound("ItemSound.quest_accept") Вставить st.getPlayer().teleToLocation(x,y,z) x,y,z - координаты Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
P1ckw1ck 158 Опубликовано 18 марта, 2015 После строки st.playSound("ItemSound.quest_accept") Вставить st.getPlayer().teleToLocation(x,y,z) x,y,z - координаты криует Error on: C:\Server_Interlude\game\data\scripts\quests\540_GoodHelmet\__init__.py.error.log Line: -1 - Column: -1 Traceback (innermost last): (no code object) at line 0 SyntaxError: ('invalid syntax', ('__init__.py', 34, 10, '\t st.getPlayer().teleToLocation(143209,43968,-3038)')) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Nha 22 Опубликовано 18 марта, 2015 код правильный, питон очень нервный по отношению к табуляции, попробуй выравнить строку не табами а пробелами, ошибка из за "\t" Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
P1ckw1ck 158 Опубликовано 18 марта, 2015 я ставлю его на уровне других st. без пробелом и табов. получается вот так. import sys from ru.catssoftware import Config 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 = "540_GoodHelmet" #NPC WILLIE = 60053 #ITEMS TARLK_EYE = 9986 #REWARDS EARTH_FISHING_LURE = 9987 #MOB TARLK_BASILISK = 60003 class Quest (JQuest) : def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr) self.questItemIds = [TARLK_EYE] def onEvent (self,event,st) : htmltext = event if event == "31574-03.htm" : st.set("cond","1") st.setState(State.STARTED) st.playSound("ItemSound.quest_accept") st.getPlayer().teleToLocation(143209,43968,-3038) elif event == "31574-07.htm" and st.getQuestItemsCount(TARLK_EYE) == 200 : htmltext = "31574-06.htm" st.giveItems(EARTH_FISHING_LURE,1) st.takeItems(TARLK_EYE,-1) st.playSound("ItemSound.quest_finish") st.unset("cond") st.exitQuest(False) 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() cond = st.getInt("cond") if id == State.COMPLETED : htmltext = "<html><body>Вы уже прошли этот квест, Досвидания.</body></html>" elif cond == 0 : if player.getLevel() >= 80 : htmltext = "31574-01.htm" else: htmltext = "31574-02.htm" st.exitQuest(1) elif id == State.STARTED : if st.getQuestItemsCount(TARLK_EYE) == 200 : htmltext = "31574-04.htm" else : htmltext = "31574-05.htm" return htmltext def onKill(self,npc,player,isPet): partyMember = self.getRandomPartyMember(player,"1") if not partyMember : return st = partyMember.getQuestState(qn) if st : count = st.getQuestItemsCount(TARLK_EYE) if st.getInt("cond") == 1 and count < 200 : chance = 33 * Config.RATE_DROP_QUEST numItems, chance = divmod(chance,100) if st.getRandom(100) < chance : numItems += 1 if numItems : if count + numItems >= 200 : numItems = 200 - count st.playSound("ItemSound.quest_middle") st.set("cond","2") else: st.playSound("ItemSound.quest_itemget") st.giveItems(TARLK_EYE,int(numItems)) return QUEST = Quest(540,qn,"Good Helmet") QUEST.addStartNpc(WILLIE) QUEST.addTalkId(WILLIE) QUEST.addKillId(TARLK_BASILISK) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
P1ckw1ck 158 Опубликовано 20 марта, 2015 Можно Закрывать. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SmokiMo 892 Опубликовано 20 марта, 2015 Автоматически сформированное сообщение Тема закрыта модератором. Причина: Решено. Если вы не согласны с закрытием темы, то можете обратиться к администратору. С наилучшими пожеланиями ForumMaxi - Сообщество администраторов онлайн игр 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты