Code:
package com.rs.game.player.controlers;
import com.rs.Settings;
import com.rs.game.Entity;
import com.rs.game.World;
import com.rs.game.WorldObject;
import com.rs.game.WorldTile;
import com.rs.game.npc.NPC;
import com.rs.game.npc.others.TutorialGuide;
import com.rs.game.player.Appearence;
import com.rs.game.player.content.FriendChatsManager;
import com.rs.game.player.content.PlayerDesign;
import com.rs.game.tasks.WorldTask;
import com.rs.game.tasks.WorldTasksManager;
import com.rs.utils.SerializableFilesManager;
import com.rs.utils.Utils;
@SuppressWarnings("unused")
public class StartTutorial extends Controler {
private static final int QUEST_GUIDE_NPC = 949;
private int stageLong;
private int idleTimer;
private boolean starterTutorialDone;
public void addNPCHintIcon() {
NPC guide = findNPC(QUEST_GUIDE_NPC);
if (guide != null)
player.getHintIconsManager().addHintIcon(guide, 0, -1, false);
player.unlock();
}
@Override
public boolean canAttack(Entity target) {
return false;
}
@Override
public boolean canHit(Entity target) {
return false;
}
@Override
public boolean canWalk() {
if (getTutorialStage() == 1)
return true;
return false;
}
public NPC findNPC(int id) {
for (NPC npc : World.getNPCs()) {
if (npc == null || npc.getId() != id)
continue;
return npc;
}
return null;
}
public int getStage() {
if (getArguments() == null)
setArguments(new Object[] { 0 }); // index 0 = stage
return (Integer) getArguments()[0];
}
public int getTutorialStage() {
return stageLong;
}
@Override
public boolean keepCombating(Entity target) {
return false;
}
/*
* return remove controler
*/
@Override
public boolean login() {
start();
return false;
}
/*
* return remove controler
*/
@Override
public boolean logout() {
return false;
}
@Override
public void process() {
}
@Override
public boolean processItemTeleport(WorldTile toTile) {
return false;
}
@Override
public boolean processMagicTeleport(WorldTile toTile) {
return false;
}
@Override
public boolean processNPCClick1(NPC npc) {
npc.faceEntity(player);
if (getTutorialStage() > 1) {
return false;
}
switch (npc.getId()) {
case 949:
player.getDialogueManager().startDialogue("QuestGuide",
QUEST_GUIDE_NPC, this);
break;
}
return false;
}
@Override
public boolean processObjectClick1(WorldObject object) {
return false;
}
@Override
public boolean processObjectClick2(WorldObject object) {
return false;
}
@Override
public boolean processObjectClick3(WorldObject object) {
return false;
}
@Override
public boolean processObjectTeleport(WorldTile toTile) {
return false;
}
@Override
public void sendInterfaces() {
player.getInterfaceManager().replaceRealChatBoxInterface(372);
if (getTutorialStage() == 1) {
player.getPackets().sendIComponentText(372, 0, "Getting Started");
player.getPackets().sendIComponentText(372, 1,
"To complete the tutorial talk to the");
player.getPackets().sendIComponentText(372, 2,
"Quest Guide in this room .He is indicated by a flashing");
player.getPackets()
.sendIComponentText(372, 3,
"yellow arrow above his head. If you can't see him use your");
player.getPackets().sendIComponentText(372, 4,
"keyboard arrow keys to rotate the view.");
player.getPackets().sendIComponentText(372, 5, "");
player.getPackets().sendIComponentText(372, 6, "");
}
}
public void setStage(int stage) {
getArguments()[0] = stage;
}
public void setTutorialStage(int stageLong) {
switch (stageLong) {
case 1:
break;
case 2:
player.getAppearence().switchHidden();
player.lock();
player.setNextWorldTile(new WorldTile(3599, 3353, 0));
WorldTasksManager.schedule(new WorldTask() {
@Override
public void run() {
player.getInterfaceManager()
.sendTab(
player.getInterfaceManager()
.hasRezizableScreen() ? 1
: 0, 1280);
player.getDialogueManager()
.startDialogue(
"SimpleNPCMessageNoContinue",
QUEST_GUIDE_NPC,
"Here's the spirit tree of "
+ Settings.SERVER_NAME
+ ", you can use it to teleport to various places around the world.");
}
});
WorldTasksManager.schedule(new WorldTask() {
@Override
public void run() {
setTutorialStage(3);
}
}, 15);
//new TutorialGuide(new WorldTile(3085, 3499, 0), player, this);
break;
case 3:
player.setNextWorldTile(new WorldTile(2833, 3861, 3));
WorldTasksManager.schedule(new WorldTask() {
@Override
public void run() {
player.getInterfaceManager()
.sendTab(
player.getInterfaceManager()
.hasRezizableScreen() ? 1
: 0, 1280);
player.getDialogueManager()
.startDialogue(
"SimpleNPCMessageNoContinue",
QUEST_GUIDE_NPC,
"This is the market place, you can access this place by using the commands ::market.");
}
});
WorldTasksManager.schedule(new WorldTask() {
@Override
public void run() {
setTutorialStage(4);
}
}, 15);
//new TutorialGuide(new WorldTile(2833, 3862, 3), player, this);
break;
case 4:
player.setNextWorldTile(new WorldTile(3733, 6433, 0));
WorldTasksManager.schedule(new WorldTask() {
@Override
public void run() {
player.getInterfaceManager()
.sendTab(
player.getInterfaceManager()
.hasRezizableScreen() ? 1
: 0, 1280);
player.getDialogueManager()
.startDialogue(
"SimpleNPCMessageNoContinue",
QUEST_GUIDE_NPC,
"Welcome to Dominion Tower, you can recieve great rewards from this minigame. Go up the stairs and fight the monsters provided to earn points.");
}
});
WorldTasksManager.schedule(new WorldTask() {
@Override
public void run() {
setTutorialStage(6);
}
}, 15);
//new TutorialGuide(new WorldTile(3732, 6433, 0), player, this);
break;
case 6:
player.setNextWorldTile(new WorldTile(3607, 3360, 0));
WorldTasksManager.schedule(new WorldTask() {
@Override
public void run() {
player.getInterfaceManager()
.sendTab(
player.getInterfaceManager()
.hasRezizableScreen() ? 1
: 0, 1280);
player.getDialogueManager().startDialogue(
"SimpleNPCMessageNoContinue",
QUEST_GUIDE_NPC,
"Here's the thieving place, the easiest way to gain money in Xeno-Scape 718.");
}
});
WorldTasksManager.schedule(new WorldTask() {
@Override
public void run() {
setTutorialStage(7);
}
}, 15);
//new TutorialGuide(new WorldTile(2993, 9682, 0), player, this);
break;
case 7:
player.setNextWorldTile(new WorldTile(2320, 3801, 0));
WorldTasksManager.schedule(new WorldTask() {
@Override
public void run() {
player.getInterfaceManager()
.sendTab(
player.getInterfaceManager()
.hasRezizableScreen() ? 1
: 0, 1280);
player.getDialogueManager()
.startDialogue(
"SimpleNPCMessageNoContinue",
QUEST_GUIDE_NPC,
"This is a training area for when you first start out. Just attack the Yaks and level up, then once you have the levels needed, advance to a harder NPC monster.");
}
});
WorldTasksManager.schedule(new WorldTask() {
@Override
public void run() {
setTutorialStage(8);
}
}, 15);
//new TutorialGuide(new WorldTile(2321, 3801, 0), player, this);
break;
case 8:
player.setNextWorldTile(new WorldTile(3367, 3267, 0));
WorldTasksManager.schedule(new WorldTask() {
@Override
public void run() {
player.getInterfaceManager()
.sendTab(
player.getInterfaceManager()
.hasRezizableScreen() ? 1
: 0, 1280);
player.getDialogueManager()
.startDialogue(
"SimpleNPCMessageNoContinue",
QUEST_GUIDE_NPC,
"Welcome to Xeno-Scape 718 Duel Arena, when you come here you can make or lose bank be cautious!.");
}
});
WorldTasksManager.schedule(new WorldTask() {
@Override
public void run() {
setTutorialStage(9);
}
}, 15);
//new TutorialGuide(new WorldTile(3368, 3267, 0), player, this);
break;
case 9:
player.setNextWorldTile(new WorldTile(1890, 3164, 0));
WorldTasksManager.schedule(new WorldTask() {
@Override
public void run() {
player.getInterfaceManager()
.sendTab(
player.getInterfaceManager()
.hasRezizableScreen() ? 1
: 0, 1280);
player.getDialogueManager()
.startDialogue(
"SimpleNPCMessageNoContinue",
QUEST_GUIDE_NPC,
"Welcome to Soul Wars, Xeno-Scape 718's most loved minigame, come here to have fun and gain a ton of experience!.");
}
});
WorldTasksManager.schedule(new WorldTask() {
@Override
public void run() {
setTutorialStage(10);
}
}, 15);
//new TutorialGuide(new WorldTile(1891, 3164, 0), player, this);
break;
case 10:
starterTutorialDone = true;
player.setNextWorldTile(new WorldTile(3092, 3107, 0));
player.getAppearence().switchHidden();
player.unlock();
setTutorialStage(0); // resets to quick tutorial
updateProgress();
break;
}
this.stageLong = stageLong;
}
@Override
public void start() {
idleTimer = 400;
player.getInterfaceManager().closeQuests();
player.setYellDisabled(true);
player.getPackets().sendMusicEffect(13);
PlayerDesign.open(player);
player.getDialogueManager().startDialogue("Tutorial", this);
}
public void updateProgress() {
player.getHintIconsManager().removeUnsavedHintIcon();
player.getMusicsManager().reset();
player.getInterfaceManager().sendQuests();
player.addStarterPackage(starterTutorialDone);
player.getPackets().sendGameMessage(
"Congratulations! You finished the starter tutorial.");
player.setNextWorldTile(Settings.RESPAWN_PLAYER_LOCATION);
World.sendWorldMessage( "<col=0f0f00>[NEW PLAYER]<img=1></img></col><col=F7D1616> All welcome, "
+ player.getDisplayName() + ", to Xeno-Scape 718 </col>", false);
player.setYellDisabled(false);
WorldTasksManager.schedule(new WorldTask() {
@Override
public void run() {
player.getInterfaceManager().sendInterfaces();
player.getInterfaceManager()
.closeReplacedRealChatBoxInterface();
removeControler();
}
});
player.getPackets().closeInterface(
player.getInterfaceManager().hasRezizableScreen() ? 11 : 0);
player.getPackets().closeInterface(
player.getInterfaceManager().hasRezizableScreen() ? 1 : 11);
player.getInterfaceManager().sendInterface(1225);
player.getPackets().sendIComponentText(
1225,
5,
"Hello! Welcome " + player.getUsername()
+ " hope you enjoy your stay on "
+ Settings.SERVER_NAME + "!");
player.getPackets()
.sendIComponentText(
1225,
21,
"You can get help from the community by visiting http://xenoscap667.wix.com/serverhome");
player.getPackets().sendIComponentText(
1225,
22,
"Greetings Ledion.");
FriendChatsManager.joinChat("help", player);
SerializableFilesManager.savePlayer(player);
//titles
if (player.isHard()) {
player.getAppearence().setTitle(5557);
return;
}
if (player.isEasy()) {
player.getAppearence().setTitle(5555);
return;
}
if (player.isMedium()) {
player.getAppearence().setTitle(5556);
return;
}
if (player.isInsane()) {
player.getAppearence().setTitle(5558);
return;
}
if (player.isIronman) {
player.getAppearence().setTitle(5559);
return;
}
//titles end
/*
//drop rate
if (player.isHard()) {
Settings.DROP_RATE = (int) 1.10;
return;
}
if (player.isEasy()) {
Settings.DROP_RATE = (int) 0.95;
return;
}
if (player.isMedium()) {
Settings.DROP_RATE = (int) 1.05;
return;
}
if (player.isInsane()) {
Settings.DROP_RATE = 300;
return;
}
*/
}
}