Skip to content
La2Base
Home
DownloadsWikiForumFAQ
Search
ruen
Sign up Login
HomeFilesWikiLogin
  • Home
  • Downloads
  • Wiki
  • FAQ
  • Contact Us
  • About
  • Rules
  • Privacy
  • Terms of Service

© 2026 la2base.com · All rights reserved

ruen
Forum/Квесты/[help] Доработка квеста.
Search

[help] Доработка квеста.

7 replies129 viewsCurrently viewing: 1
Uphill
Uphill

User

Участник

Posts: 96

На форуме с: 01/25/2009

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

Рейтинг: 0

· 04/18/2009, 02:51 PM

Проблема: есть квест, он не дописан до конца,. надо дописать что бы он в базу писал статус "started" или "complited"
сейчас не пишет и из-за этого на всём сервере у людей пропадают квесты после релога.

Цитата
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 = "****_название квеста"
#NPCz
NPC = 30011
#переменные всякие
col = 7260
prise = 1
X_ID=136014
Y_ID=118989
Z_ID=-726
class Quest (JQuest) :
def __init__(self,id,name,descr):
JQuest.__init__(self,id,name,descr)
def onTalk (self,npc,player):
htmltext = " "
st = player.getQuestState(qn)
if not st : return htmltext
npcId = npc.getNpcId()
if npcId == NPC :
if st.getQuestItemsCount(col) < prise :
htmltext = "<html> А где же ключик? </html>"
else:
st.takeItems(col,prise)
st.getPlayer().teleToLocation(X_ID,Y_ID,Z_ID)
htmltext = "Teleported"
return htmltext
QUEST = Quest(****,qn,"Custom")
QUEST.addStartNpc(NPC)
QUEST.addTalkId(NPC)

0
Gradesk
Gradesk

User

Ветеран

Posts: 639

На форуме с: 04/09/2008

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

Рейтинг: 0

· 04/24/2009, 07:43 PM

Инетерсно, а какая сборка, но это особо не важно:
в базовской сборке используется такое:

Код
st.setState(State.COMPLETED)


Ну а в других сборках (во фрии и РТ) встречается чаще такое:
Код
st.setState(COMPLETED)



И вписать это после строчке "st.getPlayer().teleToLocation(X_ID,Y_ID,Z_ID)" с учётом всех отступов в новой строке.
Ну и разумеется сделать проверку на статус, чтобы нельзя было повторно пройти квест (если необходимо канечно).

0
Uphill
Uphill

User

Участник

Posts: 96

На форуме с: 01/25/2009

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

Рейтинг: 0

· 04/27/2009, 06:11 PM

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

0
Uphill
Uphill

User

Участник

Posts: 96

На форуме с: 01/25/2009

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

Рейтинг: 0

· 04/27/2009, 06:28 PM

не получается.
Когда в игре тетепортируюсь благодря квесту открываетя окно СКРИПТ ЕРРОР, но телепортирует.
В базу пишет вроде норм

Значит теперь надоу убрать чтобы не открывалось окно "скрипт еррор"

0
Gradesk
Gradesk

User

Ветеран

Posts: 639

На форуме с: 04/09/2008

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

Рейтинг: 0

· 04/29/2009, 07:01 PM

Скинь файлик со своим квестом сюда, погляжу, ибо скрипт еррор гдето после телепортации.

После строчки с телепортацией.

0
Uphill
Uphill

User

Участник

Posts: 96

На форуме с: 01/25/2009

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

Рейтинг: 0

· 05/03/2009, 09:19 AM

вот весь квест

Цитата
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 = "7783_ColTele"
#NPCz
NPC = 30011
#переменные всякие
col = 7260
prise = 1
X_ID=136014
Y_ID=118989
Z_ID=-726
class Quest (JQuest) :
def __init__(self,id,name,descr):
JQuest.__init__(self,id,name,descr)
def onTalk (self,npc,player):
htmltext = " "
st = player.getQuestState(qn)
if not st : return htmltext
npcId = npc.getNpcId()
if npcId == NPC :
if st.getQuestItemsCount(col) < prise :
htmltext = "<html> А где же ключик? </html>"
else:
st.takeItems(col,prise)
st.getPlayer().teleToLocation(X_ID,Y_ID,Z_ID)
htmltext = "Teleported"
return htmltext
QUEST = Quest(7783,qn,"Custom")
QUEST.addStartNpc(NPC)
QUEST.addTalkId(NPC)

0
Gradesk
Gradesk

User

Ветеран

Posts: 639

На форуме с: 04/09/2008

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

Рейтинг: 0

· 05/03/2009, 07:30 PM

Я попросил бы выложить именно файл, а то как то не особо хочется ставить табуляцию в ручную.

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