В общем такая проблема... при нажатии у нпс на квест не происходит ровным счётом ничего.
В задумке, при нажатии на Open должно провериться cond и наличие квестовых вещей в инвентаре. но этого не происходит. 2 дня уже сижу над кодом.. как только не изменял. (Прошу строго не судить, это мой первый код)
И ещё одна просьба.. вы ба не могли описать все действия, которые должны быть в квесте. (Йа деревко)
3) ...
# by l2arena.net
import sys
from com.l2jfree.gameserver.model.quest import State
from com.l2jfree.gameserver.model.quest import QuestState
from com.l2jfree.gameserver.model.quest.jython import QuestJython as JQuest
qn = "8099_Baylor"
#NPC
RAM = 55855
#ITEMS
BOTTLE_OF_SOULS=10409
BLACK_SEED_IF=9598
WHITE_SEED_ID=9597
#MOBS
STD_GUARD = 18367
Baylor_id = 29099
class Quest (JQuest) :
def __init__(self,id,name,descr):
JQuest.__init__(self,id,name,descr)
self.questItemIds = [BOTTLE_OF_SOULS]
def onEvent (self,event,st) :
cond = st.getInt("cond")
htmltext = event
#реакция на взятие квеста. В onTalk передаётся страница 55855-1.htm
if event == "55855-1.htm" :
if st.getPlayer().getLevel() >= 80 :
st.set("cond","1")
st.setState(State.STARTED)
st.playSound("ItemSound.quest_accept")
else:
htmltext = "55855-0a.htm"
st.exitQuest(1)
#в этом эвенте надо перенести игрока. пока это делается вручную.
#так же очищаем инвентраь от бутылок с душами (или убираем их из магазина))
#Дверь 1
elif event == "58600-no.htm" :
st.set("cond","2")
st.takeItems(BOTTLE_OF_SOULS,100)
st.playSound("ItemSound.quest_middle")
DoorTable.getInstance().getDoor(24220022).openMe()
htmltext = "58600-no.htm"
#Дверь 2
elif event == "58601-no.htm" :
st.set("cond","3")
st.takeItems(BOTTLE_OF_SOULS,100)
st.playSound("ItemSound.quest_middle")
DoorTable.getInstance().getDoor(24220020).openMe()
htmltext = "58601-no.htm"
#Дверь 3
elif event == "58602-no.htm" :
st.set("cond","4")
st.takeItems(BOTTLE_OF_SOULS,100)
st.playSound("ItemSound.quest_middle")
DoorTable.getInstance().getDoor(24220020).openMe()
htmltext = "58602-no.htm"
#Дверь 4
elif event == "58603-no.htm" :
st.set("cond","5")
st.takeItems(BOTTLE_OF_SOULS,100)
st.playSound("ItemSound.quest_middle")
DoorTable.getInstance().getDoor(24220020).openMe()
htmltext = "58603-no.htm"
#Дверь 5
elif event == "58604-no.htm" :
st.set("cond","6")
st.takeItems(BOTTLE_OF_SOULS,100)
st.playSound("ItemSound.quest_middle")
DoorTable.getInstance().getDoor(24220020).openMe()
htmltext = "58604-no.htm"
#Дверь 6
elif event == "58605-no.htm" :
st.takeItems(BOTTLE_OF_SOULS,-1)
st.playSound("ItemSound.quest_middle")
DoorTable.getInstance().getDoor(24220020).openMe()
htmltext = "58605-no.htm"
# иначе выйти из квеста (когда лвл меньше нужного)
return htmltext
#функция разговора
def onTalk (self,npc,player) :
st = player.getQuestState(qn) #задаём параметры
id = st.getState()
npcId = npc.getNpcId()
cond = st.getInt("cond")
if id == State.CREATED and npcId == RAM : #Если квест в состоянии "начат" и НПС с которым разговаривают, Рам ДЕЛАТЬ:
st.set("cond","0")
return "55855-0.htm"
elif cond == 0 and npcId == RAM : #Если мы уже брали этот квест
return "55855-1.htm"
# elif id == State.STARTED : #Если квест в процессе
elif npcId == 58600 :
print "STARTED"
if npcId == 58600: # and st.getQuestItemsCount(BOTTLE_OF_SOULS) >= 100 and cond == 1 :
htmltext = "58600-no.htm"
print "58600"
elif cond == 2 and st.getQuestItemsCount(BOTTLE_OF_SOULS) >= 100 and npcId == 58601 :
htmltext = "58601-no.htm"
elif cond == 3 and st.getQuestItemsCount(BOTTLE_OF_SOULS) >= 100 and npcId == 58602 :
htmltext = "58602-no.htm"
elif cond == 4 and st.getQuestItemsCount(BOTTLE_OF_SOULS) >= 100 and npcId == 58603 :
htmltext = "58603-no.htm"
elif cond == 5 and st.getQuestItemsCount(BOTTLE_OF_SOULS) >= 100 and npcId == 58604 :
htmltext = "58604-no.htm"
elif cond == 6 and st.getQuestItemsCount(BOTTLE_OF_SOULS) >= 100 and npcId == 58604 :
htmltext = "58604-no.htm"
return htmltext
def onKill (self,npc,player,isPet) :
st = player.getQuestState(qn)
npcId = npc.getNpcId()
if st:
if npcId == STD_GUARD :
st.giveItems(BOTTLE_OF_SOULS,1)
st.playSound("ItemSound.quest_middle")
print "killed"
return
QUEST = Quest(8099,qn,"custom")
QUEST.addStartNpc(RAM)
QUEST.addTalkId(RAM)
QUEST.addTalkId(58600)
QUEST.addTalkId(58601)
QUEST.addTalkId(58602)
QUEST.addTalkId(58603)
QUEST.addTalkId(58604)
QUEST.addTalkId(58605)
QUEST.addKillId(STD_GUARD)