Вот такой скриптик сделал для Tutorial квеста.
Но что-то мне подсказывает, что его можно сделать проще... Может какой шаблон на python нарисовать, чтоб большинство простых квестов легко делались... Короче, подскажите как лучше.
html-ки выводятся на основании имени текущего state, типа вот такая у меня директория для тьюториала:
__all__ = ['Quest', 'newTutorial']
print "importing quests: Tutorial"
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
KELTIR_NPC_ID = 12082
FANGS_ITEM_ID = 3863
DROP_RATE = 500000
WORLD_MAP_ITEM_ID = 1665
CREATED = State('Created')
STARTED = State('Started')
COMPLETED = State('Completed')
def create() : return Quest()
QUEST = JQuest("Tutorial", "data.quests.Tutorial.create()")
QUEST.addState(CREATED)
QUEST.addState(STARTED)
QUEST.addState(COMPLETED)
QUEST.setInitialState(CREATED)
class Quest (QuestState):
def onEvent (self,event):
st = QuestState.getState(self)
print st
if st == CREATED :
return self.start()
elif st == COMPLETED:
return self
elif st == STARTED:
return self.check()
return self
def check(self) :
print "checking"
if QuestState.getQuestItemsCount(self,FANGS_ITEM_ID) >= 4 :
return self.completed()
print "not enough items"
print QuestState.getQuestItemsCount(self,FANGS_ITEM_ID)
QuestState.addQuestDrop(self,KELTIR_NPC_ID,FANGS_ITEM_ID,DROP_RATE)
return self
def start(self) :
print "starting"
QuestState.addQuestDrop(self,KELTIR_NPC_ID,FANGS_ITEM_ID,DROP_RATE)
self.setState(STARTED)
return self
def completed(self) :
print "completing"
self.setState(COMPLETED)
QuestState.clearQuestDrops(self)
QuestState.takeItems(self,FANGS_ITEM_ID,-1)
QuestState.giveItems(self,WORLD_MAP_ITEM_ID,1)
return self