Перейти к содержанию
Авторизация  
nickerder

Пишу самый простой квест.

Рекомендуемые сообщения

Здравствуйте, первый раз у вас на форуме. Сразу к делу, я задался идеей, написать себе на сервер квест, и начал с самого простого. разговор с двумя НПС и награда. Нормальных мануалов я не нашел, по этому мучился разбирая и втыкая часами в те квесты что стандартные. Вот то что я набросал:

Gracia Epilogue, L2Open

 

import sys
from ru.l2open.gameserver.model.quest import State
from ru.l2open.gameserver.model.quest import QuestState
from ru.l2open.gameserver.model.quest.jython import QuestJython as JQuest

qn = "9700_GopStop"

#NPC
COOPER = 30829

class Quest (JQuest) :

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

 def onAdvEvent (self,event,npc, player) :
   htmltext = event
   st = player.getQuestState(qn)
   if not st : return
   if event == "32497-1-2.htm" :
     st.set("cond","1")
     st.setState(State.STARTED)
     st.playSound("ItemSound.quest_accept")
     if st.getQuestItemsCount(57) >= 0 :
       st.giveItems(57,10)
   return htmltext

def onTalk (self,npc,player):
   st = player.getQuestState(qn)
   htmltext = "<html><head><body>I have nothing to say you</body></html>"
   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 == 30829 and id == State.CREATED:
          htmltext = "32497-1-1.htm"
   elif id == State.STARTED :
       if npcId == 32497 and cond:
           htmltext = "32497-101.htm"
           st.set("cond","2")
           st.playSound("ItemSound.quest_middle")
       elif npcId == 30829 and cond:
                  htmltext = "32497-1-3.htm"
                  st.giveItems(57,2466)
                  st.giveItems(4357,1)
                  st.addExpAndSp(5672,446)
                  st.unset("cond")
                  st.exitQuest(False)
                  st.playSound("ItemSound.quest_finish")
   return htmltext

QUEST     = Quest(9700,qn,"Gop Stop")

QUEST.addStartNpc(COOPER)

QUEST.addTalkId(COOPER)  
QUEST.addTalkId(32497)
QUEST.addTalkId(COOPER)

ГС, ошибок не выдает. Проблема заключается в том что.. когда я персонажем подхожу к НПС дающему квест, кликаю и ввыбираю "Quest" Там мой квест отображается и еще два стандартных квеста. Когда жму по своему квест диалоговое окно просто пропадает и больше ничего не происходит.

И еще, если кому не трудно, подскажите с чего начать или что читать, для более успешного понимания этого языка. Может быть там какие то книги для начинающих есть и подобное..
Спасибо за внимание.

Изменено пользователем nickerder

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте, первый раз у вас на форуме. Сразу к делу, я задался идеей, написать себе на сервер квест, и начал с самого простого. разговор с двумя НПС и награда. Нормальных мануалов я не нашел, по этому мучился разбирая и втыкая часами в те квесты что стандартные. Вот то что я набросал:

 

Gracia Epilogue, L2Open

ГС, ошибок не выдает. Проблема заключается в том что.. когда я персонажем подхожу к НПС дающему квест, кликаю и ввыбираю "Quest" Там мой квест отображается и еще два стандартных квеста. Когда жму по своему квест диалоговое окно просто пропадает и больше ничего не происходит.

 

И еще, если кому не трудно, подскажите с чего начать или что читать, для более успешного понимания этого языка. Может быть там какие то книги для начинающих есть и подобное..

Спасибо за внимание.

COOPER = 30829

if npcId == 32497 and cond:

QUEST.addTalkId(32497)

У вас нпц 32497? Или все же 30829

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

COOPER = 30829

if npcId == 32497 and cond:

QUEST.addTalkId(32497)

У вас нпц 32497? Или все же 30829

Начало квеста, разговор с НПС 30829, там нажать "ок" далее идти к НПС 32497 высветить окно и пойти назад к НПС 30829

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 htmltext = "<html><head><body>I have nothing to say you</body></html>"


Что тут делает 
<head> ?

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 htmltext = "<html><head><body>I have nothing to say you</body></html>"

 

 

Что тут делает <head> ?

Да, это лишнее было, убрал уже)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С квестом разобрался, и смог написать свой первый квест, код что сверху я выложил, не совсем верный, точнее направление на htm не верные были, и условия запутал себе, перебрал весь квест и готово)
Всем спасибо, тему можно закрывать. Теперь буду усложнять квесты, и продумывать более сложные сценарии)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...