Thread: PI - Improved Agility - Auto Talker

Results 1 to 8 of 8
  1. #1 PI - Improved Agility - Auto Talker 
    Registered Member
    Join Date
    Jul 2011
    Posts
    90
    Thanks given
    3
    Thanks received
    7
    Rep Power
    11
    Creator/publisher: Auto Talker
    Version: 1.0
    Difficulty: 3/10
    Length: Medium

    Description: PI agility system with 6 different obstacle courses, agility points, agility shop, travel interface, and easy configuration for XP and points editing using the Config.java file. The job should be a simple copy and paste, but because it's quite lengthy and some instructions say before, after and next you'll have to pay attention so you don't make mistakes.


    Media:




    Spoiler for Interface / adding the NPC's:

    Files you'll need to edit:
    Data\cfg\spawn-config.cfg
    src\server\model\players\packets\ClickingButtons.java
    src\server\model\players\ActionHandler.java
    src\server\model\players\PlayerAssistant.java

    Files you'll need to create:
    src\server\model\minigames\GnomeGlider.java


    Open spawn-config.cfg
    and add:

    Code:
    spawn = 437	3094	3496	0	0	0	0	0	Agility
    // The guy above is the main guy located in Edgeville bank
    spawn = 437	2474	3440	0	0	0	0	0	Agility
    spawn = 437	2545	3555	0	0	0	0	0	Agility
    spawn = 437	2806	9591	3	0	0	0	0	Agility
    spawn = 437	3357	2830	0	0	0	0	0	Agility
    spawn = 437	2757	2743	0	0	0	0	0	Agility
    spawn = 437	3005	3938	0	0	0	0	0	Agility
    Go to src\server\model\minigames and create the following file: GnomeGlider.java
    Then copy and paste the following - originally created by Liberty and posted to RS Roboyto:

    Code:
    package server.model.minigames;
    
    import server.event.*;
    import server.model.players.Client;
    
    /*
     * @author Liberty
     */
    
    public class GnomeGlider {
    
    	private static final int[][] GLIDER_DATA = { 
    		{3058, 2552, 3558, 0, 1}, //  BARBARIAN OUTPOST
    		{3057, 2470, 3436, 0, 2}, // TO GRAND TREE
    		{3059, 2805, 9589, 3, 3}, // BRIMHAVEN
    		{3060, 3355, 2828, 0, 4}, // AGILITY PYRAMID
    		{3056, 2769, 2747, 0, 8}, // APE ATOLL
    		{48054, 3003, 3934, 0, 10}, // WILDERNESS
    	};
    
    	public static void flightButtons(Client c, int button) {
    		for (int i = 0; i < getLength(); i++) {
    			if (getButton(i) == button) {
    				handleFlight(c, i);
    			}
    		}
    	}
    	
    	public static void handleFlight(final Client c, final int flightId) {
    		c.getPA().showInterface(802);
    		c.getPA().sendFrame36(153, getMove(flightId));
    		EventManager.getSingleton().addEvent(new Event() {
    			public void execute(EventContainer e) {
    				c.getPA().movePlayer(getX(flightId), getY(flightId),
    						getH(flightId));
    				e.stop();
    			}
    		}, 1800);
    		EventManager.getSingleton().addEvent(new Event() {
    			public void execute(EventContainer e) {
    				c.getPA().closeAllWindows();
    				c.getPA().sendFrame36(153, -1);
    				e.stop();
    			}
    		}, 2400);
    
    	}
    
    	public static int getLength() {
    		return GLIDER_DATA.length;
    	}
    
    	public static int getButton(int i) {
    		return GLIDER_DATA[i][0];
    	}
    
    	public static int getX(int i) {
    		return GLIDER_DATA[i][1];
    	}
    
    	public static int getY(int i) {
    		return GLIDER_DATA[i][2];
    	}
    
    	public static int getH(int i) {
    		return GLIDER_DATA[i][3];
    	}
    
    	public static int getMove(int i) {
    		return GLIDER_DATA[i][4];
    	}
    }
    In ClickingButtons.java
    Add the import at the top of the file

    Code:
    import server.model.minigames.GnomeGlider;
    still in ClickingButtons.java
    search for "int actionButtonId = Misc.hexToInt(c.getInStream().buffer, 0, packetSize);"
    and add the following underneath:

    Code:
    GnomeGlider.flightButtons(c, actionButtonId);

    In ActionHandler.java
    Search for "firstClickNpc(int i)"
    Then under "switch (i) {" add:

    Code:
    case 437: // Gnome Glider
    c.getPA().showInterface(802);
    break;
    In PlayerAssistant.java search for:
    "c.getPA().sendFrame126("Skill Teleport", 1415);"
    and underneath add this:

    Code:
    		c.getPA().sendFrame126("Gnome Stronghold (1+)", 809);
    		c.getPA().sendFrame126("Brimhaven (50+)", 810);
    		c.getPA().sendFrame126("Barbarian Outpost (30+)", 811);
    		c.getPA().sendFrame126("Ape Atoll (75+)", 812);
    		c.getPA().sendFrame126("Pyramid (60+)", 813);
    		c.getPA().sendFrame126("Wilderness (90+)", 12338);
    		c.getPA().sendFrame126("", 12339);




    Spoiler for Setting up the agility obstacle courses:

    Files you'll need to edit:
    src\server\Config.java
    src\server\model\players\ActionHandler.java
    src\server\model\players\Player.java
    src\server\model\players\PlayerSave.java
    src\server\model\players\packets\ClickObject.java
    src\server\world\ObjectManager.java
    src\server\model\players\skills\Agility.java


    Open Config.java
    search for "final int[] UNDEAD_NPCS"
    underneath that int add:

    Code:
    	// Agility XP and Points
    	
    	public static final int GNOMEXP = 3;
    	public static final int GNOMEPOINTS = 10;
    	public static final int BARBARIANXP = 6;
    	public static final int BARBARIANPOINTS = 30;
    	public static final int BRIMHAVENXP = 9;
    	public static final int BRIMHAVENPOINTS = 55;
    	public static final int PYRAMIDXP = 12;
    	public static final int PYRAMIDPOINTS = 100;
    	public static final int APEATOLLXP = 15;
    	public static final int APEATOLLPOINTS = 135;
    	public static final int WILDERNESSXP = 20;
    	public static final int WILDERNESSPOINTS = 175;
    Open ActionHandler.java
    search for "switch (objectType) {" - Make sure it's under the 'firstClickObject' void.
    underneath that line add:

    Code:
    	// Agility actions
    		
    		case 2295:
    		case 2285:
    		case 2313:
    		case 2312:
    		case 2314:
    		case 2286:
    		case 154:
    		case 4058:
    			c.getAgility().handleGnomeCourse(objectType, obX, obY);
    		break;
    		
    		case 2282:
    		case 2294:
    		case 2284:
    		case 2302:
    		case 3205:
    		case 1948:
    			c.getAgility().handleBarbarianCourse(objectType, obX, obY);
    		break;
    			
    		case 3572:
    		case 3553:
    		case 3565:
    		case 3561:
    		case 3618:
    			c.getAgility().handleBrimhavenCourse(objectType, obX, obY);
    		break;	
    		
    		case 10857:
    		case 10865:
    		case 10860:
    		case 10868:
    		case 10882:
    		case 10886:
    		case 10859:
    		case 10855:
    		case 10856:
    			c.getAgility().handlePyramidCourse(objectType, obX, obY);
    		break;
    		
    		case 12568:
    		case 12570:
    		case 12573:
    		case 12576:
    		case 12578:
    		case 12618:
    			c.getAgility().handleApeatollCourse(objectType, obX, obY);
    		break;
    		
    		case 2288:
    		case 2283:
    		case 2311:
    		case 2297:
    		case 2328:
    			c.getAgility().handleWildernessCourse(objectType, obX, obY);
    		break;
    Open Player.java
    search for "magePoints = 0,"
    next to that int add:

    Code:
     agilityPoints = 0,
    			gnomeStronghold1 = 0, gnomeStronghold2 = 0,gnomeStronghold3 = 0,gnomeStronghold4 = 0,gnomeStronghold5 = 0,gnomeStronghold6 = 0,
    			barbarianOutpost1 = 0, barbarianOutpost2 = 0,barbarianOutpost3 = 0,barbarianOutpost4 = 0,barbarianOutpost5 = 0,barbarianOutpost6 = 0,
    			brimhavenCourse1 = 0, brimhavenCourse2 = 0, brimhavenCourse3 = 0, brimhavenCourse4 = 0,
    			pyramidCourse1 = 0, pyramidCourse2 = 0, pyramidCourse3 = 0, pyramidCourse4 = 0, pyramidCourse5 = 0, pyramidCourse6 = 0, pyramidCourse7 = 0,
    			apeatollCourse1 = 0, apeatollCourse2 = 0, apeatollCourse3 = 0, apeatollCourse4 = 0, apeatollCourse5 = 0,
    Open PlayerSave.java - THERE's 2 PARTS TO THIS STAGE TO PAY ATTENTION.
    search for "p.magePoints = Integer.parseInt(token2);"
    Then underneath the } add:

    Code:
    					// Agility
    					else if (token.equals("agilityPoints")) {
    						p.agilityPoints = Integer.parseInt(token2);
    					}
    					else if (token.equals("gnomeStronghold1")) {
    						p.gnomeStronghold1 = Integer.parseInt(token2);
    					}
    					else if (token.equals("gnomeStronghold2")) {
    						p.gnomeStronghold2 = Integer.parseInt(token2);
    					}
    					else if (token.equals("gnomeStronghold3")) {
    						p.gnomeStronghold3 = Integer.parseInt(token2);
    					}
    					else if (token.equals("gnomeStronghold4")) {
    						p.gnomeStronghold4 = Integer.parseInt(token2);
    					}
    					else if (token.equals("gnomeStronghold5")) {
    						p.gnomeStronghold5 = Integer.parseInt(token2);
    					}
    					else if (token.equals("gnomeStronghold6")) {
    						p.gnomeStronghold6 = Integer.parseInt(token2);
    					}
    					else if (token.equals("barbarianOutpost1")) {
    						p.barbarianOutpost1 = Integer.parseInt(token2);
    					}
    					else if (token.equals("barbarianOutpost2")) {
    						p.barbarianOutpost2 = Integer.parseInt(token2);
    					}
    					else if (token.equals("barbarianOutpost3")) {
    						p.barbarianOutpost3 = Integer.parseInt(token2);
    					}
    					else if (token.equals("barbarianOutpost4")) {
    						p.barbarianOutpost4 = Integer.parseInt(token2);
    					}
    					else if (token.equals("barbarianOutpost5")) {
    						p.barbarianOutpost5 = Integer.parseInt(token2);
    					}
    					else if (token.equals("barbarianOutpost6")) {
    						p.barbarianOutpost6 = Integer.parseInt(token2);
    					}
    					else if (token.equals("brimhavenCourse1")) {
    						p.brimhavenCourse1 = Integer.parseInt(token2);
    					}
    					else if (token.equals("brimhavenCourse2")) {
    						p.brimhavenCourse2 = Integer.parseInt(token2);
    					}
    					else if (token.equals("brimhavenCourse3")) {
    						p.brimhavenCourse3 = Integer.parseInt(token2);
    					}
    					else if (token.equals("brimhavenCourse4")) {
    						p.brimhavenCourse4 = Integer.parseInt(token2);
    					}
    					else if (token.equals("pyramidCourse1")) {
    						p.pyramidCourse1 = Integer.parseInt(token2);
    					}
    					else if (token.equals("pyramidCourse2")) {
    						p.pyramidCourse2 = Integer.parseInt(token2);
    					}
    					else if (token.equals("pyramidCourse3")) {
    						p.pyramidCourse3 = Integer.parseInt(token2);
    					}
    					else if (token.equals("pyramidCourse4")) {
    						p.pyramidCourse4 = Integer.parseInt(token2);
    					}
    					else if (token.equals("pyramidCourse5")) {
    						p.pyramidCourse5 = Integer.parseInt(token2);
    					}
    					else if (token.equals("pyramidCourse6")) {
    						p.pyramidCourse6 = Integer.parseInt(token2);
    					}
    					else if (token.equals("pyramidCourse7")) {
    						p.pyramidCourse7 = Integer.parseInt(token2);
    					}
    					
    					else if (token.equals("apeatollCourse1")) {
    						p.apeatollCourse1 = Integer.parseInt(token2);
    					}
    					else if (token.equals("apeatollCourse2")) {
    						p.apeatollCourse2 = Integer.parseInt(token2);
    					}
    					else if (token.equals("apeatollCourse3")) {
    						p.apeatollCourse3 = Integer.parseInt(token2);
    					}
    					else if (token.equals("apeatollCourse4")) {
    						p.apeatollCourse4 = Integer.parseInt(token2);
    					}
    					else if (token.equals("apeatollCourse5")) {
    						p.apeatollCourse5 = Integer.parseInt(token2);
    					}
    					
    					else if (token.equals("wildernessCourse1")) {
    						p.wildernessCourse1 = Integer.parseInt(token2);
    					}
    					else if (token.equals("wildernessCourse2")) {
    						p.wildernessCourse2 = Integer.parseInt(token2);
    					}
    					else if (token.equals("wildernessCourse3")) {
    						p.wildernessCourse3 = Integer.parseInt(token2);
    					}
    					else if (token.equals("wildernessCourse4")) {
    						p.wildernessCourse4 = Integer.parseInt(token2);
    					}
    then still in PlayerSave.java search for "characterfile.write("magePoints = ", 0, 13);"
    Then underneath the 'characterfile.newLine();' add:

    Code:
    			characterfile.write("agilityPoints = ", 0, 16);
    			characterfile.write(Integer.toString(p.agilityPoin  ts), 0, Integer
    					.toString(p.agilityPoints).length());
    			characterfile.newLine();
    			
    			
    			// Gnome agility course - saves integers to character files
    			characterfile.write("gnomeStronghold1 = ", 0, 19);
    			characterfile.write(Integer.toString(p.gnomeStrong  hold1), 0, Integer.toString(p.gnomeStronghold1).length());
    			characterfile.newLine();
    			characterfile.write("gnomeStronghold2 = ", 0, 19);
    			characterfile.write(Integer.toString(p.gnomeStrong  hold2), 0, Integer.toString(p.gnomeStronghold2).length());
    			characterfile.newLine();
    			characterfile.write("gnomeStronghold3 = ", 0, 19);
    			characterfile.write(Integer.toString(p.gnomeStrong  hold3), 0, Integer.toString(p.gnomeStronghold3).length());
    			characterfile.newLine();
    			characterfile.write("gnomeStronghold4 = ", 0, 19);
    			characterfile.write(Integer.toString(p.gnomeStrong  hold4), 0, Integer.toString(p.gnomeStronghold4).length());
    			characterfile.newLine();
    			characterfile.write("gnomeStronghold5 = ", 0, 19);
    			characterfile.write(Integer.toString(p.gnomeStrong  hold5), 0, Integer.toString(p.gnomeStronghold5).length());
    			characterfile.newLine();
    			characterfile.write("gnomeStronghold6 = ", 0, 19);
    			characterfile.write(Integer.toString(p.gnomeStrong  hold6), 0, Integer.toString(p.gnomeStronghold6).length());
    			characterfile.newLine();
    			
    			// Barbarian agility course - saves integers to character files
    			characterfile.write("barbarianOutpost1 = ", 0, 20);
    			characterfile.write(Integer.toString(p.barbarianOu  tpost1), 0, Integer.toString(p.barbarianOutpost1).length());
    			characterfile.newLine();
    			characterfile.write("barbarianOutpost2 = ", 0, 20);
    			characterfile.write(Integer.toString(p.barbarianOu  tpost2), 0, Integer.toString(p.barbarianOutpost2).length());
    			characterfile.newLine();
    			characterfile.write("barbarianOutpost3 = ", 0, 20);
    			characterfile.write(Integer.toString(p.barbarianOu  tpost3), 0, Integer.toString(p.barbarianOutpost3).length());
    			characterfile.newLine();
    			characterfile.write("barbarianOutpost4 = ", 0, 20);
    			characterfile.write(Integer.toString(p.barbarianOu  tpost4), 0, Integer.toString(p.barbarianOutpost4).length());
    			characterfile.newLine();
    			characterfile.write("barbarianOutpost5 = ", 0, 20);
    			characterfile.write(Integer.toString(p.barbarianOu  tpost5), 0, Integer.toString(p.barbarianOutpost5).length());
    			characterfile.newLine();
    			characterfile.write("barbarianOutpost6 = ", 0, 20);
    			characterfile.write(Integer.toString(p.barbarianOu  tpost6), 0, Integer.toString(p.barbarianOutpost6).length());
    			characterfile.newLine();
    			
    			// Brimhaven agility course - saves integers to character files
    			characterfile.write("brimhavenCourse1 = ", 0, 19);
    			characterfile.write(Integer.toString(p.brimhavenCo  urse1), 0, Integer.toString(p.brimhavenCourse1).length());
    			characterfile.newLine();
    			characterfile.write("brimhavenCourse2 = ", 0, 19);
    			characterfile.write(Integer.toString(p.brimhavenCo  urse2), 0, Integer.toString(p.brimhavenCourse2).length());
    			characterfile.newLine();
    			characterfile.write("brimhavenCourse3 = ", 0, 19);
    			characterfile.write(Integer.toString(p.brimhavenCo  urse3), 0, Integer.toString(p.brimhavenCourse3).length());
    			characterfile.newLine();
    			characterfile.write("brimhavenCourse4 = ", 0, 19);
    			characterfile.write(Integer.toString(p.brimhavenCo  urse4), 0, Integer.toString(p.brimhavenCourse4).length());
    			characterfile.newLine();
    			
    			// Pyramid agility course - saves integers to character files
    			characterfile.write("pyramidCourse1 = ", 0, 17);
    			characterfile.write(Integer.toString(p.pyramidCour  se1), 0, Integer.toString(p.pyramidCourse1).length());
    			characterfile.newLine();
    			characterfile.write("pyramidCourse2 = ", 0, 17);
    			characterfile.write(Integer.toString(p.pyramidCour  se2), 0, Integer.toString(p.pyramidCourse2).length());
    			characterfile.newLine();
    			characterfile.write("pyramidCourse3 = ", 0, 17);
    			characterfile.write(Integer.toString(p.pyramidCour  se3), 0, Integer.toString(p.pyramidCourse3).length());
    			characterfile.newLine();
    			characterfile.write("pyramidCourse4 = ", 0, 17);
    			characterfile.write(Integer.toString(p.pyramidCour  se4), 0, Integer.toString(p.pyramidCourse4).length());
    			characterfile.newLine();
    			characterfile.write("pyramidCourse5 = ", 0, 17);
    			characterfile.write(Integer.toString(p.pyramidCour  se5), 0, Integer.toString(p.pyramidCourse5).length());
    			characterfile.newLine();
    			characterfile.write("pyramidCourse6 = ", 0, 17);
    			characterfile.write(Integer.toString(p.pyramidCour  se6), 0, Integer.toString(p.pyramidCourse6).length());
    			characterfile.newLine();
    			characterfile.write("pyramidCourse7 = ", 0, 17);
    			characterfile.write(Integer.toString(p.pyramidCour  se7), 0, Integer.toString(p.pyramidCourse7).length());
    			characterfile.newLine();
    			
    			// Ape Atoll agility course - saves integers to character files
    			characterfile.write("apeatollCourse1 = ", 0, 18);
    			characterfile.write(Integer.toString(p.apeatollCou  rse1), 0, Integer.toString(p.apeatollCourse1).length());
    			characterfile.newLine();
    			characterfile.write("apeatollCourse2 = ", 0, 18);
    			characterfile.write(Integer.toString(p.apeatollCou  rse2), 0, Integer.toString(p.apeatollCourse2).length());
    			characterfile.newLine();
    			characterfile.write("apeatollCourse3 = ", 0, 18);
    			characterfile.write(Integer.toString(p.apeatollCou  rse3), 0, Integer.toString(p.apeatollCourse3).length());
    			characterfile.newLine();
    			characterfile.write("apeatollCourse4 = ", 0, 18);
    			characterfile.write(Integer.toString(p.apeatollCou  rse4), 0, Integer.toString(p.apeatollCourse4).length());
    			characterfile.newLine();
    			characterfile.write("apeatollCourse5 = ", 0, 18);
    			characterfile.write(Integer.toString(p.apeatollCou  rse5), 0, Integer.toString(p.apeatollCourse5).length());
    			characterfile.newLine();
    			
    			// Wilderness agility course - saves integers to character files
    			characterfile.write("wildernessCourse1 = ", 0, 20);
    			characterfile.write(Integer.toString(p.wildernessC  ourse1), 0, Integer.toString(p.wildernessCourse1).length());
    			characterfile.newLine();
    			characterfile.write("wildernessCourse2 = ", 0, 20);
    			characterfile.write(Integer.toString(p.wildernessC  ourse2), 0, Integer.toString(p.wildernessCourse2).length());
    			characterfile.newLine();
    			characterfile.write("wildernessCourse3 = ", 0, 20);
    			characterfile.write(Integer.toString(p.wildernessC  ourse3), 0, Integer.toString(p.wildernessCourse3).length());
    			characterfile.newLine();
    			characterfile.write("wildernessCourse4 = ", 0, 20);
    			characterfile.write(Integer.toString(p.wildernessC  ourse4), 0, Integer.toString(p.wildernessCourse4).length());
    			characterfile.newLine();
    Open ClickObject.java
    search for "case 1733:
    client.objectYOffset = 2;
    break;"
    Then underneath it add:

    Code:
    				// Agility object distances
    				case 2282:
    				case 3565:
    				case 10882:
    				case 10886:
    				case 10859:
    				case 2283:
    					client.objectDistance = 5;
    					break;
    Open ObjectManager.java
    search for "public void loadCustomSpawns(Client client) {"
    Then underneath it add:

    Code:
    		// Agility object spawns
    		client.getPA().checkObjectSpawn(724, 2772, 9546, 0, 10);
    		client.getPA().checkObjectSpawn(724, 2772, 9557, 0, 10);
    		client.getPA().checkObjectSpawn(724, 2783, 9557, 0, 10);
    		client.getPA().checkObjectSpawn(724, 2783, 9568, 0, 10);
    		client.getPA().checkObjectSpawn(724, 2783, 9579, 0, 10);
    		client.getPA().checkObjectSpawn(724, 2794, 9579, 0, 10);
    		client.getPA().checkObjectSpawn(724, 2794, 9590, 0, 10);
    		client.getPA().checkObjectSpawn(-1, 2761, 9546, 0, 10);
    		client.getPA().checkObjectSpawn(3618, 2761, 9547, 0, 10);
    		client.getPA().checkObjectSpawn(4769, 2804, 9587, 0, 10);
    		client.getPA().checkObjectSpawn(4769, 2805, 9587, 0, 10);
    		client.getPA().checkObjectSpawn(4769, 2806, 9587, 0, 10);
    		client.getPA().checkObjectSpawn(4769, 2792, 9592, 0, 10);
    		client.getPA().checkObjectSpawn(4769, 2798, 9579, 0, 10);
    		client.getPA().checkObjectSpawn(4769, 2794, 9575, 0, 10);
    		client.getPA().checkObjectSpawn(4769, 2779, 9579, 0, 10);
    		client.getPA().checkObjectSpawn(4769, 2783, 9581, 0, 10);
    		client.getPA().checkObjectSpawn(4769, 2779, 9568, 0, 10);
    		client.getPA().checkObjectSpawn(4769, 2785, 9568, 0, 10);
    		client.getPA().checkObjectSpawn(4769, 2783, 9553, 0, 10);
    		client.getPA().checkObjectSpawn(4769, 2790, 9557, 0, 10);
    		client.getPA().checkObjectSpawn(4769, 2772, 9559, 0, 10);
    		client.getPA().checkObjectSpawn(4769, 2770, 9557, 0, 10);
    		client.getPA().checkObjectSpawn(4769, 2773, 9546, 0, 10);
    		client.getPA().checkObjectSpawn(4769, 2761, 9548, 0, 10);
    		client.getPA().checkObjectSpawn(4769, 2770, 9556, 0, 10);
    		client.getPA().checkObjectSpawn(4769, 2770, 9558, 0, 10);
    		client.getPA().checkObjectSpawn(4769, 2772, 9544, 0, 10);
    		client.getPA().checkObjectSpawn(4769, 2792, 9591, 0, 10);
    		client.getPA().checkObjectSpawn(4769, 2793, 9592, 0, 10);
    Open Agility.java
    DELETE EVERYTHING FROM THE FILE AND REPLACE IT WITH THE FOLLOWING:

    Code:
    package server.model.players.skills;
    
    import server.model.players.Client;
    import server.model.objects.Object;
    import server.Config;
    
    /**
     * Agility.java
     * 
     * @author Sanity
     * Updated by Auto Talker of Rune-Server
     * 
     **/
    
    public class Agility {
    
    	private Client c;
    
    	public Agility(Client c) {
    		this.setC(c);
    	}
    
    	public void handleGnomeCourse(int objectType, int objectX, int objectY) {
    		c.clickObjectType = 0;
    		switch (objectType) {
    		
    		case 2295:  // object#1
    			if (c.absX == 2474 && c.absY == 3436)
    			{
    				if (c.playerLevel[16] < 1)
    				{
    					c.sendMessage("You require an agility level of 1 to do this.");
    					return;
    				}
    				else
    				{
    					c.getPA().walkTo(0, -7);
    					c.gnomeStronghold1 = 1;
    					c.getPA().addSkillXP(Config.GNOMEXP * Config.AGILITY_EXPERIENCE, c.playerAgility);
    					c.startAnimation(762);					
    				}
    			}
    		break;
    		
    		case 2285:  // object#2
    			if (c.absY == 3426)
    			{
    				if (c.playerLevel[16] < 1)
    				{
    					c.sendMessage("You require an agility level of 1 to do this.");
    					return;
    				}
    				else
    				{
    					c.getPA().movePlayer(2474, 3424, 1);
    					c.gnomeStronghold2 = 1;
    					c.getPA().addSkillXP(Config.GNOMEXP * Config.AGILITY_EXPERIENCE, c.playerAgility);	
    					c.startAnimation(846);
    				}
    			}
    		break;
    		
    		case 2313:  // object#3
    			if (c.absX == 2474 && c.absY == 3422 || c.absX == 2473 && c.absY == 3423)
    			{
    				if (c.playerLevel[16] < 1)
    				{
    					c.sendMessage("You require an agility level of 1 to do this.");
    					return;
    				}
    				else
    				{
    					c.getPA().movePlayer(2473, 3420, 2);
    					c.gnomeStronghold3 = 1;
    					c.getPA().addSkillXP(Config.GNOMEXP * Config.AGILITY_EXPERIENCE, c.playerAgility);	
    					c.startAnimation(846);
    				}
    			}
    		break;
    		
    		case 2312:  // object#4
    			if (c.absX == 2477 && c.absY == 3420)
    			{
    				if (c.playerLevel[16] < 1)
    				{
    					c.sendMessage("You require an agility level of 1 to do this.");
    					return;
    				}
    				else
    				{
    					c.getPA().walkTo(6, 0);
    					c.gnomeStronghold4 = 1;
    					c.getPA().addSkillXP(Config.GNOMEXP * Config.AGILITY_EXPERIENCE, c.playerAgility);
    					c.startAnimation(762);
    				}
    			}
    		break;
    		
    		case 2314:  // object#5
    			if (c.absX == 2485 && c.absY == 3419 || c.absX == 2486 && c.absY == 3420)
    			{
    				if (c.playerLevel[16] < 1)
    				{
    					c.sendMessage("You require an agility level of 1 to do this.");
    					return;
    				}
    				else
    				{
    					c.getPA().movePlayer(2486, 3420, 0);
    					c.gnomeStronghold5 = 1;
    					c.getPA().addSkillXP(Config.GNOMEXP * Config.AGILITY_EXPERIENCE, c.playerAgility);	
    					c.startAnimation(846);
    				}
    			}
    		break;
    		
    		case 2286:  // object#6
    			if (c.absY == 3425)
    			{
    				if (c.playerLevel[16] < 1)
    				{
    					c.sendMessage("You require an agility level of 1 to do this.");
    					return;
    				}
    				else
    				{
    					c.getPA().movePlayer(2485, 3427, 0);
    					c.gnomeStronghold6 = 1;
    					c.getPA().addSkillXP(Config.GNOMEXP * Config.AGILITY_EXPERIENCE, c.playerAgility);
    					c.startAnimation(846);
    				}
    			}
    		break;
    		
    		case 154:  // object#7
    		if (c.absX == 2483 && c.absY == 3431)
    		{
    			c.getPA().walkTo(1, -1);
    		}
    		if (c.absX == 2485 && c.absY == 3431)
    		{
    			c.getPA().walkTo(-1, -1);
    		}
    		
    			if (c.absX == 2484 && c.absY == 3430)
    			{
    				if (c.playerLevel[16] < 1)
    				{
    					c.sendMessage("You require an agility level of 1 to do this.");
    					return;
    				}
    				else
    				{
    					c.startAnimation(749);
    					c.foodDelay = System.currentTimeMillis();
    					c.getPA().movePlayer(2484, 3437, 0);
    					if (c.gnomeStronghold1 >= 1 && c.gnomeStronghold2 >= 1 && c.gnomeStronghold3 >= 1 && c.gnomeStronghold4 >= 1 && c.gnomeStronghold5 >= 1 && c.gnomeStronghold6 >= 1)
    					{c.agilityPoints += Config.GNOMEPOINTS; c.sendMessage("You were awarded " + Config.GNOMEPOINTS + " Agility points, which brings your total to " + c.agilityPoints + ".");}
    					c.gnomeStronghold1 = 0;
    					c.gnomeStronghold2 = 0;
    					c.gnomeStronghold3 = 0;
    					c.gnomeStronghold4 = 0;
    					c.gnomeStronghold5 = 0;
    					c.gnomeStronghold6 = 0;
    					c.getPA().addSkillXP(Config.GNOMEXP * Config.AGILITY_EXPERIENCE, c.playerAgility);	
    					
    				}
    			}
    		break;
    			
    		case 4058:	
    		if (c.absX == 2486 && c.absY == 3431)
    		{
    			c.getPA().walkTo(1, -1);
    		}
    		if (c.absX == 2488 && c.absY == 3431)
    		{
    			c.getPA().walkTo(-1, -1);
    		}
    		
    			if (c.absX == 2487 && c.absY == 3430)
    			{
    				if (c.playerLevel[16] < 1)
    				{
    					c.sendMessage("You require an agility level of 1 to do this.");
    					return;
    				}
    				else
    				{
    					c.startAnimation(749);
    					c.foodDelay = System.currentTimeMillis();
    					c.getPA().movePlayer(2487, 3437, 0);
    					if (c.gnomeStronghold1 >= 1 && c.gnomeStronghold2 >= 1 && c.gnomeStronghold3 >= 1 && c.gnomeStronghold4 >= 1 && c.gnomeStronghold5 >= 1 && c.gnomeStronghold6 >= 1)
    					{c.agilityPoints += Config.GNOMEPOINTS; c.sendMessage("You were awarded " + Config.GNOMEPOINTS + " Agility points, which brings your total to " + c.agilityPoints + ".");}
    					c.gnomeStronghold1 = 0;
    					c.gnomeStronghold2 = 0;
    					c.gnomeStronghold3 = 0;
    					c.gnomeStronghold4 = 0;
    					c.gnomeStronghold5 = 0;
    					c.gnomeStronghold6 = 0;
    					c.getPA().addSkillXP(Config.GNOMEXP * Config.AGILITY_EXPERIENCE, c.playerAgility);	
    					
    				}
    			}
    		break;
    		
    		
    	}
    }
    
    
    	public void handleBarbarianCourse(int objectType, int objectX, int objectY) {
    		c.clickObjectType = 0;
    		switch (objectType) {
    		
    		case 2282:  // object#1
    			if (c.absY == 3554)
    			{
    				if (c.playerLevel[16] < 30)
    				{
    					c.sendMessage("You require an agility level of 30 to do this.");
    					return;
    				}
    				else
    				{
    					c.getPA().movePlayer(2551, 3549, 0);
    					c.barbarianOutpost1 = 1;
    					c.getPA().addSkillXP(Config.BARBARIANXP * Config.AGILITY_EXPERIENCE, c.playerAgility);
    					c.startAnimation(751);				
    				}
    			}
    		break;
    		
    		case 2294:  // object#2
    		
    		if (c.absX == 2550 && c.absY == 3547)
    		{
    			c.getPA().walkTo(1, -1);
    		}
    		if (c.absX == 2550 && c.absY == 3545)
    		{
    			c.getPA().walkTo(1, 1);
    		}
    		
    			if (c.absX == 2551 && c.absY == 3546)
    			{
    				if (c.playerLevel[16] < 30)
    				{
    					c.sendMessage("You require an agility level of 30 to do this.");
    					return;
    				}
    				else
    				{
    					c.getPA().walkTo(-10, 0);
    					c.barbarianOutpost2 = 1;
    					c.getPA().addSkillXP(Config.BARBARIANXP * Config.AGILITY_EXPERIENCE, c.playerAgility);
    					c.startAnimation(762);				
    				}
    			}
    		break;
    		
    		case 2284:  // object#3
    			if (c.absX == 2539)
    			{
    				if (c.playerLevel[16] < 30)
    				{
    					c.sendMessage("You require an agility level of 30 to do this.");
    					return;
    				}
    				else
    				{
    					c.getPA().movePlayer(2538, 3546, 1);
    					c.barbarianOutpost3 = 1;
    					c.getPA().addSkillXP(Config.BARBARIANXP * Config.AGILITY_EXPERIENCE, c.playerAgility);
    					c.startAnimation(846);				
    				}
    			}
    		break;
    		
    		case 2302:  // object#4
    			if (c.absY == 3547)
    			{
    				if (c.playerLevel[16] < 30)
    				{
    					c.sendMessage("You require an agility level of 30 to do this.");
    					return;
    				}
    				else
    				{
    					c.getPA().walkTo(-4, 0);
    					c.barbarianOutpost4 = 1;
    					c.getPA().addSkillXP(Config.BARBARIANXP * Config.AGILITY_EXPERIENCE, c.playerAgility);
    					c.startAnimation(762);				
    				}
    			}
    		break;
    		
    		case 3205:
    			if (c.absX == 2532 && c.heightLevel == 1)
    			{
    					c.getPA().movePlayer(2532, 3546, 0);
    					c.startAnimation(846);				
    			}
    		break;
    		
    		case 1948:  // object#5
    			if (c.absX == 2536 && c.absY == 3554)
    			{
    				c.getPA().walkTo(-1, -1);
    			}	
    			
    			if (c.absX == 2536 && c.absY == 3552)
    			{
    				c.getPA().walkTo(-1, 1);
    			}	
    			
    			
    			if (c.absX == 2535 && c.absY == 3553)
    			{
    				if (c.playerLevel[16] < 30)
    				{
    					c.sendMessage("You require an agility level of 30 to do this.");
    					return;
    				}
    				else
    				{
    					c.getPA().walkTo(3, 0);
    					c.barbarianOutpost5 = 1;
    					c.getPA().addSkillXP(Config.BARBARIANXP * Config.AGILITY_EXPERIENCE, c.playerAgility);
    					c.startAnimation(839);				
    				}
    			}
    			if (c.absX == 2538 && c.absY == 3553) // Object #6
    			{
    				if (c.playerLevel[16] < 30)
    				{
    					c.sendMessage("You require an agility level of 30 to do this.");
    					return;
    				}
    				else
    				{
    					c.getPA().walkTo(3, 0);
    					c.barbarianOutpost6 = 1;
    					c.getPA().addSkillXP(Config.BARBARIANXP * Config.AGILITY_EXPERIENCE, c.playerAgility);
    					c.startAnimation(839);				
    				}
    			}
    			if (c.absX == 2541 && c.absY == 3553) // Object #7
    			{
    				if (c.playerLevel[16] < 30)
    				{
    					c.sendMessage("You require an agility level of 30 to do this.");
    					return;
    				}
    				else	
    				{
    					c.getPA().walkTo(2, 0);
    					c.startAnimation(839);
    					c.foodDelay = System.currentTimeMillis();
    					if (c.barbarianOutpost1 >= 1 && c.barbarianOutpost2 >= 1 && c.barbarianOutpost3 >= 1 && c.barbarianOutpost4 >= 1 && c.barbarianOutpost5 >= 1 && c.barbarianOutpost6 >= 1)
    					{c.agilityPoints += Config.BARBARIANPOINTS; c.sendMessage("You were awarded " + Config.BARBARIANPOINTS + " Agility points, which brings your total to " + c.agilityPoints + ".");}
    					c.barbarianOutpost1 = 0;
    					c.barbarianOutpost2 = 0;
    					c.barbarianOutpost3 = 0;
    					c.barbarianOutpost4 = 0;
    					c.barbarianOutpost5 = 0;
    					c.barbarianOutpost6 = 0;
    					c.getPA().addSkillXP(Config.BARBARIANXP * Config.AGILITY_EXPERIENCE, c.playerAgility);	
    					
    				}
    			}
    			break;
    
    		
    		
    		
    	}
    }
    
    		public void handleBrimhavenCourse(int objectType, int objectX, int objectY) {
    		c.clickObjectType = 0;
    		switch (objectType) {
    
    		case 3572:
    			if (c.absX == 2803 && c.absY == 9590) // Object #1A
    			{
    				if (c.playerLevel[16] < 50)
    				{
    					c.sendMessage("You require an agility level of 50 to do this.");
    					return;
    				}
    				else
    				{
    					c.getPA().walkTo(-7, 0);
    					c.brimhavenCourse1 = 1;
    					c.getPA().addSkillXP(Config.BRIMHAVENXP * Config.AGILITY_EXPERIENCE, c.playerAgility);
    					c.startAnimation(762);				
    				}
    			}
    		break;
    			
    		case 3553:
    			if (c.absX == 2794 && c.absY == 9588) // Object #2A
    			{
    					c.getPA().walkTo(0, -7);
    					c.brimhavenCourse2 = 1;
    					c.getPA().addSkillXP(Config.BRIMHAVENXP * Config.AGILITY_EXPERIENCE, c.playerAgility);
    					c.startAnimation(762);				
    			}
    		break;
    			
    		case 3565:
    			if (c.absX == 2783 && c.absY == 9564) // Object #3A
    			{
    					c.getPA().walkTo(0, -3);
    					c.brimhavenCourse3 = 1;
    					c.getPA().addSkillXP(Config.BRIMHAVENXP * Config.AGILITY_EXPERIENCE, c.playerAgility);
    					c.startAnimation(839);				
    			}
    		break;
    		
    		case 3561:
    			if (c.absX == 2770 && c.absY == 9546) // Object #4A
    			{
    					c.getPA().walkTo(-7, 0);
    					c.brimhavenCourse4 = 1;
    					c.getPA().addSkillXP(Config.BRIMHAVENXP * Config.AGILITY_EXPERIENCE, c.playerAgility);
    					c.startAnimation(762);				
    			}
    		break;
    		
    		
    		case 3618:
    			if (c.absX > 2759 && c.absX < 2763 && c.absY > 9544 && c.absY < 9548) // Object #4A
    			{
    					c.getPA().startTeleport2(2805, 9589, 3);
    					c.foodDelay = System.currentTimeMillis();
    					if (c.brimhavenCourse1 >= 1 && c.brimhavenCourse2 >= 1 && c.brimhavenCourse3 >= 1 && c.brimhavenCourse4 >= 1)
    					{c.agilityPoints += Config.BRIMHAVENPOINTS; c.sendMessage("You were awarded " + Config.BRIMHAVENPOINTS + " Agility points, which brings your total to " + c.agilityPoints + ".");}
    					c.brimhavenCourse1 = 0;
    					c.brimhavenCourse2 = 0;
    					c.brimhavenCourse3 = 0;
    					c.brimhavenCourse4 = 0;
    					c.getPA().addSkillXP(Config.BRIMHAVENXP * Config.AGILITY_EXPERIENCE, c.playerAgility);	
    									
    			}
    		break;
    
    			}
    		}
    		
    		
    		
    		public void handlePyramidCourse(int objectType, int objectX, int objectY) {
    		c.clickObjectType = 0;
    		switch (objectType) {
    			
    			case 10857:
    			if (c.absY == 2830)
    			{
    			if (c.playerLevel[16] < 60)
    				{
    					c.sendMessage("You require an agility level of 60 to do this.");
    					return;
    				}
    				else
    				{
    					c.getPA().movePlayer(c.absX, c.absY + 3, 1);
    					//c.brimhavenCourse1 = 1;
    					c.getPA().addSkillXP(Config.PYRAMIDXP * Config.AGILITY_EXPERIENCE, c.playerAgility);
    					c.startAnimation(846);				
    				}	
    			}
    			if (c.absX == 3357 && c.absY == 2832) // Object #1
    			{
    					c.getPA().movePlayer(3043, 4697, 3);
    					c.pyramidCourse1 = 1;
    					c.getPA().addSkillXP(Config.PYRAMIDXP * Config.AGILITY_EXPERIENCE, c.playerAgility);
    					c.startAnimation(839);			
    					
    			}
    			break;
    			
    			case 10865:
    			if (c.absY == 2848) // Object #2
    			{
    					c.getPA().walkTo(0, 2);
    					c.pyramidCourse2 = 1;
    					c.getPA().addSkillXP(Config.PYRAMIDXP * Config.AGILITY_EXPERIENCE, c.playerAgility);
    					c.startAnimation(846);				
    					
    			}
    			break;
    			
    			case 10860:
    			if (c.absX == 3363 && c.absY == 2852) 
    			{
    					c.getPA().walkTo(0, -1);			
    					
    			}
    			if (c.absX == 3363 && c.absY == 2851)  // Object #3
    			{
    					c.getPA().walkTo(5, 0);
    					c.pyramidCourse3 = 1;
    					c.getPA().addSkillXP(Config.PYRAMIDXP * Config.AGILITY_EXPERIENCE, c.playerAgility);
    					c.startAnimation(762);			
    					
    			}
    			break;
    			
    			case 10868:
    			if (c.absX == 3374 && c.absY == 2845) 
    			{
    					c.getPA().walkTo(1, 0);			
    					
    			}
    			if (c.absX == 3375 && c.absY == 2846) 
    			{
    					c.getPA().walkTo(0, -1);			
    					
    			}
    			if (c.absX == 3375 && c.absY == 2845)  // Object #4
    			{
    					c.getPA().walkTo(0, -5);
    					c.pyramidCourse4 = 1;
    					c.getPA().addSkillXP(Config.PYRAMIDXP * Config.AGILITY_EXPERIENCE, c.playerAgility);
    					c.startAnimation(762);			
    					
    			}
    			break;
    			
    			case 10882:
    			if (c.absX == 3372)  // Object #5
    			{
    					c.getPA().walkTo(-5, 0);
    					c.pyramidCourse5 = 1;
    					c.getPA().addSkillXP(Config.PYRAMIDXP * Config.AGILITY_EXPERIENCE, c.playerAgility);
    					c.startAnimation(1115);			
    					
    			}
    			break;
    			
    			case 10886:
    			if (c.absX == 3364)  // Object #6
    			{
    					c.getPA().walkTo(-5, 0);
    					c.pyramidCourse6 = 1;
    					c.getPA().addSkillXP(Config.PYRAMIDXP * Config.AGILITY_EXPERIENCE, c.playerAgility);
    					c.startAnimation(1115);			
    					
    			}
    			break;
    
    			case 10859:
    			if (c.absY == 4699)  // Object #7
    			{
    					c.getPA().walkTo(0, -3);
    					c.pyramidCourse7 = 1;
    					c.getPA().addSkillXP(Config.PYRAMIDXP * Config.AGILITY_EXPERIENCE, c.playerAgility);
    					c.startAnimation(1115);			
    					
    			}
    			break;
    			
    			case 10855:
    			case 10856:
    				c.getPA().movePlayer(3364, 2830, 0);
    					c.foodDelay = System.currentTimeMillis();
    					if (c.pyramidCourse1 >= 1 && c.pyramidCourse2 >= 1 && c.pyramidCourse3 >= 1 && c.pyramidCourse4 >= 1 && c.pyramidCourse5 >= 1 && c.pyramidCourse6 >= 1 && c.pyramidCourse7 >= 1)
    					{c.agilityPoints += Config.PYRAMIDPOINTS; c.sendMessage("You were awarded " + Config.PYRAMIDPOINTS + " Agility points, which brings your total to " + c.agilityPoints + ".");}
    					c.pyramidCourse1 = 0;
    					c.pyramidCourse2 = 0;
    					c.pyramidCourse3 = 0;
    					c.pyramidCourse4 = 0;
    					c.pyramidCourse5 = 0;
    					c.pyramidCourse6 = 0;
    					c.pyramidCourse7 = 0;
    					c.getPA().addSkillXP(Config.PYRAMIDXP * Config.AGILITY_EXPERIENCE, c.playerAgility);			
    					c.startAnimation(846);
    			break;
    			
    			
    			
    			
    			
    			}
    		
    		}
    
    
    		
    	public void handleApeatollCourse(int objectType, int objectX, int objectY) {
    		c.clickObjectType = 0;
    		switch (objectType) {
    			
    			
    		case 12568:
    			if (c.absX == 2755 && c.absY == 2742) // Object #1
    			{
    				if (c.playerLevel[16] < 75)
    				{
    					c.sendMessage("You require an agility level of 75 to do this.");
    					return;
    				}
    				else
    				{
    					c.getPA().walkTo(-2, 0);
    					c.apeatollCourse1 = 1;
    					c.getPA().addSkillXP(Config.APEATOLLXP * Config.AGILITY_EXPERIENCE, c.playerAgility);
    					c.startAnimation(2750);				
    				}
    			}
    		break;
    			
    			
    			
    			
    		case 12570:
    			if (c.absX == 2753 && c.absY == 2742) // Object #2
    			{
    
    					c.getPA().movePlayer(2753, 2742, 2);
    					c.apeatollCourse2 = 1;
    					c.getPA().addSkillXP(Config.APEATOLLXP * Config.AGILITY_EXPERIENCE, c.playerAgility);
    					c.startAnimation(846);				
    
    			}
    		break;	
    		
    		case 12573: // Object #3
    					c.getPA().movePlayer(2747, 2741, 0);
    					c.apeatollCourse3 = 1;
    					c.getPA().addSkillXP(Config.APEATOLLXP * Config.AGILITY_EXPERIENCE, c.playerAgility);
    					c.startAnimation(744);				
    		break;
    		
    		case 12576: // Object #4
    					c.getPA().walkTo(-4, 0);
    					c.apeatollCourse4 = 1;
    					c.getPA().addSkillXP(Config.APEATOLLXP * Config.AGILITY_EXPERIENCE, c.playerAgility);
    					c.startAnimation(840);				
    		break;
    		
    		case 12578: // Object #5
    					c.getPA().walkTo(4, 0);
    					c.apeatollCourse5 = 1;
    					c.getPA().addSkillXP(Config.APEATOLLXP * Config.AGILITY_EXPERIENCE, c.playerAgility);
    					c.startAnimation(751);				
    		break;
    		
    		case 12618:
    					c.getPA().movePlayer(2771, 2747, 0);
    					c.foodDelay = System.currentTimeMillis();
    					if (c.apeatollCourse1 >= 1 && c.apeatollCourse2 >= 1 && c.apeatollCourse3 >= 1 && c.apeatollCourse4 >= 1 && c.apeatollCourse5 >= 1)
    					{c.agilityPoints += Config.APEATOLLPOINTS; c.sendMessage("You were awarded " + Config.APEATOLLPOINTS + " Agility points, which brings your total to " + c.agilityPoints + ".");}
    					c.apeatollCourse1 = 0;
    					c.apeatollCourse2 = 0;
    					c.apeatollCourse3 = 0;
    					c.apeatollCourse4 = 0;
    					c.apeatollCourse5 = 0;
    					c.getPA().addSkillXP(Config.APEATOLLXP * Config.AGILITY_EXPERIENCE, c.playerAgility);			
    					c.startAnimation(744);
    
    
    		break;
    
    			}
    		
    		}
    		
    
    		
    	public void handleWildernessCourse(int objectType, int objectX, int objectY) {
    		c.clickObjectType = 0;
    		switch (objectType) {
    			
    		case 2288:
    		if (c.absX == 3005 && c.absY == 3938)
    		{
    			c.getPA().walkTo(-1, -1);
    		}
    		if (c.absX == 3003 && c.absY == 3938)
    		{
    			c.getPA().walkTo(1, -1);
    		}
    			if (c.absX == 3004 && c.absY == 3937) // Object #1
    			{
    				if (c.playerLevel[16] < 90)
    				{
    					c.sendMessage("You require an agility level of 90 to do this.");
    					return;
    				}
    				else
    				{
    					c.getPA().movePlayer(3004, 3950, 0);
    					c.wildernessCourse1 = 1;
    					c.getPA().addSkillXP(Config.WILDERNESSXP * Config.AGILITY_EXPERIENCE, c.playerAgility);
    					c.startAnimation(749);				
    				}
    			}
    		break;
    		
    		case 2283:
    		if (c.absX == 3006 && c.absY == 3953)
    		{
    			c.getPA().walkTo(-1, 0);
    		}
    		if (c.absX == 3004 && c.absY == 3953)
    		{
    			c.getPA().walkTo(1, 0);
    		}
    			if (c.absX == 3005 && c.absY == 3953) // Object #2
    			{
    				if (c.playerLevel[16] < 90)
    				{
    					c.sendMessage("You require an agility level of 90 to do this.");
    					return;
    				}
    				else
    				{
    					c.getPA().movePlayer(3005, 3958, 0);
    					c.wildernessCourse2 = 1;
    					c.getPA().addSkillXP(Config.WILDERNESSXP * Config.AGILITY_EXPERIENCE, c.playerAgility);
    					c.startAnimation(751);				
    				}
    			}
    		break;
    		
    		
    		case 2311:
    			if (c.absX == 3002 && c.absY == 3960) // Object #3
    			{
    				if (c.playerLevel[16] < 90)
    				{
    					c.sendMessage("You require an agility level of 90 to do this.");
    					return;
    				}
    				else
    				{
    					c.getPA().walkTo(-6, 0);
    					c.wildernessCourse3 = 1;
    					c.getPA().addSkillXP(Config.WILDERNESSXP * Config.AGILITY_EXPERIENCE, c.playerAgility);
    					c.startAnimation(762);				
    				}
    			}
    		break;
    		
    		case 2297:
    		if (c.absX == 3001 && c.absY == 3946)
    		{
    			c.getPA().walkTo(1, -1);
    		}
    		if (c.absX == 3001 && c.absY == 3944)
    		{
    			c.getPA().walkTo(1, 1);
    		}
    		if (c.absX == 3002 && c.absY == 3945) // Object #4
    			{
    				if (c.playerLevel[16] < 90)
    				{
    					c.sendMessage("You require an agility level of 90 to do this.");
    					return;
    				}
    				else
    				{
    					c.getPA().walkTo(-8, 0);
    					c.wildernessCourse4 = 1;
    					c.getPA().addSkillXP(Config.WILDERNESSXP * Config.AGILITY_EXPERIENCE, c.playerAgility);
    					c.startAnimation(762);				
    				}
    			}
    		break;
    		
    		
    		case 2328:
    					c.getPA().movePlayer(2995, 3933, 0);
    					c.foodDelay = System.currentTimeMillis();
    					if (c.wildernessCourse1 >= 1 && c.wildernessCourse2 >= 1 && c.wildernessCourse3 >= 1 && c.wildernessCourse4 >= 1)
    					{c.agilityPoints += Config.WILDERNESSPOINTS; c.sendMessage("You were awarded " + Config.WILDERNESSPOINTS + " Agility points, which brings your total to " + c.agilityPoints + ".");}
    					c.wildernessCourse1 = 0;
    					c.wildernessCourse2 = 0;
    					c.wildernessCourse3 = 0;
    					c.wildernessCourse4 = 0;
    					c.getPA().addSkillXP(Config.WILDERNESSXP * Config.AGILITY_EXPERIENCE, c.playerAgility);			
    					c.startAnimation(846);
    
    
    		break;
    		
    			
    			
    		}
    	}
    
    
    
    	public Client getC() {
    		return c;
    	}
    
    	public void setC(Client c) {
    		this.c = c;
    	}
    }



    Spoiler for Setting up the agility shop and points system:

    Files you'll need to edit:
    Data\cfg\shops.cfg
    src\server\model\players\ActionHandler.java
    src\server\model\players\packets\ClickItem.java
    src\server\model\shops\ShopAssistant.java




    Open shops.cfg and add:

    Code:
    shop = 34	Agility_shop	2	2	4447	250900	88	250900	10069	250900	10071	250900
    Open ActionHandler.java and search for "public void secondClickNpc(int i) {"
    after 'switch (i) {' add

    Code:
    		// Agility
    		case 437:
    			c.sendMessage("You currently have " + c.agilityPoints + " agility points.");
    			c.getShops().openShop(34);
    			break;

    Open ClickItem.java and search for
    "c.getPA().fillPouch(pouch);
    return;
    }"

    then after add

    Code:
    		if (itemId == 4447) {
    			c.getItems().deleteItem2(4447, 1);
    			c.getPA().addSkillXP(150000, c.playerAgility);
    			c.startAnimation(712);	
    			c.sendMessage("You rub the lamp and get 150,000 agility experience.");
    		}


    Now open ShopAssistant.java
    Search for "String ShopAdd = "";" - the first one you find in the file from the top.
    then underneath add:
    Code:
    		// Agility
    		if (c.myShopId == 34) {
    			c.sendMessage(c.getItems().getItemName(removeId)
    					+ ": currently costs " + getAgilityItemValue(removeId)
    					+ " agility points.");
    			return;
    		}
    Search for "public int getSpecialItemValue(int id) {"
    then ABOVE this add:
    Code:
    	// Agility
    	public int getAgilityItemValue(int id) {
    		switch (id) {
    		case 4447: // Antique lamp costing 500 agility points
    		return 500;
    		case 88: 
    		return 5000;
    		case 10069: 
    		return 10000;
    		case 10071: 
    		return 25000;
    		}
    		return 5000; // set this high incase you add something to the shop but forget to set the price
    	}
    Search for "public void sellToShopPrice(int removeId, int removeSlot) {"
    then underneath add this:

    Code:
    		// Agility
    		if (c.myShopId == 34) {
    					c.sendMessage("You can't sell items to this store.");
    					return;
    				}
    Search for "public boolean sellItem(int itemID, int fromSlot, int amount) {"
    then underneath add this:

    Code:
    		// Agility
    		if (c.myShopId == 34) {
    					c.sendMessage("You can't sell "
    							+ c.getItems().getItemName(itemID).toLowerCase()
    							+ " to this store.");
    					return false;
    				}
    Search for "public boolean buyItem(int itemID, int fromSlot, int amount) {"
    then underneath add this:

    Code:
    		// Agility
    		if (c.myShopId == 34) {
    			handleOtherShop(itemID);
    			return false;
    		}
    Search for "|| c.myShopId != 31"
    then next to it add this:

    Code:
     ||  c.myShopId != 34
    Search for "public void handleOtherShop(int itemID) {"
    then underneath add this:

    Code:
    		// Agility
    		if (c.myShopId == 34) {
    			if (c.agilityPoints >= getAgilityItemValue(itemID)) {
    				if (c.getItems().freeSlots() > 0) {
    					c.agilityPoints -= getAgilityItemValue(itemID);
    					c.getItems().addItem(itemID, 1);
    					c.getItems().resetItems(3823);
    				}
    			} else {
    				c.sendMessage("You do not have enough agility points to buy this item.");
    			}
    		}

    Reply With Quote  
     

  2. Thankful user:


  3. #2  
    Software Developer

    Tyrant's Avatar
    Join Date
    Jul 2013
    Age
    24
    Posts
    1,562
    Thanks given
    678
    Thanks received
    423
    Rep Power
    1060
    for a moment i thought this was a bumped thread from 2010
    Reply With Quote  
     


  4. #3  
    'Slutty McFur'

    Owain's Avatar
    Join Date
    Sep 2014
    Age
    26
    Posts
    2,894
    Thanks given
    2,360
    Thanks received
    2,200
    Rep Power
    5000
    Thanks for the contribution, hopefully you learned something while doing this. (:


    Spoiler for wat:
    Attached image
    Attached image

    Attached image


    Reply With Quote  
     

  5. Thankful user:


  6. #4  
    Registered Member
    Polish Civil's Avatar
    Join Date
    May 2010
    Age
    28
    Posts
    1,345
    Thanks given
    484
    Thanks received
    191
    Rep Power
    463
    Ah memories, thanks.

    How do i run the server?


    Reply With Quote  
     

  7. #5  
    Registered Member
    Join Date
    Jul 2011
    Posts
    90
    Thanks given
    3
    Thanks received
    7
    Rep Power
    11
    Quote Originally Posted by Polish Civil View Post
    Ah memories, thanks.

    How do i run the server?

    Yeah I like going back to PI once or twice a year

    Server: uppit .com/jmuzoxjltxlo
    Client: uppit .com/st8ib4blfm68

    ^ Sorry the fileshare website URL is blocked
    Reply With Quote  
     

  8. Thankful user:


  9. #6  
    Community Veteran


    Arch337's Avatar
    Join Date
    Sep 2008
    Posts
    2,950
    Thanks given
    210
    Thanks received
    349
    Rep Power
    1376
    I saw the first obstacle's animation and went like, "How was this an improvement?".


    "A fail act is something you do regular, but a dumb act is something you can learn from"
    Spoiler for Problem?:
    Reply With Quote  
     

  10. #7  
    COMMING SOON

    Fluxious's Avatar
    Join Date
    Jan 2019
    Posts
    388
    Thanks given
    195
    Thanks received
    198
    Rep Power
    502
    Thanks for your tutorial
    Attached image
    Reply With Quote  
     

  11. #8  
    Registered Member
    Join Date
    Jul 2011
    Posts
    90
    Thanks given
    3
    Thanks received
    7
    Rep Power
    11
    Quote Originally Posted by arch337 View Post
    I saw the first obstacle's animation and went like, "How was this an improvement?".
    I'll be updating it as I go - I only added the animations so I don't have to do it later, and I can just edit the startAnimation function
    Reply With Quote  
     


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. Auto talker Tutorial 2008 with video!
    By Ken in forum Application Development
    Replies: 2
    Last Post: 02-17-2010, 12:39 PM
  2. Client auto talker.. + rep
    By jack24 in forum Help
    Replies: 1
    Last Post: 09-02-2009, 10:34 AM
  3. Auto Talker Base (Just GUI)
    By Roger in forum Application Development
    Replies: 6
    Last Post: 07-06-2009, 02:50 PM
  4. Fix Bluurs Auto Talker
    By Cody. in forum Tutorials
    Replies: 25
    Last Post: 05-02-2009, 05:15 AM
  5. Typer APP - New Auto Talker
    By Exploiter in forum Application Development
    Replies: 3
    Last Post: 01-08-2009, 01:36 AM
Tags for this Thread

View Tag Cloud

Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •