Thread: (Matrix) My attempt at JAG #2 [Updated for MAC Address]

Page 1 of 5 123 ... LastLast
Results 1 to 10 of 41
  1. #1 (Matrix) My attempt at JAG #2 [Updated for MAC Address] 
    Registered Member
    Join Date
    May 2011
    Age
    29
    Posts
    2,246
    Thanks given
    2,469
    Thanks received
    1,120
    Rep Power
    943
    I know there's way better ways to do this, These were the best methods I had in mind at the time, if you have any suggestions, let me know and I'll improve it.


    JAG = Jagex Account Guardian

    Note: for this to work, you will also need this snippet. http://www.rune-server.org/runescape...ac-adress.html
    Spoiler for JAG.java:
    Code:
    package com.rs.game.player;
    
    import java.io.Serializable;
    import java.util.ArrayList;
    
    import com.rs.Settings;
    import com.rs.game.tasks.WorldTask;
    import com.rs.game.tasks.WorldTasksManager;
    
    public class JAG implements Serializable {
    	private static final long serialVersionUID = -4367930754392470616L;
    	
    	/**
    	 * The allowed IP addresses
    	 */
    	private ArrayList<String> addresses = new ArrayList<String>();
    	
    	private Player player;
    	public int randomQuestion;
    	public String questionAnswer;
    	
    	public JAG() {
    	}
    	
    	public void init() {
    		if(player.hasJAG == true) {
    		if (!getMacAddresses().contains(player.getMACAddress()))
    			lockUntilVerified();
    		return;
    	}
    	}
    	
    	public void lockUntilVerified() {
    		player.getDialogueManager().startDialogue("JAGDialogue");
    		player.getTemporaryAttributtes().put("JAGGED", Boolean.TRUE);
    		player.setYellOff(true);
    		sendInterfaces();
    		player.setNextWorldTile(Settings.HOME);
    		player.getBank().depositAllEquipment(false);
    		player.getBank().depositAllInventory(false);
    	}
    	
    	public void insertCurrentAddress() {
    		addresses.add(player.getMACAddress());
    	}
    	
    	public void sendInterfaces() {
    		player.getInterfaceManager().replaceRealChatBoxInterface(372);
    			player.getPackets().sendIComponentText(372, 0, "JAG Account Lockdown");
    			player.getPackets().sendIComponentText(372, 1, "You have logged into your account with an registered device.");
    			player.getPackets().sendIComponentText(372, 2, "Please talk to the Account guardian to enable this device.");
    			player.getPackets().sendIComponentText(372, 3, "");
    			player.getPackets().sendIComponentText(372, 4, "");
    			player.getPackets().sendIComponentText(372, 5, "");
    			player.getPackets().sendIComponentText(372, 6, "");
    	}
    	public void forceClose() {
    		player.getHintIconsManager().removeUnsavedHintIcon();
    		player.getMusicsManager().reset();
    		player.setYellOff(false);
    		WorldTasksManager.schedule(new WorldTask() {
    			@Override
    			public void run() {
    				player.getInterfaceManager().sendInterfaces();
    				player.getInterfaceManager()
    						.closeReplacedRealChatBoxInterface();
    				player.getTemporaryAttributtes().remove("JAGGED");
    			}
    		});
    	}
    	public ArrayList<String> getMacAddresses() {
    		return addresses;
    	}
    	
    	public void setRandomQuestion(int randomQuestion) {
    		this.randomQuestion = randomQuestion;
    	}
    	
    	public void setQuestionAnswer(String questionAnswer) {
    		this.questionAnswer = questionAnswer;
    	}
    
    	public Player getPlayer() {
    		return player;
    	}
    
    	public void setPlayer(Player player) {
    		this.player = player;
    	}
    }

    Spoiler for JAGInformation Dialogue:
    Code:
    package com.rs.game.player.dialogues;
    
    
    
    public class JAGInformation extends Dialogue {
    int npcId;
    	@Override
    	public void start() {
    		npcId = (Integer) parameters[0];
    		sendEntityDialogue(SEND_1_TEXT_CHAT,
    				new String[] {
    						"Account Guardian",
    						"Hello adventurer, how may I help you?" }, IS_NPC,
    				npcId, 9827);//first dialogue
    	}
    	@Override
    	public void run(int interfaceId, int componentId) {
    		if (stage == -1) {
    			stage = 0;
    			sendOptionsDialogue(SEND_DEFAULT_OPTIONS_TITLE,
    					"Who are you?", "What is JAG?", "I would like to "+(player.hasJAG ? "disable JAG." : "enable JAG."), "Nevermind.");
    		} else if (stage == 0) {
    			if (componentId == OPTION_1) {
    				stage = 1;
    				sendPlayerDialogue( 9827, "Who are you?" );
    			} else if (componentId == OPTION_2) {
    				stage = 2;
    				sendPlayerDialogue( 9827, "What is JAG?" );
    			} else if (componentId == OPTION_3) {
    				stage = 3;
    				sendPlayerDialogue( 9827, "I would like to "+(player.hasJAG ? "disable JAG." : "enable JAG."));
    			} else if (componentId == OPTION_4) {
    				stage = 120;
    				sendPlayerDialogue( 9827, "Erm, nevermind..");
    			} else if (stage == 120) {
    				end();
    			}
    		} else if (stage == 1) {
    			stage = -1;
    			sendEntityDialogue(SEND_1_TEXT_CHAT,
    					new String[] {
    					"Account Guardian",
    							"I am the Account Guardian, here to let players know about JAG." }, IS_NPC,
    					npcId, 9827);
    		} else if (stage == 2) {
    			stage = -1;
    			sendEntityDialogue(SEND_1_TEXT_CHAT,
    					new String[] {
    					"Account Guardian",
    							"JAG is a security measure added to make sure nobody is able to hijack your account." }, IS_NPC,
    					npcId, 9827);
    		} else if (stage == 3) {
    			if(player.hasJAG == true) {
    				stage = 8;
    				sendEntityDialogue(SEND_1_TEXT_CHAT,
    						new String[] {
    						"Account Guardian",
    								"Okay, just enter your random question and I will disable your JAG services." }, IS_NPC,
    						npcId, 9827);
    			} else {
    			stage = 4;
    			sendEntityDialogue(SEND_1_TEXT_CHAT,
    					new String[] {
    					"Account Guardian",
    							"Alright, but first you will need to set a question in case you need to register a new device." }, IS_NPC,
    					npcId, 9827);
    			}
    		} else if (stage == 4) {
    			stage = 5;
    			sendPlayerDialogue( 9827, "Erm.. okay, what's the question?" );
    		} else if (stage == 5) {
    			stage = 6;
    			sendOptionsDialogue(SEND_DEFAULT_OPTIONS_TITLE,
    					"What was your first pet's name?", "What is your favourite color?", "What is your mother's maiden name?");
    		} else if (stage == 6) {
    			if (componentId == OPTION_1) {
    				player.getTemporaryAttributtes().put("entering_jag1", Boolean.TRUE);
    				player.getPackets().sendInputNameScript("What was your first pet's name?");
    			} if (componentId == OPTION_2) {
    				player.getTemporaryAttributtes().put("entering_jag2", Boolean.TRUE);
    				player.getPackets().sendInputNameScript("What is your favourite color?");
    			} if (componentId == OPTION_3) {
    				player.getTemporaryAttributtes().put("entering_jag3", Boolean.TRUE);
    				player.getPackets().sendInputNameScript("What is your mother's maiden name?");
    			}
    		} else if (stage == 8) {
    			if(player.getJAG().randomQuestion == 1) {
    				player.getTemporaryAttributtes().put("removing_jag1", Boolean.TRUE);
    				player.getPackets().sendInputNameScript("What was your first pet's name?");
    			} else if(player.getJAG().randomQuestion == 2) {
    				player.getTemporaryAttributtes().put("removing_jag2", Boolean.TRUE);
    				player.getPackets().sendInputNameScript("What is your favourite color?");
    			} else if(player.getJAG().randomQuestion == 3) {
    				player.getTemporaryAttributtes().put("removing_jag3", Boolean.TRUE);
    				player.getPackets().sendInputNameScript("What is your mother's maiden name?");
    			}
    		} else {
    			end();
    		}
    
    	}
    
    	@Override
    	public void finish() {
    
    	}
    
    }

    Spoiler for JAGDialogue:
    Code:
    package com.rs.game.player.dialogues;
    
    
    public class JAGDialogue extends Dialogue {
    
    	int npcId = 2253;
    
    	@Override
    	public void start() {
    		sendEntityDialogue(SEND_1_TEXT_CHAT,
    				new String[] {
    				"Account Guardian",
    						"Hello again "+player.getDisplayName()+"." }, IS_NPC,
    				npcId, 9827);
    	}
    
    	@Override
    	public void run(int interfaceId, int componentId) {
    		if (stage == -1) {
    			stage = 0;
    			sendPlayerDialogue( 9827, "What's going on??" );
    		} else if (stage == 0) {
    			stage = 1;
    			sendEntityDialogue(SEND_2_TEXT_CHAT,
    					new String[] {
    					"Account Guardian",
    							"It seems you have logged onto your account with an unregistered device to JAG.", 
    							"You will need to register this device before you can continue playing." }, IS_NPC,
    					npcId, 9827);
    		} else if (stage == 1) {
    			stage = 2;
    			sendPlayerDialogue( 9827, "Alright, well do you need me to enter my question again?" );
    		//	controler.updateProgress();
    		} else if (stage == 2) {
    			stage = 3;
    			sendEntityDialogue(SEND_1_TEXT_CHAT,
    					new String[] {
    					"Account Guardian",
    							"Indeed so." }, IS_NPC,
    					npcId, 9827);
    		} else if (stage == 3) {
    			stage = 4;
    			if(player.getJAG().randomQuestion == 1) {
    				player.getTemporaryAttributtes().put("proving_jag1", Boolean.TRUE);
    				player.getPackets().sendInputNameScript("What was your first pet's name?");
    			} else if(player.getJAG().randomQuestion == 2) {
    				player.getTemporaryAttributtes().put("proving_jag2", Boolean.TRUE);
    				player.getPackets().sendInputNameScript("What is your favourite color?");
    			} else if(player.getJAG().randomQuestion == 3) {
    				player.getTemporaryAttributtes().put("proving_jag3", Boolean.TRUE);
    				player.getPackets().sendInputNameScript("What is your mother's maiden name?");
    			}
    		} else {
    			end();
    		}
    
    	}
    
    	@Override
    	public void finish() {
    
    	}
    
    }

    Spoiler for WorldPacketsDecoder ENTER_NAME_PACKET under "ClanWars.enter(player);":
    Code:
    } else if (player.getTemporaryAttributtes().get("entering_jag1") == Boolean.TRUE) {
    				if (value.equals(""))
    					return;
    				player.getTemporaryAttributtes().remove("entering_jag1");
    				player.getJAG().randomQuestion = 1;
    				player.hasJAG = true;
    				player.getJAG().insertCurrentAddress();
    				player.getJAG().setQuestionAnswer(value);
    				player.getDialogueManager().finishDialogue();
    				player.getDialogueManager().startDialogue("SimpleMessage", "Your random question has been saved to your account.", 
    						"We suggest that you write down your question so you do not forget.", "", 
    						"Your question's answer is: \""+value+"\"");
    			} else if (player.getTemporaryAttributtes().get("entering_jag2") == Boolean.TRUE) {
    				if (value.equals(""))
    					return;
    				player.getTemporaryAttributtes().remove("entering_jag2");
    				player.getJAG().randomQuestion = 2;
    				player.hasJAG = true;
    				player.getJAG().insertCurrentAddress();
    				player.getJAG().setQuestionAnswer(value);
    				player.getDialogueManager().finishDialogue();
    				player.getDialogueManager().startDialogue("SimpleMessage", "Your random question has been saved to your account.", 
    						"We suggest that you write down your question so you do not forget.", "", 
    						"Your question's answer is: \""+value+"\"");
    			} else if (player.getTemporaryAttributtes().get("entering_jag3") == Boolean.TRUE) {
    				if (value.equals(""))
    					return;
    				player.getTemporaryAttributtes().remove("entering_jag3");
    				player.getJAG().randomQuestion = 3;
    				player.hasJAG = true;
    				player.getJAG().insertCurrentAddress();
    				player.getJAG().setQuestionAnswer(value);
    				player.getDialogueManager().finishDialogue();
    				player.getDialogueManager().startDialogue("SimpleMessage", "Your random question has been saved to your account.", 
    						"We suggest that you write down your question so you do not forget.", "", 
    						"Your question's answer is: \""+value+"\"");
    			} else if (player.getTemporaryAttributtes().get("removing_jag1") == Boolean.TRUE) {
    				if (value.equals(""))
    					return;
    				if(!player.getJAG().questionAnswer.equalsIgnoreCase(value)) {
    					player.getDialogueManager().finishDialogue();
    					player.getDialogueManager().startDialogue("SimpleMessage", "Your random question answer was incorrect.");
    				} else {
    					player.getJAG().randomQuestion = 0;
    					player.hasJAG = false;
    					player.getJAG().setQuestionAnswer(null);
    					player.getDialogueManager().finishDialogue();
    					player.getDialogueManager().startDialogue("SimpleMessage", "Your JAG services have been disabled.");
    				}
    				player.getTemporaryAttributtes().remove("removing_jag1");
    			} else if (player.getTemporaryAttributtes().get("removing_jag2") == Boolean.TRUE) {
    				if (value.equals(""))
    					return;
    				if(!player.getJAG().questionAnswer.equalsIgnoreCase(value)) {
    					player.getDialogueManager().finishDialogue();
    					player.getDialogueManager().startDialogue("SimpleMessage", "Your random question answer was incorrect.");
    				} else {
    					player.getJAG().randomQuestion = 0;
    					player.hasJAG = false;
    					player.getJAG().setQuestionAnswer(null);
    					player.getDialogueManager().finishDialogue();
    					player.getDialogueManager().startDialogue("SimpleMessage", "Your JAG services have been disabled.");
    				}
    				player.getTemporaryAttributtes().remove("removing_jag2");
    			} else if (player.getTemporaryAttributtes().get("removing_jag3") == Boolean.TRUE) {
    				if (value.equals(""))
    					return;
    				if(!player.getJAG().questionAnswer.equalsIgnoreCase(value)) {
    					player.getDialogueManager().finishDialogue();
    					player.getDialogueManager().startDialogue("SimpleMessage", "Your random question answer was incorrect.");
    				} else {
    					player.getJAG().randomQuestion = 0;
    					player.hasJAG = false;
    					player.getJAG().setQuestionAnswer(null);
    					player.getDialogueManager().finishDialogue();
    					player.getDialogueManager().startDialogue("SimpleMessage", "Your JAG services have been disabled.");
    				}
    				player.getTemporaryAttributtes().remove("removing_jag3");
    				} else if (player.getTemporaryAttributtes().get("proving_jag1") == Boolean.TRUE) {
    				if (value.equals(""))
    					return;
    				if(!player.getJAG().questionAnswer.equalsIgnoreCase(value)) {
    					player.getDialogueManager().finishDialogue();
    					player.getDialogueManager().startDialogue("SimpleMessage", "Your random question answer was incorrect.");
    				} else {
    					player.getDialogueManager().finishDialogue();
    					player.getJAG().insertCurrentAddress();
    					player.getDialogueManager().startDialogue("SimpleMessage", "Question answered successfully.",
    							"This device is now trusted on this account.");
    					player.getJAG().forceClose();
    				}
    				player.getTemporaryAttributtes().remove("proving_jag1");
    			} else if (player.getTemporaryAttributtes().get("proving_jag2") == Boolean.TRUE) {
    				if (value.equals(""))
    					return;
    				if(!player.getJAG().questionAnswer.equalsIgnoreCase(value)) {
    					player.getDialogueManager().finishDialogue();
    					player.getDialogueManager().startDialogue("SimpleMessage", "Your random question answer was incorrect.");
    				} else {
    					player.getDialogueManager().finishDialogue();
    					player.getJAG().insertCurrentAddress();
    					player.getDialogueManager().startDialogue("SimpleMessage", "Question answered successfully.",
    							"This device is now trusted on this account.");
    					player.getJAG().forceClose();
    				}
    				player.getTemporaryAttributtes().remove("proving_jag2");
    			} else if (player.getTemporaryAttributtes().get("proving_jag3") == Boolean.TRUE) {
    				if (value.equals(""))
    					return;
    				if(!player.getJAG().questionAnswer.equalsIgnoreCase(value)) {
    					player.getDialogueManager().finishDialogue();
    					player.getDialogueManager().startDialogue("SimpleMessage", "Your random question answer was incorrect.");
    				} else {
    					player.getDialogueManager().finishDialogue();
    					player.getJAG().insertCurrentAddress();
    					player.getDialogueManager().startDialogue("SimpleMessage", "Question answered successfully.",
    							"This device is now trusted on this account.");
    					player.getJAG().forceClose();
    				}
    				player.getTemporaryAttributtes().remove("proving_jag3");

    Spoiler for Player.java shit:
    Code:
    private JAG JAG;
    public boolean hasJAG;
    Inside Player(String password)
    Code:
    JAG = new JAG();
    Inside init
    Code:
    if(JAG == null)
    			JAG = new JAG();
    JAG.setPlayer(this);
    Code:
    public boolean hasJAG() {
    		return hasJAG;
    	}
    	public void setHadJAG(boolean hasJAG) {
    		this.hasJAG = hasJAG;
    	}
    Code:
    	public JAG getJAG() {
    		return JAG;
    	}
    
    	
    	public void setJAG(JAG JAG) {
    		this.JAG = JAG;
    	}
    inside run()
    Code:
    JAG.init();

    Spoiler for npchandler option1:
    Code:
    else if (npc.getId() == 2253) {
    					if (player.getTemporaryAttributtes().get("JAGGED") == Boolean.TRUE) {
    						player.getDialogueManager().startDialogue("JAGDialogue", npc.getId(), null);
    					} else {
    					player.getDialogueManager().startDialogue("JAGInformation",
    							npc.getId(), null);
    				}
    				}

    Spoiler for Stop developer console commands:

    In worldPacketsDecoder.java
    Add
    Code:
    	if (player.getTemporaryAttributtes().get("JAGGED") == Boolean.TRUE) {
    				player.getPackets().sendPanelBoxMessage("You cannot use commands until your register this device.");
    				return;
    			}
    under
    Code:
    } else if (packetId == COMMANDS_PACKET) {
    			if (!player.isRunning())
    				return;

    Spoiler for Disable walking + auto sends dialogue:
    WorldPacketsDecoder.java
    Find the walking packet.
    Under
    Code:
    if (player.getFreezeDelay() >= currentTime) {
    				player.getPackets().sendGameMessage(
    						"A magical force prevents you from moving.");
    				return;
    			}
    add
    Code:
    if (player.getTemporaryAttributtes().get("JAGGED") == Boolean.TRUE) {
    				player.getDialogueManager().startDialogue("JAGDialogue");
    				return;
    			}

    In NPC.java
    Code:
    if (id == 2253) 
    	    	setName("Account Guardian");
    You will need to spawn 2253 in whatever location you want him spawned at.

    Spoiler for Random Buttonhandler codes.:

    Find } else if (interfaceId == 430) {
    Uner that, add
    Code:
    	if (player.getTemporaryAttributtes().get("JAGGED") == Boolean.TRUE) {
    				player.getDialogueManager().startDialogue("SimpleMessage", "You cannot do that until you've verified this device with JAG.");
    				return;
    			}
    Repeat for any interfaces you don't want a hijacker clicking.



    You will need to add the dialogues into the dialoguehandler and.

    If there's an error, I probably forgot one tiny thing. >_> Tell me the error and I'll see if I did.

    Please don't be a 12 year old and flame me if my code is bad, give me some constructive criticism and I will work on what I'm doing wrong for future tasks.
    Reply With Quote  
     


  2. #2  
    Strive for whats best.

    Chaz's Avatar
    Join Date
    Jul 2012
    Age
    28
    Posts
    2,499
    Thanks given
    376
    Thanks received
    614
    Rep Power
    170
    Thanks for this i'm loving the damn thing. You should use a better Npc though cause people might use that a lot. Other wards it's sexy.

    Repped

    Edit: Really like the time and effort your putting into this.
    Reply With Quote  
     

  3. Thankful user:


  4. #3  
    Donator
    Esper's Avatar
    Join Date
    Jun 2011
    Age
    30
    Posts
    108
    Thanks given
    13
    Thanks received
    6
    Rep Power
    1
    Omg this is sexy
    Reply With Quote  
     

  5. Thankful user:


  6. #4  
    Registered Member
    Joker's Avatar
    Join Date
    Nov 2009
    Age
    28
    Posts
    1,845
    Thanks given
    378
    Thanks received
    1,206
    Rep Power
    5000
    Good job, huge improvement over the last one.
    If I may, I think a dialogue asking the question on login would be more efficient rather than going all the way to the NPC to unlock it, maybe even freezing movement and other actions until then.

    Reply With Quote  
     

  7. Thankful user:


  8. #5  
    Registered Member
    Join Date
    May 2011
    Age
    29
    Posts
    2,246
    Thanks given
    2,469
    Thanks received
    1,120
    Rep Power
    943
    Quote Originally Posted by Jokerboy2000 View Post
    Good job, huge improvement over the last one.
    If I may, I think a dialogue asking the question on login would be more efficient rather than going all the way to the NPC to unlock it, maybe even freezing movement and other actions until then.
    Done
    Reply With Quote  
     

  9. #6  
    Registered Member
    Join Date
    May 2012
    Posts
    989
    Thanks given
    19
    Thanks received
    28
    Rep Power
    0
    also should make it so if your an admin and a hacker logs in make sure they cant do commands until they provide there answer. a suggestion. also player commands too and mod commands just so there bank dont get hacked if your server is eco or something.
    Attached image
    Reply With Quote  
     

  10. #7  
    Registered Member
    Join Date
    May 2011
    Age
    29
    Posts
    2,246
    Thanks given
    2,469
    Thanks received
    1,120
    Rep Power
    943
    Quote Originally Posted by runebane View Post
    also should make it so if your an admin and a hacker logs in make sure they cant do commands until they provide there answer. a suggestion.
    Oh, duh I wasn't taking the developer console into consideration. Thanks

    In worldPacketsDecoder.java
    Add
    Code:
    	if (player.getTemporaryAttributtes().get("JAGGED") == Boolean.TRUE) {
    				player.getPackets().sendPanelBoxMessage("You cannot use commands until your register this device.");
    				return;
    			}
    under
    Code:
    } else if (packetId == COMMANDS_PACKET) {
    			if (!player.isRunning())
    				return;
    Reply With Quote  
     

  11. #8  
    Super Donator


    Join Date
    Jun 2007
    Age
    31
    Posts
    2,157
    Thanks given
    316
    Thanks received
    282
    Rep Power
    779
    Jag isn't based solely on IPs though...
    Reply With Quote  
     

  12. #9  
    Registered Member
    Join Date
    May 2011
    Age
    29
    Posts
    2,246
    Thanks given
    2,469
    Thanks received
    1,120
    Rep Power
    943
    Quote Originally Posted by HloJustin View Post
    Jag isn't based solely on IPs though...
    I know, it's just the general idea of it, I guess. lol

    runebane has pointed out multiple flaws and I have fixed all of the ones he has told me, if you copied some things from this and there's something wrong, re-look @ the code and see if there's a fix.
    (Especially WorldPacketsDecoder ENTER_NAME_PACKET under "ClanWars.enter(player);")
    Last edited by Joker; 10-05-2012 at 11:24 AM.
    Reply With Quote  
     

  13. #10  
    Registered Member blayke's Avatar
    Join Date
    Feb 2012
    Posts
    99
    Thanks given
    20
    Thanks received
    0
    Rep Power
    11
    Quote Originally Posted by RuneScape View Post
    I know there's way better ways to do this, These were the best methods I had in mind at the time, if you have any suggestions, let me know and I'll improve it.

    What this does:
    As long as I didn't forget anything in this tutorial (Knowing me, I probably fucking did) If a player talks to the account guardian and enables JAG, is sets their current ip into an arraylist of allowed ip addresses for the player.
    If a player who's ip is not in the arraylist logs into the account, it will start a controler limiting them from most tasks until they answer the random question the original player set to the account when he enabled JAG.



    JAG = Jagex Account Guardian

    Spoiler for JAG.java:
    Code:
    package com.rs.game.player;
    
    import java.io.Serializable;
    import java.util.ArrayList;
    
    public class JAG implements Serializable {
    	private static final long serialVersionUID = -4367930754392470616L;
    	
    	/**
    	 * The allowed IP addresses
    	 */
    	private ArrayList<String> addresses = new ArrayList<String>();
    	
    	private Player player;
    	public int randomQuestion;
    	public String questionAnswer;
    	//InetSocketAddress addr = (InetSocketAddress) player.getSession().getChannel().getRemoteAddress();  //Can't use this because players can
    	// String HOST = addr.getHostName();                                                                 //edit it through their hosts file.
    	public JAG() {
    		/*
    		 * empty.
    		 */
    	}
    	
    	public void init() {
    		if(player.hasJAG == true) {
    		if (!getAddresses().contains(player.getSession().getIP()))
    			lockUntilVerified();
    		return;
    	}
    	}
    	
    	public void lockUntilVerified() {
    		player.getControlerManager().startControler("JAGControler");
    	}
    	public void insertCurrentAddress() {
    		addresses.add(player.getSession().getIP());
    	}
    	public ArrayList<String> getAddresses() {
    		return addresses;
    	}
    	public void setRandomQuestion(int randomQuestion) {
    		this.randomQuestion = randomQuestion;
    	}
    	public void setQuestionAnswer(String questionAnswer) {
    		this.questionAnswer = questionAnswer;
    	}
    
    	public Player getPlayer() {
    		return player;
    	}
    
    	public void setPlayer(Player player) {
    		this.player = player;
    	}
    }

    Spoiler for JAGContoler.java:
    Code:
    package com.rs.game.player.controlers;
    
    import com.rs.game.Entity;
    import com.rs.game.WorldObject;
    import com.rs.game.WorldTile;
    import com.rs.game.npc.NPC;
    import com.rs.game.tasks.WorldTask;
    import com.rs.game.tasks.WorldTasksManager;
    
    public class JAGControler extends Controler {
    	
    	private static final int NPC = 2253;
    	public int stage;
    	@Override
    	public void start() {
    		player.setYellOff(true);
    		sendInterfaces();
    		player.getHintIconsManager().addHintIcon(2991, 3306, 0, 0, 0, 0,
    				-1, false);
    		player.getTemporaryAttributtes().put("JAGGED", Boolean.TRUE);
                    player.getDialogueManager().startDialogue("JAGDialogue");
    		stage = 0;
    	}
    	@Override
    	public void sendInterfaces() {
    		int stage = getStage();
    		player.getInterfaceManager().replaceRealChatBoxInterface(372);
    		if (stage == 0) {
    			player.getPackets().sendIComponentText(372, 0, "JAG Account Lockdown");
    			player.getPackets().sendIComponentText(372, 1, "You have logged into your account with an registered device.");
    			player.getPackets().sendIComponentText(372, 2, "Please talk to the Account guardian to enable this device.");
    			player.getPackets().sendIComponentText(372, 3, "");
    			player.getPackets().sendIComponentText(372, 4, "");
    			player.getPackets().sendIComponentText(372, 5, "");
    			player.getPackets().sendIComponentText(372, 6, "");
    		}
    	}
    	public int getStage() {
    		return stage;
    	}
    	public boolean processObjectClick1(WorldObject object) {
    		return false;
    	}
    	@Override
    	public boolean processObjectClick2(WorldObject object) {
    		return false;
    	}
    
    	@Override
    	public boolean processObjectClick3(WorldObject object) {
    		return false;
    	}
    	
    	public boolean processObjectClick4(WorldObject object) {
    		return false;
    	}
    	@Override
    	public boolean processObjectClick5(WorldObject object) {
    		return false;
    	}
    	@Override
    	public boolean processNPCClick1(NPC npc) {
    		if (npc.getId() == NPC) {
    			player.getDialogueManager().startDialogue("JAGDialogue");
    		}
    		return false;
    	}
    	@Override
    	public boolean processNPCClick2(NPC npc) {
    		return false;
    	}
    	@Override
    	public boolean processNPCClick3(NPC npc) {
    		return false;
    	}
    	public void updateProgress() {
    		setStage(getStage() + 1);
    		refreshStage();
    	}
    	public void refreshStage() {
    		//int stage = getStage();
    		sendInterfaces();
    		
    	}
    	public void setStage(int stage) {
    	this.stage = stage;
    		
    	}
    	/*
    	 * return remove controler
    	 */
    	@Override
    	public boolean login() {
    		start();
    		return false;
    	}
    
    	/*
    	 * return remove controler
    	 */
    	@Override
    	public boolean logout() {
    		return false;
    	}
    
    	@Override
    	public boolean processMagicTeleport(WorldTile toTile) {
    		return false;
    	}
    
    	@Override
    	public boolean keepCombating(Entity target) {
    		return false;
    	}
    
    	@Override
    	public boolean canAttack(Entity target) {
    		return false;
    	}
    
    	@Override
    	public boolean canHit(Entity target) {
    		return false;
    	}
    
    	@Override
    	public boolean processItemTeleport(WorldTile toTile) {
    		return false;
    	}
    
    	@Override
    	public boolean processObjectTeleport(WorldTile toTile) {
    		return false;
    	}
    	@Override
    	public void forceClose() {
    		player.getHintIconsManager().removeUnsavedHintIcon();
    		player.getMusicsManager().reset();
    		player.setYellOff(false);
    
    		WorldTasksManager.schedule(new WorldTask() {
    			@Override
    			public void run() {
    				player.getInterfaceManager().sendInterfaces();
    				player.getInterfaceManager()
    						.closeReplacedRealChatBoxInterface();
    			}
    		});
    	}
    
    }

    Spoiler for JAGInformation Dialogue:
    Code:
    package com.rs.game.player.dialogues;
    
    
    
    public class JAGInformation extends Dialogue {
    int npcId;
    	@Override
    	public void start() {
    		npcId = (Integer) parameters[0];
    		sendEntityDialogue(SEND_1_TEXT_CHAT,
    				new String[] {
    						"Account Guardian",
    						"Hello adventurer, how may I help you?" }, IS_NPC,
    				npcId, 9827);//first dialogue
    	}
    	@Override
    	public void run(int interfaceId, int componentId) {
    		if (stage == -1) {
    			stage = 0;
    			sendOptionsDialogue(SEND_DEFAULT_OPTIONS_TITLE,
    					"Who are you?", "What is JAG?", "I would like to "+(player.hasJAG ? "disable JAG." : "enable JAG."), "Nevermind.");
    		} else if (stage == 0) {
    			if (componentId == OPTION_1) {
    				stage = 1;
    				sendPlayerDialogue( 9827, "Who are you?" );
    			} else if (componentId == OPTION_2) {
    				stage = 2;
    				sendPlayerDialogue( 9827, "What is JAG?" );
    			} else if (componentId == OPTION_3) {
    				stage = 3;
    				sendPlayerDialogue( 9827, "I would like to "+(player.hasJAG ? "disable JAG." : "enable JAG."));
    			} else if (componentId == OPTION_4) {
    				stage = 120;
    				sendPlayerDialogue( 9827, "Erm, nevermind..");
    			} else if (stage == 120) {
    				end();
    			}
    		} else if (stage == 1) {
    			stage = -1;
    			sendEntityDialogue(SEND_1_TEXT_CHAT,
    					new String[] {
    					"Account Guardian",
    							"I am the Account Guardian, here to let players know about JAG." }, IS_NPC,
    					npcId, 9827);
    		} else if (stage == 2) {
    			stage = -1;
    			sendEntityDialogue(SEND_1_TEXT_CHAT,
    					new String[] {
    					"Account Guardian",
    							"JAG is a security measure added to make sure nobody is able to hijack your account." }, IS_NPC,
    					npcId, 9827);
    		} else if (stage == 3) {
    			if(player.hasJAG == true) {
    				stage = 8;
    				sendEntityDialogue(SEND_1_TEXT_CHAT,
    						new String[] {
    						"Account Guardian",
    								"Okay, just enter your random question and I will disable your JAG services." }, IS_NPC,
    						npcId, 9827);
    			} else {
    			stage = 4;
    			sendEntityDialogue(SEND_1_TEXT_CHAT,
    					new String[] {
    					"Account Guardian",
    							"Alright, but first you will need to set a question in case you need to register a new device." }, IS_NPC,
    					npcId, 9827);
    			}
    		} else if (stage == 4) {
    			stage = 5;
    			sendPlayerDialogue( 9827, "Erm.. okay, what's the question?" );
    		} else if (stage == 5) {
    			stage = 6;
    			sendOptionsDialogue(SEND_DEFAULT_OPTIONS_TITLE,
    					"What was your first pet's name?", "What is your favourite color?", "What is your mother's maiden name?");
    		} else if (stage == 6) {
    			if (componentId == OPTION_1) {
    				player.getTemporaryAttributtes().put("entering_jag1", Boolean.TRUE);
    				player.getPackets().sendInputNameScript("What was your first pet's name?");
    			} if (componentId == OPTION_2) {
    				player.getTemporaryAttributtes().put("entering_jag2", Boolean.TRUE);
    				player.getPackets().sendInputNameScript("What is your favourite color?");
    			} if (componentId == OPTION_3) {
    				player.getTemporaryAttributtes().put("entering_jag3", Boolean.TRUE);
    				player.getPackets().sendInputNameScript("What is your mother's maiden name?");
    			}
    		} else if (stage == 8) {
    			if(player.getJAG().randomQuestion == 1) {
    				player.getTemporaryAttributtes().put("removing_jag1", Boolean.TRUE);
    				player.getPackets().sendInputNameScript("What was your first pet's name?");
    			} else if(player.getJAG().randomQuestion == 2) {
    				player.getTemporaryAttributtes().put("removing_jag2", Boolean.TRUE);
    				player.getPackets().sendInputNameScript("What is your favourite color?");
    			} else if(player.getJAG().randomQuestion == 3) {
    				player.getTemporaryAttributtes().put("removing_jag3", Boolean.TRUE);
    				player.getPackets().sendInputNameScript("What is your mother's maiden name?");
    			}
    		} else {
    			end();
    		}
    
    	}
    
    	@Override
    	public void finish() {
    
    	}
    
    }

    Spoiler for JAGDialogue:
    Code:
    package com.rs.game.player.dialogues;
    
    import com.rs.game.player.controlers.JAGControler;
    
    public class JAGDialogue extends Dialogue {
    
    	int npcId;
    	JAGControler controler;
    
    	@Override
    	public void start() {
    		sendEntityDialogue(SEND_1_TEXT_CHAT,
    				new String[] {
    				"Account Guardian",
    						"Hello again "+player.getDisplayName()+"." }, IS_NPC,
    				npcId, 9827);
    	}
    
    	@Override
    	public void run(int interfaceId, int componentId) {
    		if (stage == -1) {
    			stage = 0;
    			sendPlayerDialogue( 9827, "Why am I \"JAG Locked\"??" );
    		} else if (stage == 0) {
    			stage = 1;
    			sendEntityDialogue(SEND_2_TEXT_CHAT,
    					new String[] {
    					"Account Guardian",
    							"It seems you have logged onto your account with an unregistered device to JAG.", 
    							"You will need to register this device before you can continue playing." }, IS_NPC,
    					npcId, 9827);
    		} else if (stage == 1) {
    			stage = 2;
    			sendPlayerDialogue( 9827, "Alright, well do you need me to enter my question again?" );
    		//	controler.updateProgress();
    		} else if (stage == 2) {
    			stage = 3;
    			sendEntityDialogue(SEND_1_TEXT_CHAT,
    					new String[] {
    					"Account Guardian",
    							"Indeed so." }, IS_NPC,
    					npcId, 9827);
    		} else if (stage == 3) {
    			stage = 4;
    			if(player.getJAG().randomQuestion == 1) {
    				player.getTemporaryAttributtes().put("proving_jag1", Boolean.TRUE);
    				player.getPackets().sendInputNameScript("What was your first pet's name?");
    			} else if(player.getJAG().randomQuestion == 2) {
    				player.getTemporaryAttributtes().put("proving_jag2", Boolean.TRUE);
    				player.getPackets().sendInputNameScript("What is your favourite color?");
    			} else if(player.getJAG().randomQuestion == 3) {
    				player.getTemporaryAttributtes().put("proving_jag3", Boolean.TRUE);
    				player.getPackets().sendInputNameScript("What is your mother's maiden name?");
    			}
    		} else {
    			end();
    		}
    
    	}
    
    	@Override
    	public void finish() {
    
    	}
    
    }

    Spoiler for WorldPacketsDecoder ENTER_NAME_PACKET under "ClanWars.enter(player);":
    Code:
    } else if (player.getTemporaryAttributtes().get("entering_jag1") == Boolean.TRUE) {
    				if (value.equals(""))
    					return;
    				player.getTemporaryAttributtes().remove("entering_jag1");
    				player.getJAG().randomQuestion = 1;
    				player.hasJAG = true;
    				player.getJAG().insertCurrentAddress();
    				player.getJAG().setQuestionAnswer(value);
    				player.getDialogueManager().finishDialogue();
    				player.getDialogueManager().startDialogue("SimpleMessage", "Your random question has been saved to your account.", 
    						"We suggest that you write down your question so you do not forget.", "", 
    						"Your question's answer is: \""+value+"\"");
    			} else if (player.getTemporaryAttributtes().get("entering_jag2") == Boolean.TRUE) {
    				if (value.equals(""))
    					return;
    				player.getTemporaryAttributtes().remove("entering_jag2");
    				player.getJAG().randomQuestion = 2;
    				player.hasJAG = true;
    				player.getJAG().insertCurrentAddress();
    				player.getJAG().setQuestionAnswer(value);
    				player.getDialogueManager().finishDialogue();
    				player.getDialogueManager().startDialogue("SimpleMessage", "Your random question has been saved to your account.", 
    						"We suggest that you write down your question so you do not forget.", "", 
    						"Your question's answer is: \""+value+"\"");
    			} else if (player.getTemporaryAttributtes().get("entering_jag3") == Boolean.TRUE) {
    				if (value.equals(""))
    					return;
    				player.getTemporaryAttributtes().remove("entering_jag3");
    				player.getJAG().randomQuestion = 3;
    				player.hasJAG = true;
    				player.getJAG().insertCurrentAddress();
    				player.getJAG().setQuestionAnswer(value);
    				player.getDialogueManager().finishDialogue();
    				player.getDialogueManager().startDialogue("SimpleMessage", "Your random question has been saved to your account.", 
    						"We suggest that you write down your question so you do not forget.", "", 
    						"Your question's answer is: \""+value+"\"");
    			} else if (player.getTemporaryAttributtes().get("removing_jag1") == Boolean.TRUE) {
    				if (value.equals(""))
    					return;
    				if(!player.getJAG().questionAnswer.equalsIgnoreCase(value)) {
    					player.getDialogueManager().finishDialogue();
    					player.getDialogueManager().startDialogue("SimpleMessage", "Your random question answer was incorrect.");
    				} else {
    					player.getJAG().randomQuestion = 0;
    					player.hasJAG = false;
    					player.getJAG().setQuestionAnswer(null);
    					player.getDialogueManager().finishDialogue();
    					player.getDialogueManager().startDialogue("SimpleMessage", "Your JAG services have been disabled.");
    				}
    				player.getTemporaryAttributtes().remove("removing_jag1");
    			} else if (player.getTemporaryAttributtes().get("removing_jag2") == Boolean.TRUE) {
    				if (value.equals(""))
    					return;
    				if(!player.getJAG().questionAnswer.equalsIgnoreCase(value)) {
    					player.getDialogueManager().finishDialogue();
    					player.getDialogueManager().startDialogue("SimpleMessage", "Your random question answer was incorrect.");
    				} else {
    					player.getJAG().randomQuestion = 0;
    					player.hasJAG = false;
    					player.getJAG().setQuestionAnswer(null);
    					player.getDialogueManager().finishDialogue();
    					player.getDialogueManager().startDialogue("SimpleMessage", "Your JAG services have been disabled.");
    				}
    				player.getTemporaryAttributtes().remove("removing_jag2");
    			} else if (player.getTemporaryAttributtes().get("removing_jag3") == Boolean.TRUE) {
    				if (value.equals(""))
    					return;
    				if(!player.getJAG().questionAnswer.equalsIgnoreCase(value)) {
    					player.getDialogueManager().finishDialogue();
    					player.getDialogueManager().startDialogue("SimpleMessage", "Your random question answer was incorrect.");
    				} else {
    					player.getJAG().randomQuestion = 0;
    					player.hasJAG = false;
    					player.getJAG().setQuestionAnswer(null);
    					player.getDialogueManager().finishDialogue();
    					player.getDialogueManager().startDialogue("SimpleMessage", "Your JAG services have been disabled.");
    				}
    				player.getTemporaryAttributtes().remove("removing_jag3");
    				} else if (player.getTemporaryAttributtes().get("proving_jag1") == Boolean.TRUE) {
    				if (value.equals(""))
    					return;
    				if(!player.getJAG().questionAnswer.equalsIgnoreCase(value)) {
    					player.getDialogueManager().finishDialogue();
    					player.getDialogueManager().startDialogue("SimpleMessage", "Your random question answer was incorrect.");
    				} else {
    					player.getDialogueManager().finishDialogue();
    					player.getJAG().insertCurrentAddress();
    					player.getDialogueManager().startDialogue("SimpleMessage", "Question answered successfully.",
    							"This device is now trusted on this account.");
    					player.getControlerManager().forceStop();
    				}
    				player.getTemporaryAttributtes().remove("proving_jag1");
    				player.getTemporaryAttributtes().remove("JAGGED");
    			} else if (player.getTemporaryAttributtes().get("proving_jag2") == Boolean.TRUE) {
    				if (value.equals(""))
    					return;
    				if(!player.getJAG().questionAnswer.equalsIgnoreCase(value)) {
    					player.getDialogueManager().finishDialogue();
    					player.getDialogueManager().startDialogue("SimpleMessage", "Your random question answer was incorrect.");
    				} else {
    					player.getDialogueManager().finishDialogue();
    					player.getJAG().insertCurrentAddress();
    					player.getDialogueManager().startDialogue("SimpleMessage", "Question answered successfully.",
    							"This device is now trusted on this account.");
    					player.getControlerManager().forceStop();
    				}
    				player.getTemporaryAttributtes().remove("proving_jag2");
    				player.getTemporaryAttributtes().remove("JAGGED");
    			} else if (player.getTemporaryAttributtes().get("proving_jag3") == Boolean.TRUE) {
    				if (value.equals(""))
    					return;
    				if(!player.getJAG().questionAnswer.equalsIgnoreCase(value)) {
    					player.getDialogueManager().finishDialogue();
    					player.getDialogueManager().startDialogue("SimpleMessage", "Your random question answer was incorrect.");
    				} else {
    					player.getDialogueManager().finishDialogue();
    					player.getJAG().insertCurrentAddress();
    					player.getDialogueManager().startDialogue("SimpleMessage", "Question answered successfully.",
    							"This device is now trusted on this account.");
    					player.getControlerManager().forceStop();
    				}
    				player.getTemporaryAttributtes().remove("proving_jag3");
    				player.getTemporaryAttributtes().remove("JAGGED");

    Spoiler for Player.java shit:
    Code:
    private JAG JAG;
    public boolean hasJAG;
    Inside Player(String password)
    Code:
    JAG = new JAG();
    Inside init
    Code:
    if(JAG == null)
    			JAG = new JAG();
    JAG.setPlayer(this);
    Code:
    public boolean hasJAG() {
    		return hasJAG;
    	}
    	public void setHadJAG(boolean hasJAG) {
    		this.hasJAG = hasJAG;
    	}
    Code:
    	public JAG getJAG() {
    		return JAG;
    	}
    
    	
    	public void setJAG(JAG JAG) {
    		this.JAG = JAG;
    	}
    inside run()
    Code:
    JAG.init();

    Spoiler for npchandler option1:
    Code:
    else if (npc.getId() == 2253) {
    					if (player.getTemporaryAttributtes().get("JAGGED") == Boolean.TRUE) {
    						player.getDialogueManager().startDialogue("JAGDialogue", npc.getId(), null);
    						System.out.println("test");
    					} else {
    					player.getDialogueManager().startDialogue("JAGInformation",
    							npc.getId(), null);
    				}
    				}

    Spoiler for Stop developer console commands:

    In worldPacketsDecoder.java
    Add
    Code:
    	if (player.getTemporaryAttributtes().get("JAGGED") == Boolean.TRUE) {
    				player.getPackets().sendPanelBoxMessage("You cannot use commands until your register this device.");
    				return;
    			}
    under
    Code:
    } else if (packetId == COMMANDS_PACKET) {
    			if (!player.isRunning())
    				return;

    Spoiler for Disable walking + auto sends dialogue:
    WorldPacketsDecoder.java
    Find the walking packet.
    Under
    Code:
    if (player.getFreezeDelay() >= currentTime) {
    				player.getPackets().sendGameMessage(
    						"A magical force prevents you from moving.");
    				return;
    			}
    add
    Code:
    if (player.getTemporaryAttributtes().get("JAGGED") == Boolean.TRUE) {
    				player.getDialogueManager().startDialogue("JAGDialogue");
    				return;
    			}

    In NPC.java
    Code:
    if (id == 2253) 
    	    	setName("Account Guardian");
    You will need to spawn 2253 in whatever location you want him spawned at.


    You will need to add the dialogues & controlers into the dialoguehandler and controlerhandler.

    If there's an error, I probably forgot one tiny thing. >_> Tell me the error and I'll see if I did.

    Please don't be a 12 year old and flame me if my code is bad, give me some construction criticism and I will work on what I'm doing wrong for future tasks.
    omg i love it
    Reply With Quote  
     

Page 1 of 5 123 ... LastLast

Thread Information
Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)


User Tag List

Similar Threads

  1. "Fix" Your config.jag and media.jag
    By Galkon in forum Tutorials
    Replies: 50
    Last Post: 11-08-2015, 11:50 PM
  2. (Matrix) My attempt at JAG
    By Dumb Dork in forum Tutorials
    Replies: 22
    Last Post: 10-06-2012, 02:30 AM
  3. [718/Matrix]Itemdb.biz Search Command[718/Matrix]
    By benjamin94 in forum Snippets
    Replies: 12
    Last Post: 08-11-2012, 12:10 PM
Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •