Вопрос по квестам

  • Автор темы Автор темы Maiden7
  • Дата начала Дата начала

Maiden7

Выдающийся
Местный
Сообщения
454
Розыгрыши
0
Решения
1
Репутация
168
Реакции
241
Баллы
1 388
Хроники
  1. Chaotic Throne: High Five
Исходники
Отсутствуют
Сборка
L2Scrypts
Всем привет.
Вот квест где надо убивать волков двух разных видов.
Как можно, возможно ли сделать, что бы моб выбирался рандомно?

XML:
package quests;

import l2s.commons.util.Rnd;
import l2s.gameserver.model.instances.NpcInstance;
import l2s.gameserver.model.quest.QuestState;

public class _258_BringWolfPelts extends QuestScript
{
    int WOLF_PELT = 702;

    int S_ARM_ENCH = 960;
    int S_ARM_ENCH_BLESS = 6576;
    

    public _258_BringWolfPelts()
    {
        super(PARTY_NONE, REPEATABLE);

        addStartNpc(30001);
        addKillId(20120);
        addKillId(20442);

        addQuestItem(WOLF_PELT);
    }

    @Override
    public String onEvent(String event, QuestState st, NpcInstance npc)
    {
        String htmltext = event;
        if(event.intern().equalsIgnoreCase("lector_q0258_03.htm"))
        {
            st.setCond(1);
        }
        return htmltext;
    }

    @Override
    public String onTalk(NpcInstance npc, QuestState st)
    {
        String htmltext = NO_QUEST_DIALOG;
        int cond = st.getCond();
        if(cond == 0)
        {
            if(st.getPlayer().getLevel() >= 3)
            {
                htmltext = "lector_q0258_02.htm";
                return htmltext;
            }
            htmltext = "lector_q0258_01.htm";
        }
        else if(cond == 1 && st.getQuestItemsCount(WOLF_PELT) >= 0 && st.getQuestItemsCount(WOLF_PELT) < 40)
            htmltext = "lector_q0258_05.htm";
        else if(cond == 2 && st.getQuestItemsCount(WOLF_PELT) >= 40)
        {
            st.takeItems(WOLF_PELT, 40);
            int n = Rnd.get(16);
            if(n == 0)
            {
                st.giveItems(S_ARM_ENCH, 1, false, false);
                st.playSound(SOUND_JACKPOT);
            }
            else if(n < 6)
                st.giveItems(S_ARM_ENCH_BLESS, 1, false, false);
            else if(n < 9)
                st.giveItems(Leather_Shirt, 1, false, false);
            else if(n < 13)
                st.giveItems(Short_Leather_Gloves, 1, false, false);
            else
                st.giveItems(Tunic, 1, false, false);
            htmltext = "lector_q0258_06.htm";
            st.finishQuest();
        }
        return htmltext;
    }

    @Override
    public String onKill(NpcInstance npc, QuestState st)
    {
        long count = st.getQuestItemsCount(WOLF_PELT);
        if(count < 40 && st.getCond() == 1)
        {
            st.giveItems(WOLF_PELT, 1, true, true);
            if(count >= 39)
            {
                st.setCond(2);
            }
            else
                st.playSound(SOUND_ITEMGET);
        }
        return null;
    }
}
 
Всем привет.
Вот квест где надо убивать волков двух разных видов.
Как можно, возможно ли сделать, что бы моб выбирался рандомно?

XML:
package quests;

import l2s.commons.util.Rnd;
import l2s.gameserver.model.instances.NpcInstance;
import l2s.gameserver.model.quest.QuestState;

public class _258_BringWolfPelts extends QuestScript
{
    int WOLF_PELT = 702;

    int S_ARM_ENCH = 960;
    int S_ARM_ENCH_BLESS = 6576;
   

    public _258_BringWolfPelts()
    {
        super(PARTY_NONE, REPEATABLE);

        addStartNpc(30001);
        addKillId(20120);
        addKillId(20442);

        addQuestItem(WOLF_PELT);
    }

    @Override
    public String onEvent(String event, QuestState st, NpcInstance npc)
    {
        String htmltext = event;
        if(event.intern().equalsIgnoreCase("lector_q0258_03.htm"))
        {
            st.setCond(1);
        }
        return htmltext;
    }

    @Override
    public String onTalk(NpcInstance npc, QuestState st)
    {
        String htmltext = NO_QUEST_DIALOG;
        int cond = st.getCond();
        if(cond == 0)
        {
            if(st.getPlayer().getLevel() >= 3)
            {
                htmltext = "lector_q0258_02.htm";
                return htmltext;
            }
            htmltext = "lector_q0258_01.htm";
        }
        else if(cond == 1 && st.getQuestItemsCount(WOLF_PELT) >= 0 && st.getQuestItemsCount(WOLF_PELT) < 40)
            htmltext = "lector_q0258_05.htm";
        else if(cond == 2 && st.getQuestItemsCount(WOLF_PELT) >= 40)
        {
            st.takeItems(WOLF_PELT, 40);
            int n = Rnd.get(16);
            if(n == 0)
            {
                st.giveItems(S_ARM_ENCH, 1, false, false);
                st.playSound(SOUND_JACKPOT);
            }
            else if(n < 6)
                st.giveItems(S_ARM_ENCH_BLESS, 1, false, false);
            else if(n < 9)
                st.giveItems(Leather_Shirt, 1, false, false);
            else if(n < 13)
                st.giveItems(Short_Leather_Gloves, 1, false, false);
            else
                st.giveItems(Tunic, 1, false, false);
            htmltext = "lector_q0258_06.htm";
            st.finishQuest();
        }
        return htmltext;
    }

    @Override
    public String onKill(NpcInstance npc, QuestState st)
    {
        long count = st.getQuestItemsCount(WOLF_PELT);
        if(count < 40 && st.getCond() == 1)
        {
            st.giveItems(WOLF_PELT, 1, true, true);
            if(count >= 39)
            {
                st.setCond(2);
            }
            else
                st.playSound(SOUND_ITEMGET);
        }
        return null;
    }
}
Можно, но есть одно - но! Объяснить клиенту уже не получится так как указывая цель в квесте ты вносишь статично ид цели.
 
Спасибо, уже придумал как обойти данный момент.
Прошу прощения за беспокойство.
 
Сделаю не рандом, предоставлю выбор.
в клиенте есть квесты (в авакенинг видел 100%), которые имеют несколько вариантов отображения:
× Использование Заряда Души;
× Использование Зарядов Духа;
 
Назад
Сверху Снизу