Ошибка в квесте

Теги:
 
+
-
edit
 

Shaykan

новичок
Ребята помогите плиз кто знает, сделал ошибку и не понял где =)))
Просмотрите и если не сложно кто может, помогите плиз.
code python
  1. import sys
  2. from net.sf.l2j.gameserver.model.quest import State
  3. from net.sf.l2j.gameserver.model.quest import QuestState
  4. from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
  5.  
  6.  
  7. Foot_of_Bandersnatchling = 7203
  8. Trunk_of_Nepenthes = 7202
  9. Secret_Spice = 7204
  10.  
  11. Ice_Crystalls = 9999
  12.  
  13.  
  14. class Quest (JQuest) :
  15.  
  16.  def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
  17.  
  18.  def onEvent (self,event,st) :
  19.     htmltext = event
  20.     if event == "31521-004.htm" :                      
  21.       st.set("cond","1")
  22.       st.setState(STARTED)
  23.       st.playSound("ItemSound.quest_accept")
  24.     return htmltext
  25.  
  26.  def onTalk (Self,npc,st):
  27.    npcId = npc.getNpcId()
  28.    htmltext = "<html><head><body>I have nothing to say you</body></html>"
  29.    id = st.getState()
  30.    if id == CREATED :
  31.      st.set("cond","0")
  32.    if int(st.get("cond"))==0 :
  33.      if st.getPlayer().getLevel() >= 75 :              
  34.        htmltext = "31521-003.htm"                      
  35.      else:
  36.        htmltext = "31521-002.htm"                      
  37.        st.exitQuest(1)
  38.    else :
  39.      if st.getQuestItemsCount(Foot_of_Bandersnatchling)<50 and st.getQuestItemsCount(Trunk_of_Nepenthes)<50 and st.getQuestItemsCount(Secret_Spice)<50:                
  40.        htmltext = "31521-005.htm"                      
  41.      else :
  42.        htmltext = "31521-006.htm"                      
  43.        st.giveItems(Ice_Crystalls,1)
  44.         st.takeItems(Secret_Spice,50)
  45.         st.takeItems(Trunk_of_Nepenthes,50)
  46.         st.takeItems(Foot_of_Bandersnatchling,50)
  47.        st.exitQuest(1)
  48.        st.playSound("ItemSound.quest_finish")
  49.    return htmltext
  50.  
  51.  def onKill (self,npc,st):
  52.    count = st.getQuestItemsCount(Foot_of_Bandersnatchling) and st.getQuestItemsCount(Trunk_of_Nepenthes) and st.getQuestItemsCount(Secret_Spice)
  53.    if count < 50 and st.getRandom(10) > 10 :
  54.      st.giveItems(Foot_of_Bandersnatchling,1) and st.giveItems(Trunk_of_Nepenthes,1) and st.giveItems(Secret_Spice,1)
  55.      if count == 49 :
  56.        st.playSound("ItemSound.quest_middle")
  57.        st.set("cond","2")
  58.      else :
  59.        st.playSound("ItemSound.quest_itemget")
  60.    return
  61.  
  62. QUEST       = Quest(700,"700_FinestIngridients_part1","Finest Ingridients part 1")
  63. CREATED     = State('Start', QUEST)
  64. STARTING    = State('Starting', QUEST)
  65. STARTED     = State('Started', QUEST)
  66. COMPLETED   = State('Completed', QUEST)
  67.  
  68. QUEST.setInitialState(CREATED)
  69. QUEST.addStartNpc(31521)
  70.  
  71. CREATED.addTalkId(31521)
  72. STARTING.addTalkId(31521)
  73. STARTED.addTalkId(31521)
  74. COMPLETED.addTalkId(31521)
  75.  
  76. STARTED.addKillId(21321)
  77. STARTED.addKillId(21317)
  78. STARTED.addKillId(21314)
  79. STARTED.addKillId(21319)
  80.  
  81.  
  82. STARTED.addQuestDrop(21321,Foot_of_Bandersnatchling,1)
  83. STARTED.addQuestDrop(21317,Foot_of_Bandersnatchling,1)
  84. STARTED.addQuestDrop(21314,Foot_of_Bandersnatchling,1)
  85. STARTED.addQuestDrop(21319,Foot_of_Bandersnatchling,1)
  86.  
  87. STARTED.addQuestDrop(21321,Trunk_of_Nepenthes,1)
  88. STARTED.addQuestDrop(21317,Trunk_of_Nepenthes,1)
  89. STARTED.addQuestDrop(21314,Trunk_of_Nepenthes,1)
  90. STARTED.addQuestDrop(21319,Trunk_of_Nepenthes,1)
  91.  
  92. STARTED.addQuestDrop(21321,Secret_Spice,1)
  93. STARTED.addQuestDrop(21317,Secret_Spice,1)
  94. STARTED.addQuestDrop(21314,Secret_Spice,1)
  95. STARTED.addQuestDrop(21319,Secret_Spice,1)
  96.  
  97. print "importing quests: 700: Finest Ingridients part 1"
 
UA MorbidAngel #21.02.2007 10:11
+
-
edit
 

MorbidAngel

разработчик L2J Fortress

Если используеш фортресс, как минимум импорты поправь
 
+
-
edit
 

Shaykan

новичок
MorbidAngel> Если используеш фортресс, как минимум импорты поправь

Нет у меня сборка найтлиша...
 
UA SoulKeeper #21.02.2007 15:02
+
-
edit
 

SoulKeeper

разработчик L2J Fortress

Питон использует пробелы как скобки для блоков :) Не корректно сюда выкладывать без них.
Разыскивается десятка с два датапакеров :) http://la2.wrk.ru/forum/viewtopic.php?id=50882  
+
-
edit
 

Balancer

администратор
★★★★★
Вписал в code-блок (двойные переводы строк попозже поправлю)
 
+
-
edit
 

ValianT

разработчик l2j-сервера
code text
  1. import sys
  2. from net.sf.l2j.gameserver.model.quest import State
  3. from net.sf.l2j.gameserver.model.quest import QuestState
  4. from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
  5.  
  6. Foot_of_Bandersnatchling = 7203
  7. Trunk_of_Nepenthes = 7202
  8. Secret_Spice = 7204
  9. Ice_Crystalls = 9999
  10.  
  11. class Quest (JQuest) :
  12.     def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
  13.  
  14.     def onEvent (self,event,st) :
  15.         htmltext = event
  16.         if event == "31521-004.htm" :
  17.             st.set("cond","1")
  18.             st.setState(STARTED)
  19.             st.playSound("ItemSound.quest_accept")
  20.         return htmltext
  21.  
  22.     def onTalk (Self,npc,st):
  23.         npcId = npc.getNpcId()
  24.         htmltext = "<html><head><body>I have nothing to say you</body></html>"
  25.         id = st.getState()
  26.         if id == CREATED :
  27.             st.set("cond","0")
  28.  
  29.         if int(st.get("cond"))==0 :
  30.             if st.getPlayer().getLevel() >= 75 :
  31.                 htmltext = "31521-003.htm"
  32.             else:
  33.                 htmltext = "31521-002.htm"
  34.                 st.exitQuest(1)
  35.         else :
  36.             if st.getQuestItemsCount(Foot_of_Bandersnatchling)<50 and st.getQuestItemsCount(Trunk_of_Nepenthes)<50 and st.getQuestItemsCount(Secret_Spice)<50:
  37.                 htmltext = "31521-005.htm"
  38.             else :
  39.                 htmltext = "31521-006.htm"
  40.                 st.giveItems(Ice_Crystalls,1)
  41.                 st.takeItems(Secret_Spice,50)
  42.                 st.takeItems(Trunk_of_Nepenthes,50)
  43.                 st.takeItems(Foot_of_Bandersnatchling,50)
  44.                 st.exitQuest(1)
  45.                 st.playSound("ItemSound.quest_finish")
  46.         return htmltext
  47.  
  48.     def onKill (self,npc,st):
  49.         count = st.getQuestItemsCount(Foot_of_Bandersnatchling) and st.getQuestItemsCount(Trunk_of_Nepenthes) and st.getQuestItemsCount(Secret_Spice)
  50.         if count < 50 and st.getRandom(10) > 10 :
  51.             st.giveItems(Foot_of_Bandersnatchling,1) and st.giveItems(Trunk_of_Nepenthes,1) and st.giveItems(Secret_Spice,1)
  52.             if count == 49 :
  53.                 st.playSound("ItemSound.quest_middle")
  54.                 st.set("cond","2")
  55.             else :
  56.                 st.playSound("ItemSound.quest_itemget")
  57.         return
  58.  
  59. QUEST       = Quest(700,"700_FinestIngridients_part1","Finest Ingridients part 1")
  60. CREATED     = State('Start', QUEST)
  61. STARTING    = State('Starting', QUEST)
  62. STARTED     = State('Started', QUEST)
  63. COMPLETED   = State('Completed', QUEST)
  64.  
  65. QUEST.setInitialState(CREATED)
  66. QUEST.addStartNpc(31521)
  67.  
  68. CREATED.addTalkId(31521)
  69. STARTING.addTalkId(31521)
  70. STARTED.addTalkId(31521)
  71. COMPLETED.addTalkId(31521)
  72.  
  73. STARTED.addKillId(21321)
  74. STARTED.addKillId(21317)
  75. STARTED.addKillId(21314)
  76. STARTED.addKillId(21319)
  77.  
  78. STARTED.addQuestDrop(21321,Foot_of_Bandersnatchling,1)
  79. STARTED.addQuestDrop(21317,Foot_of_Bandersnatchling,1)
  80. STARTED.addQuestDrop(21314,Foot_of_Bandersnatchling,1)
  81. STARTED.addQuestDrop(21319,Foot_of_Bandersnatchling,1)
  82. STARTED.addQuestDrop(21321,Trunk_of_Nepenthes,1)
  83. STARTED.addQuestDrop(21317,Trunk_of_Nepenthes,1)
  84. STARTED.addQuestDrop(21314,Trunk_of_Nepenthes,1)
  85. STARTED.addQuestDrop(21319,Trunk_of_Nepenthes,1)
  86. STARTED.addQuestDrop(21321,Secret_Spice,1)
  87. STARTED.addQuestDrop(21317,Secret_Spice,1)
  88. STARTED.addQuestDrop(21314,Secret_Spice,1)
  89. STARTED.addQuestDrop(21319,Secret_Spice,1)
  90.  
  91. print "importing quests: 700: Finest Ingridients part 1"

вот по переносам норм должно быть )
а вообше вот эти участки норм работают? никогда не юзал такое использование:
count = st.getQuestItemsCount(Foot_of_Bandersnatchling) and st.getQuestItemsCount(Trunk_of_Nepenthes) and st.getQuestItemsCount(Secret_Spice)
st.giveItems(Foot_of_Bandersnatchling,1) and st.giveItems(Trunk_of_Nepenthes,1) and st.giveItems(Secret_Spice,1)
инит с такими переносами должен норм грузиться... если есть ошибки в самом квесте то ты о них узнаешь из лога гейм сервера. Если не будет его импортировать и ты не можешь понять где ошибка сделай следующее:
добавь после определенного куска кода строку типа:
print "import ok..."
print "onEvent ok..."
print "onTalk ok..."
print "onKill ok..."
потом с коде смотришь в каком моменте у тебя спотыкается импорт квеста
 
+
-
edit
 

Shaykan

новичок
ValianT Сделал как ты сказал, вот этот отрезок кода не срабатывает на принт.
Вобщем при постановке принт онЕвент и принт онТолк, квест не импортируеться. В других случаях он импортируеться, появляеться в игре, происходит разговаор, но сам квест не даеться когда разговор доходит до последней точки общения.

code text
  1. class Quest (JQuest) :
  2.  
  3.     def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
  4.  
  5.  
  6.  
  7.     def onEvent (self,event,st) :
  8.  
  9.         htmltext = event
  10.  
  11.         if event == "31521-004.htm" :
  12.  
  13.             st.set("cond","1")
  14.  
  15.             st.setState(STARTED)
  16.  
  17.             st.playSound("ItemSound.quest_accept")
  18.  
  19.  
  20.         return htmltext
  21.  
  22.  
  23.  
  24.     def onTalk (Self,npc,st):
  25.  
  26.         npcId = npc.getNpcId()
  27.  
  28.         htmltext = "<html><head><body>I have nothing to say you</body></html>"
  29.  
  30.         id = st.getState()
  31.  
  32.         if id == CREATED :
  33.  
  34.             st.set("cond","0")
  35.  
  36.  
  37.  
  38.         if int(st.get("cond"))==0 :
  39.  
  40.             if st.getPlayer().getLevel() >= 75 :
  41.  
  42.                 htmltext = "31521-003.htm"
  43.  
  44.             else:
  45.  
  46.                 htmltext = "31521-002.htm"
  47.  
  48.                 st.exitQuest(1)
  49.  
  50.         else :
  51.  
  52.             if st.getQuestItemsCount(Foot_of_Bandersnatchling)<50 and st.getQuestItemsCount(Trunk_of_Nepenthes)<50 and
  53.  
  54. st.getQuestItemsCount(Secret_Spice)<50:
  55.  
  56.                 htmltext = "31521-005.htm"
  57.  
  58.             else :
  59.  
  60.                 htmltext = "31521-006.htm"
  61.  
  62.                 st.giveItems(Ice_Crystalls,1)
  63.  
  64.                 st.takeItems(Secret_Spice,50)
  65.  
  66.                 st.takeItems(Trunk_of_Nepenthes,50)
  67.  
  68.                 st.takeItems(Foot_of_Bandersnatchling,50)
  69.  
  70.                 st.exitQuest(1)
  71.  
  72.                 st.playSound("ItemSound.quest_finish")
  73.  
  74.  
  75.  
  76.         return htmltext
 

Drac

разработчик l2j-сервера

А отладка в телнете на что?!
 
+
-
edit
 

Shaykan

новичок
Drac - уточни что ты имел ввиду под "А отладка в телнете на что?!" ?
 
+
-
edit
 

Drac

разработчик l2j-сервера

Эм... telnet ip.сер.ве.ра порт_телнета_на_сервере. (Пример: telnet localhost 12345).
Вводишь пароль, какой ставил на телнет на сервере.
quest_reload NNN_asdsad - где NNN_asdsad - это название твоего квеста.
 
+
-
edit
 

Shaykan

новичок
млин я могу его релоаднуть и в игре находясь.
Но я повторяю!!!
отрезок кода не срабатывает на принт

ОН НЕ ОТВЕЧАЕТ. Его невидит сервер - причина кто знает?
 
UA SoulKeeper #25.02.2007 14:12
+
-
edit
 

SoulKeeper

разработчик L2J Fortress

квест кривой :) А вообще ошибки за тебя никто искать не будет.
Разыскивается десятка с два датапакеров :) http://la2.wrk.ru/forum/viewtopic.php?id=50882  

Drac

разработчик l2j-сервера

Ну блин... Отладка покажет, что конкретно и в какой строке...
 
+
-
edit
 

Shaykan

новичок
SoulKeeper я яву знаю очень плохо, но знаю хорошо ПХП и взглянув на код я сразу вижу в чем косяки и говорю. Мне не обязательно запускать и искать ошибки - это так к слову...

Drac - хм.... ладно я попробую просто желания включать телнет не очень, может плохо сказаться мало ли. По итогам отпишусь. Спасибо.
 
UA SoulKeeper #26.02.2007 00:29
+
-
edit
 

SoulKeeper

разработчик L2J Fortress

Ну во первых это питон :)
Во вторых я его не знаю :)
Разыскивается десятка с два датапакеров :) http://la2.wrk.ru/forum/viewtopic.php?id=50882  

x-net

втянувшийся
Shaykan> млин я могу его релоаднуть и в игре находясь.
Shaykan> Но я повторяю!!!
Shaykan> отрезок кода не срабатывает на принт
Shaykan> ОН НЕ ОТВЕЧАЕТ. Его невидит сервер - причина кто знает?

пробелы правильно раставь...
http://laii.ru  
+
-
edit
 

ValianT

разработчик l2j-сервера
ты импорты исправил?)
 

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