Tutorial quest adjustments.

Contributed by gigilo1968.
This commit is contained in:
MobiusDevelopment
2019-08-22 21:29:20 +00:00
parent 9d6167f52d
commit bafd639c8f
48 changed files with 477 additions and 117 deletions

View File

@@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.base.AcquireSkillType;
import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.ExAcquirableSkillListByClass;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import ai.AbstractNpcAI;
@@ -42,8 +42,6 @@ public class AlchemistManager extends AbstractNpcAI
33978, // Zephyra
33977, // Veruti
};
// Misc
private static final String TUTORIAL_LINK = "..\\L2text\\QT_026_alchemy_01.htm";
private AlchemistManager()
{
@@ -66,7 +64,7 @@ public class AlchemistManager extends AbstractNpcAI
}
case "open_tutorial":
{
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), TUTORIAL_LINK, TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(26));
htmltext = npc.getId() + "-1.html";
break;
}

View File

@@ -0,0 +1,112 @@
/*
* 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 ai.others.Tutorial;
import org.l2jmobius.Config;
import org.l2jmobius.commons.concurrent.ThreadPool;
import org.l2jmobius.gameserver.enums.Race;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.ListenerRegisterType;
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCreate;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import org.l2jmobius.gameserver.network.serverpackets.PlaySound;
import org.l2jmobius.gameserver.network.serverpackets.TutorialCloseHtml;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import ai.AbstractNpcAI;
/**
* Tutorial
* @author Gigi
* @date 2019-08-21 - [21:06:44]
*/
public class Tutorial extends AbstractNpcAI
{
// Misc
private static final String TUTORIAL_VAR = "TUTORIAL";
private Tutorial()
{
}
@RegisterEvent(EventType.ON_PLAYER_LOGIN)
@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
public void onPlayerLogin(OnPlayerLogin event)
{
final PlayerInstance player = event.getPlayer();
if (player.getVariables().getInt(TUTORIAL_VAR, 0) == 0)
{
if (player.getRace() == Race.ERTHEIA)
{
ThreadPool.schedule(() ->
{
final String html = getHtm(player, "tutorial_01_ertheia.html");
player.sendPacket(new TutorialShowHtml(html));
player.sendPacket(new ExTutorialShowId(5));
}, 26000);
}
else
{
ThreadPool.schedule(() ->
{
final String html = getHtm(player, "tutorial_01.html");
player.sendPacket(new TutorialShowHtml(html));
player.sendPacket(new ExTutorialShowId(5));
}, 26000);
}
}
}
@RegisterEvent(EventType.ON_PLAYER_BYPASS)
@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
public void OnPlayerBypass(OnPlayerBypass event)
{
final PlayerInstance player = event.getPlayer();
if (event.getCommand().equals("chat_window"))
{
ThreadPool.schedule(() ->
{
player.sendPacket(new ExTutorialShowId(1));
player.sendPacket(new PlaySound(2, "tutorial_voice_006", 0, 0, 0, 0, 0));
}, 500);
player.getVariables().set(TUTORIAL_VAR, 1);
player.sendPacket(TutorialCloseHtml.STATIC_PACKET);
}
}
@RegisterEvent(EventType.ON_PLAYER_CREATE)
@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
public void OnPlayerCreate(OnPlayerCreate event)
{
final PlayerInstance player = event.getPlayer();
if (Config.DISABLE_TUTORIAL)
{
return;
}
player.getVariables().set(TUTORIAL_VAR, 0);
}
public static void main(String[] args)
{
new Tutorial();
}
}

View File

@@ -0,0 +1,4 @@
<html><title>Tutorial</title><body><br>
We are inside the museum in Talking Island Village. It seems that curator Pantheon would like to speak with you. I will tell you <font color="LEVEL">how to use the mouse to move</font> to Pantheon and speak with him.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h chat_window">Talk with Pantheon</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><title>Tutorial</title><body><br>
This is Faeron Village. Queen Navari has something to say. Please pay attention to the instructions on <font color="LEVEL">using the mouse</font> in order to <font color="LEVEL">move</font>.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h chat_window">"Talk with Queen Navari"</Button>
</body></html>

View File

@@ -28,7 +28,7 @@ import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import instances.AbstractInstance;
import quests.Q10735_ASpecialPower.Q10735_ASpecialPower;
@@ -164,14 +164,14 @@ public class FaeronTrainingGrounds1 extends AbstractInstance
qs.set("ss", 1);
giveItems(player, SPIRITSHOTS_TRAINING);
showOnScreenMsg(player, NpcStringId.AUTOMATE_SPIRITSHOT_AS_SHOWN_IN_THE_TUTORIAL, ExShowScreenMessage.TOP_CENTER, 10000);
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_003_bullet_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(14));
htmltext = "33944-04.html";
}
break;
}
case 5:
{
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_004_skill_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(15));
htmltext = "33944-06.html";
break;
}

View File

@@ -28,7 +28,7 @@ import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import instances.AbstractInstance;
import quests.Q10736_ASpecialPower.Q10736_ASpecialPower;
@@ -161,14 +161,14 @@ public class FaeronTrainingGrounds2 extends AbstractInstance
qs.set("ss", 1);
giveItems(player, SOULSHOTS_TRAINING);
showOnScreenMsg(player, NpcStringId.AUTOMATE_SOULSHOT_AS_SHOWN_IN_THE_TUTORIAL, ExShowScreenMessage.TOP_CENTER, 10000);
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_003_bullet_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(14));
htmltext = "33945-04.html";
}
break;
}
case 5:
{
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_004_skill_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(15));
htmltext = "33945-06.html";
break;
}

View File

@@ -30,7 +30,7 @@ import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import org.l2jmobius.gameserver.model.zone.ZoneType;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
/**
* Let's Go To The Central Square (10320)
@@ -74,7 +74,7 @@ public class Q10320_LetsGoToTheCentralSquare extends Quest
qs.startQuest();
qs.setCond(2); // arrow hack
qs.setCond(1);
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_001_Radar_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(9));
htmltext = event;
break;
}
@@ -87,7 +87,7 @@ public class Q10320_LetsGoToTheCentralSquare extends Quest
{
if (qs.isStarted())
{
addExpAndSp(player, 70, 5);
addExpAndSp(player, 84, 5);
qs.exitQuest(false, true);
htmltext = event;
}

View File

@@ -21,7 +21,7 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import quests.Q10320_LetsGoToTheCentralSquare.Q10320_LetsGoToTheCentralSquare;
@@ -63,7 +63,7 @@ public class Q10321_QualificationsOfTheSeeker extends Quest
qs.startQuest();
qs.setCond(2); // arrow hack
qs.setCond(1);
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_027_Quest_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(11));
htmltext = event;
break;
}
@@ -76,7 +76,7 @@ public class Q10321_QualificationsOfTheSeeker extends Quest
{
if (qs.isStarted())
{
addExpAndSp(player, 300, 6);
addExpAndSp(player, 360, 6);
qs.exitQuest(false, true);
htmltext = event;
}

View File

@@ -32,7 +32,7 @@ import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExQuestNpcLogList;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import quests.Q10321_QualificationsOfTheSeeker.Q10321_QualificationsOfTheSeeker;
@@ -96,7 +96,7 @@ public class Q10541_TrainLikeTheRealThing extends Quest
}
case "32981-03.html":
{
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_002_Guide_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(25));
htmltext = event;
break;
}

View File

@@ -29,7 +29,7 @@ import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import quests.Q10541_TrainLikeTheRealThing.Q10541_TrainLikeTheRealThing;
@@ -169,7 +169,7 @@ public class Q10542_SearchingForNewPower extends Quest
{
htmltext = "33004-01.html";
qs.setCond(3, true);
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2text\\QT_004_skill_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(15));
htmltext = "33004-01.html";
NpcStringId npcStringId = null;

View File

@@ -24,7 +24,7 @@ import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import quests.Q10542_SearchingForNewPower.Q10542_SearchingForNewPower;
@@ -39,7 +39,7 @@ public class Q10543_SheddingWeight extends Quest
private static final int SHANNON = 32974;
private static final int WILFORD = 30005;
// Items
// private static final int NOVICE_TRAINING_LOG = 1835; // TODO Find item ID
private static final int NOVICE_TRAINING_LOG = 47601;
private static final int APPRENTICE_ADVENTURERS_STAFF = 7816;
private static final int APPRENTICE_ADVENTURERS_BONE_CLUB = 7817;
private static final int APPRENTICE_ADVENTURERS_KNIFE = 7818;
@@ -54,7 +54,7 @@ public class Q10543_SheddingWeight extends Quest
super(10543);
addStartNpc(SHANNON);
addTalkId(SHANNON, WILFORD);
// registerQuestItems(NOVICE_TRAINING_LOG);
registerQuestItems(NOVICE_TRAINING_LOG);
addCondNotRace(Race.ERTHEIA, "noRace.html");
addCondMaxLevel(MAX_LEVEL, "noLevel.html");
addCondCompletedQuest(Q10542_SearchingForNewPower.class.getSimpleName(), "noLevel.html");
@@ -83,7 +83,7 @@ public class Q10543_SheddingWeight extends Quest
qs.startQuest();
qs.setCond(2); // arrow hack
qs.setCond(1);
// giveItems(player, NOVICE_TRAINING_LOG, 1);
giveItems(player, NOVICE_TRAINING_LOG, 1);
htmltext = event;
break;
}
@@ -95,9 +95,9 @@ public class Q10543_SheddingWeight extends Quest
giveItems(player, APPRENTICE_ADVENTURERS_CESTUS, 1);
giveItems(player, APPRENTICE_ADVENTURERS_BOW, 1);
giveItems(player, APPRENTICE_ADVENTURERS_LONG_SWORD, 1);
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_007_post_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(24));
showOnScreenMsg(player, NpcStringId.WEAPONS_HAVE_BEEN_ADDED_TO_YOUR_INVENTORY, ExShowScreenMessage.TOP_CENTER, 10000);
addExpAndSp(player, 2630, 9);
addExpAndSp(player, 3156, 9);
qs.exitQuest(false, true);
htmltext = event;
break;

View File

@@ -22,7 +22,7 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.network.serverpackets.ExShowUsm;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
/**
* A Foreign Land (10732)
@@ -73,8 +73,8 @@ public class Q10732_AForeignLand extends Quest
{
if (qs.isStarted())
{
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_001_Radar_01.htm", TutorialShowHtml.LARGE_WINDOW));
addExpAndSp(player, 75, 2);
player.sendPacket(new ExTutorialShowId(9));
addExpAndSp(player, 90, 2);
qs.exitQuest(false, true);
}
break;

View File

@@ -20,12 +20,13 @@ import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import quests.Q10732_AForeignLand.Q10732_AForeignLand;
/**
* The Test For Survival (10733)
* @URL https://l2wiki.com/The_Test_for_Survival
* @author Sdw
*/
public class Q10733_TheTestForSurvival extends Quest
@@ -69,7 +70,7 @@ public class Q10733_TheTestForSurvival extends Quest
case "33932-02.htm":
{
qs.startQuest();
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_027_Quest_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(11));
giveItems(player, GERETH_RECOMMENDATION, 1);
break;
}

View File

@@ -25,7 +25,7 @@ import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import quests.Q10733_TheTestForSurvival.Q10733_TheTestForSurvival;
@@ -94,7 +94,7 @@ public class Q10734_DoOrDie extends Quest
{
castBuffs(npc, player, "33950-06.html", "33950-04.html");
htmltext = (player.isMageClass()) ? "33950-03.html" : "33950-05.html";
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_002_Guide_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(25));
break;
}
case "buffs":
@@ -159,7 +159,7 @@ public class Q10734_DoOrDie extends Quest
}
case 8:
{
addExpAndSp(player, 805, 2);
addExpAndSp(player, 966, 2);
qs.exitQuest(false, true);
htmltext = "33943-07.html";
break;
@@ -212,7 +212,7 @@ public class Q10734_DoOrDie extends Quest
}
case 7:
{
addExpAndSp(player, 805, 2);
addExpAndSp(player, 966, 2);
qs.exitQuest(false, true);
htmltext = "33942-07.html";
break;

View File

@@ -24,13 +24,14 @@ import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import quests.Q10735_ASpecialPower.Q10735_ASpecialPower;
import quests.Q10736_ASpecialPower.Q10736_ASpecialPower;
/**
* Grakons Warehouse (10737)
* @URL https://l2wiki.com/Grakon%27s_Warehouse
* @author Sdw
*/
public class Q10737_GrakonsWarehouse extends Quest
@@ -89,7 +90,7 @@ public class Q10737_GrakonsWarehouse extends Quest
{
if (qs.isStarted())
{
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2text\\QT_007_post_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(24));
showOnScreenMsg(player, NpcStringId.WEAPONS_HAVE_BEEN_ADDED_TO_YOUR_INVENTORY, ExShowScreenMessage.TOP_CENTER, 10000);
if (player.isMageClass())
{

View File

@@ -28,7 +28,7 @@ import org.l2jmobius.gameserver.model.events.impl.item.OnItemCreate;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
/**
* A New Craft (10766)
@@ -98,7 +98,7 @@ public class Q10766_ANewCraft extends Quest
case "33978-03.html":
{
qs.setCond(2, true);
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_026_alchemy_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(26));
htmltext = event;
break;
}

View File

@@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.base.AcquireSkillType;
import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.ExAcquirableSkillListByClass;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import ai.AbstractNpcAI;
@@ -42,8 +42,6 @@ public class AlchemistManager extends AbstractNpcAI
33978, // Zephyra
33977, // Veruti
};
// Misc
private static final String TUTORIAL_LINK = "..\\L2text\\QT_026_alchemy_01.htm";
private AlchemistManager()
{
@@ -66,7 +64,7 @@ public class AlchemistManager extends AbstractNpcAI
}
case "open_tutorial":
{
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), TUTORIAL_LINK, TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(26));
htmltext = npc.getId() + "-1.html";
break;
}

View File

@@ -0,0 +1,112 @@
/*
* 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 ai.others.Tutorial;
import org.l2jmobius.Config;
import org.l2jmobius.commons.concurrent.ThreadPool;
import org.l2jmobius.gameserver.enums.Race;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.ListenerRegisterType;
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCreate;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import org.l2jmobius.gameserver.network.serverpackets.PlaySound;
import org.l2jmobius.gameserver.network.serverpackets.TutorialCloseHtml;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import ai.AbstractNpcAI;
/**
* Tutorial
* @author Gigi
* @date 2019-08-21 - [21:06:44]
*/
public class Tutorial extends AbstractNpcAI
{
// Misc
private static final String TUTORIAL_VAR = "TUTORIAL";
private Tutorial()
{
}
@RegisterEvent(EventType.ON_PLAYER_LOGIN)
@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
public void onPlayerLogin(OnPlayerLogin event)
{
final PlayerInstance player = event.getPlayer();
if (player.getVariables().getInt(TUTORIAL_VAR, 0) == 0)
{
if (player.getRace() == Race.ERTHEIA)
{
ThreadPool.schedule(() ->
{
final String html = getHtm(player, "tutorial_01_ertheia.html");
player.sendPacket(new TutorialShowHtml(html));
player.sendPacket(new ExTutorialShowId(5));
}, 26000);
}
else
{
ThreadPool.schedule(() ->
{
final String html = getHtm(player, "tutorial_01.html");
player.sendPacket(new TutorialShowHtml(html));
player.sendPacket(new ExTutorialShowId(5));
}, 26000);
}
}
}
@RegisterEvent(EventType.ON_PLAYER_BYPASS)
@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
public void OnPlayerBypass(OnPlayerBypass event)
{
final PlayerInstance player = event.getPlayer();
if (event.getCommand().equals("chat_window"))
{
ThreadPool.schedule(() ->
{
player.sendPacket(new ExTutorialShowId(1));
player.sendPacket(new PlaySound(2, "tutorial_voice_006", 0, 0, 0, 0, 0));
}, 500);
player.getVariables().set(TUTORIAL_VAR, 1);
player.sendPacket(TutorialCloseHtml.STATIC_PACKET);
}
}
@RegisterEvent(EventType.ON_PLAYER_CREATE)
@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
public void OnPlayerCreate(OnPlayerCreate event)
{
final PlayerInstance player = event.getPlayer();
if (Config.DISABLE_TUTORIAL)
{
return;
}
player.getVariables().set(TUTORIAL_VAR, 0);
}
public static void main(String[] args)
{
new Tutorial();
}
}

View File

@@ -0,0 +1,4 @@
<html><title>Tutorial</title><body><br>
We are inside the museum in Talking Island Village. It seems that curator Pantheon would like to speak with you. I will tell you <font color="LEVEL">how to use the mouse to move</font> to Pantheon and speak with him.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h chat_window">Talk with Pantheon</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><title>Tutorial</title><body><br>
This is Faeron Village. Queen Navari has something to say. Please pay attention to the instructions on <font color="LEVEL">using the mouse</font> in order to <font color="LEVEL">move</font>.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h chat_window">"Talk with Queen Navari"</Button>
</body></html>

View File

@@ -28,7 +28,7 @@ import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import instances.AbstractInstance;
import quests.Q10735_ASpecialPower.Q10735_ASpecialPower;
@@ -164,14 +164,14 @@ public class FaeronTrainingGrounds1 extends AbstractInstance
qs.set("ss", 1);
giveItems(player, SPIRITSHOTS_TRAINING);
showOnScreenMsg(player, NpcStringId.AUTOMATE_SPIRITSHOT_AS_SHOWN_IN_THE_TUTORIAL, ExShowScreenMessage.TOP_CENTER, 10000);
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_003_bullet_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(14));
htmltext = "33944-04.html";
}
break;
}
case 5:
{
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_004_skill_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(15));
htmltext = "33944-06.html";
break;
}

View File

@@ -28,7 +28,7 @@ import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import instances.AbstractInstance;
import quests.Q10736_ASpecialPower.Q10736_ASpecialPower;
@@ -161,14 +161,14 @@ public class FaeronTrainingGrounds2 extends AbstractInstance
qs.set("ss", 1);
giveItems(player, SOULSHOTS_TRAINING);
showOnScreenMsg(player, NpcStringId.AUTOMATE_SOULSHOT_AS_SHOWN_IN_THE_TUTORIAL, ExShowScreenMessage.TOP_CENTER, 10000);
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_003_bullet_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(14));
htmltext = "33945-04.html";
}
break;
}
case 5:
{
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_004_skill_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(15));
htmltext = "33945-06.html";
break;
}

View File

@@ -30,7 +30,7 @@ import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import org.l2jmobius.gameserver.model.zone.ZoneType;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
/**
* Let's Go To The Central Square (10320)
@@ -74,7 +74,7 @@ public class Q10320_LetsGoToTheCentralSquare extends Quest
qs.startQuest();
qs.setCond(2); // arrow hack
qs.setCond(1);
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_001_Radar_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(9));
htmltext = event;
break;
}
@@ -87,7 +87,7 @@ public class Q10320_LetsGoToTheCentralSquare extends Quest
{
if (qs.isStarted())
{
addExpAndSp(player, 70, 5);
addExpAndSp(player, 84, 5);
qs.exitQuest(false, true);
htmltext = event;
}

View File

@@ -21,7 +21,7 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import quests.Q10320_LetsGoToTheCentralSquare.Q10320_LetsGoToTheCentralSquare;
@@ -63,7 +63,7 @@ public class Q10321_QualificationsOfTheSeeker extends Quest
qs.startQuest();
qs.setCond(2); // arrow hack
qs.setCond(1);
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_027_Quest_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(11));
htmltext = event;
break;
}
@@ -76,7 +76,7 @@ public class Q10321_QualificationsOfTheSeeker extends Quest
{
if (qs.isStarted())
{
addExpAndSp(player, 300, 6);
addExpAndSp(player, 360, 6);
qs.exitQuest(false, true);
htmltext = event;
}

View File

@@ -32,7 +32,7 @@ import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExQuestNpcLogList;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import quests.Q10321_QualificationsOfTheSeeker.Q10321_QualificationsOfTheSeeker;
@@ -96,7 +96,7 @@ public class Q10541_TrainLikeTheRealThing extends Quest
}
case "32981-03.html":
{
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_002_Guide_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(25));
htmltext = event;
break;
}

View File

@@ -29,7 +29,7 @@ import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import quests.Q10541_TrainLikeTheRealThing.Q10541_TrainLikeTheRealThing;
@@ -169,7 +169,7 @@ public class Q10542_SearchingForNewPower extends Quest
{
htmltext = "33004-01.html";
qs.setCond(3, true);
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2text\\QT_004_skill_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(15));
htmltext = "33004-01.html";
NpcStringId npcStringId = null;

View File

@@ -24,7 +24,7 @@ import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import quests.Q10542_SearchingForNewPower.Q10542_SearchingForNewPower;
@@ -39,7 +39,7 @@ public class Q10543_SheddingWeight extends Quest
private static final int SHANNON = 32974;
private static final int WILFORD = 30005;
// Items
// private static final int NOVICE_TRAINING_LOG = 1835; // TODO Find item ID
private static final int NOVICE_TRAINING_LOG = 47601;
private static final int APPRENTICE_ADVENTURERS_STAFF = 7816;
private static final int APPRENTICE_ADVENTURERS_BONE_CLUB = 7817;
private static final int APPRENTICE_ADVENTURERS_KNIFE = 7818;
@@ -54,7 +54,7 @@ public class Q10543_SheddingWeight extends Quest
super(10543);
addStartNpc(SHANNON);
addTalkId(SHANNON, WILFORD);
// registerQuestItems(NOVICE_TRAINING_LOG);
registerQuestItems(NOVICE_TRAINING_LOG);
addCondNotRace(Race.ERTHEIA, "noRace.html");
addCondMaxLevel(MAX_LEVEL, "noLevel.html");
addCondCompletedQuest(Q10542_SearchingForNewPower.class.getSimpleName(), "noLevel.html");
@@ -83,7 +83,7 @@ public class Q10543_SheddingWeight extends Quest
qs.startQuest();
qs.setCond(2); // arrow hack
qs.setCond(1);
// giveItems(player, NOVICE_TRAINING_LOG, 1);
giveItems(player, NOVICE_TRAINING_LOG, 1);
htmltext = event;
break;
}
@@ -95,9 +95,9 @@ public class Q10543_SheddingWeight extends Quest
giveItems(player, APPRENTICE_ADVENTURERS_CESTUS, 1);
giveItems(player, APPRENTICE_ADVENTURERS_BOW, 1);
giveItems(player, APPRENTICE_ADVENTURERS_LONG_SWORD, 1);
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_007_post_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(24));
showOnScreenMsg(player, NpcStringId.WEAPONS_HAVE_BEEN_ADDED_TO_YOUR_INVENTORY, ExShowScreenMessage.TOP_CENTER, 10000);
addExpAndSp(player, 2630, 9);
addExpAndSp(player, 3156, 9);
qs.exitQuest(false, true);
htmltext = event;
break;

View File

@@ -22,7 +22,7 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.network.serverpackets.ExShowUsm;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
/**
* A Foreign Land (10732)
@@ -73,8 +73,8 @@ public class Q10732_AForeignLand extends Quest
{
if (qs.isStarted())
{
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_001_Radar_01.htm", TutorialShowHtml.LARGE_WINDOW));
addExpAndSp(player, 75, 2);
player.sendPacket(new ExTutorialShowId(9));
addExpAndSp(player, 90, 2);
qs.exitQuest(false, true);
}
break;

View File

@@ -20,12 +20,13 @@ import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import quests.Q10732_AForeignLand.Q10732_AForeignLand;
/**
* The Test For Survival (10733)
* @URL https://l2wiki.com/The_Test_for_Survival
* @author Sdw
*/
public class Q10733_TheTestForSurvival extends Quest
@@ -69,7 +70,7 @@ public class Q10733_TheTestForSurvival extends Quest
case "33932-02.htm":
{
qs.startQuest();
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_027_Quest_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(11));
giveItems(player, GERETH_RECOMMENDATION, 1);
break;
}

View File

@@ -25,7 +25,7 @@ import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import quests.Q10733_TheTestForSurvival.Q10733_TheTestForSurvival;
@@ -94,7 +94,7 @@ public class Q10734_DoOrDie extends Quest
{
castBuffs(npc, player, "33950-06.html", "33950-04.html");
htmltext = (player.isMageClass()) ? "33950-03.html" : "33950-05.html";
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_002_Guide_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(25));
break;
}
case "buffs":
@@ -159,7 +159,7 @@ public class Q10734_DoOrDie extends Quest
}
case 8:
{
addExpAndSp(player, 805, 2);
addExpAndSp(player, 966, 2);
qs.exitQuest(false, true);
htmltext = "33943-07.html";
break;
@@ -212,7 +212,7 @@ public class Q10734_DoOrDie extends Quest
}
case 7:
{
addExpAndSp(player, 805, 2);
addExpAndSp(player, 966, 2);
qs.exitQuest(false, true);
htmltext = "33942-07.html";
break;

View File

@@ -24,13 +24,14 @@ import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import quests.Q10735_ASpecialPower.Q10735_ASpecialPower;
import quests.Q10736_ASpecialPower.Q10736_ASpecialPower;
/**
* Grakons Warehouse (10737)
* @URL https://l2wiki.com/Grakon%27s_Warehouse
* @author Sdw
*/
public class Q10737_GrakonsWarehouse extends Quest
@@ -89,7 +90,7 @@ public class Q10737_GrakonsWarehouse extends Quest
{
if (qs.isStarted())
{
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2text\\QT_007_post_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(24));
showOnScreenMsg(player, NpcStringId.WEAPONS_HAVE_BEEN_ADDED_TO_YOUR_INVENTORY, ExShowScreenMessage.TOP_CENTER, 10000);
if (player.isMageClass())
{

View File

@@ -28,7 +28,7 @@ import org.l2jmobius.gameserver.model.events.impl.item.OnItemCreate;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
/**
* A New Craft (10766)
@@ -98,7 +98,7 @@ public class Q10766_ANewCraft extends Quest
case "33978-03.html":
{
qs.setCond(2, true);
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_026_alchemy_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(26));
htmltext = event;
break;
}

View File

@@ -26,7 +26,7 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.base.AcquireSkillType;
import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.ExAcquirableSkillListByClass;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import ai.AbstractNpcAI;
@@ -42,8 +42,6 @@ public class AlchemistManager extends AbstractNpcAI
33978, // Zephyra
33977, // Veruti
};
// Misc
private static final String TUTORIAL_LINK = "..\\L2text\\QT_026_alchemy_01.htm";
private AlchemistManager()
{
@@ -66,7 +64,7 @@ public class AlchemistManager extends AbstractNpcAI
}
case "open_tutorial":
{
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), TUTORIAL_LINK, TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(26));
htmltext = npc.getId() + "-1.html";
break;
}

View File

@@ -0,0 +1,112 @@
/*
* 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 ai.others.Tutorial;
import org.l2jmobius.Config;
import org.l2jmobius.commons.concurrent.ThreadPool;
import org.l2jmobius.gameserver.enums.Race;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.ListenerRegisterType;
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerBypass;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerCreate;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import org.l2jmobius.gameserver.network.serverpackets.PlaySound;
import org.l2jmobius.gameserver.network.serverpackets.TutorialCloseHtml;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import ai.AbstractNpcAI;
/**
* Tutorial
* @author Gigi
* @date 2019-08-21 - [21:06:44]
*/
public class Tutorial extends AbstractNpcAI
{
// Misc
private static final String TUTORIAL_VAR = "TUTORIAL";
private Tutorial()
{
}
@RegisterEvent(EventType.ON_PLAYER_LOGIN)
@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
public void onPlayerLogin(OnPlayerLogin event)
{
final PlayerInstance player = event.getPlayer();
if (player.getVariables().getInt(TUTORIAL_VAR, 0) == 0)
{
if (player.getRace() == Race.ERTHEIA)
{
ThreadPool.schedule(() ->
{
final String html = getHtm(player, "tutorial_01_ertheia.html");
player.sendPacket(new TutorialShowHtml(html));
player.sendPacket(new ExTutorialShowId(5));
}, 26000);
}
else
{
ThreadPool.schedule(() ->
{
final String html = getHtm(player, "tutorial_01.html");
player.sendPacket(new TutorialShowHtml(html));
player.sendPacket(new ExTutorialShowId(5));
}, 26000);
}
}
}
@RegisterEvent(EventType.ON_PLAYER_BYPASS)
@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
public void OnPlayerBypass(OnPlayerBypass event)
{
final PlayerInstance player = event.getPlayer();
if (event.getCommand().equals("chat_window"))
{
ThreadPool.schedule(() ->
{
player.sendPacket(new ExTutorialShowId(1));
player.sendPacket(new PlaySound(2, "tutorial_voice_006", 0, 0, 0, 0, 0));
}, 500);
player.getVariables().set(TUTORIAL_VAR, 1);
player.sendPacket(TutorialCloseHtml.STATIC_PACKET);
}
}
@RegisterEvent(EventType.ON_PLAYER_CREATE)
@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
public void OnPlayerCreate(OnPlayerCreate event)
{
final PlayerInstance player = event.getPlayer();
if (Config.DISABLE_TUTORIAL)
{
return;
}
player.getVariables().set(TUTORIAL_VAR, 0);
}
public static void main(String[] args)
{
new Tutorial();
}
}

View File

@@ -0,0 +1,4 @@
<html><title>Tutorial</title><body><br>
We are inside the museum in Talking Island Village. It seems that curator Pantheon would like to speak with you. I will tell you <font color="LEVEL">how to use the mouse to move</font> to Pantheon and speak with him.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h chat_window">Talk with Pantheon</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><title>Tutorial</title><body><br>
This is Faeron Village. Queen Navari has something to say. Please pay attention to the instructions on <font color="LEVEL">using the mouse</font> in order to <font color="LEVEL">move</font>.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h chat_window">"Talk with Queen Navari"</Button>
</body></html>

View File

@@ -28,7 +28,7 @@ import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import instances.AbstractInstance;
import quests.Q10735_ASpecialPower.Q10735_ASpecialPower;
@@ -164,14 +164,14 @@ public class FaeronTrainingGrounds1 extends AbstractInstance
qs.set("ss", 1);
giveItems(player, SPIRITSHOTS_TRAINING);
showOnScreenMsg(player, NpcStringId.AUTOMATE_SPIRITSHOT_AS_SHOWN_IN_THE_TUTORIAL, ExShowScreenMessage.TOP_CENTER, 10000);
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_003_bullet_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(14));
htmltext = "33944-04.html";
}
break;
}
case 5:
{
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_004_skill_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(15));
htmltext = "33944-06.html";
break;
}

View File

@@ -28,7 +28,7 @@ import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import instances.AbstractInstance;
import quests.Q10736_ASpecialPower.Q10736_ASpecialPower;
@@ -161,14 +161,14 @@ public class FaeronTrainingGrounds2 extends AbstractInstance
qs.set("ss", 1);
giveItems(player, SOULSHOTS_TRAINING);
showOnScreenMsg(player, NpcStringId.AUTOMATE_SOULSHOT_AS_SHOWN_IN_THE_TUTORIAL, ExShowScreenMessage.TOP_CENTER, 10000);
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_003_bullet_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(14));
htmltext = "33945-04.html";
}
break;
}
case 5:
{
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_004_skill_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(15));
htmltext = "33945-06.html";
break;
}

View File

@@ -30,7 +30,7 @@ import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import org.l2jmobius.gameserver.model.zone.ZoneType;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
/**
* Let's Go To The Central Square (10320)
@@ -74,7 +74,7 @@ public class Q10320_LetsGoToTheCentralSquare extends Quest
qs.startQuest();
qs.setCond(2); // arrow hack
qs.setCond(1);
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_001_Radar_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(9));
htmltext = event;
break;
}
@@ -87,7 +87,7 @@ public class Q10320_LetsGoToTheCentralSquare extends Quest
{
if (qs.isStarted())
{
addExpAndSp(player, 70, 5);
addExpAndSp(player, 84, 5);
qs.exitQuest(false, true);
htmltext = event;
}

View File

@@ -21,7 +21,7 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import quests.Q10320_LetsGoToTheCentralSquare.Q10320_LetsGoToTheCentralSquare;
@@ -63,7 +63,7 @@ public class Q10321_QualificationsOfTheSeeker extends Quest
qs.startQuest();
qs.setCond(2); // arrow hack
qs.setCond(1);
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_027_Quest_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(11));
htmltext = event;
break;
}
@@ -76,7 +76,7 @@ public class Q10321_QualificationsOfTheSeeker extends Quest
{
if (qs.isStarted())
{
addExpAndSp(player, 300, 6);
addExpAndSp(player, 360, 6);
qs.exitQuest(false, true);
htmltext = event;
}

View File

@@ -32,7 +32,7 @@ import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExQuestNpcLogList;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import quests.Q10321_QualificationsOfTheSeeker.Q10321_QualificationsOfTheSeeker;
@@ -96,7 +96,7 @@ public class Q10541_TrainLikeTheRealThing extends Quest
}
case "32981-03.html":
{
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_002_Guide_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(25));
htmltext = event;
break;
}

View File

@@ -29,7 +29,7 @@ import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import quests.Q10541_TrainLikeTheRealThing.Q10541_TrainLikeTheRealThing;
@@ -169,7 +169,7 @@ public class Q10542_SearchingForNewPower extends Quest
{
htmltext = "33004-01.html";
qs.setCond(3, true);
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2text\\QT_004_skill_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(15));
htmltext = "33004-01.html";
NpcStringId npcStringId = null;

View File

@@ -24,7 +24,7 @@ import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import quests.Q10542_SearchingForNewPower.Q10542_SearchingForNewPower;
@@ -39,7 +39,7 @@ public class Q10543_SheddingWeight extends Quest
private static final int SHANNON = 32974;
private static final int WILFORD = 30005;
// Items
// private static final int NOVICE_TRAINING_LOG = 1835; // TODO Find item ID
private static final int NOVICE_TRAINING_LOG = 47601;
private static final int APPRENTICE_ADVENTURERS_STAFF = 7816;
private static final int APPRENTICE_ADVENTURERS_BONE_CLUB = 7817;
private static final int APPRENTICE_ADVENTURERS_KNIFE = 7818;
@@ -54,7 +54,7 @@ public class Q10543_SheddingWeight extends Quest
super(10543);
addStartNpc(SHANNON);
addTalkId(SHANNON, WILFORD);
// registerQuestItems(NOVICE_TRAINING_LOG);
registerQuestItems(NOVICE_TRAINING_LOG);
addCondNotRace(Race.ERTHEIA, "noRace.html");
addCondMaxLevel(MAX_LEVEL, "noLevel.html");
addCondCompletedQuest(Q10542_SearchingForNewPower.class.getSimpleName(), "noLevel.html");
@@ -83,7 +83,7 @@ public class Q10543_SheddingWeight extends Quest
qs.startQuest();
qs.setCond(2); // arrow hack
qs.setCond(1);
// giveItems(player, NOVICE_TRAINING_LOG, 1);
giveItems(player, NOVICE_TRAINING_LOG, 1);
htmltext = event;
break;
}
@@ -95,9 +95,9 @@ public class Q10543_SheddingWeight extends Quest
giveItems(player, APPRENTICE_ADVENTURERS_CESTUS, 1);
giveItems(player, APPRENTICE_ADVENTURERS_BOW, 1);
giveItems(player, APPRENTICE_ADVENTURERS_LONG_SWORD, 1);
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_007_post_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(24));
showOnScreenMsg(player, NpcStringId.WEAPONS_HAVE_BEEN_ADDED_TO_YOUR_INVENTORY, ExShowScreenMessage.TOP_CENTER, 10000);
addExpAndSp(player, 2630, 9);
addExpAndSp(player, 3156, 9);
qs.exitQuest(false, true);
htmltext = event;
break;

View File

@@ -22,7 +22,7 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.network.serverpackets.ExShowUsm;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
/**
* A Foreign Land (10732)
@@ -73,8 +73,8 @@ public class Q10732_AForeignLand extends Quest
{
if (qs.isStarted())
{
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_001_Radar_01.htm", TutorialShowHtml.LARGE_WINDOW));
addExpAndSp(player, 75, 2);
player.sendPacket(new ExTutorialShowId(9));
addExpAndSp(player, 90, 2);
qs.exitQuest(false, true);
}
break;

View File

@@ -20,12 +20,13 @@ import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import quests.Q10732_AForeignLand.Q10732_AForeignLand;
/**
* The Test For Survival (10733)
* @URL https://l2wiki.com/The_Test_for_Survival
* @author Sdw
*/
public class Q10733_TheTestForSurvival extends Quest
@@ -69,7 +70,7 @@ public class Q10733_TheTestForSurvival extends Quest
case "33932-02.htm":
{
qs.startQuest();
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_027_Quest_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(11));
giveItems(player, GERETH_RECOMMENDATION, 1);
break;
}

View File

@@ -25,7 +25,7 @@ import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.model.quest.State;
import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import quests.Q10733_TheTestForSurvival.Q10733_TheTestForSurvival;
@@ -94,7 +94,7 @@ public class Q10734_DoOrDie extends Quest
{
castBuffs(npc, player, "33950-06.html", "33950-04.html");
htmltext = (player.isMageClass()) ? "33950-03.html" : "33950-05.html";
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_002_Guide_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(25));
break;
}
case "buffs":
@@ -159,7 +159,7 @@ public class Q10734_DoOrDie extends Quest
}
case 8:
{
addExpAndSp(player, 805, 2);
addExpAndSp(player, 966, 2);
qs.exitQuest(false, true);
htmltext = "33943-07.html";
break;
@@ -212,7 +212,7 @@ public class Q10734_DoOrDie extends Quest
}
case 7:
{
addExpAndSp(player, 805, 2);
addExpAndSp(player, 966, 2);
qs.exitQuest(false, true);
htmltext = "33942-07.html";
break;

View File

@@ -24,13 +24,14 @@ import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
import quests.Q10735_ASpecialPower.Q10735_ASpecialPower;
import quests.Q10736_ASpecialPower.Q10736_ASpecialPower;
/**
* Grakons Warehouse (10737)
* @URL https://l2wiki.com/Grakon%27s_Warehouse
* @author Sdw
*/
public class Q10737_GrakonsWarehouse extends Quest
@@ -89,7 +90,7 @@ public class Q10737_GrakonsWarehouse extends Quest
{
if (qs.isStarted())
{
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2text\\QT_007_post_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(24));
showOnScreenMsg(player, NpcStringId.WEAPONS_HAVE_BEEN_ADDED_TO_YOUR_INVENTORY, ExShowScreenMessage.TOP_CENTER, 10000);
if (player.isMageClass())
{

View File

@@ -28,7 +28,7 @@ import org.l2jmobius.gameserver.model.events.impl.item.OnItemCreate;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.quest.Quest;
import org.l2jmobius.gameserver.model.quest.QuestState;
import org.l2jmobius.gameserver.network.serverpackets.TutorialShowHtml;
import org.l2jmobius.gameserver.network.serverpackets.ExTutorialShowId;
/**
* A New Craft (10766)
@@ -98,7 +98,7 @@ public class Q10766_ANewCraft extends Quest
case "33978-03.html":
{
qs.setCond(2, true);
player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_026_alchemy_01.htm", TutorialShowHtml.LARGE_WINDOW));
player.sendPacket(new ExTutorialShowId(26));
htmltext = event;
break;
}