Перейти к содержимому
La2Base
Главная
ЗагрузкиВикиФорумFAQ
Поиск
ruen
Регистрация Войти
ГлавнаяФайлыВикиВойти
  • Главная
  • Загрузки
  • Вики
  • FAQ
  • Обратная связь
  • О проекте
  • Правила
  • Конфиденциальность
  • Условия использования

© 2026 la2base.com · Все права защищены

ruen
Форум/Квесты/Квест
Поиск

Квест

6 ответов100 просмотровСейчас просматривают: 1
Дима
Дима

Пользователь

Бывалый

Постов: 223

На форуме с: 02.06.2009

Репутация: +73

Рейтинг: 0

· 16.06.2009, 09:29

Вобщем решил зделать квест на основе уже имеющегося,только вот нужно добавить итем при котором завершится квест вот как йа зделал

Код
[/code]# by disKret
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

qn = "31_SecretBuriedInTheSwamp"

#NPC
ABERCROMBIE = 31555
FORGOTTEN_MONUMENT_1,FORGOTTEN_MONUMENT_2,FORGOTTEN_MONUMENT_3,FORGOTTEN_MONUMEN
T_4,CORPSE_OF_DWARF = range(31661,31666)
#ITEMS
KRORINS_JOURNAL = 7252
Coke = 3434
#MESSAGES
default = "<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>"
class Quest (JQuest) :

def __init__(self,id,name,descr):
     JQuest.__init__(self,id,name,descr)
     self.questItemIds = [KRORINS_JOURNAL,Coke]

def onEvent (self,event,st) :
   id = st.getState()
   cond = st.getInt("cond")
   htmltext = event
   if event == "31555-1.htm" and id == State.CREATED:
     st.set("cond","1")
     st.setState(State.STARTED)
     st.playSound("ItemSound.quest_accept")
   elif event == "31665-1.htm" and cond == 1:
     st.set("cond","2")
     st.playSound("ItemSound.quest_itemget")
     st.giveItems(KRORINS_JOURNAL,1)
   elif event == "31555-4.htm" and cond == 2:
     st.set("cond","3")
   elif event == "31661-1.htm" and cond == 3:
     st.set("cond","4")
   elif event == "31662-1.htm" and cond == 4:
     st.set("cond","5")
   elif event == "31663-1.htm" and cond == 5:
     st.set("cond","6")
   elif event == "31664-1.htm" and cond == 6:
     st.set("cond","7")
     st.playSound("ItemSound.quest_middle")
   elif event == "31555-7.htm" and cond == 7:
     st.takeItems(KRORINS_JOURNAL,-1)
     st.takeItems(Coke,-1)
     st.addExpAndSp(130000,0)
     st.giveItems(7264,1)
     st.playSound("ItemSound.quest_finish")
     st.exitQuest(False)
   elif event != "31663-0a.htm":
     htmltext = default
   return htmltext

def onTalk (self,npc,player):
   htmltext = default
   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>This quest has already been completed.</body></html>"

   elif npcId == ABERCROMBIE :
     if cond == 0 :
       if player.getLevel() >= 66 :
         htmltext = "31555-0.htm"
       else :
         htmltext = "31555-0a.htm"
         st.exitQuest(1)
     elif cond == 1 :
       htmltext = "31555-2.htm"
     elif cond == 2 :
       htmltext = "31555-3.htm"
     elif cond == 3 :
       htmltext = "31555-5.htm"
     elif cond == 7 :
       htmltext = "31555-6.htm"
   elif id == State.STARTED :
       if npcId == CORPSE_OF_DWARF :
         if cond == 1 :
           htmltext = "31665-0.htm"
         elif cond == 2 :
           htmltext = "31665-2.htm"
       elif npcId == FORGOTTEN_MONUMENT_1 :
         if cond == 3 :
           htmltext = "31661-0.htm"
         elif cond > 3 :
           htmltext = "31661-2.htm"
       elif npcId == FORGOTTEN_MONUMENT_2:
         if cond == 4 :
           htmltext = "31662-0.htm"
         elif cond > 4 :
           htmltext = "31662-2.htm"
       elif npcId == FORGOTTEN_MONUMENT_3 :
         if cond == 5 :
           htmltext = "31663-0.htm"
         elif cond > 5 :
           htmltext = "31663-2.htm"
       elif npcId == FORGOTTEN_MONUMENT_4 :
         if cond == 6 :
           htmltext = "31664-0.htm"
         elif cond > 6 :
           htmltext = "31664-2.htm"
   return htmltext

QUEST       = Quest(31,qn,"Secret Buried In The Swamp")

QUEST.addStartNpc(ABERCROMBIE)

QUEST.addTalkId(ABERCROMBIE)

for i in range(31661,31666):
    QUEST.addTalkId(i)[code]

Как вы видите я добавил Coke,но всёравно квест завершается без этого итема((

— Ушол в себя - вернусь не скоро...

0
darkevil1
darkevil1

Пользователь

Ветеран

Постов: 526

На форуме с: 29.09.2007

Репутация: +243

Рейтинг: 0

· 16.06.2009, 13:26

Если так не работает попробуй добавить проверку на наличие предметов в инвентаре.

А по сути как-то не очень описан квест, я думаю что квест получится сдать вовсе не имея квест итемов в инвентаре.

I love Belldandy!

0
Gradesk
Gradesk

Пользователь

Ветеран

Постов: 639

На форуме с: 09.04.2008

Репутация: +619

Рейтинг: 0

· 16.06.2009, 14:10

ммм, прошу поподробнее расписать что тебе надо.
Но если я правильно понял по квесту то вот первый же косяк:
"st.takeItems(Coke,-1)"

Эта строчка (без минуса) заберёт один предмет у чара.
"st.takeItems(Coke,1)"

А если тебе на оборот, надо выдать айтим то вот:
"st.giveItems(Coke,1)"

P.S. Но есть 1 нъюанс когда ты забираеш айтим:
Есть у чара или нету данного предмета, квест будет завершён, а чтобы этого не происходило, надо ввести ещё один "иф" для проверки наличия айтима.
Хочеш в асю стукни поговорим, хочеш на форуме продолжим.

0
darkevil1
darkevil1

Пользователь

Ветеран

Постов: 526

На форуме с: 29.09.2007

Репутация: +243

Рейтинг: 0

· 17.06.2009, 17:39

Ох уж этот питон, до сих пор считаю что квесты написанные на яве, удобнее, практичнее и легко понимаемы всем без исключения.

I love Belldandy!

0
Gradesk
Gradesk

Пользователь

Ветеран

Постов: 639

На форуме с: 09.04.2008

Репутация: +619

Рейтинг: 0

· 17.06.2009, 17:56

Lelouch: Ох уж этот питон, до сих пор считаю что квесты написанные на яве, удобнее, практичнее и легко понимаемы всем без исключения.


Знал бы я яву, так же говорил бы :).
А так, методом тыка и в то время когда начал этим интерисоватся, сборка была без исходников, а на питоне и поглядеть можно было "живъём" на код. По этому в нём и начал игратся.

Хотя сталкнувшись с явой, понял что по сути сильно не отличается, синтаксис другой? канечно. Принцип работы тоже другой, но он схож с простым програмированием в том же дельфи или ВБА. Банальные проверки да результаты.
В яве чуть сложнее, но я понял что ява этими сложностями упрощается :) (тофтология - но чтож поделать).

0
S
Server2009

Пользователь

Участник

Постов: 39

На форуме с: 07.06.2009

Репутация: +2

Рейтинг: 0

· 18.06.2009, 09:48

1

0
Войдите или зарегистрируйтесь чтобы ответить