[Classic] Custom tutorial quest.
This commit is contained in:
@ -260,6 +260,7 @@ public final class Config
|
||||
public static int PARTY_XP_CUTOFF_LEVEL;
|
||||
public static int[][] PARTY_XP_CUTOFF_GAPS;
|
||||
public static int[] PARTY_XP_CUTOFF_GAP_PERCENTS;
|
||||
public static boolean DISABLE_TUTORIAL;
|
||||
public static boolean EXPERTISE_PENALTY;
|
||||
public static boolean STORE_RECIPE_SHOPLIST;
|
||||
public static boolean STORE_UI_SETTINGS;
|
||||
@ -1734,6 +1735,7 @@ public final class Config
|
||||
{
|
||||
PARTY_XP_CUTOFF_GAP_PERCENTS[i] = Integer.parseInt(percents[i]);
|
||||
}
|
||||
DISABLE_TUTORIAL = Character.getBoolean("DisableTutorial", false);
|
||||
EXPERTISE_PENALTY = Character.getBoolean("ExpertisePenalty", true);
|
||||
STORE_RECIPE_SHOPLIST = Character.getBoolean("StoreRecipeShopList", false);
|
||||
STORE_UI_SETTINGS = Character.getBoolean("StoreCharUiSettings", false);
|
||||
|
@ -1472,7 +1472,11 @@ public final class L2PcInstance extends L2Playable
|
||||
return;
|
||||
}
|
||||
|
||||
if (getLastQuestNpcObject() > 0)
|
||||
if (quest.getId() == 255)
|
||||
{
|
||||
quest.notifyEvent(event, null, this);
|
||||
}
|
||||
else if (getLastQuestNpcObject() > 0)
|
||||
{
|
||||
final L2Object object = L2World.getInstance().findObject(getLastQuestNpcObject());
|
||||
if (object.isNpc() && isInsideRadius(object, L2Npc.INTERACTION_DISTANCE, false, false))
|
||||
|
@ -42,6 +42,7 @@ import com.l2jserver.gameserver.network.NpcStringId;
|
||||
import com.l2jserver.gameserver.network.serverpackets.ExShowQuestMark;
|
||||
import com.l2jserver.gameserver.network.serverpackets.PlaySound;
|
||||
import com.l2jserver.gameserver.network.serverpackets.QuestList;
|
||||
import com.l2jserver.gameserver.network.serverpackets.TutorialEnableClientEvent;
|
||||
import com.l2jserver.gameserver.network.serverpackets.TutorialShowQuestionMark;
|
||||
import com.l2jserver.gameserver.util.Util;
|
||||
|
||||
@ -1261,4 +1262,9 @@ public final class QuestState
|
||||
{
|
||||
unset("LOCATION_ID");
|
||||
}
|
||||
|
||||
public void onTutorialClientEvent(int number)
|
||||
{
|
||||
getPlayer().sendPacket(new TutorialEnableClientEvent(number));
|
||||
}
|
||||
}
|
||||
|
@ -18,6 +18,8 @@
|
||||
*/
|
||||
package com.l2jserver.gameserver.network.clientpackets;
|
||||
|
||||
import quests.Q00255_Tutorial.Q00255_Tutorial;
|
||||
|
||||
import com.l2jserver.Config;
|
||||
import com.l2jserver.gameserver.LoginServerThread;
|
||||
import com.l2jserver.gameserver.cache.HtmCache;
|
||||
@ -38,6 +40,7 @@ import com.l2jserver.gameserver.instancemanager.FortSiegeManager;
|
||||
import com.l2jserver.gameserver.instancemanager.InstanceManager;
|
||||
import com.l2jserver.gameserver.instancemanager.MailManager;
|
||||
import com.l2jserver.gameserver.instancemanager.PetitionManager;
|
||||
import com.l2jserver.gameserver.instancemanager.QuestManager;
|
||||
import com.l2jserver.gameserver.instancemanager.SiegeManager;
|
||||
import com.l2jserver.gameserver.model.L2Clan;
|
||||
import com.l2jserver.gameserver.model.L2Object;
|
||||
@ -57,6 +60,8 @@ import com.l2jserver.gameserver.model.entity.clanhall.AuctionableHall;
|
||||
import com.l2jserver.gameserver.model.entity.clanhall.SiegableHall;
|
||||
import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
|
||||
import com.l2jserver.gameserver.model.quest.Quest;
|
||||
import com.l2jserver.gameserver.model.quest.QuestState;
|
||||
import com.l2jserver.gameserver.model.quest.State;
|
||||
import com.l2jserver.gameserver.model.zone.ZoneId;
|
||||
import com.l2jserver.gameserver.network.SystemMessageId;
|
||||
import com.l2jserver.gameserver.network.serverpackets.AcquireSkillList;
|
||||
@ -426,6 +431,11 @@ public class EnterWorld extends L2GameClientPacket
|
||||
}
|
||||
}
|
||||
|
||||
if (Config.SERVER_CLASSIC_SUPPORT)
|
||||
{
|
||||
loadTutorial(activeChar);
|
||||
}
|
||||
|
||||
if (Config.PLAYER_SPAWN_PROTECTION > 0)
|
||||
{
|
||||
activeChar.setProtection(true);
|
||||
@ -741,6 +751,22 @@ public class EnterWorld extends L2GameClientPacket
|
||||
}
|
||||
}
|
||||
|
||||
private void loadTutorial(L2PcInstance player)
|
||||
{
|
||||
if (Config.DISABLE_TUTORIAL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
QuestState qs = player.getQuestState(Q00255_Tutorial.class.getSimpleName());
|
||||
if (qs == null)
|
||||
{
|
||||
qs = QuestManager.getInstance().getQuest(Q00255_Tutorial.class.getSimpleName()).newQuestState(player);
|
||||
qs.setState(State.STARTED);
|
||||
}
|
||||
qs.getQuest().notifyEvent("user_connected", null, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getType()
|
||||
{
|
||||
|
@ -18,6 +18,8 @@
|
||||
*/
|
||||
package com.l2jserver.gameserver.network.clientpackets;
|
||||
|
||||
import quests.Q00255_Tutorial.Q00255_Tutorial;
|
||||
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.quest.QuestState;
|
||||
|
||||
@ -43,7 +45,7 @@ public class RequestTutorialClientEvent extends L2GameClientPacket
|
||||
return;
|
||||
}
|
||||
|
||||
QuestState qs = player.getQuestState("255_Tutorial");
|
||||
QuestState qs = player.getQuestState(Q00255_Tutorial.class.getSimpleName());
|
||||
if (qs != null)
|
||||
{
|
||||
qs.getQuest().notifyEvent("CE" + eventId + "", null, player);
|
||||
|
Reference in New Issue
Block a user