Как засечь диалог с НПС (не стартовым)

Теги:
 

Volt

новичок
В общем такая проблема... при нажатии у нпс на квест не происходит ровным счётом ничего.

вот фрагмент кода из htm:
 <a action="bypass -h npc_%objectId%_Quest 8099_Baylor">Open</a>
id: 58600

В задумке, при нажатии на Open должно провериться cond и наличие квестовых вещей в инвентаре. но этого не происходит. 2 дня уже сижу над кодом.. как только не изменял. (Прошу строго не судить, это мой первый код)

И ещё одна просьба.. вы ба не могли описать все действия, которые должны быть в квесте. (Йа деревко)
А именно:
1) импорт
2) регистрация стартового нпс
3) ...



code text
  1. # by l2arena.net
  2. import sys
  3. from com.l2jfree.gameserver.model.quest import State
  4. from com.l2jfree.gameserver.model.quest import QuestState
  5. from com.l2jfree.gameserver.model.quest.jython import QuestJython as JQuest
  6.  
  7. qn = "8099_Baylor"
  8.  
  9. #NPC
  10. RAM = 55855
  11.  
  12. #ITEMS
  13. BOTTLE_OF_SOULS=10409
  14. BLACK_SEED_IF=9598
  15. WHITE_SEED_ID=9597
  16.  
  17. #MOBS
  18. STD_GUARD = 18367
  19. Baylor_id = 29099
  20.  
  21.  
  22.  
  23.  
  24. class Quest (JQuest) :
  25.  
  26.  def __init__(self,id,name,descr):
  27.      JQuest.__init__(self,id,name,descr)
  28.      self.questItemIds = [BOTTLE_OF_SOULS]
  29.  
  30.  def onEvent (self,event,st) :
  31.    cond = st.getInt("cond")
  32.    htmltext = event
  33. #реакция на взятие квеста. В onTalk передаётся страница 55855-1.htm
  34.    if event == "55855-1.htm" :
  35.      if st.getPlayer().getLevel() >= 80 :
  36.         st.set("cond","1")
  37.         st.setState(State.STARTED)
  38.         st.playSound("ItemSound.quest_accept")
  39.      else:
  40.         htmltext = "55855-0a.htm"
  41.         st.exitQuest(1)
  42. #в этом эвенте надо перенести игрока. пока это делается вручную.
  43. #так же очищаем инвентраь от бутылок с душами (или убираем их из магазина))
  44.  
  45. #Дверь 1
  46.    elif event == "58600-no.htm" :
  47.         st.set("cond","2")
  48.         st.takeItems(BOTTLE_OF_SOULS,100)
  49.         st.playSound("ItemSound.quest_middle")
  50.         DoorTable.getInstance().getDoor(24220022).openMe()
  51.         htmltext = "58600-no.htm"
  52. #Дверь 2
  53.    elif event == "58601-no.htm" :
  54.         st.set("cond","3")
  55.         st.takeItems(BOTTLE_OF_SOULS,100)
  56.         st.playSound("ItemSound.quest_middle")
  57.         DoorTable.getInstance().getDoor(24220020).openMe()
  58.         htmltext = "58601-no.htm"
  59. #Дверь 3
  60.    elif event == "58602-no.htm" :
  61.         st.set("cond","4")
  62.         st.takeItems(BOTTLE_OF_SOULS,100)
  63.         st.playSound("ItemSound.quest_middle")
  64.         DoorTable.getInstance().getDoor(24220020).openMe()
  65.         htmltext = "58602-no.htm"
  66. #Дверь 4
  67.    elif event == "58603-no.htm" :
  68.         st.set("cond","5")
  69.         st.takeItems(BOTTLE_OF_SOULS,100)
  70.         st.playSound("ItemSound.quest_middle")
  71.         DoorTable.getInstance().getDoor(24220020).openMe()
  72.         htmltext = "58603-no.htm"
  73. #Дверь 5
  74.    elif event == "58604-no.htm" :
  75.         st.set("cond","6")
  76.         st.takeItems(BOTTLE_OF_SOULS,100)
  77.         st.playSound("ItemSound.quest_middle")
  78.         DoorTable.getInstance().getDoor(24220020).openMe()
  79.         htmltext = "58604-no.htm"
  80. #Дверь 6
  81.    elif event == "58605-no.htm" :
  82.         st.takeItems(BOTTLE_OF_SOULS,-1)
  83.         st.playSound("ItemSound.quest_middle")
  84.         DoorTable.getInstance().getDoor(24220020).openMe()
  85.         htmltext = "58605-no.htm"  
  86. # иначе выйти из квеста  (когда лвл меньше нужного)
  87.    return htmltext
  88.  
  89. #функция разговора
  90.  def onTalk (self,npc,player) :
  91.    st = player.getQuestState(qn) #задаём параметры
  92.    id = st.getState()
  93.    npcId = npc.getNpcId()
  94.    cond = st.getInt("cond")
  95.    if id == State.CREATED and npcId == RAM : #Если квест в состоянии "начат" и НПС с которым разговаривают, Рам ДЕЛАТЬ:
  96.      st.set("cond","0")
  97.      return "55855-0.htm"
  98.    elif cond == 0 and npcId == RAM : #Если мы уже брали этот квест
  99.      return "55855-1.htm"
  100. #   elif id == State.STARTED : #Если квест в процессе
  101.    elif npcId == 58600 :
  102.      print "STARTED"
  103.      if npcId == 58600: # and st.getQuestItemsCount(BOTTLE_OF_SOULS) >= 100 and cond == 1 :
  104.         htmltext = "58600-no.htm"
  105.         print "58600"
  106.      elif cond == 2 and st.getQuestItemsCount(BOTTLE_OF_SOULS) >= 100 and npcId == 58601 :
  107.         htmltext = "58601-no.htm"
  108.      elif cond == 3 and st.getQuestItemsCount(BOTTLE_OF_SOULS) >= 100 and npcId == 58602 :
  109.         htmltext = "58602-no.htm"
  110.      elif cond == 4 and st.getQuestItemsCount(BOTTLE_OF_SOULS) >= 100 and npcId == 58603 :
  111.         htmltext = "58603-no.htm"
  112.      elif cond == 5 and st.getQuestItemsCount(BOTTLE_OF_SOULS) >= 100 and npcId == 58604 :
  113.         htmltext = "58604-no.htm"
  114.      elif cond == 6 and st.getQuestItemsCount(BOTTLE_OF_SOULS) >= 100 and npcId == 58604 :
  115.         htmltext = "58604-no.htm"
  116.    return htmltext
  117.  
  118.  
  119.  def onKill (self,npc,player,isPet) :
  120.   st = player.getQuestState(qn)
  121.   npcId = npc.getNpcId()
  122.   if st:
  123.     if npcId == STD_GUARD :
  124.       st.giveItems(BOTTLE_OF_SOULS,1)
  125.       st.playSound("ItemSound.quest_middle")
  126.       print "killed"
  127.   return
  128.  
  129.  
  130. QUEST       = Quest(8099,qn,"custom")
  131.  
  132. QUEST.addStartNpc(RAM)
  133. QUEST.addTalkId(RAM)
  134. QUEST.addTalkId(58600)
  135. QUEST.addTalkId(58601)
  136. QUEST.addTalkId(58602)
  137. QUEST.addTalkId(58603)
  138. QUEST.addTalkId(58604)
  139. QUEST.addTalkId(58605)
  140. QUEST.addKillId(STD_GUARD)
 

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru