1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
Скрыть объявление

Привет посетитель! У нас на форуме тебе откроются дополнительные разделы, которые скрыты от гостей! А так же ты найдёшь много полезной информации.

Квест итем всей пати

Тема в разделе "Вопросы новичков", создана пользователем Refren, 12 июл 2018.

Метки:
  1. Refren

    Refren Участник Пользователь

    Регистрация:
    14 окт 2017
    Сообщения:
    25
    Симпатии:
    1
    Баллы:
    44
    Здравствуйте, подскажите, пожалуйста, как в PW-Soft реализовать квест ,при котором за убийство монстров итем давался бы всей пати сразу, у кого этот квест активен? Смотрел как реализован квест на ноблес, скопипастил - выдает ошибку. Насколько я понимаю, за выдачу всей группе итема отвечают строки:
    for partyMember in party.getPartyMembers().toArray() :
    pst = partyMember.getQuestState(qn)
    if pst :
    if pst.getInt("cond") == 2 :
    pst.giveItems(QUEST_ITEM,1)

    Но как их правильно прикрутить?
     
  2. Psycho

    Psycho Я пчела. Бжж-жж... Проверенный

    Регистрация:
    23 янв 2016
    Сообщения:
    2.577
    Симпатии:
    909
    Баллы:
    1.234
    По типу нубл рб сделай
     
    Tarasiuk и Мишаня нравится это.
  3. Refren

    Refren Участник Пользователь

    Регистрация:
    14 окт 2017
    Сообщения:
    25
    Симпатии:
    1
    Баллы:
    44
    Боюсь, что из-за непонимания, что как работает, данный метод мне не подходит, если убрать первые этапы квеста и оставить просто рб - выдает ошибку.
     
  4. Мишаня

    Мишаня Интересующийся Местный

    Регистрация:
    25 фев 2017
    Сообщения:
    180
    Симпатии:
    111
    Баллы:
    242
    ну Вы бы хотя бы сбросили сюда коды одного и второго под спойлер, ну или в лс скрипты с нобл квестом и тем который хотите сделать
     
  5. Arty

    Arty Участник Пользователь

    Регистрация:
    23 окт 2016
    Сообщения:
    24
    Симпатии:
    1
    Баллы:
    53
    Вы взяли нужные строки, но вместе с проверкой COND
    Код:
    if pst.getInt("cond") == 2 :
    это параметр текущего состояния квеста у персонажа, если у Вас в квесте нет присвоений этого параметра или они не совпадают - этот кусок кода ничего не сделает, потому, что он никогда не выполнится, даже если скомпилится и загрузится
    ps просто выбросите эту строку и напишите там где выдается нагдата за убийство рб (обратите внимание на getQuestState(qn))
    Код:
    ...
    for partyMember in party.getPartyMembers().toArray() :
    pst = partyMember.getQuestState(qn)
    if pst :
    pst.giveItems(QUEST_ITEM,1)
    ...
    pps не забудьте определить константу QUEST_ITEM
     
  6. Refren

    Refren Участник Пользователь

    Регистрация:
    14 окт 2017
    Сообщения:
    25
    Симпатии:
    1
    Баллы:
    44
    Спасибо всем, кто пытался помочь, к сожалению, пока что не вижу своей ошибки. Ниже привожу коды стандартного квеста на нубл, второй - то, что работает, а третий - просто попытка сделать бонус на пати, которая успехом пока не увенчалась.
    # Made by disKret
    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 = "q246_PossessorOfAPreciousSoul_3"

    #NPC
    LADD = 30721
    CARADINE = 31740
    OSSIAN = 31741

    #QUEST ITEM
    CARADINE_LETTER = 7678
    CARADINE_LETTER_LAST = 7679
    WATERBINDER = 7591
    EVERGREEN = 7592
    RAIN_SONG = 7593
    RELIC_BOX = 7594

    #MOBS
    PILGRIM_OF_SPLENDOR = 21541
    JUDGE_OF_SPLENDOR = 21544
    BARAKIEL = 25325

    #CHANCE FOR DROP
    CHANCE_FOR_DROP = 60

    class Quest (JQuest) :

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

    def onEvent (self,event,st) :
    htmltext = event
    cond = st.getInt("cond")
    if event == "31740-4.htm" :
    if cond == 0 :
    st.setState(STARTED)
    st.takeItems(CARADINE_LETTER,1)
    st.set("cond","1")
    st.playSound("ItemSound.quest_accept")
    if event == "31741-2.htm" :
    if cond == 1 :
    st.set("cond","2")
    st.set("awaitsWaterbinder","1")
    st.set("awaitsEvergreen","1")
    st.playSound("ItemSound.quest_middle")
    if event == "31741-5.htm" :
    if cond == 3 :
    st.set("cond","4")
    st.takeItems(WATERBINDER,1)
    st.takeItems(EVERGREEN,1)
    st.playSound("ItemSound.quest_middle")
    if event == "31741-9.htm" :
    if cond == 5 :
    st.set("cond","6")
    st.takeItems(RAIN_SONG,1)
    st.giveItems(RELIC_BOX,1)
    st.playSound("ItemSound.quest_middle")
    if event == "30721-2.htm" :
    if cond == 6 :
    st.set("cond","0")
    st.takeItems(RELIC_BOX,1)
    st.giveItems(CARADINE_LETTER_LAST,1)
    st.playSound("ItemSound.quest_finish")
    st.setState(COMPLETED)
    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()
    if npcId != CARADINE and id != STARTED : return htmltext

    cond=st.getInt("cond")
    if player.isSubClassActive() :
    if npcId == CARADINE and cond == 0 and st.getQuestItemsCount(CARADINE_LETTER) == 1 :
    if id == COMPLETED :
    htmltext = "<html><body>This quest has already been completed.</body></html>"
    elif player.getLevel() < 65 :
    htmltext = "31740-2.htm"
    st.exitQuest(1)
    elif player.getLevel() >= 65 :
    htmltext = "31740-1.htm"
    if npcId == CARADINE and cond == 1 :
    htmltext = "31740-5.htm"
    if npcId == OSSIAN and cond == 1 :
    htmltext = "31741-1.htm"
    if npcId == OSSIAN and cond == 2 :
    htmltext = "31741-4.htm"
    if npcId == OSSIAN and cond == 3 and st.getQuestItemsCount(WATERBINDER) == 1 and st.getQuestItemsCount(EVERGREEN) == 1 :
    htmltext = "31741-3.htm"
    if npcId == OSSIAN and cond == 4 :
    htmltext = "31741-8.htm"
    if npcId == OSSIAN and cond == 5 and st.getQuestItemsCount(RAIN_SONG) == 1 :
    htmltext = "31741-7.htm"
    if npcId == OSSIAN and cond == 6 and st.getQuestItemsCount(RELIC_BOX) == 1 :
    htmltext = "31741-11.htm"
    if npcId == LADD and cond == 6 :
    htmltext = "30721-1.htm"
    return htmltext

    def onKill(self,npc,player,isPet):
    npcId = npc.getNpcId()
    if npcId == PILGRIM_OF_SPLENDOR :
    #get a random party member who is doing this quest and needs this drop
    partyMember = self.getRandomPartyMember(player,"awaitsWaterbinder","1")
    if partyMember :
    st = partyMember.getQuestState(qn)
    chance = st.getRandom(100)
    cond = st.getInt("cond")
    if st.getQuestItemsCount(WATERBINDER) < 1 :
    if chance < CHANCE_FOR_DROP :
    st.giveItems(WATERBINDER,1)
    st.unset("awaitsWaterbinder")
    if st.getQuestItemsCount(EVERGREEN) < 1 :
    st.playSound("ItemSound.quest_itemget")
    else:
    st.playSound("ItemSound.quest_middle")
    st.set("cond","3")
    elif npcId == JUDGE_OF_SPLENDOR :
    #get a random party member who is doing this quest and needs this drop
    partyMember = self.getRandomPartyMember(player,"awaitsEvergreen","1")
    if partyMember :
    st = partyMember.getQuestState(qn)
    chance = st.getRandom(100)
    cond = st.getInt("cond")
    if cond == 2 and st.getQuestItemsCount(EVERGREEN) < 1 :
    if chance < CHANCE_FOR_DROP :
    st.giveItems(EVERGREEN,1)
    st.unset("awaitsEvergreen")
    if st.getQuestItemsCount(WATERBINDER) < 1 :
    st.playSound("ItemSound.quest_itemget")
    else:
    st.playSound("ItemSound.quest_middle")
    st.set("cond","3")
    elif npcId == BARAKIEL :
    #give the quest item and update variables for ALL PARTY MEMBERS who are doing the quest,
    #so long as they each qualify for the drop (cond == 4 and item not in inventory)
    #note: the killer WILL participate in the loop as a party member (no need to handle separately)
    party = player.getParty()
    if party :
    for partyMember in party.getPartyMembers().toArray() :
    pst = partyMember.getQuestState(qn)
    if pst :
    if pst.getInt("cond") == 4 and pst.getQuestItemsCount(RAIN_SONG) < 1 :
    pst.giveItems(RAIN_SONG,1)
    pst.playSound("ItemSound.quest_middle")
    pst.set("cond","5")
    else :
    pst = player.getQuestState(qn)
    if pst :
    if pst.getInt("cond") == 4 and pst.getQuestItemsCount(RAIN_SONG) < 1 :
    pst.giveItems(RAIN_SONG,1)
    pst.playSound("ItemSound.quest_middle")
    pst.set("cond","5")
    return

    QUEST = Quest(246,qn,"Possessor Of A Precious Soul - 3")
    CREATED = State('Start', QUEST)
    STARTED = State('Started', QUEST)
    COMPLETED = State('Completed', QUEST)

    QUEST.setInitialState(CREATED)
    QUEST.addStartNpc(CARADINE)
    QUEST.addTalkId(CARADINE)

    QUEST.addTalkId(OSSIAN)
    QUEST.addTalkId(LADD)

    QUEST.addKillId(PILGRIM_OF_SPLENDOR)
    QUEST.addKillId(JUDGE_OF_SPLENDOR)
    QUEST.addKillId(BARAKIEL)

    STARTED.addQuestDrop(CARADINE,CARADINE_LETTER_LAST,1)
    STARTED.addQuestDrop(CARADINE,WATERBINDER,1)
    STARTED.addQuestDrop(CARADINE,EVERGREEN,1)
    STARTED.addQuestDrop(CARADINE,RAIN_SONG,1)
    STARTED.addQuestDrop(CARADINE,RELIC_BOX,1)

    # Made by Mr. Have fun! - Version 0.3 by DrLecter
    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 = "q250_exp_cruma"


    DUSHA = 9427
    ADENA = 12262
    ADENA1 = 57

    class Quest (JQuest) :

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

    def onEvent (self,event,st) :
    htmltext = event
    if event == "2.htm" :
    st.set("cond","1")
    st.setState(STARTED)
    #1 lvl 100 dush
    elif event == "5.htm" :
    st.takeItems(DUSHA,25)
    st.set("cond","2")
    elif event == "8.htm" :
    st.takeItems(DUSHA,50)
    st.set("cond","3")
    elif event == "11.htm" :
    st.takeItems(DUSHA,100)
    st.set("cond","4")
    elif event == "14.htm" :
    st.takeItems(DUSHA,150)
    st.set("cond","5")
    elif event == "17.htm" :
    st.takeItems(DUSHA,250)
    st.set("cond","6")
    elif event == "20.htm" :
    st.takeItems(DUSHA,500)
    st.set("cond","7")
    elif event == "24.htm" :
    st.takeItems(DUSHA,1000)
    st.set("cond","8")







    return htmltext

    def onTalk (self,npc,player):
    htmltext = "<html><body>This quest has already been completed.</body></html>"
    st = player.getQuestState(qn)
    if not st : return htmltext

    npcId = npc.getNpcId()
    id = st.getState()

    if id == CREATED :
    st.set("cond","0")
    #если кв не взят, дать квест
    if st.getInt("cond")==0 :
    htmltext = "1.htm"
    #если взял кв, нет 100 душ
    if st.getInt("cond")==1 and st.getQuestItemsCount(DUSHA) < 25:
    htmltext = "3.htm"
    #если взял кв, есть 100+ душ
    if st.getInt("cond")==1 and st.getQuestItemsCount(DUSHA) >= 25:
    htmltext = "4.htm"

    #гильда 1 лвл, нет душ
    if st.getInt("cond")==2 and st.getQuestItemsCount(DUSHA) < 50:
    htmltext = "6.htm"

    #гильда 1 лвл, есть души
    if st.getInt("cond")==2 and st.getQuestItemsCount(DUSHA) >= 50:
    htmltext = "7.htm"

    #гильда 2 лвл, нет души
    if st.getInt("cond")==3 and st.getQuestItemsCount(DUSHA) < 100:
    htmltext = "9.htm"
    #гильда 2 лвл, есть души
    if st.getInt("cond")==3 and st.getQuestItemsCount(DUSHA) >= 100:
    htmltext = "10.htm"

    #гильда 3 лвл, нет души
    if st.getInt("cond")==4 and st.getQuestItemsCount(DUSHA) >= 150:
    htmltext = "12.htm"
    #гильда 3 лвл, есть души
    if st.getInt("cond")==4 and st.getQuestItemsCount(DUSHA) >= 150:
    htmltext = "13.htm"

    #гильда 4 лвл, нет души
    if st.getInt("cond")==5 and st.getQuestItemsCount(DUSHA) >= 250:
    htmltext = "15.htm"
    #гильда 4 лвл, есть души
    if st.getInt("cond")==5 and st.getQuestItemsCount(DUSHA) >= 250:
    htmltext = "16.htm"

    #гильда 5 лвл, нет души
    if st.getInt("cond")==6 and st.getQuestItemsCount(DUSHA) >= 500:
    htmltext = "18.htm"
    #гильда 5 лвл, есть души
    if st.getInt("cond")==6 and st.getQuestItemsCount(DUSHA) >= 500:
    htmltext = "19.htm"

    #гильда 6 лвл, нет души
    if st.getInt("cond")==7 and st.getQuestItemsCount(DUSHA) < 1000:
    htmltext = "22.htm"
    #гильда 6 лвл, есть души
    if st.getInt("cond")==7 and st.getQuestItemsCount(DUSHA) >= 1000:
    htmltext = "23.htm"

    if st.getInt("cond")==8:
    htmltext = "25.htm"


    return htmltext

    def onKill(self,npc,player,isPet):
    partyMember = self.getRandomPartyMember(player,"1")
    if not partyMember: return
    st = partyMember.getQuestState(qn)

    npcId = npc.getNpcId()
    chance=17


    if st.getInt("cond") == 2 and player.getLevel() == 80 and npcId in [39100]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 9712);

    if st.getInt("cond") == 2 and player.getLevel() == 80 and npcId in [39082]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 13267);

    if st.getInt("cond") == 2 and player.getLevel() == 80 and npcId in [39083]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 18447);

    if st.getInt("cond") == 2 and player.getLevel() == 80 and npcId in [39084]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 18447);

    if st.getInt("cond") == 2 and player.getLevel() == 80 and npcId in [39085]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 13267);

    if st.getInt("cond") == 2 and player.getLevel() == 80 and npcId in [39086]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 13267);

    if st.getInt("cond") == 2 and player.getLevel() == 80 and npcId in [39087]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 9123);

    if st.getInt("cond") == 2 and player.getLevel() == 80 and npcId in [39088]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 9123);

    if st.getInt("cond") == 2 and player.getLevel() == 80 and npcId in [39101]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 6683);

    if st.getInt("cond") == 2 and player.getLevel() == 80 and npcId in [39112]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 6683);






    if st.getInt("cond") == 3 and player.getLevel() == 80 and npcId in [39100]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 24280);

    if st.getInt("cond") == 3 and player.getLevel() == 80 and npcId in [39082]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 33167);

    if st.getInt("cond") == 3 and player.getLevel() == 80 and npcId in [39083]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 46117);

    if st.getInt("cond") == 3 and player.getLevel() == 80 and npcId in [39084]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 46117);

    if st.getInt("cond") == 3 and player.getLevel() == 80 and npcId in [39085]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 33167);

    if st.getInt("cond") == 3 and player.getLevel() == 80 and npcId in [39086]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 33167);

    if st.getInt("cond") == 3 and player.getLevel() == 80 and npcId in [39087]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 22807);

    if st.getInt("cond") == 3 and player.getLevel() == 80 and npcId in [39088]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 22807);

    if st.getInt("cond") == 3 and player.getLevel() == 80 and npcId in [39101]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 16707);

    if st.getInt("cond") == 3 and player.getLevel() == 80 and npcId in [39112]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 16707);







    if st.getInt("cond") == 4 and player.getLevel() == 80 and npcId in [39100]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 48560);

    if st.getInt("cond") == 4 and player.getLevel() == 80 and npcId in [39082]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 66334);

    if st.getInt("cond") == 4 and player.getLevel() == 80 and npcId in [39085]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 66334);

    if st.getInt("cond") == 4 and player.getLevel() == 80 and npcId in [39086]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 66334);

    if st.getInt("cond") == 4 and player.getLevel() == 80 and npcId in [39083]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 92234);

    if st.getInt("cond") == 4 and player.getLevel() == 80 and npcId in [39084]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 92234);


    if st.getInt("cond") == 4 and player.getLevel() == 80 and npcId in [39087]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 45614);

    if st.getInt("cond") == 4 and player.getLevel() == 80 and npcId in [39088]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 45614);

    if st.getInt("cond") == 4 and player.getLevel() == 80 and npcId in [39101]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 33414);

    if st.getInt("cond") == 4 and player.getLevel() == 80 and npcId in [39112]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 33414);












    if st.getInt("cond") == 5 and player.getLevel() == 80 and npcId in [39100]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 72840);

    if st.getInt("cond") == 5 and player.getLevel() == 80 and npcId in [39082]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 99501);

    if st.getInt("cond") == 5 and player.getLevel() == 80 and npcId in [39085]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 99501);

    if st.getInt("cond") == 5 and player.getLevel() == 80 and npcId in [39086]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 99501);

    if st.getInt("cond") == 5 and player.getLevel() == 80 and npcId in [39083]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 138351);

    if st.getInt("cond") == 5 and player.getLevel() == 80 and npcId in [39084]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 138351);


    if st.getInt("cond") == 5 and player.getLevel() == 80 and npcId in [39087]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 68421);

    if st.getInt("cond") == 5 and player.getLevel() == 80 and npcId in [39088]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 68421);

    if st.getInt("cond") == 5 and player.getLevel() == 80 and npcId in [39101]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 50121);

    if st.getInt("cond") == 5 and player.getLevel() == 80 and npcId in [39112]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 50121);






    if st.getInt("cond") == 6 and player.getLevel() == 80 and npcId in [39100]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 97123);

    if st.getInt("cond") == 6 and player.getLevel() == 80 and npcId in [39082]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 132672);

    if st.getInt("cond") == 6 and player.getLevel() == 80 and npcId in [39085]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 132672);

    if st.getInt("cond") == 6 and player.getLevel() == 80 and npcId in [39086]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 132672);

    if st.getInt("cond") == 6 and player.getLevel() == 80 and npcId in [39083]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 184473);

    if st.getInt("cond") == 6 and player.getLevel() == 80 and npcId in [39084]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 184473);


    if st.getInt("cond") == 6 and player.getLevel() == 80 and npcId in [39087]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 91230);

    if st.getInt("cond") == 6 and player.getLevel() == 80 and npcId in [39088]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 91230);

    if st.getInt("cond") == 6 and player.getLevel() == 80 and npcId in [39101]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 66830);

    if st.getInt("cond") == 6 and player.getLevel() == 80 and npcId in [39112]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 66830);






    if st.getInt("cond") == 7 and player.getLevel() == 80 and npcId in [39100]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 145684);

    if st.getInt("cond") == 7 and player.getLevel() == 80 and npcId in [39082]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 199008);

    if st.getInt("cond") == 7 and player.getLevel() == 80 and npcId in [39085]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 199008);

    if st.getInt("cond") == 7 and player.getLevel() == 80 and npcId in [39086]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 199008);

    if st.getInt("cond") == 7 and player.getLevel() == 80 and npcId in [39083]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 276709);

    if st.getInt("cond") == 7 and player.getLevel() == 80 and npcId in [39084]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 276709);


    if st.getInt("cond") == 7 and player.getLevel() == 80 and npcId in [39087]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 136845);

    if st.getInt("cond") == 7 and player.getLevel() == 80 and npcId in [39088]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 136845);

    if st.getInt("cond") == 7 and player.getLevel() == 80 and npcId in [39101]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 100245);

    if st.getInt("cond") == 7 and player.getLevel() == 80 and npcId in [39112]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 100245);








    if st.getInt("cond") == 8 and player.getLevel() == 80 and npcId in [39100]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 291368);

    if st.getInt("cond") == 8 and player.getLevel() == 80 and npcId in [39082]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 398016);

    if st.getInt("cond") == 8 and player.getLevel() == 80 and npcId in [39085]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 398016);

    if st.getInt("cond") == 8 and player.getLevel() == 80 and npcId in [39086]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 398016);

    if st.getInt("cond") == 8 and player.getLevel() == 80 and npcId in [39083]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 553418);

    if st.getInt("cond") == 8 and player.getLevel() == 80 and npcId in [39084]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 553418);


    if st.getInt("cond") == 8 and player.getLevel() == 80 and npcId in [39087]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 273690);

    if st.getInt("cond") == 8 and player.getLevel() == 80 and npcId in [39088]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 273690);

    if st.getInt("cond") == 8 and player.getLevel() == 80 and npcId in [39101]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 200490);

    if st.getInt("cond") == 8 and player.getLevel() == 80 and npcId in [39112]:
    if st.getRandom(10)<chance :
    st.addExpAndSp(0, 200490);

    return


    QUEST = Quest(250,qn,"exp cruma")
    CREATED = State('Start', QUEST)
    STARTING = State('Starting', QUEST)
    STARTED = State('Started', QUEST)
    COMPLETED = State('Completed', QUEST)

    QUEST.setInitialState(CREATED)
    QUEST.addStartNpc(50004)

    QUEST.addTalkId(50004)

    QUEST.addKillId(39100)
    QUEST.addKillId(39082)
    QUEST.addKillId(39083)
    QUEST.addKillId(39084)
    QUEST.addKillId(39085)
    QUEST.addKillId(39086)
    QUEST.addKillId(39087)
    QUEST.addKillId(39088)
    QUEST.addKillId(39101)
    QUEST.addKillId(39112)

    # Made by disKret
    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 = "q250_exp_cruma"


    SOUL = 9427

    GIGA = 39112
    GIGAN = 39101


    class Quest (JQuest) :

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

    def onEvent (self,event,st) :
    htmltext = event
    if event == "2.htm" :
    st.set("cond","1")
    st.setState(STARTED)
    elif event == "5.htm" :
    st.takeItems(SOUL,25)
    st.set("cond","2")
    elif event == "8.htm" :
    st.takeItems(SOUL,50)
    st.set("cond","3")
    return htmltext


    def onTalk (self,npc,player):
    htmltext = "<html><body>This quest has already been completed.</body></html>"
    st = player.getQuestState(qn)
    if not st : return htmltext

    npcId = npc.getNpcId()
    id = st.getState()

    if id == CREATED :
    st.set("cond","0")
    #если кв не взят, дать квест
    if st.getInt("cond")==0 :
    htmltext = "1.htm"
    #если взял кв, нет 25 душ
    if st.getInt("cond")==1 and st.getQuestItemsCount(SOUL) < 25:
    htmltext = "3.htm"
    #если взял кв, есть 25+ душ
    if st.getInt("cond")==1 and st.getQuestItemsCount(SOUL) >= 25:
    htmltext = "4.htm"

    #гильда 1 лвл, нет душ
    if st.getInt("cond")==2 and st.getQuestItemsCount(SOUL) < 50:
    htmltext = "6.htm"

    #гильда 1 лвл, есть души
    if st.getInt("cond")==2 and st.getQuestItemsCount(SOUL) >= 50:
    htmltext = "7.htm"

    return htmltext

    def onKill(self,npc,player,isPet):
    npcId = npc.getNpcId()
    if npcId == GIGA :
    party = player.getParty()
    if party :
    for partyMember in party.getPartyMembers().toArray() :
    pst = partyMember.getQuestState(qn)
    if pst :
    if pst.getInt("cond") == 2 :
    pst.giveItems(SOUL,1)
    else :
    pst = player.getQuestState(qn)
    if pst :
    if pst.getInt("cond") == 2 :
    pst.giveItems(SOUL,1)
    return

    QUEST = Quest(250,qn,"exp cruma")
    CREATED = State('Start', QUEST)
    STARTED = State('Started', QUEST)
    COMPLETED = State('Completed', QUEST)

    QUEST.setInitialState(CREATED)

    QUEST.addStartNpc(50004)

    QUEST.addTalkId(50004)

    QUEST.addKillId(39100)
    QUEST.addKillId(39082)
    QUEST.addKillId(39083)
    QUEST.addKillId(39084)
    QUEST.addKillId(39085)
    QUEST.addKillId(39086)
    QUEST.addKillId(39087)
    QUEST.addKillId(39088)
    QUEST.addKillId(39101)
    QUEST.addKillId(39112)
     
  7. Refren

    Refren Участник Пользователь

    Регистрация:
    14 окт 2017
    Сообщения:
    25
    Симпатии:
    1
    Баллы:
    44
    Нашел вариант, при котором квест работает, но если игроки в пати, то бонус не распределяется равномерно, как в случае с нубл РБ, а выдается одному случайному члену группы, если 2 человека в группе то х2, если 3 члена - то х3 и так далее. Верно ли я понимаю, что с нубл РБ тот же принцип работает, но за счет условия "pst.getQuestItemsCount(RAIN_SONG) < 1" больше одного итема каждый член группы получить не может, и "остаток" переходит к следующему члену группы, или это должно работать иначе?
    def onKill(self,npc,player,isPet):
    partyMember = self.getRandomPartyMember(player)
    if not partyMember: return

    npcId = npc.getNpcId()
    party = player.getParty()

    if npcId in [39112] :

    if party :
    for partyMember in party.getPartyMembers().toArray() :
    pst = partyMember.getQuestState(qn)
    if pst :
    st.addExpAndSp(0, 9712);

    else :
    pst = player.getQuestState(qn)
    if pst :
    st.addExpAndSp(0, 9712);
     
Похожие темы
  1. monami
    Ответов:
    9
    Просмотров:
    533
  2. ExZzoR
    Ответов:
    4
    Просмотров:
    412
  3. Melancholy
    Ответов:
    2
    Просмотров:
    202
  4. ade0t
    Ответов:
    7
    Просмотров:
    256
  5. Maiden7
    Ответов:
    2
    Просмотров:
    146
Загрузка...