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/Квесты/Проблемма с квестами в 1.1.7
Search

Проблемма с квестами в 1.1.7

14 replies249 viewsCurrently viewing: 1
Хам
Хам

User

Бывалый

Posts: 179

На форуме с: 03/16/2008

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

Рейтинг: 0

· 04/30/2009, 10:33 PM

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

Код
import data.scripts.custom.8035_MarketConfig as MarketCfg

во вторых ругается на русские имена
Код
trans = {1: "Оружие", 2: "Броня", 3: "Ресурсы", 4: "Рецепты", 5: "Книжки", 6: "Патроны", 7: "7 печатей", 8: "Скроллы", 9: "Кристаллы", 10: "Зелья", 11: "Тату", 12: "Стрелы", 13: "СА кри", 14: "Удочки", 15: "Квестовые", 16: "Life Stone"}

и так, поменял русские имена. итог
сругался на
Код
CREATED     = State('Start', QUEST)

как я понял (а я в этом почти нуб), эта
Код
QUEST.setInitialState(CREATED)

не может работать без
Код
CREATED     = State('Start', QUEST)

но если её удалить то получает квест просто не может начаться, что делать?!
еще заметил странную запись
Код
for i in MONUMENTS:
    QUEST.addStartNpc(i)
    QUEST.addTalkId(i)

и отсутствие CREATED в стандартных квестах, вопрос
в сборке базы как то изменен способ начала квестов?
пробовал и другие квесты типа энчантера, лвлапера но ни один не пашет

0
Хам
Хам

User

Бывалый

Posts: 179

На форуме с: 03/16/2008

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

Рейтинг: 0

· 04/30/2009, 11:12 PM

в общем нужен мануал какпеределать квест из рт в базу

0
Хам
Хам

User

Бывалый

Posts: 179

На форуме с: 03/16/2008

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

Рейтинг: 0

· 05/01/2009, 09:55 AM

up

0
Хам
Хам

User

Бывалый

Posts: 179

На форуме с: 03/16/2008

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

Рейтинг: 0

· 05/02/2009, 11:36 AM

up

0
Хам
Хам

User

Бывалый

Posts: 179

На форуме с: 03/16/2008

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

Рейтинг: 0

· 05/03/2009, 04:51 PM

up

0
Gradesk
Gradesk

User

Ветеран

Posts: 639

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

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

Рейтинг: 0

· 05/03/2009, 07:23 PM

Хм, импорты у базы и РТ канечно различны. Ругается на русский текст? врят ли, сколько делал но на рус текст никогда не ругался.
То что QUEST.setInitialState(CREATED) не работает без CREATED = State('Start', QUEST) разумеется.
Совет - используй всё сразу.и проблем не будет (пиши это в конце квеста).

Что касается мануала про так как переделать? хм хм хм
Думаю что не врят ли это получится, ибо на РТ форуме было подчёркнуто что разрабатыввалось с поддержкой ядра, так что работу на базовской сборке врят ли будет.
Но попытаться можно.

0
Хам
Хам

User

Бывалый

Posts: 179

На форуме с: 03/16/2008

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

Рейтинг: 0

· 05/04/2009, 06:17 AM

от аукциона отказался в связи с возможностью дюпа, но вот lvl апера и энчантера немогу сделать

0
Хам
Хам

User

Бывалый

Posts: 179

На форуме с: 03/16/2008

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

Рейтинг: 0

· 05/04/2009, 08:40 AM

лвл апера сделал, он грузится все норм, но не хочет переводить квест в состояние стартед, прошу помощи

Раскрывающийся текст
Код
import sys
from java.util                                     import Iterator
from net.sf.l2j.gameserver.datatables              import SkillTable
from net.sf.l2j                                       import L2DatabaseFactory
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
from net.sf.l2j.gameserver.model                 import L2LvlupData
from net.sf.l2j.gameserver.model.base             import ClassId
from net.sf.l2j.gameserver.model                 import L2Character
from net.sf.l2j.gameserver.templates             import L2CharTemplate
from net.sf.l2j.gameserver.model.actor.stat     import CharStat
from net.sf.l2j.gameserver.model                 import L2Object
from net.sf.l2j.gameserver.model.actor.poly     import ObjectPoly
from net.sf.l2j.gameserver.model.actor.instance import L2PcInstance
from net.sf.l2j.gameserver.serverpackets         import SocialAction

qn = "10002_lvl"

#Айтим для апа (ID Айтима)
ID_ITEM        = 5575
#Колличество айтимов для апа
NEED_ITEM    = 1000000000

#Выдаваемый ап
LVL_UP         = 78
#Коливество Exp
NEED_EXP    = 1511257834
#Коливество Sp
NEED_SP        = 1644001

NPC=[73640]
QuestId     = 10002
QuestName   = "10002_lvl"
QuestDesc   = "lvl"

print "----------- importing quests: 10002_lvl - quest done by martS -----------"

class Quest (JQuest) :

def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)

def onEvent (self,event,st) :
    htmltext = "<html><head><body>У вас недостаточно АА (нужно 1000000000)<br></body></html>"
    if event=="1"  :
            htmltext = "<html><head><body>Вы уже достигли 78 лвл.<br></body></html>"
            if st.getPlayer().getLevel() < LVL_UP :
               st.giveItems(ID_ITEM,NEED_ITEM)
               htmltext = "<html><head><body>Teper u vas 78 LVL!.<br></body></html>"
           st.player.getStat().setLevel(LVL_UP)
           st.player.addExpAndSp(NEED_EXP,NEED_SP)
                   st.player.teleToLocation(st.player.getX(),st.player.getY(),st.player.getZ())
           st.player.broadcastPacket(SocialAction(st.player.getObjectId(), 15))
           st.playSound("ItemSound.quest_finish")
           st.setState(State.COMPLETED)
           htmltext = "<html><head><body>Поздравляем, теперь у вас 78 лвл!<br></body></html>"
           return htmltext

    def onTalk (self,npc,player):
       st = player.getQuestState(qn)
       htmltext = "<html><body>No tengo nada para decirte.</body></html>"
       st.setState(State.STARTED)
       htmltext = "about.htm"
       return htmltext
    
QUEST       = Quest(QuestId,str(QuestId) + "_" + QuestName,QuestDesc)

for npcid in NPC:
QUEST.addStartNpc(npcid)
QUEST.addTalkId(npcid)
print "load ok"

А вот исходник кода (в смысле оригинал)
Раскрывающийся текст
Код
print "importing quests: 10002_lvl - quest done by martS (nolimit.sytes.net)"
import sys
from net.sf.l2j.gameserver.model.actor.instance import L2PcInstance
from java.util import Iterator
from net.sf.l2j.gameserver             import SkillTable
from net.sf.l2j                   import L2DatabaseFactory
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
from net.sf.l2j.gameserver.model import L2LvlupData
from net.sf.l2j.gameserver.model.base import ClassId
from net.sf.l2j.gameserver.model import L2Character
from net.sf.l2j.gameserver.templates import L2CharTemplate
from net.sf.l2j.gameserver.model.actor.stat import CharStat
from net.sf.l2j.gameserver.model import L2Object
from net.sf.l2j.gameserver.model.actor.poly import ObjectPoly
from net.sf.l2j.gameserver.model.actor.instance import L2PcInstance
from net.sf.l2j.gameserver.serverpackets import SocialAction
class Quest (JQuest) :

def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)

def onEvent (self,event,st) :
    htmltext = "<html><head><body>У вас недостаточно АА (нужно 1000000000)<br></body></html>"
    if event=="1"  :
            htmltext = "<html><head><body>Вы уже достигли 78 лвл.<br></body></html>"
            if st.getPlayer().getLevel() < 78 :
               st.giveItems(5575,1000000000)
               htmltext = "<html><head><body>Теперь у вас 78 лвл!.<br></body></html>"
           st.player.getStat().setLevel(78)
           st.player.addExpAndSp(1511257834,1644001)
                   st.player.teleToLocation(st.player.getX(),st.player.getY(),st.player.getZ())
           st.player.broadcastPacket(SocialAction(st.player.getObjectId(), 15))
           st.playSound("ItemSound.quest_finish")
           st.setState(COMPLETED)
           htmltext = "<html><head><body>Поздравляем, теперь у вас 78 лвл!<br></body></html>"
    return htmltext



def onTalk (Self,npc,st):
    npcId = npc.getNpcId()
    htmltext = "читер!"
    if npcId==7364 :
     st.setState(STARTED)
     htmltext = "about.htm"
    return htmltext



QUEST       = Quest(10002,"10002_lvl","lvl")
CREATED     = State('Start', QUEST)
STARTED     = State('Started', QUEST)
COMPLETED   = State('Completed', QUEST)


QUEST.setInitialState(CREATED)
QUEST.addStartNpc(7364)
STARTED.addTalkId(7364)
print "load ok"

0
Gradesk
Gradesk

User

Ветеран

Posts: 639

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

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

Рейтинг: 0

· 05/04/2009, 01:18 PM

ммм, а зачем вообще переводить состояние квеста? я бы в данном случаее вообще отключил бы состояние.
Или нужно одноразовое использование квеста? если да то конкретнее скажи, будет проще.

0
Хам
Хам

User

Бывалый

Posts: 179

На форуме с: 03/16/2008

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

Рейтинг: 0

· 05/04/2009, 06:40 PM

если честно я не особо разбираюсь в квеста, только методом "проб и ошибок" :)
вообще надо что бы квест мона была использовать много раз. но как отключить состоян ие я хз :(

0
Gradesk
Gradesk

User

Ветеран

Posts: 639

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

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

Рейтинг: 0

· 05/05/2009, 07:29 AM

Так если много раз. то удали строки которые дают и проверяют статус и будет тебе счастье, ибо квест не будет себя переутруждать и запоминать прошёл ты его или нет, пока ты сам ему не скажеш это делать :)
И то не факт что он "захочет" его сохранять derisive.gif dance.gif

0
Хам
Хам

User

Бывалый

Posts: 179

На форуме с: 03/16/2008

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

Рейтинг: 0

· 05/05/2009, 06:06 PM

Цитата
И то не факт что он "захочет" его сохранять

как это понять? не понял смысла этого предложения :(

0
Gradesk
Gradesk

User

Ветеран

Posts: 639

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

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

Рейтинг: 0

· 05/06/2009, 08:36 AM

Просто тема такая с компъютером в целом - он сцука быстрый но безумно тупой, надо каждую мелоч "объяснить" то есть прописать в квесте чтобы делалась та или иная проверка на статус или айтим.
Вот и тут ток же, недостаточно будет прописать статус, надо ещё и проверку влепить. Вспоминая школу и гдето в мозгу отыскав фразу "методом от противного" будем смотреть где эта проверка уже стоит и тупо удилть её, чтобы квест был повторяемым.

0
А
Александр

User

Бывалый

Posts: 149

На форуме с: 05/09/2009

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

Рейтинг: 0

· 06/05/2009, 05:49 PM

Заходим в папку дат, скриптс, квэст смотрим внимательно на папки с квэстами когда увидите поймёте почему нельзя изменять квэсты.Этого не сделали даже бэйсовцы, они просто дописали не достающюю часть в ядре в папку :)

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