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/Форум для новичков[JAVA]/[help] Mimir Elixir
Search

[help] Mimir Elixir

21 replies309 viewsCurrently viewing: 1
Z
zaqwerty18

User

Новичок

Posts: 20

На форуме с: 04/21/2009

Рейтинг: 0

· 04/29/2009, 08:37 PM

Сборка: L2jGroup 2.0 Interlude
Краткое изложение СУТИ проблемы: Можете подсказать, что бы при прохождении квеста Mimir Elixir игроку в базе по мимо этого квеста ещё приписывался 234_FatesWhisper, а то саб не берёться если не пройден этот квест...
Саб именно по квесту!
Что надо добавить в этот код?

Код
# Mimir's Elixir version 0.1
# by Fulminus
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
#Quest info
qn = "235_MimirsElixir"
QUEST_NUMBER,QUEST_NAME,QUEST_DESCRIPTION = 235,"MimirsElixir","Mimir's Elixir"

DROP_RATE = 20

#prerequisites:
STAR_OF_DESTINY = 5011
MINLEVEL = 75

#Quest items
PURE_SILVER = 6320
TRUE_GOLD = 6321
SAGES_STONE = 6322
BLOOD_FIRE = 6318
MIMIRS_ELIXIR = 6319

SCROLL_ENCHANT_WEAPON_A = 729

#Messages
default   = "<html><body>I have nothing to say to you.</body></html>"
#NPCs
LADD,JOAN=30721,30718
#Mobs, cond, Drop
DROPLIST = {
20965: [3,SAGES_STONE],   #Chimera Piece
21090: [6,BLOOD_FIRE]    #Bloody Guardian
}

class Quest (JQuest) :

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

def onEvent (self,event,st) :
    if event == "1" :
        st.setState(PROGRESS)
        st.set("cond","1")
        htmltext = "30166-02a.htm"
    elif event == "30718_1" :
        st.set("cond","3")
        htmltext = "30718-01a.htm"
    return htmltext

def onTalk (self,npc,player):
    htmltext = "<html><body>You are either not carrying out your quest or don't meet the criteria.</body></html>"
    st = player.getQuestState(qn)
    if not st : return htmltext

    npcId = npc.getNpcId()
    id = st.getState()
    cond = st.getInt("cond")
    if npcId == LADD :
        if id == CREATED :
            st.set("cond","0")
            if player.getLevel() < MINLEVEL :
                st.exitQuest(1)
                htmltext = "30166-01.htm"     #not qualified
            elif not st.getQuestItemsCount(STAR_OF_DESTINY) :
                st.exitQuest(1)
                htmltext = "30166-01a.htm"     #not qualified
            elif st.getInt("cond")==0 :
                htmltext = "30166-02.htm"    # Successful start: Bring me Pure silver from Reagents quest
        elif id == COMPLETED :
            htmltext = "<html><body>You have already completed this quest.</body></html>"
        # was asked to get pure silver but has not done so yet.  Repeat: get pure silver
        elif cond==1 and not st.getQuestItemsCount(PURE_SILVER) :
            htmltext = "30166-03.htm"    # Bring me Pure silver from Reagents quest
        # got the pure silver and came back.  Ask for TrueGold.
        elif cond==1 and st.getQuestItemsCount(PURE_SILVER) :
            st.set("cond","2")
            htmltext = "30166-04.htm"    # Bring me True Gold from Joan
        elif 1<cond<5 :
            htmltext = "30166-05.htm"    # Where is my GOLD?!  Bring to me first.
        # got the true gold...look for Blood fire
        elif cond==5 :
            st.set("cond","6")
            htmltext = "30166-06.htm"    # find Blood Fire from "bloody guardians"
        # still looking for blood fire?
        elif cond==6 :
            htmltext = "30166-07.htm"    # find Blood Fire from "bloody guardians"
        # Ah, you got the blood fire!  Time to mix them up!
        elif cond==7 and st.getQuestItemsCount(PURE_SILVER) and st.getQuestItemsCount(TRUE_GOLD):
            htmltext = "30166-08.htm"     # what are you standing there for?  Go to the cauldron and mix them...
        # you idiot, how did you lose your quest items?
        elif cond==7 :  
            htmltext = "30166-09.htm"     # Well...you already know what to do...go get the 3 items...
            st.set("cond","3")          # start over...yay...
        # cond for this quest is set to 8 from Supplier or Reagents, when you create Mimir's Elixir.
        # Finally, all is done...time to learn how to use the Elixir...
        elif cond==8 :
            htmltext = "30166-10.htm"     # here's what you do...
            st.takeItems(MIMIRS_ELIXIR,-1)  #remove this line for compatibility with L2JServer revisions prior to 376
            st.giveItems(SCROLL_ENCHANT_WEAPON_A,1)
            st.setState(COMPLETED)
            st.unset("cond")
    elif npcId == JOAN and id == PROGRESS:
       # first time talking to Joan: You ask for True Gold, she sends you for Sage's stone
        if cond==2 :
            htmltext = "30718-01.htm"      # You want True Gold?  Please get the sage's stone.  Kill Chimera!
        # Why are you back alraedy?  You don't have the stone.
        elif cond==3 :
            htmltext = "30718-02.htm"     # you haven't gotten the sage's stone yet?
        # aha!  Here is the sage's stone!  Cool, now we can make true gold
        elif cond==4 :
            st.takeItems(SAGES_STONE,-1)
            st.giveItems(TRUE_GOLD,1)
            st.set("cond","5")
            htmltext = "30718-03.htm"     # here you go...take the gold.  Now go back to ladd.
        elif cond>=5 :
            htmltext = "30718-04.htm"     # Go back to ladd already!
    return htmltext

def onKill(self,npc,player,isPet):
     st = player.getQuestState(qn)
     if not st : return
     if st.getState() != PROGRESS : return
  
     npcId = npc.getNpcId()
     drop = st.getRandom(100)
     cond = st.getInt("cond")
     dropcond = DROPLIST[npcId][0]
     if drop < DROP_RATE and cond == dropcond :
        if st.getQuestItemsCount(DROPLIST[npcId][1]) == 0 :
            st.giveItems(DROPLIST[npcId][1],1)
            st.playSound("ItemSound.quest_itemget")
            st.set("cond",str(cond+1))
     return

# Quest class and state definition
QUEST       = Quest(QUEST_NUMBER, qn, QUEST_DESCRIPTION)

CREATED     = State('Start',     QUEST)
PROGRESS    = State('Progress',   QUEST)
COMPLETED   = State('Completed', QUEST)

QUEST.setInitialState(CREATED)
# Quest NPC starter initialization
QUEST.addStartNpc(LADD)
# Quest initialization
QUEST.addTalkId(LADD)
QUEST.addTalkId(JOAN)

for i in DROPLIST.keys():
  QUEST.addKillId(i)

P.s. За ранее спасибо

0
ZeMaS
ZeMaS

User

Участник

Posts: 63

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

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

Рейтинг: 0

· 04/30/2009, 05:20 PM

Самому надо чтобы с квестом Саб был,если кто знает помогите прошу)

0
Z
zaqwerty18

User

Новичок

Posts: 20

На форуме с: 04/21/2009

Рейтинг: 0

· 04/30/2009, 07:40 PM

Xочу сделать что бы саб брался после прохождения квеста Mimir Elixir, т.к. после прохождения этого квеста персонажу в Таблице character_quests приписываеться

Например:
268478696 235_MimirsElixir <state> Complete 0

А для того что бы взять саб, у персонажа должен быть ещё пройден квест FateWhisper т.к. этот квест долгий хочу его не включать на получение саба.

Как сделать на стороне скрипта выложеным мною выше что бы при прохождении квеста Mimir Elixir, персонажу в таблицу записывались 2 квеста:
268478696 235_MimirsElixir <state> Complete 0
268478696 234_FateWhisper <state> Complete 0


P.s. Думаю понятно обьяснил =\

0
PyJIuK
PyJIuK

User

Бывалый

Posts: 190

На форуме с: 10/06/2008

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

Рейтинг: 0

· 04/30/2009, 07:59 PM

т.к. мне тоже это надо , придумал еще 1-н вариан зделать так чтоб при создание чара сразу был пройден квест 234_FateWhisper только не знаю как это реализовать ...

0
K
kr-aleksandr

User

Бывалый

Posts: 243

На форуме с: 04/17/2009

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

Рейтинг: 0

· 05/01/2009, 03:36 AM

Запрос в базу, который каждые 5 секунд будет в таблицу квестов вносить данные

0
Z
zaqwerty18

User

Новичок

Posts: 20

На форуме с: 04/21/2009

Рейтинг: 0

· 05/01/2009, 07:16 AM

kr-aleksandr: Запрос в базу, который каждые 5 секунд будет в таблицу квестов вносить данные


Есть ли такой? Напиши пример..

И он не буден нагружать сервер?

0
PyJIuK
PyJIuK

User

Бывалый

Posts: 190

На форуме с: 10/06/2008

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

Рейтинг: 0

· 05/01/2009, 08:14 AM

zaqwerty18: Есть ли такой? Напиши пример..

И он не буден нагружать сервер?

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

0
Z
zaqwerty18

User

Новичок

Posts: 20

На форуме с: 04/21/2009

Рейтинг: 0

· 05/01/2009, 08:30 AM

Либо вот, вставить этот квест при регистрации аккаунта.

Вот кусок кода регистрации

Код
[color="#00FF00"]{
            mysql_query("INSERT INTO accounts (login, password, access_Level, lastServer) VALUES ('".$_POST['account']."', '".base64_encode(pack('H*', sha1($_POST['password'])))."', 0,0)", $link);
              mysql_close($link);
             print '<p class="error"><Font color=00cc22F><b>Регистрация прошла успешно</b></font></p>';
        }[/color]


Помогите пожалуйста, думаю это много кому понадобиться.

0
Z
zaqwerty18

User

Новичок

Posts: 20

На форуме с: 04/21/2009

Рейтинг: 0

· 05/01/2009, 02:27 PM

Скрытый текст
Помогите пожалуйста!

0
Z
zaqwerty18

User

Новичок

Posts: 20

На форуме с: 04/21/2009

Рейтинг: 0

· 05/01/2009, 10:00 PM

НУ неужели никто не занет?? Хоть 1 из 3 способов...

0
Z
zaqwerty18

User

Новичок

Posts: 20

На форуме с: 04/21/2009

Рейтинг: 0

· 05/02/2009, 06:47 PM

Знающие люди помогите!!!

0
PyJIuK
PyJIuK

User

Бывалый

Posts: 190

На форуме с: 10/06/2008

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

Рейтинг: 0

· 05/04/2009, 06:57 PM

up

0
Gradesk
Gradesk

User

Ветеран

Posts: 639

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

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

Рейтинг: 0

· 05/04/2009, 07:18 PM

В лом копатся в твоём квесте и искать где его "логическое" завершение, но вот попробуй это в "цонец" квеста (когда квест считается пройденым) добавить вот эти 2 строчки:

Код
player.getQuestState("235_MimirsElixir").set("Complete","0")
player.getQuestState("234_FateWhisper").set("Complete","0")


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

0
Z
zaqwerty18

User

Новичок

Posts: 20

На форуме с: 04/21/2009

Рейтинг: 0

· 05/08/2009, 10:57 PM

Gradesk: В лом копатся в твоём квесте и искать где его "логическое" завершение, но вот попробуй это в "цонец" квеста (когда квест считается пройденым) добавить вот эти 2 строчки:
Код
player.getQuestState("235_MimirsElixir").set("Complete","0")
player.getQuestState("234_FateWhisper").set("Complete","0")


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


после вставки этих строк ГС, ругаеься на этот квест и не запускает его...

Может я не туда вставил? подскажите что и как пожалуйста!

0
Z
zaqwerty18

User

Новичок

Posts: 20

На форуме с: 04/21/2009

Рейтинг: 0

· 05/10/2009, 10:48 AM

Помогите разобраться плиз

0
Z
zaqwerty18

User

Новичок

Posts: 20

На форуме с: 04/21/2009

Рейтинг: 0

· 05/12/2009, 05:45 AM

Неужели никто не знает?

0
Макс
Макс

User

Бывалый

Posts: 101

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

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

Рейтинг: 0

· 05/12/2009, 10:14 AM

а если в гм шоп добавить квест итем кровавого ножика баюма? тогда надо будет токо топ б и В крисы

0
Z
zaqwerty18

User

Новичок

Posts: 20

На форуме с: 04/21/2009

Рейтинг: 0

· 05/12/2009, 09:02 PM

smOKe_NewAge: а если в гм шоп добавить квест итем кровавого ножика баюма? тогда надо будет токо топ б и В крисы


Да уж думаю так и сделать, просто видишь лишний гемор...
Просто на многих пвп серверах саб проходиться за 1 квест MimirElixir, мнигие к этому привыкли

0
Brain
Brain

User

Бывалый

Posts: 324

На форуме с: 07/17/2007

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

Рейтинг: 0

· 05/12/2009, 09:41 PM

есть ещё вариант добавить эти итемы сразу при старте...в квестовых итемах они будут..а не нужно будет гемороиться с гмшопом и т.д

Заходи на форум..епЭ xDD

0
Z
zaqwerty18

User

Новичок

Posts: 20

На форуме с: 04/21/2009

Рейтинг: 0

· 05/12/2009, 09:50 PM

antsy: есть ещё вариант добавить эти итемы сразу при старте...в квестовых итемах они будут..а не нужно будет гемороиться с гмшопом и т.д


Ну всё равно, брать Б пуху искать Б кри бежать за квестом...
Проще бы добавить квест при старте. Тока как?

0
Topic is closed for replies