И так это второй мой квест. Наконец то вроде доделал.
Сейчас постараюсь написать мини гайд.
Как компилить - Сюда
Сам квест:
Сменяемые параметры:
(Создаем папку в data/html-ru/quests/_892_armor) можно другое название и номер, но не забудьте поменять название самого класса при создании и в самом скрипте.
Пример предмета в data/items
174175.00000000 -88742.00000000 -5138.00000000 - Кординаты РБ
76 80 - Доступно для лвл ( это просто визуал)
45051 82779.00000000 149417.00000000 -3494.00000000 - ИД НПС стартового и кординаты
9883 - ИД предмета который упадет с РБ
Первый раз пишу описание.(гайд). Строго не судить.
Кому будет полезный - с вас Лайк)
Отвечу на вопросы, если будут.
Сейчас постараюсь написать мини гайд.
Как компилить - Сюда
Сам квест:
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
Строчки в questname-e.dat<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>
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: