Tutorial quest.

This commit is contained in:
MobiusDev 2017-07-25 22:30:49 +00:00
parent 243c28f84d
commit a4496686d6
28 changed files with 506 additions and 10 deletions

View File

@ -0,0 +1,5 @@
<html><body>Newbie Helper:<br>
Welcome to Cedric's Training Hall. I will be teaching you the basics of combat.<br>
Please click on <font color="LEVEL">Quest</font>, in your Chat window.<br>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html>

View File

@ -1,4 +0,0 @@
<html><body>Master Auron:<br>
Welcome, young traveler, to the Warrior Guild of Gludin Village! I am Master Auron. How may I serve you?<br>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Newbie Helper:<br>
Welcome to Einhovant's School of Wizardry. I will be teaching you the basics of combat.<br>
Please click on <font color="LEVEL">Quest</font>, in your Chat window.<br>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Newbie Helper:<br>
Welcome, young seeker. In this temple are all Dark Elves born, and here we worship the goddess of darkness, the first goddess of water, Shilen. I will be teaching you the basics of combat.<br>
Please click on <font color="LEVEL">Quest</font>, in your Chat window.<br>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Newbie Helper:<br>
I bid you welcome, young one. I am a guardian of the Mother Tree Glade, and serve the Mother of all Elves. I will be teaching you the basics of combat.<br>
To begin, click on <font color="LEVEL">Quest</font> in the Chat window.<br>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Newbie Helper:<br>
Welcome, young Dwarf. Do you know where you are? This place is the strip mine, and here young Dwarves like you are trained. Every Dwarf must learn the skills required for self-sufficiency! I will teach you those basics.<br>
To begin, click on <font color="LEVEL">Quest</font>, in the Chat window.<br>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Newbie Helper:<br>
Welcome, young Orc. Stripling Orcs take their first steps toward becoming fighters in the Temple of Paagrio, where we worship Paagrio, god of fire and creator of all Orcs. I will teach you the basics of combat.<br>
To begin, click on <font color="LEVEL">Quest</font>, in the Chat window.<br>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Newbie Guide:<br>
If you need advice, please do not hesitate to ask me! I'll try my very best to help you.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 1">Ask for advice.</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Quest NpcLocationInfo">NPC location information.</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link default/BlessingOfProtection.htm">Receive blessing of protection.</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link default/SupportMagic.htm">Check list of available support magic.</Button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Newbie Guide:<br>
Don't hesitate to tell me if you require assistance. I can teach you about a number of useful things.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 1">Ask for advice.</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Quest NpcLocationInfo">NPC Location Information.</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link default/BlessingOfProtection.htm">Receive blessing of protection.</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link default/SupportMagic.htm">Receive help from beneficial magic.</Button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Newbie Guide:<br>
If you need advice, do not hesitate to ask me! I will do my very best to help you.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 1">Ask for advice.</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Quest NpcLocationInfo">NPC Location Information.</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link default/BlessingOfProtection.htm">Receive blessing of protection.</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link default/SupportMagic.htm">Receive help from beneficial magic.</Button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Newbie Guide:<br>
Can I help you with anything? Eh? Well, then, what would you like to know?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 1">Ask for advice.</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Quest NpcLocationInfo">NPC Location Information.</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link default/BlessingOfProtection.htm">Receive blessing of protection.</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link default/SupportMagic.htm">Receive help from beneficial magic.</Button>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>Newbie Guide:<br>
You wish to grow strong and powerful, Eh? Then listen carefully; I will advice you!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 1">Ask for advice.</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Quest NpcLocationInfo">NPC Location Information.</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link default/BlessingOfProtection.htm">Receive blessing of protection.</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Link default/SupportMagic.htm">Receive help from beneficial magic.</Button>
</body></html>

View File

@ -0,0 +1,333 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.Q00255_Tutorial;
import java.util.HashMap;
import java.util.Map;
import com.l2jmobius.Config;
import com.l2jmobius.gameserver.model.L2World;
import com.l2jmobius.gameserver.model.Location;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.events.EventType;
import com.l2jmobius.gameserver.model.events.ListenerRegisterType;
import com.l2jmobius.gameserver.model.events.annotations.Id;
import com.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
import com.l2jmobius.gameserver.model.events.annotations.RegisterType;
import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerBypass;
import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerItemPickup;
import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerLogin;
import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerPressTutorialMark;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.quest.Quest;
import com.l2jmobius.gameserver.model.quest.QuestState;
import com.l2jmobius.gameserver.network.serverpackets.PlaySound;
import com.l2jmobius.gameserver.network.serverpackets.TutorialCloseHtml;
import com.l2jmobius.gameserver.network.serverpackets.TutorialShowQuestionMark;
/**
* Tutorial Quest
* @author Mobius
*/
public class Q00255_Tutorial extends Quest
{
// NPCs
private final static int STARTING_HELPER_HF = 30009;
private final static int STARTING_HELPER_HM = 30019;
private final static int STARTING_HELPER_EL = 30400;
private final static int STARTING_HELPER_DE = 30131;
private final static int STARTING_HELPER_OR = 30575;
private final static int STARTING_HELPER_DW = 30530;
private final static int NEWBIE_BUFFER_HU = 30598;
private final static int NEWBIE_BUFFER_EL = 30599;
private final static int NEWBIE_BUFFER_DE = 30600;
private final static int NEWBIE_BUFFER_OR = 30602;
private final static int NEWBIE_BUFFER_DW = 30601;
// Monsters
private final static int[] GREMLINS =
{
18342, // this is used for now
20001
};
// Items
private final static int BLUE_GEM = 6353;
// Others
private static final Map<Integer, QuestSoundHtmlHolder> STARTING_VOICE_HTML = new HashMap<>();
{
STARTING_VOICE_HTML.put(0, new QuestSoundHtmlHolder("tutorial_voice_001a", "tutorial_human_fighter001.html"));
STARTING_VOICE_HTML.put(10, new QuestSoundHtmlHolder("tutorial_voice_001b", "tutorial_human_mage001.html"));
STARTING_VOICE_HTML.put(18, new QuestSoundHtmlHolder("tutorial_voice_001c", "tutorial_elven_fighter001.html"));
STARTING_VOICE_HTML.put(25, new QuestSoundHtmlHolder("tutorial_voice_001d", "tutorial_elven_mage001.html"));
STARTING_VOICE_HTML.put(31, new QuestSoundHtmlHolder("tutorial_voice_001e", "tutorial_delf_fighter001.html"));
STARTING_VOICE_HTML.put(38, new QuestSoundHtmlHolder("tutorial_voice_001f", "tutorial_delf_mage001.html"));
STARTING_VOICE_HTML.put(44, new QuestSoundHtmlHolder("tutorial_voice_001g", "tutorial_orc_fighter001.html"));
STARTING_VOICE_HTML.put(49, new QuestSoundHtmlHolder("tutorial_voice_001h", "tutorial_orc_mage001.html"));
STARTING_VOICE_HTML.put(53, new QuestSoundHtmlHolder("tutorial_voice_001i", "tutorial_dwarven_fighter001.html"));
}
private static final Map<Integer, Location> HELPER_LOCATION = new HashMap<>();
{
HELPER_LOCATION.put(0, new Location(-71424, 258336, -3109));
HELPER_LOCATION.put(10, new Location(-91036, 248044, -3568));
HELPER_LOCATION.put(18, new Location(46112, 41200, -3504));
HELPER_LOCATION.put(25, new Location(46112, 41200, -3504));
HELPER_LOCATION.put(31, new Location(28384, 11056, -4233));
HELPER_LOCATION.put(38, new Location(28384, 11056, -4233));
HELPER_LOCATION.put(44, new Location(-56736, -113680, -672));
HELPER_LOCATION.put(49, new Location(-56736, -113680, -672));
HELPER_LOCATION.put(53, new Location(108567, -173994, -406));
}
private static final Map<Integer, Location> COMPLETE_LOCATION = new HashMap<>();
{
COMPLETE_LOCATION.put(0, new Location(-84081, 243227, -3723));
COMPLETE_LOCATION.put(10, new Location(-84081, 243227, -3723));
COMPLETE_LOCATION.put(18, new Location(45475, 48359, -3060));
COMPLETE_LOCATION.put(25, new Location(45475, 48359, -3060));
COMPLETE_LOCATION.put(31, new Location(12111, 16686, -4582));
COMPLETE_LOCATION.put(38, new Location(12111, 16686, -4582));
COMPLETE_LOCATION.put(44, new Location(-45032, -113598, -192));
COMPLETE_LOCATION.put(49, new Location(-45032, -113598, -192));
COMPLETE_LOCATION.put(53, new Location(115632, -177996, -905));
}
private static final String TUTORIAL_BUYPASS = "Quest Q00255_Tutorial ";
public Q00255_Tutorial()
{
super(255);
addTalkId(STARTING_HELPER_HF, STARTING_HELPER_HM, STARTING_HELPER_EL, STARTING_HELPER_DE, STARTING_HELPER_OR, STARTING_HELPER_DW);
addFirstTalkId(NEWBIE_BUFFER_HU, NEWBIE_BUFFER_EL, NEWBIE_BUFFER_DE, NEWBIE_BUFFER_OR, NEWBIE_BUFFER_DW);
addKillId(GREMLINS);
registerQuestItems(BLUE_GEM);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = null;
switch (event)
{
case "tutorial_02.html":
{
playTutorialVoice(player, "tutorial_voice_003");
htmltext = event;
break;
}
case "user_connected":
{
// start the newbie tutorial
if (!qs.isCompleted() && STARTING_VOICE_HTML.containsKey(player.getClassId().getId()))
{
startQuestTimer("start_newbie_tutorial", 5000, null, player);
}
break;
}
case "start_newbie_tutorial":
{
qs.startQuest();
qs.setMemoState(1);
playTutorialVoice(player, STARTING_VOICE_HTML.get(player.getClassId().getId()).getSound());
htmltext = STARTING_VOICE_HTML.get(player.getClassId().getId()).getHtml();
break;
}
case "newbie_pick_up_items":
{
if (qs.getMemoState() <= 1)
{
playTutorialVoice(player, "tutorial_voice_011");
playSound(player, "ItemSound.quest_tutorial");
htmltext = "tutorial_09.html";
}
break;
}
case "goto_newbie_guide":
{
if (qs.getMemoState() == 2)
{
qs.setMemoState(3);
final int classId = player.getClassId().getId();
addRadar(player, HELPER_LOCATION.get(classId).getX(), HELPER_LOCATION.get(classId).getY(), HELPER_LOCATION.get(classId).getZ());
playSound(player, "ItemSound.quest_tutorial");
htmltext = "tutorial_11.html";
}
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
switch (npc.getId())
{
case STARTING_HELPER_HF:
case STARTING_HELPER_HM:
case STARTING_HELPER_EL:
case STARTING_HELPER_DE:
case STARTING_HELPER_OR:
case STARTING_HELPER_DW:
{
if ((qs.getMemoState() > 2) || hasQuestItems(player, BLUE_GEM))
{
takeItems(player, BLUE_GEM, -1);
final int classId = player.getClassId().getId();
qs.setMemoState(4);
addRadar(player, COMPLETE_LOCATION.get(classId).getX(), COMPLETE_LOCATION.get(classId).getY(), COMPLETE_LOCATION.get(classId).getZ());
playSound(player, "ItemSound.quest_tutorial");
htmltext = "tutorial_15.html";
}
else if (!hasQuestItems(player, BLUE_GEM))
{
htmltext = "tutorial_09.html";
}
break;
}
}
return htmltext;
}
@Override
public String onFirstTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && (qs.getMemoState() == 4))
{
qs.exitQuest(false, false);
}
return npc.getId() + ".html";
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
final QuestState qs = getQuestState(killer, false);
if ((qs != null) && (qs.getMemoState() < 2) && !hasQuestItems(killer, BLUE_GEM))
{
// check for too many gems on ground
int counter = 0;
for (L2ItemInstance item : L2World.getInstance().getVisibleObjects(killer, L2ItemInstance.class, 1500))
{
if (item.getId() == BLUE_GEM)
{
counter++;
}
}
if (counter < 10) // do not drop if more than 10
{
startQuestTimer("newbie_pick_up_items", 100, null, killer);
npc.dropItem(killer, BLUE_GEM, 1);
}
}
return super.onKill(npc, killer, isSummon);
}
@RegisterEvent(EventType.ON_PLAYER_ITEM_PICKUP)
@RegisterType(ListenerRegisterType.ITEM)
@Id(BLUE_GEM)
public void OnPlayerItemPickup(OnPlayerItemPickup event)
{
final L2PcInstance player = event.getActiveChar();
final QuestState qs = getQuestState(player, false);
if ((qs != null) && (qs.getMemoState() == 1))
{
player.sendPacket(TutorialCloseHtml.STATIC_PACKET); // FIXME: close does not work?
qs.setMemoState(2);
playTutorialVoice(player, "tutorial_voice_013");
playSound(player, "ItemSound.quest_tutorial");
player.sendPacket(new TutorialShowQuestionMark(0, 1));
}
}
@RegisterEvent(EventType.ON_PLAYER_PRESS_TUTORIAL_MARK)
@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
public void onPlayerPressTutorialMark(OnPlayerPressTutorialMark event)
{
if (event.getMarkId() == 1) // tutorial mark
{
startQuestTimer("goto_newbie_guide", 100, null, event.getActiveChar());
}
}
@RegisterEvent(EventType.ON_PLAYER_BYPASS)
@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
public void OnPlayerBypass(OnPlayerBypass event)
{
final L2PcInstance player = event.getActiveChar();
if (event.getCommand().startsWith(TUTORIAL_BUYPASS))
{
notifyEvent(event.getCommand().replace(TUTORIAL_BUYPASS, ""), null, player);
}
}
@RegisterEvent(EventType.ON_PLAYER_LOGIN)
@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
public void OnPlayerLogin(OnPlayerLogin event)
{
if (Config.DISABLE_TUTORIAL)
{
return;
}
final L2PcInstance player = event.getActiveChar();
if (player.getLevel() > 6)
{
return;
}
QuestState qs = getQuestState(player, true);
if (qs != null)
{
notifyEvent("user_connected", null, player);
}
}
public void playTutorialVoice(L2PcInstance player, String voice)
{
player.sendPacket(new PlaySound(2, voice, 0, 0, player.getX(), player.getY(), player.getZ()));
}
private class QuestSoundHtmlHolder
{
private final String _sound;
private final String _html;
QuestSoundHtmlHolder(String sound, String html)
{
_sound = sound;
_html = html;
}
String getSound()
{
return _sound;
}
String getHtml()
{
return _html;
}
}
}

View File

@ -0,0 +1,5 @@
<html><body>
<center><font color="LEVEL">[Movement]</font></center><br>
Move your mouse cursor to the spot to which you want to move and <font color="FF0000">left-click</font>. Then, you will be moved to that location.<img src="L2UI_CH3.tutorial_img01" width=64 height=64><img src="L2UI_CH3.tutorial_img021" width=64 height=64><br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00255_Tutorial close_window">Exit the Tutorial</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>
<center><font color="LEVEL">[Picking Up Items]</font></center><br>When you defeat monsters, they drop their items on the ground. Move your cursor over to the dropped item, and the cursor will change its shape to a hand-shaped icon, indicating that the item may be picked up. Left-click on the item to pick it up.<br>
<img src="L2UI_CH3.tutorial_img06" width=64 height=64><br>There is another way to pick up an item. Press the <font color="LEVEL">F4 key</font> and you can automatically pick up nearby items. Currently, the fourth slot on the shortcut bar is registered with the pickup action and therefore, when you press the F4 key, that action is activated.<table border=0><tr><td><img src="L2UI_CH3.tutorial_img151" width=64 height=64></td><td><img src="L2UI_CH3.tutorial_img20" width=64 height=64></td></tr></table><br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00255_Tutorial close_window">Close Window</Button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>
Oh, you found the Blue Gemstone. Good job!<br>
Now, return and have a conversation with the newbie helper.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00255_Tutorial close_window">Close Window</Button>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>
<center><font color="LEVEL">[View Map]</font></center><br>
To see the map during the game, click on the <font color="FF0000">map-shaped icon</font> on the bottom right screen.<br>
<img src="L2UI_CH3.tutorial_img09" width=175 height=110><br>When viewing the map, the newbie guide's location is marked with a red flag.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00255_Tutorial close_window">Close window.</Button>
</body></html>

View File

@ -0,0 +1,8 @@
<html><body>
<font color="LEVEL">Welcome to Lineage II!</font><br>
This is the Temple of Shilen, where Shilen, the goddess of darkness is worshipped. This is the place where young dark elves are trained to grow their skills and strength.<br>
Now, you are taking your first step to becoming a Dark Fighter. First, I will explain the basic operation of the game.<br>
<table border=0 cellpadding=0 cellspacing=0><tr><td>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00255_Tutorial tutorial_02.html">If you click here, you will move to the next topic of this tutorial.</Button></td>
<td valign=top><img src="L2UI_CH3.tutorial_pointer" width=32 height= 16></td></tr></table>
</body></html>

View File

@ -0,0 +1,7 @@
<html><body>
<font color="LEVEL">Welcome to Lineage II!</font><br>
This is the Temple of Shilen, where Shilen, the goddess of darkness is worshipped. This is the place where young dark elves are trained to grow their skills and strength.<br>Now, you are taking your first step to becoming a Dark Mystic. First, I will explain the basic operation of the game.<br>
<table border=0 cellpadding=0 cellspacing=0><tr><td>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00255_Tutorial tutorial_02.html">If you click here, you will move to the next topic of this tutorial.</Button></td>
<td valign=top><img src="L2UI_CH3.tutorial_pointer" width=32 height= 16></td></tr></table>
</body></html>

View File

@ -0,0 +1,8 @@
<html><body>
<font color="LEVEL">Welcome to Lineage II!</font><br>
This is the strip mine of the Dwarves. All new dwarves start their basic training in this place.<br>
Now, you are taking your first step to becoming a Dwarven Fighter. First, I will explain the basic operation of the game.<br>
<table border=0 cellpadding=0 cellspacing=0><tr><td>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00255_Tutorial tutorial_02.html">If you click here, you will move to the next topic of this tutorial.</Button></td>
<td valign=top><img src="L2UI_CH3.tutorial_pointer" width=32 height= 16></td></tr></table>
</body></html>

View File

@ -0,0 +1,8 @@
<html><body>
<font color="LEVEL">Welcome to Lineage II!</font><br>
This is the sacred spring where the Mother Tree, the mother of all Elves, is worshipped. Before journeying forth to the outside world, young elves begin their training in this place.<br>
Now, you are taking your first step to becoming an Elven Fighter. First, I will explain the basic operation of the game.<br>
<table border=0 cellpadding=0 cellspacing=0><tr><td>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00255_Tutorial tutorial_02.html">If you click here, you will move to the next topic of this tutorial.</Button></td>
<td valign=top><img src="L2UI_CH3.tutorial_pointer" width=32 height= 16></td></tr></table>
</body></html>

View File

@ -0,0 +1,8 @@
<html><body>
<font color="LEVEL">Welcome to Lineage II!</font><br>
This is the sacred spring where the Mother Tree, the mother of all Elves, is worshipped. Before journeying forth to the outside world, young elves begin their training in this place.<br>
Now, you are taking your first step to becoming an Elven Mystic. First, I will explain the basic operation of the game.<br>
<table border=0 cellpadding=0 cellspacing=0><tr><td>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00255_Tutorial tutorial_02.html">If you click here, you will move to the next topic of this tutorial.</Button></td>
<td valign=top><img src="L2UI_CH3.tutorial_pointer" width=32 height= 16></td></tr></table>
</body></html>

View File

@ -0,0 +1,8 @@
<html><body>
<font color="LEVEL">Welcome to Lineage II!</font><br>
This is Sedrick's Training Hall. This place is famous for producing many noted Fighters.<br>
Now, you are taking your first step to becoming a Human Fighter. First, I will explain the basic operation of the game.<br>
<table border=0 cellpadding=0 cellspacing=0><tr><td>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00255_Tutorial tutorial_02.html">If you click here, you will move to the next topic of this tutorial.</Button></td>
<td valign=top><img src="L2UI_CH3.tutorial_pointer" width=32 height= 16></td></tr></table>
</body></html>

View File

@ -0,0 +1,8 @@
<html><body>
<font color="LEVEL">Welcome to Lineage II!</font><br>
This is Einhovant's School of Wizardry. This school is famous for producing many excellent mystics. <br>
Now, you are taking your first step to becoming a Human Mystic. First, I will explain the basic operation of the game.<br>
<table border=0 cellpadding=0 cellspacing=0><tr><td>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00255_Tutorial tutorial_02.html">If you click here, you will move to the next topic of this tutorial.</Button></td>
<td valign=top><img src="L2UI_CH3.tutorial_pointer" width=32 height= 16></td></tr></table>
</body></html>

View File

@ -0,0 +1,8 @@
<html><body>
<font color="LEVEL">Welcome to Lineage II!</font><br>
This is the Temple of Paagrio, the sacred place where we worship Paagrio, the god of flame. It is here that young Orcs begin their training.<br>
Now you are taking your first step to becoming an Orc Fighter. First, I will explain the basic operation of the game.<br>
<table border=0 cellpadding=0 cellspacing=0><tr><td>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00255_Tutorial tutorial_02.html">If you click here, you will move to the next topic of this tutorial.</Button></td>
<td valign=top><img src="L2UI_CH3.tutorial_pointer" width=32 height= 16></td></tr></table>
</body></html>

View File

@ -0,0 +1,8 @@
<html><body>
<font color="LEVEL">Welcome to Lineage II!</font><br>
This is the Temple of Paagrio, the sacred place where we worship Paagrio, the god of flame. It is here that young Orcs begin their training.<br>
Now, you are taking your first step to becoming an Orc Mystic. First, I will explain the basic operation of the game.<br>
<table border=0 cellpadding=0 cellspacing=0><tr><td>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00255_Tutorial tutorial_02.html">If you click here, you will move to the next topic of this tutorial.</Button></td>
<td valign=top><img src="L2UI_CH3.tutorial_pointer" width=32 height= 16></td></tr></table>
</body></html>

View File

@ -19,6 +19,8 @@ package quests;
import java.util.logging.Level;
import java.util.logging.Logger;
import quests.Q00255_Tutorial.Q00255_Tutorial;
/**
* @author NosBit
*/
@ -28,7 +30,7 @@ public class QuestMasterHandler
private static final Class<?>[] QUESTS =
{
// Q00013_ParcelDelivery.class,
Q00255_Tutorial.class,
};
public static void main(String[] args)

View File

@ -21,11 +21,19 @@ import com.l2jmobius.gameserver.network.OutgoingPackets;
public final class TutorialShowQuestionMark implements IClientOutgoingPacket
{
private final int _markId;
private final int _number1; // cond?
private final int _number2; // quest id?
public TutorialShowQuestionMark(int blink)
public TutorialShowQuestionMark(int number1)
{
_markId = blink;
_number1 = number1;
_number2 = 0;
}
public TutorialShowQuestionMark(int number1, int number2)
{
_number1 = number1;
_number2 = number2;
}
@Override
@ -33,8 +41,8 @@ public final class TutorialShowQuestionMark implements IClientOutgoingPacket
{
OutgoingPackets.TUTORIAL_SHOW_QUESTION_MARK.writeId(packet);
packet.writeC(0x01); // Number of mark, most likely ?
packet.writeD(_markId);
packet.writeC(_number1);
packet.writeD(_number2);
return true;
}
}