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/Квесты/квест на медальки
Search

квест на медальки

7 replies126 viewsCurrently viewing: 1
V
Vo1N

User

Участник

Posts: 85

На форуме с: 08/26/2007

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

Рейтинг: 0

· 10/29/2009, 08:35 PM

При разговоре с кошкой и выборе "Я хочу обменять медали на призы" или "Я хочу повысить уровень коллекционера" выдает одну и туже фразу

Код
You are either not carrying out your quest or don't meet the criteria.


Вот код квеста.
Код
import sys
from com.equal.gameserver.model.quest import State
from com.equal.gameserver.model.quest import QuestState
from com.equal.gameserver.model.quest.jython import QuestJython as JQuest

qn = "111_HeavyMedal"

#cats
ROY = 31230
WINNIE = 31229
#item
EVENT_GLITTERING_MEDAL = 6393
#marks
RABBIT = 6399
HYENA = 6400
FOX = 6401
WOLF = 6402

CHANCE = 35

PAY = 5


class Quest (JQuest) :

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

def onEvent (self,event,st) :
    cond = st.getInt("cond")
    if event == "game" :
      if cond == 0 and st.getQuestItemsCount(EVENT_GLITTERING_MEDAL) >= PAY*1 :
        st.playSound("ItemSound.quest_accept")
        htmltext = "game.htm"
      elif cond == 1 and st.getQuestItemsCount(EVENT_GLITTERING_MEDAL) >= PAY*2 :
        st.playSound("ItemSound.quest_accept")
        htmltext = "game.htm"
      elif cond == 2 and st.getQuestItemsCount(EVENT_GLITTERING_MEDAL) >= PAY*4 :
        st.playSound("ItemSound.quest_accept")
        htmltext = "game.htm"  
      elif cond == 3 and st.getQuestItemsCount(EVENT_GLITTERING_MEDAL) >= PAY*8 :
        st.playSound("ItemSound.quest_accept")
        htmltext = "game.htm"  
      else: htmltext = "less.htm"
  
    elif event == "play" :
      if st.getRandom(100)<CHANCE :
        if cond == 0 :
           if st.getQuestItemsCount(EVENT_GLITTERING_MEDAL) >= PAY*1 :
              st.takeItems(EVENT_GLITTERING_MEDAL,PAY*1)
              st.giveItems(RABBIT,1)
              st.set("cond","1")
              st.playSound("ItemSound.quest_itemget")
              htmltext = "win-1.htm"
           else :
              htmltext = "less.htm"
        elif cond == 1 :
           if st.getQuestItemsCount(EVENT_GLITTERING_MEDAL) >= PAY*2 :
              st.takeItems(EVENT_GLITTERING_MEDAL,PAY*2)
              st.takeItems(RABBIT,1)
              st.giveItems(HYENA,1)
              st.set("cond","2")
              st.playSound("ItemSound.quest_itemget")
              htmltext = "win-1.htm"
           else :
              htmltext = "less.htm"            
        elif cond == 2 :
           if st.getQuestItemsCount(EVENT_GLITTERING_MEDAL) >= PAY*4 :
              st.takeItems(EVENT_GLITTERING_MEDAL,PAY*4)
              st.takeItems(HYENA,1)
              st.giveItems(FOX,1)
              st.set("cond","3")
              st.playSound("ItemSound.quest_itemget")
              htmltext = "win-1.htm"
           else :
              htmltext = "less.htm"              
        elif cond == 3 :
           if st.getQuestItemsCount(EVENT_GLITTERING_MEDAL) >= PAY*8 :
              st.takeItems(EVENT_GLITTERING_MEDAL,PAY*8)
              st.takeItems(FOX,1)
              st.giveItems(WOLF,1)
              st.set("cond","4")
              st.playSound("ItemSound.quest_finish")
              htmltext = "win.htm"
           else :
              htmltext = "less.htm"
      else:
        htmltext = "lose.htm"
        if cond == 0 :
            st.takeItems(EVENT_GLITTERING_MEDAL,PAY*1)
        elif cond == 1:
            st.takeItems(EVENT_GLITTERING_MEDAL,PAY*2)
        elif cond == 2 :
            st.takeItems(EVENT_GLITTERING_MEDAL,PAY*4)
        elif cond == 3 :
            st.takeItems(EVENT_GLITTERING_MEDAL,PAY*8)
    return htmltext


def onTalk (self,npc,player):
   st = player.getQuestState(qn)
   npcId = npc.getNpcId()
   cond = st.getInt("cond")
   htmltext = "<html><body>Мне нечего тебе сказать</body></html>"
   if not st : return htmltext
   if npcId == WINNIE :
     if st.getQuestItemsCount(RABBIT) == 0 and st.getQuestItemsCount(HYENA) == 0 and st.getQuestItemsCount(FOX) == 0 and st.getQuestItemsCount(WOLF) == 0 :
       htmltext = "5.htm"
       st.set("cond","0")
     elif cond == 1 :
       htmltext = "10.htm"
     elif cond == 2 :
       htmltext = "20.htm"
     elif cond == 3 :
       htmltext = "40.htm"
     elif st.getQuestItemsCount(WOLF) == 1 :
       htmltext = "win.htm"
     else: htmltext = "win.htm"
  
   elif npcId == ROY :
     if st.getQuestItemsCount(RABBIT) == 0 and st.getQuestItemsCount(HYENA) == 0 and st.getQuestItemsCount(FOX) == 0 and st.getQuestItemsCount(WOLF) == 0 :
       htmltext = "roy.htm"
     elif st.getQuestItemsCount(RABBIT) == 1 :
       htmltext = "roy-1.htm"
     elif st.getQuestItemsCount(HYENA) == 1 :
       htmltext = "roy-2.htm"
     elif st.getQuestItemsCount(FOX) == 1 :
       htmltext = "roy-3.htm"
     elif st.getQuestItemsCount(WOLF) == 1 :
       htmltext = "roy-4.htm"
   return htmltext

QUEST       = Quest(111,qn,"custom")
CREATED     = State('Start', QUEST)
STARTED     = State('Started', QUEST)
COMPLETED   = State('Completed', QUEST)

# Quest initialization
QUEST.setInitialState(CREATED)
# Quest NPC starter initialization
QUEST.addStartNpc(ROY)
QUEST.addStartNpc(WINNIE)
QUEST.addTalkId(ROY)
QUEST.addTalkId(WINNIE)
print "Loaded: "+qn


Квест лежит в папке quests и подключен в файле __init__.py
При загрузке GS ошибок что квест не загружен не выдает.

0
Gradesk
Gradesk

User

Ветеран

Posts: 639

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

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

Рейтинг: 0

· 10/29/2009, 08:44 PM

Я бы предположил что надо подправить в первой хетемельке ссылку (которая не в квесте а в папке "html" лежит), а подправить на более точную ссылку на квест (после слова "quest" через пробел дописать название эвента с медальками).

0
V
Vo1N

User

Участник

Posts: 85

На форуме с: 08/26/2007

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

Рейтинг: 0

· 10/29/2009, 08:49 PM

Реплика 1 кошки
<a action="bypass -h npc_%objectId%_Quest">Я хочу обменять медали на призы</a>

Реплика 2 кошки
<a action="bypass -h npc_%objectId%_Quest">Я хочу повысить уровень коллекционера</a><br1>

Что дописать, подскажи подалуйста.

0
Gradesk
Gradesk

User

Ветеран

Posts: 639

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

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

Рейтинг: 0

· 10/29/2009, 11:10 PM

хм
вообще правильнее былобы так:

Реплика 1 кошки
<a action="bypass -h npc_%objectId%_Quest 111_HeavyMedal">Я хочу обменять медали на призы</a>

Реплика 2 кошки
<a action="bypass -h npc_%objectId%_Quest 111_HeavyMedal">Я хочу повысить уровень коллекционера</a><br1>
Но тут тоже оксяк получается... надо выбор между обменять и повысить делать в самом квесте... То есть там создавать новый диалог, давать на него ссылку а в нутри прописать так:

<a action="bypass -h Quest 111_HeavyMedal change">Я хочу обменять медали на призы</a>

и после этого описать в "onEvent" новый "event" - change при котором будет происходить обмен, и тоже самое для второго сделать...

0
V
Vo1N

User

Участник

Posts: 85

На форуме с: 08/26/2007

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

Рейтинг: 0

· 10/31/2009, 10:07 PM

Решил не морочиться и просто убрал этот вариант, дав кошке простую мультиселку.

0
M
Mentos

User

Новичок

Posts: 16

На форуме с: 11/02/2009

Рейтинг: 0

· 11/02/2009, 10:33 PM

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

0
V
Vo1N

User

Участник

Posts: 85

На форуме с: 08/26/2007

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

Рейтинг: 0

· 11/03/2009, 06:58 PM

Вот, но я sql запросы делал, и делал под своих мобов поэтому не выложил, а так все остальное тут.

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