Кастомный квест ( убить РБ, пати дроп)

И так это второй мой квест. Наконец то вроде доделал.
Сейчас постараюсь написать мини гайд.
Как компилить - Сюда
Сам квест:
Java:
package quests;

import java.util.List;
import l2.gameserver.Config;
import l2.gameserver.model.GameObject;
import l2.gameserver.model.Player;
import l2.gameserver.model.instances.NpcInstance;
import l2.gameserver.model.quest.Quest;
import l2.gameserver.model.quest.QuestState;
import l2.gameserver.network.l2.s2c.SystemMessage;
import l2.gameserver.scripts.ScriptFile;
import l2.gameserver.network.l2.s2c.SystemMessage;

public class _892_armor extends Quest implements ScriptFile {
    private static final int bcs = 40084;

    private static final int bch = 45051;

    private static final int bdh = 9883;

    private static final int bdi = 9502;
   

    public _892_armor() {
        super(1);
        addStartNpc(45051);
        addTalkId(45051);
        addKillId(40084);
        addQuestItem(9883);
    }

    public void onLoad() {}

    public void onReload() {}

    public void onShutdown() {}

    public String onEvent(String paramString, QuestState paramQuestState, NpcInstance paramNpcInstance) {
        String str = paramString;
        if (paramString.equalsIgnoreCase("armor01.htm")) {
            paramQuestState.setCond(1);
            paramQuestState.setState(2);
            paramQuestState.playSound("ItemSound.quest_accept");
            str = "armor03.htm";
        }
        return str;
    }

    public String onTalk(NpcInstance paramNpcInstance, QuestState paramQuestState) {
        String str = "noquest";
        int i = paramNpcInstance.getNpcId();
        int j = paramQuestState.getCond();
        if (i == 45051)
            if (j == 0) {
                if (paramQuestState.getPlayer().getLevel() >= 3) {
                    str = "armor02.htm";
                } else {
                    paramQuestState.exitCurrentQuest(true);
                    return "armor03.htm";
                }
            } else if (j == 1) {
                str = "armor04.htm";
            } else if (j == 2) {
                paramQuestState.takeItems(9883, -1L);
                paramQuestState.giveItems(9502, 1L);
                paramQuestState.playSound("ItemSound.quest_finish");
                paramQuestState.exitCurrentQuest(true);
                str = "armor07.htm";
            }
        return str;
    }
    public String onKill(NpcInstance paramNpcInstance, QuestState paramQuestState) {
        int i = paramQuestState.getCond();
        int j = paramNpcInstance.getNpcId();
        if (j == 40084 && i == 1) {
            Player player = paramQuestState.getPlayer();
            List<Player> list = paramQuestState.getPartyMembers(2, Config.ALT_PARTY_DISTRIBUTION_RANGE, (GameObject)player);
            for (Player player1 : list) {
                QuestState questState = player1.getQuestState(this);
                if (questState.getQuestItemsCount(9883) != 0L)
                    continue;
                questState.setCond(2);
                questState.giveItems(9883, 1L);
                questState.playSound("ItemSound.quest_middle");
                player.sendMessage("Ваша группа сделал последний удар!Поздравляем! ");


            }

        }
        return null;
    }

}
Сменяемые параметры:
addStartNpc(45051); - НПС с которого начинается квест
addTalkId(45051); - НПС у которого получаем награду ( тот же самый)
addKillId(40084); - ИД рейдбоса которого нужно убить
addQuestItem(9883); - ИД предмета который упадет с РБ
if (i == 45051) - Так же начальный НПС.
paramQuestState.takeItems(9883, -1L); Предмет который вы выбили с РБ и который забирает НПС.
paramQuestState.giveItems(9502, 1L); - ИД предмета который дается в награду за сдачу квеста и количество.
paramQuestState.playSound("ItemSound.quest_finish"); Мелодия которая играет при сдаче квеста

if (j == 40084 && i == 1) ИД рейдбосса которого нужно убить
(questState.getQuestItemsCount(9883) != 0L) - Проверка на наличие предмета у игрока - Если уже есть, то новый не выдаст.
questState.giveItems(9883, 1L); - ИД предмета который выдадут каждому члену группы за убийство РБ
questState.playSound("ItemSound.quest_middle"); - Мелодия которая проиграется за получение предмета.
player.sendMessage("Ваша группа сделал последний удар!Поздравляем! "); - Поздравления)
Страницы квеста:
(Создаем папку в data/html-ru/quests/_892_armor) можно другое название и номер, но не забудьте поменять название самого класса при создании и в самом скрипте.
if (paramString.equalsIgnoreCase("armor01.htm")) страница при переходе на которую, начинается квест
str = "armor03.htm"; Страница на которую перекидывает после взятия квеста
str = "armor02.htm"; страница на которой будет кнопка - [Quest _892_armor armor01.htm|Сказать "Я убью Рейд Босса"]
str = "armor04.htm"; Страница на которую перекидывает при повторном обращении к НПС, до убийства РБ
str = "armor07.htm"; Страница с поздравлениями об успешном выполнении квеста. После того как убили РБ и пришли к НПС
Ограничение по уровню
if (paramQuestState.getPlayer().getLevel() >= 3) Если игрок больше 3 лвла, то квест доступен. ( можете поменять под себя . К примеру <= 72 (Если меньше 72 или 72.)
Добавляете если новый предмет.
Пример предмета в data/items
<etcitem id="9883" name="Фрагмент Брони">
<!-- [coin_of_luck] -->
<set name="price" value="0"/>
<set name="class" value="OTHER"/>
<set name="crystal_type" value="NONE"/>
<set name="destroyable" value="false"/>
<set name="icon" value="icon.armor_cotton_shoes_i00"/>
<set name="stackable" value="true"/>
<set name="tradeable" value="true"/>
<set name="dropable" value="true"/>
<set name="type" value="QUEST"/>
</etcitem>
Строчки в questname-e.dat
174175.00000000 -88742.00000000 -5138.00000000 - Кординаты РБ
76 80 - Доступно для лвл ( это просто визуал)
45051 82779.00000000 149417.00000000 -3494.00000000 - ИД НПС стартового и кординаты
9883 - ИД предмета который упадет с РБ
Code:
1    892    1    a,Quest Armor\0    a,fragments of Armor\0    a,Wings asked you to collect 1 fragments of Armor. Fly to the Wings Quest location and kill raid boss Armor RB until you get the right number of items.\\n\0    1    9883                                                        1    1                                                        174175.00000000    -88742.00000000    -5138.00000000    76    80    2    a,Armor RB zone\0    1    1    1    45051    82779.00000000    149417.00000000    -3494.00000000    a,No Requirements\0    a,Armor pays a reward to the one who brings him a fragment of armor.\0    0                                                                                                                                                                                                                                                                                        0                        0    0    0    67
1    892    2    a,Quest Armor\0    a,Go back to Armor\0    a,You have collected 1 fragments. Go to Wings - Giran.\\n\0    0                                                            0                                                            82779.00000000    149417.00000000    -3494.00000000    76    80    2    a,Armor\0    0    1    1    45051    82779.00000000    149417.00000000    -3494.00000000    a,No Requirements\0    a,Wings asked you to 1 Fragments of Armor, as a reward for which you will receive one Armor Coin. And in the future you will be able to exchange it for wings. Fly to the Wings Quest location and kill mobs until you get the right number of items.\0    0                                                                                                                                                                                                                                                                                        0                        0    0    0    67


Первый раз пишу описание.(гайд). Строго не судить.
Кому будет полезный - с вас Лайк)
Отвечу на вопросы, если будут.
 
Last edited:
И так это второй мой квест. Наконец то вроде доделал.
Сейчас постараюсь написать мини гайд.
Как компилить - Сюда
Сам квест:
Java:
package quests;

import java.util.List;
import l2.gameserver.Config;
import l2.gameserver.model.GameObject;
import l2.gameserver.model.Player;
import l2.gameserver.model.instances.NpcInstance;
import l2.gameserver.model.quest.Quest;
import l2.gameserver.model.quest.QuestState;
import l2.gameserver.network.l2.s2c.SystemMessage;
import l2.gameserver.scripts.ScriptFile;
import l2.gameserver.network.l2.s2c.SystemMessage;

public class _892_armor extends Quest implements ScriptFile {
    private static final int bcs = 40084;

    private static final int bch = 45051;

    private static final int bdh = 9883;

    private static final int bdi = 9502;
   

    public _892_armor() {
        super(1);
        addStartNpc(45051);
        addTalkId(45051);
        addKillId(40084);
        addQuestItem(9883);
    }

    public void onLoad() {}

    public void onReload() {}

    public void onShutdown() {}

    public String onEvent(String paramString, QuestState paramQuestState, NpcInstance paramNpcInstance) {
        String str = paramString;
        if (paramString.equalsIgnoreCase("armor01.htm")) {
            paramQuestState.setCond(1);
            paramQuestState.setState(2);
            paramQuestState.playSound("ItemSound.quest_accept");
            str = "armor03.htm";
        }
        return str;
    }

    public String onTalk(NpcInstance paramNpcInstance, QuestState paramQuestState) {
        String str = "noquest";
        int i = paramNpcInstance.getNpcId();
        int j = paramQuestState.getCond();
        if (i == 45051)
            if (j == 0) {
                if (paramQuestState.getPlayer().getLevel() >= 3) {
                    str = "armor02.htm";
                } else {
                    paramQuestState.exitCurrentQuest(true);
                    return "armor03.htm";
                }
            } else if (j == 1) {
                str = "armor04.htm";
            } else if (j == 2) {
                paramQuestState.takeItems(9883, -1L);
                paramQuestState.giveItems(9502, 1L);
                paramQuestState.playSound("ItemSound.quest_finish");
                paramQuestState.exitCurrentQuest(true);
                str = "armor07.htm";
            }
        return str;
    }
    public String onKill(NpcInstance paramNpcInstance, QuestState paramQuestState) {
        int i = paramQuestState.getCond();
        int j = paramNpcInstance.getNpcId();
        if (j == 40084 && i == 1) {
            Player player = paramQuestState.getPlayer();
            List<Player> list = paramQuestState.getPartyMembers(2, Config.ALT_PARTY_DISTRIBUTION_RANGE, (GameObject)player);
            for (Player player1 : list) {
                QuestState questState = player1.getQuestState(this);
                if (questState.getQuestItemsCount(9883) != 0L)
                    continue;
                questState.setCond(2);
                questState.giveItems(9883, 1L);
                questState.playSound("ItemSound.quest_middle");
                player.sendMessage("Ваша группа сделал последний удар!Поздравляем! ");


            }

        }
        return null;
    }

}
Сменяемые параметры:

Страницы квеста:
(Создаем папку в data/html-ru/quests/_892_armor) можно другое название и номер, но не забудьте поменять название самого класса при создании и в самом скрипте.

Ограничение по уровню

Добавляете если новый предмет.
Пример предмета в data/items

Строчки в questname-e.dat
174175.00000000 -88742.00000000 -5138.00000000 - Кординаты РБ
76 80 - Доступно для лвл ( это просто визуал)
45051 82779.00000000 149417.00000000 -3494.00000000 - ИД НПС стартового и кординаты
9883 - ИД предмета который упадет с РБ
Code:
1    892    1    a,Quest Armor\0    a,fragments of Armor\0    a,Wings asked you to collect 1 fragments of Armor. Fly to the Wings Quest location and kill raid boss Armor RB until you get the right number of items.\\n\0    1    9883                                                        1    1                                                        174175.00000000    -88742.00000000    -5138.00000000    76    80    2    a,Armor RB zone\0    1    1    1    45051    82779.00000000    149417.00000000    -3494.00000000    a,No Requirements\0    a,Armor pays a reward to the one who brings him a fragment of armor.\0    0                                                                                                                                                                                                                                                                                        0                        0    0    0    67
1    892    2    a,Quest Armor\0    a,Go back to Armor\0    a,You have collected 1 fragments. Go to Wings - Giran.\\n\0    0                                                            0                                                            82779.00000000    149417.00000000    -3494.00000000    76    80    2    a,Armor\0    0    1    1    45051    82779.00000000    149417.00000000    -3494.00000000    a,No Requirements\0    a,Wings asked you to 1 Fragments of Armor, as a reward for which you will receive one Armor Coin. And in the future you will be able to exchange it for wings. Fly to the Wings Quest location and kill mobs until you get the right number of items.\0    0                                                                                                                                                                                                                                                                                        0                        0    0    0    67


Первый раз пишу описание.(гайд). Строго не судить.
Кому будет полезный - с вас Лайк)
Отвечу на вопросы, если будут.
Достойно)
 
И так это второй мой квест. Наконец то вроде доделал.
Сейчас постараюсь написать мини гайд.
Как компилить - Сюда
Сам квест:
Java:
package quests;

import java.util.List;
import l2.gameserver.Config;
import l2.gameserver.model.GameObject;
import l2.gameserver.model.Player;
import l2.gameserver.model.instances.NpcInstance;
import l2.gameserver.model.quest.Quest;
import l2.gameserver.model.quest.QuestState;
import l2.gameserver.network.l2.s2c.SystemMessage;
import l2.gameserver.scripts.ScriptFile;
import l2.gameserver.network.l2.s2c.SystemMessage;

public class _892_armor extends Quest implements ScriptFile {
    private static final int bcs = 40084;

    private static final int bch = 45051;

    private static final int bdh = 9883;

    private static final int bdi = 9502;
   

    public _892_armor() {
        super(1);
        addStartNpc(45051);
        addTalkId(45051);
        addKillId(40084);
        addQuestItem(9883);
    }

    public void onLoad() {}

    public void onReload() {}

    public void onShutdown() {}

    public String onEvent(String paramString, QuestState paramQuestState, NpcInstance paramNpcInstance) {
        String str = paramString;
        if (paramString.equalsIgnoreCase("armor01.htm")) {
            paramQuestState.setCond(1);
            paramQuestState.setState(2);
            paramQuestState.playSound("ItemSound.quest_accept");
            str = "armor03.htm";
        }
        return str;
    }

    public String onTalk(NpcInstance paramNpcInstance, QuestState paramQuestState) {
        String str = "noquest";
        int i = paramNpcInstance.getNpcId();
        int j = paramQuestState.getCond();
        if (i == 45051)
            if (j == 0) {
                if (paramQuestState.getPlayer().getLevel() >= 3) {
                    str = "armor02.htm";
                } else {
                    paramQuestState.exitCurrentQuest(true);
                    return "armor03.htm";
                }
            } else if (j == 1) {
                str = "armor04.htm";
            } else if (j == 2) {
                paramQuestState.takeItems(9883, -1L);
                paramQuestState.giveItems(9502, 1L);
                paramQuestState.playSound("ItemSound.quest_finish");
                paramQuestState.exitCurrentQuest(true);
                str = "armor07.htm";
            }
        return str;
    }
    public String onKill(NpcInstance paramNpcInstance, QuestState paramQuestState) {
        int i = paramQuestState.getCond();
        int j = paramNpcInstance.getNpcId();
        if (j == 40084 && i == 1) {
            Player player = paramQuestState.getPlayer();
            List<Player> list = paramQuestState.getPartyMembers(2, Config.ALT_PARTY_DISTRIBUTION_RANGE, (GameObject)player);
            for (Player player1 : list) {
                QuestState questState = player1.getQuestState(this);
                if (questState.getQuestItemsCount(9883) != 0L)
                    continue;
                questState.setCond(2);
                questState.giveItems(9883, 1L);
                questState.playSound("ItemSound.quest_middle");
                player.sendMessage("Ваша группа сделал последний удар!Поздравляем! ");


            }

        }
        return null;
    }

}
Сменяемые параметры:

Страницы квеста:
(Создаем папку в data/html-ru/quests/_892_armor) можно другое название и номер, но не забудьте поменять название самого класса при создании и в самом скрипте.

Ограничение по уровню

Добавляете если новый предмет.
Пример предмета в data/items

Строчки в questname-e.dat
174175.00000000 -88742.00000000 -5138.00000000 - Кординаты РБ
76 80 - Доступно для лвл ( это просто визуал)
45051 82779.00000000 149417.00000000 -3494.00000000 - ИД НПС стартового и кординаты
9883 - ИД предмета который упадет с РБ
Code:
1    892    1    a,Quest Armor\0    a,fragments of Armor\0    a,Wings asked you to collect 1 fragments of Armor. Fly to the Wings Quest location and kill raid boss Armor RB until you get the right number of items.\\n\0    1    9883                                                        1    1                                                        174175.00000000    -88742.00000000    -5138.00000000    76    80    2    a,Armor RB zone\0    1    1    1    45051    82779.00000000    149417.00000000    -3494.00000000    a,No Requirements\0    a,Armor pays a reward to the one who brings him a fragment of armor.\0    0                                                                                                                                                                                                                                                                                        0                        0    0    0    67
1    892    2    a,Quest Armor\0    a,Go back to Armor\0    a,You have collected 1 fragments. Go to Wings - Giran.\\n\0    0                                                            0                                                            82779.00000000    149417.00000000    -3494.00000000    76    80    2    a,Armor\0    0    1    1    45051    82779.00000000    149417.00000000    -3494.00000000    a,No Requirements\0    a,Wings asked you to 1 Fragments of Armor, as a reward for which you will receive one Armor Coin. And in the future you will be able to exchange it for wings. Fly to the Wings Quest location and kill mobs until you get the right number of items.\0    0                                                                                                                                                                                                                                                                                        0                        0    0    0    67


Первый раз пишу описание.(гайд). Строго не судить.
Кому будет полезный - с вас Лайк)
Отвечу на вопросы, если будут.
Молодчина! Вот только если я посмотрю на тот квест, ты там писал и AI. Тут ты его забыл добавить или просто убрал его из квеста?
 
Молодчина! Вот только если я посмотрю на тот квест, ты там писал и AI. Тут ты его забыл добавить или просто убрал его из квеста?
Тут аи не нужен) А в квесте крылья прописан, что бы давало всем дроп, кто учавствовать в рейде . Задумка такая)
 
Тут аи не нужен) А в квесте крылья прописан, что бы давало всем дроп, кто учавствовать в рейде . Задумка такая)
Не доглядел, прости. ;) Побольше бы таких добрых людей как ты. Молодчина
 
Back
Top