Thread: Simple Error

Results 1 to 7 of 7
  1. #1 Simple Error 
    Extreme Donator Simple Error Market Banned



    Join Date
    Dec 2010
    Age
    25
    Posts
    6,060
    Thanks given
    1,692
    Thanks received
    1,238
    Rep Power
    1765
    Code:
    package com.argoury.model.content.teleporting;
    
    import com.argoury.Constants;
    import com.argoury.model.players.Client;
    import com.argoury.model.players.Player;
    import com.argoury.util.Misc;
    
    public class Teleports {
    
    	/**
    	 * Creates an instance of the player
    	 */
    	private Player p;
    
    	/**
    	 * Constructs the skill class for a player
    	 * 
    	 * @param player
    	 *            The player to handle the skills
    	 */
    	public Teleports(Player p) {
    		this.p = p;
    	}
    
    	private enum Teleport {
    		HOME(75010, 1, 0, new int[] { -1 }, new int[] { -1 }, new int[] {
    				Constants.START_LOCATION_X, Constants.START_LOCATION_Y }), VARROCK(
    				4140, 25, 35, new int[] { 563, 554, 556 },
    				new int[] { 1, 1, 3 }, new int[] { 3213, 3423 }), LUMBRIDGE(
    				4143, 31, 41, new int[] { 563, 557, 556 },
    				new int[] { 1, 1, 3 }, new int[] { 3223, 3218 }), FALADOR(4146,
    				37, 48, new int[] { 563, 555, 556 }, new int[] { 1, 1, 3 },
    				new int[] { 2965, 3378 }), CAMELOT(4150, 45, 56, new int[] {
    				563, 556 }, new int[] { 1, 5 }, new int[] { 2757, 3477 }), ARDOUGNE(
    				6004, 51, 61, new int[] { 563, 555 }, new int[] { 2, 2 },
    				new int[] { 2662, 3305 }), WATCHTOWER(6005, 58, 68, new int[] {
    				563, 557 }, new int[] { 2, 2 }, new int[] { 2544, 3112 }), TROLLHEIM(
    				29031, 61, 68, new int[] { 563, 554 }, new int[] { 2, 2 },
    				new int[] { 2891, 3678 }), APE_ATOLL(72038, 64, 76, new int[] {
    				554, 555, 563, 1963 }, new int[] { 2, 2, 2, 1 }, new int[] {
    				2754, 2785 }), HOME_ANCIENT(50056, 1, 0, new int[] { -1 },
    				new int[] { -1 }, new int[] { Constants.START_LOCATION_X,
    						Constants.START_LOCATION_Y }), PADDEWWA(50235, 54, 64,
    				new int[] { 563, 556, 554 }, new int[] { 2, 1, 1 }, new int[] {
    						3098, 9882 }), SENNTISTEN(50245, 60, 70, new int[] {
    				563, 566 }, new int[] { 2, 1 }, new int[] { 3320, 3338 }), KHARYRLL(
    				50253, 66, 76, new int[] { 563, 565 }, new int[] { 2, 1 },
    				new int[] { 3493, 3472 }), LASSAR(51005, 72, 72, new int[] {
    				563, 555 }, new int[] { 2, 4 }, new int[] { 3003, 3470 }), DAREEYAK(
    				51013, 78, 88, new int[] { 563, 554, 556 },
    				new int[] { 2, 3, 2 }, new int[] { 2966, 3696 }), CARRALLANGAR(
    				51023, 84, 94, new int[] { 563, 566 }, new int[] { 2, 2 },
    				new int[] { 3163, 3664 }), ANNAKARL(51031, 90, 100, new int[] {
    				563, 565 }, new int[] { 2, 2 }, new int[] { 3287, 3883 }), GHORROCK(
    				51039, 96, 106, new int[] { 563, 555 }, new int[] { 2, 8 },
    				new int[] { 2972, 3873 });
    
    		int levelReq, clickingButton, xp;
    		int[] reqItems, reqAmounts, newLoc;
    
    		private Teleport(int clickingButton, int levelReq, int xp,
    				int[] reqItems, int[] reqAmounts, int[] newLoc) {
    			this.xp = xp;
    			this.levelReq = levelReq;
    			this.reqItems = reqItems;
    			this.reqAmounts = reqAmounts;
    			this.newLoc = newLoc;
    			this.clickingButton = clickingButton;
    		}
    	}
    
    	private boolean hasItems(Player c, int[] items, int[] amount) {
    		int temp = 0;
    		for (int i = 0; i < items.length; i++) {
    			if (c.getItems().playerHasItem(items[i], amount[i])) {
    				temp += 1;
    			}
    		}
    		return temp == items.length;
    	}
    
    	private void deleteItems(Player c, int[] items, int[] amount) {
    		for (int i = 0; i < items.length; i++) {
    			c.getItems().deleteItem(items[i],
    					c.getItems().getItemSlot(items[i]), amount[i]);
    		}
    	}
    
    	private Teleport getTele(int clickingButton) {
    		for (Teleport t : Teleport.values()) {
    			if (t.clickingButton == clickingButton) {
    				return t;
    			}
    		}
    		return null;
    	}
    
    	public void handleTeleport(final Player player, int actionButton) {
    		Teleport t = getTele(actionButton);
    		if (t != null) {
    			if (p.getSkills().getPlayerLevel()[6] >= t.levelReq) {
    				if (hasItems(p, t.reqItems, t.reqAmounts)) {
    					deleteItems(p, t.reqItems, t.reqAmounts);
    					p.getPA().spellTeleport(
    							t.newLoc[0]
    									+ (Misc.random(10) <= 4 ? -Misc.random(2)
    											: +Misc.random(2)),
    							t.newLoc[1]
    									+ (Misc.random(10) <= 4 ? -Misc.random(2)
    											: +Misc.random(2)), 0);
    					player.getClient().sendMessage("You teleport to "
    							+ Misc.optimizeText(t.name().toLowerCase())
    									.replace("_", " ").replace("ancient", "")
    							+ ".");
    					p.getSkills().addSkillXP(t.xp, p.getSkills().get(6));
    				} else {
    					player.getClient().sendMessage("You don't have enough runes to teleport to "
    							+ Misc.optimizeText(t.name().toLowerCase())
    									.replace("_", " ") + ".");
    				}
    			} else {
    				player.getClient().sendMessage("You need a magic level of at least "
    						+ t.levelReq
    						+ " to teleport to "
    						+ Misc.optimizeText(t.name().toLowerCase()).replace(
    								"_", " ") + ".");
    			}
    		}
    	}
    }
    Code:
    [6/20/14 1:45 PM]: java.lang.ArrayIndexOutOfBoundsException: 99
    [6/20/14 1:45 PM]: 	at com.argoury.model.content.skills.Skills.addSkillXP(Skills.java:126)
    [6/20/14 1:45 PM]: 	at com.argoury.model.content.teleporting.Teleports.handleTeleport(Teleports.java:115)
    [6/20/14 1:45 PM]: 	at com.argoury.network.packet.in.ClickingButtons.processPacket(ClickingButtons.java:39)
    [6/20/14 1:45 PM]: 	at com.argoury.network.packet.PacketHandler.processPacket(PacketHandler.java:137)
    [6/20/14 1:45 PM]: 	at com.argoury.model.players.Client.processQueuedPackets(Client.java:524)
    [6/20/14 1:45 PM]: 	at com.argoury.model.players.PlayerHandler.process(PlayerHandler.java:136)
    [6/20/14 1:45 PM]: 	at com.argoury.GameServer$1.execute(GameServer.java:166)
    [6/20/14 1:45 PM]: 	at com.argoury.core.task.Task.tick(Task.java:149)
    [6/20/14 1:45 PM]: 	at com.argoury.core.task.TaskScheduler.run(TaskScheduler.java:103)
    [6/20/14 1:45 PM]: 	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    [6/20/14 1:45 PM]: 	at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
    [6/20/14 1:45 PM]: 	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source)
    [6/20/14 1:45 PM]: 	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
    [6/20/14 1:45 PM]: 	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    [6/20/14 1:45 PM]: 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    [6/20/14 1:45 PM]: 	at java.lang.Thread.run(Unknown Source)
    Reply With Quote  
     

  2. #2  
    Donator


    Join Date
    Mar 2013
    Age
    24
    Posts
    1,767
    Thanks given
    335
    Thanks received
    386
    Rep Power
    318
    The problem is in Skills.java, please post all the code until line 126. And its an ArrayOutOfBounds exception, meaning you can only use values < the length of the array. If you don't want a fixed size, you can also use a list (List, ArrayList, Hashmap), or a Iterator to go through the list. Your value, is either equal to the fixed array size or greater, remember that 0 is also counted, so make it less then the array's length.
    Reply With Quote  
     

  3. #3  
    Extreme Donator Simple Error Market Banned



    Join Date
    Dec 2010
    Age
    25
    Posts
    6,060
    Thanks given
    1,692
    Thanks received
    1,238
    Rep Power
    1765
    Quote Originally Posted by _Paramvir View Post
    The problem is in Skills.java, please post all the code until line 126. And its an ArrayOutOfBounds exception, meaning you can only use values < the length of the array. If you don't want a fixed size, you can also use a list (List, ArrayList, Hashmap), or a Iterator to go through the list.
    Code:
    package com.argoury.model.content.skills;
    
    import java.util.Calendar;
    import java.util.GregorianCalendar;
    import java.util.HashMap;
    import java.util.Map;
    
    import com.argoury.Constants;
    import com.argoury.model.Graphic;
    import com.argoury.model.players.Player;
    import com.argoury.network.packet.out.SendChatInterfacePacket;
    import com.argoury.network.packet.out.SendSkillLevelPacket;
    import com.argoury.network.packet.out.SendStringPacket;
    
    
    /**
     * An instance of the players skills
     * 
     * @author Arithium
     * 
     */
    public class Skills {
    
    	/**
    	 * Creates an instance of the player
    	 */
    	private Player player;
    
    	/**
    	 * Constructs the skill class for a player
    	 * 
    	 * @param player
    	 *            The player to handle the skills
    	 */
    	public Skills(Player player) {
    		this.player = player;
    	}
    	
    	/**
    	 * The skill names.
    	 */
    	public static final String[] SKILL_NAMES = {
    		"Attack", "Defence", "Strength", "Constitution", "Ranged", "Prayer", "Magic", "Cooking", "Woodcutting", "Fletching", 
    		"Fishing", "Firemaking", "Crafting", "Smithing", "Mining", "Herblore", "Agility", "Thieving", "Slayer", "Farming", 
    		"Runecraft", "Construction", "Hunter", "Summoning", "Dungeoneering"
    	};
    
    	public static final int ATTACK = 0, DEFENCE = 1, STRENGTH = 2,
    			HITPOINTS = 3, RANGED = 4, PRAYER = 5, MAGIC = 6, COOKING = 7,
    			WOODCUTTING = 8, FLETCHING = 9, FISHING = 10, FIREMAKING = 11,
    			CRAFTING = 12, SMITHING = 13, MINING = 14, HERBLORE = 15,
    			AGILITY = 16, THIEVING = 17, SLAYER = 18, FARMING = 19,
    			RUNECRAFTING = 20, SUMMONING = 21, HUNTER = 22, CONSTRUCTION = 23,
    			DUNGEONEERING = 24;
    
    	/**
    	 * The maximum amount of skills
    	 */
    	private static final int MAXIMUM_SKILLS = 25;
    
    	/**
    	 * The array of the players levels
    	 */
    	private int[] playerLevel = new int[MAXIMUM_SKILLS];
    
    	/**
    	 * The array of the players experience
    	 */
    	private double[] playerXP = new double[MAXIMUM_SKILLS];
    
    	/**
    	 * Gets the players level by checking the experience
    	 * 
    	 * @param skillExp
    	 *            The experience of the skill
    	 * @return The level of the skill
    	 */
    	public int getLevelForXP(double skillExp) {
    		int points = 0;
    		int output = 0;
    		if (skillExp > 13034430)
    			return 99;
    		for (int lvl = 1; lvl <= 99; lvl++) {
    			points += Math.floor((double) lvl + 300.0
    					* Math.pow(2.0, (double) lvl / 7.0));
    			output = (int) Math.floor(points / 4);
    			if (output >= skillExp) {
    				return lvl;
    			}
    		}
    		return 0;
    	}
    
    	/**
    	 * Gets the amount of experience for the level
    	 * 
    	 * @param level
    	 *            The level to check the amount of experience of
    	 * @return
    	 */
    	public int getXPForLevel(int level) {
    		int points = 0;
    		int output = 0;
    
    		for (int lvl = 1; lvl <= level; lvl++) {
    			points += Math.floor((double) lvl + 300.0
    					* Math.pow(2.0, (double) lvl / 7.0));
    			if (lvl >= level)
    				return output;
    			output = (int) Math.floor(points / 4);
    		}
    		return 0;
    	}
    	
    	public int getExpBonus() {
    	     Calendar calendar = new GregorianCalendar();
    	     int day = calendar.get(Calendar.DAY_OF_WEEK);
    	     if (day == 1 || day == 7) {
    	          return 2;
    	     }
    	     return 1;
    	}
    
    	public boolean addSkillXP(int amount, int skill) {
    		try {
    			if (amount + getPlayerExp()[skill] < 0 || getPlayerExp()[skill] > 200000000) {
    				if (getPlayerExp()[skill] > 200000000) {
    					getPlayerExp()[skill] = 200000000;
    				}
    				return false;
    			}
    			amount = ((amount *= Constants.SERVER_EXP_BONUS) * getExpBonus());
    			int oldLevel = getLevelForXP(getPlayerExp()[skill]);
    			getPlayerExp()[skill] += amount;
    			if (oldLevel < getLevelForXP(getPlayerExp()[skill])) {
    				if (getPlayerLevel()[skill] < player.getSkills().getLevelForXP(getPlayerExp()[skill]) && skill != 3 && skill != 5)
    					getPlayerLevel()[skill] = player.getSkills().getLevelForXP(getPlayerExp()[skill]);
    				handleLevelUp(skill);
    				player.sendGraphic(Graphic.highGraphic(199));
    				player.getPA().requestUpdates();
    			}
    			refreshSkill(skill);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return true;
    	}
    
    	private static final int[][] REFRESH_DATA = {
    			{ ATTACK, 4004, 4005, 4044, 4045, 18792, 18790 },
    			{ DEFENCE, 4008, 4009, 4056, 4057, 18817, 18815 },
    			{ STRENGTH, 4006, 4007, 4050, 4051, 18798, 18796 },
    			{ HITPOINTS, 4016, 4017, 18853, 18854, 18859, 18857 },
    			{ RANGED, 4010, 4011, 4062, 4063, 18822, 18820 },
    			{ PRAYER, 4012, 4013, 4068, 4069, 18827, 18825 },
    			{ MAGIC, 4014, 4015, 18832, 18833, 18838, 18836 },
    			{ COOKING, 4034, 4035, 19042, 19043, 19048, 19046 },
    			{ WOODCUTTING, 4038, 4039, 19084, 19085, 19090, 19088 },
    			{ FLETCHING, 4026, 4027, 18958, 18959, 18964, 18962 },
    			{ FISHING, 4032, 4033, 19021, 19022, 19027, 19025 },
    			{ FIREMAKING, 4036, 4037, 19063, 19064, 19069, 19067 },
    			{ CRAFTING, 4024, 4025, 18937, 18938, 18943, 18941 },
    			{ SMITHING, 4030, 4031, 19422, 19423, 19428, 19426 },
    			{ MINING, 4028, 4029, 18979, 18980, 18985, 18983 },
    			{ HERBLORE, 4020, 4021, 18895, 18896, 18901, 18899 },
    			{ AGILITY, 4018, 4019, 18874, 18875, 18880, 18878 },
    			{ THIEVING, 4022, 4023, 18916, 18917, 18922, 18920 },
    			{ SLAYER, 18809, 18810, 19126, 19127, 19132, 19130 },
    			{ FARMING, 18811, 18812, 19275, 19276, 19281, 19279 },
    			{ RUNECRAFTING, 18807, 18808, 19105, 19106, 19111, 19109 },
    			{ SUMMONING, 19178, 19179, 19232, 19233, 19238, 19236 },
    			{ HUNTER, 19176, 19177, 19211, 19212, 19217, 19215 },
    			{ CONSTRUCTION, 19174, 19175, 19190, 19191, 19196, 19194 },
    			{ DUNGEONEERING, 19180, 19181, 19253, 19254, 19259, 19257 }, };
    
    	private enum LevelUpData {
    		ATTACK(0, 6248, 6249, 6247, "Attack"), DEFENCE(1, 6254, 6255, 6253,
    				"Defence"), STRENGTH(2, 6207, 6208, 6206, "Strength"), HITPOINTS(
    				3, 6217, 6218, 6216, "Hitpoints"), RANGED(4, 5453, 6114, 4443,
    				"Ranged"), PRAYER(5, 6243, 6244, 6242, "Prayer"), MAGIC(6,
    				6212, 6213, 6211, "Magic"), COOKING(7, 6227, 6228, 6226,
    				"Cooking"), WOODCUTTING(8, 4273, 4274, 4272, "Woodcutting"), FLETCHING(
    				9, 6232, 6233, 6231, "Fletching"), FISHING(10, 6259, 6260,
    				6258, "Fishing"), FIREMAKING(11, 4283, 4284, 4282, "Firemaking"), CRAFTING(
    				12, 6264, 6265, 6263, "Crafting"), SMITHING(13, 6222, 6223,
    				6221, "Smithing"), MINING(14, 4417, 4418, 4416, "Mining"), HERBLORE(
    				15, 6238, 6239, 6237, "Herblore"), AGILITY(16, 4278, 4279,
    				4277, "Agility"), THIEVING(17, 4263, 4264, 4261, "Thieving"), SLAYER(
    				18, 12123, 12124, 12122, "Slayer"), FARMING(19, -1, -1, -1,
    				"Farming"), RUNECRAFTING(20, 4268, 4269, 4267, "Runecrafting"), SUMMONING(
    				21, 4268, 4269, 4267, "Summoning"), HUNTER(22, -1, -1, -1,
    				"Hunter"), CONSTRUCTION(23, 22602, 22603, 22601, "Construction"), DUNGEONEERING(
    				24, 12123, 12124, 12122, "Dungeoneering")
    
    		;
    		private int skillId, frame1, frame2, frame3;
    		private String skillName;
    
    		LevelUpData(int skillId, int frame1, int frame2, int frame3, String name) {
    			this.skillId = skillId;
    			this.frame1 = frame1;
    			this.frame2 = frame2;
    			this.frame3 = frame3;
    			this.skillName = name;
    		}
    
    		public int getSkillId() {
    			return skillId;
    		}
    
    		public int getFrame1() {
    			return frame1;
    		}
    
    		public int getFrame2() {
    			return frame2;
    		}
    
    		public int getFrame3() {
    			return frame3;
    		}
    
    		public String getSkillName() {
    			return skillName;
    		}
    
    		private static Map<Integer, LevelUpData> levelUp = new HashMap<Integer, LevelUpData>();
    
    		static {
    			for (LevelUpData data : values()) {
    				levelUp.put(data.getSkillId(), data);
    			}
    		}
    
    		public static LevelUpData forId(int skillId) {
    			return levelUp.get(skillId);
    		}
    	}
    
    	public void handleLevelUp(int skillId) {
    		try {
    			LevelUpData skill = LevelUpData.forId(skillId);
    			if (skill == null)
    				return;
    			String skillName = skill.getSkillName().toLowerCase();
    			if (skill.getFrame1() > 0 && skill.getFrame2() > 0 && skill.getFrame3() > 0) {
    				player.getClient().send(new SendStringPacket("Congratulations, you just advanced a " + skillName + " level.", skill.getFrame1()));
    				player.getClient().send(new SendStringPacket("Your " + skillName + " is now " + getLevelForXP(getPlayerExp()[skillId]) + ".", skill.getFrame2()));
    				player.getClient().send(new SendChatInterfacePacket(skill.getFrame3()));
    			} else {
    				player.getClient().sendMessage("Congralations, you just advanced a " + skillName + " level.");
    				player.getClient().sendMessage("Your " + skillName + " is now level " + getLevelForXP(getPlayerExp()[skillId]) + ".");
    			}
    			if (skill.skillId < 7 || skill.skillId == 21) {
    				setCombatLevel();
    				player.getClient().send(new SendStringPacket("Combat Level: " + player.combatLevel + "", 3983));
    			}
    			/*if (skill.skillId > 6 && player.getSkills().getLevelForXP(player.getSkills().getPlayerExp()[skill.skillId]) == 99) {
    				PlayerHandler.messageAll("<col=255>" + Misc.formatPlayerName(player.playerName) + " has achieved 99 in " + skill.getSkillName() + ".", 0, true);
    			}*/
    			player.nextChat = 0;
    			player.dialogueAction = 0;
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    
    	public void refreshSkill(int i) {
    		try {
    			/*int frame1 = REFRESH_DATA[i][1];
    			int frame2 = REFRESH_DATA[i][2];
    			int frame3 = REFRESH_DATA[i][3];
    			int frame4 = REFRESH_DATA[i][4];
    			int frame5 = REFRESH_DATA[i][5];
    			int frame6 = REFRESH_DATA[i][6];*/
    			player.getClient().send(new SendSkillLevelPacket(i, getPlayerLevel()[i], getPlayerExp()[i]));
    			/*player.send(new SendStringPacket("" + getPlayerLevel()[i],
    					frame1);
    			player.send(new SendStringPacket(
    					"" + getLevelForXP(getPlayerExp()[i]), frame2);
    			player.send(new SendStringPacket("" + getPlayerExp()[i], frame3);
    			player.send(new SendStringPacket(
    					"" + getXPForLevel(getLevelForXP(getPlayerExp()[0]) + 1)
    							+ "", frame4));
    			player.getPacketSender()
    					.sendString(
    							""
    									+ (getLevelForXP(getPlayerExp()[i]) < 99 ? (getXPForLevel(getLevelForXP(getPlayerExp()[i]) + 1) - getPlayerExp()[i])
    											: "0"), frame5);
    			player.send(new SendStringPacket(
    					"" + getPlayerLevel()[i] + "/"
    							+ getLevelForXP(getPlayerExp()[i]), frame6));*/
    			if (REFRESH_DATA[i][0] < 7 || REFRESH_DATA[i][0] == 21) {
    				player.getClient().send(new SendStringPacket("Combat Level: " + player.combatLevel, 3983));
    			}
    			/**
    			 * Sends the prayer amount to the player interface
    			 */
    			/*if (i == 5) {
    				player.send(new SendStringPacket(
    						"" + playerLevel[5] + "/" + getLevelForXP(playerXP[5])
    								+ "", 687));
    			}
    			player.send(new SendStringPacket(
    					"Total Lvl: " + getTotalLevel(), 13984));*/
    			player.getClient().send(new SendStringPacket(""+getPlayerLevel()[PRAYER], 4012));
    			player.getClient().send(new SendStringPacket(""+getLevelForXP(getPlayerExp()[PRAYER]), 4013));
    			player.getClient().send(new SendStringPacket(""+getPlayerLevel()[HITPOINTS], 4016));
    			player.getClient().send(new SendStringPacket(""+getLevelForXP(getPlayerExp()[HITPOINTS]), 4016));
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    
    	@SuppressWarnings("unused")
    	private int getTotalLevel() {
    		int totalLevel = (getLevelForXP(getPlayerExp()[0])
    				+ getLevelForXP(getPlayerExp()[1])
    				+ getLevelForXP(getPlayerExp()[2])
    				+ getLevelForXP(getPlayerExp()[3])
    				+ getLevelForXP(getPlayerExp()[4])
    				+ getLevelForXP(getPlayerExp()[5])
    				+ getLevelForXP(getPlayerExp()[6])
    				+ getLevelForXP(getPlayerExp()[7])
    				+ getLevelForXP(getPlayerExp()[8])
    				+ getLevelForXP(getPlayerExp()[9])
    				+ getLevelForXP(getPlayerExp()[10])
    				+ getLevelForXP(getPlayerExp()[11])
    				+ getLevelForXP(getPlayerExp()[12])
    				+ getLevelForXP(getPlayerExp()[13])
    				+ getLevelForXP(getPlayerExp()[14])
    				+ getLevelForXP(getPlayerExp()[15])
    				+ getLevelForXP(getPlayerExp()[16])
    				+ getLevelForXP(getPlayerExp()[17])
    				+ getLevelForXP(getPlayerExp()[18])
    				+ getLevelForXP(getPlayerExp()[19])
    				+ getLevelForXP(getPlayerExp()[20])
    				+ getLevelForXP(getPlayerExp()[21])
    				+ getLevelForXP(getPlayerExp()[22])
    				+ getLevelForXP(getPlayerExp()[23]) + getLevelForXP(getPlayerExp()[24]));
    		return totalLevel;
    	}
    	
    	/**
    	 * Sets the players combat level
    	 * @return
    	 */
    	public int setCombatLevel() {
    		int mag = (int) ((getLevelForXP(getPlayerExp()[6])) * 1.5);
    		int ran = (int) ((getLevelForXP(getPlayerExp()[4])) * 1.5);
    		int attstr = (int) ((double) (getLevelForXP(getPlayerExp()[0])) + (double) (getLevelForXP(getPlayerExp()[2])));
    
    		player.combatLevel = 0;
    		if (ran > attstr) {
    			player.combatLevel = (int) (((getLevelForXP(getPlayerExp()[1])) * 0.25)
    					+ ((getLevelForXP(getPlayerExp()[3])) * 0.25)
    					+ ((getLevelForXP(getPlayerExp()[5])) * 0.125) + ((getLevelForXP(getPlayerExp()[4])) * 0.4875));
    		} else if (mag > attstr) {
    			player.combatLevel = (int) (((getLevelForXP(getPlayerExp()[1])) * 0.25)
    					+ ((getLevelForXP(getPlayerExp()[3])) * 0.25)
    					+ ((getLevelForXP(getPlayerExp()[5])) * 0.125) + ((getLevelForXP(getPlayerExp()[6])) * 0.4875));
    		} else {
    			player.combatLevel = (int) (((getLevelForXP(getPlayerExp()[1])) * 0.25)
    					+ ((getLevelForXP(getPlayerExp()[3])) * 0.25)
    					+ ((getLevelForXP(getPlayerExp()[5])) * 0.125)
    					+ ((getLevelForXP(getPlayerExp()[0])) * 0.325) + ((getLevelForXP(getPlayerExp()[2])) * 0.325));
    		}
    		return player.combatLevel;
    	}
    
    	/**
    	 * Returns the players levels
    	 * 
    	 * @return The level to be returned
    	 */
    	public int[] getPlayerLevel() {
    		return playerLevel;
    	}
    
    	public int get(int i) {
    		return playerLevel[i];
    	}
    
    	/**
    	 * Returns the players experience
    	 * 
    	 * @return The experience to be returned
    	 */
    	public double[] getPlayerExp() {
    		return playerXP;
    	}
    
    }
    Reply With Quote  
     

  4. #4  
    Donator


    Join Date
    Mar 2013
    Age
    24
    Posts
    1,767
    Thanks given
    335
    Thanks received
    386
    Rep Power
    318
    Quote Originally Posted by Columbia View Post
    Code:
    package com.argoury.model.content.skills;
    
    import java.util.Calendar;
    import java.util.GregorianCalendar;
    import java.util.HashMap;
    import java.util.Map;
    
    import com.argoury.Constants;
    import com.argoury.model.Graphic;
    import com.argoury.model.players.Player;
    import com.argoury.network.packet.out.SendChatInterfacePacket;
    import com.argoury.network.packet.out.SendSkillLevelPacket;
    import com.argoury.network.packet.out.SendStringPacket;
    
    
    /**
     * An instance of the players skills
     * 
     * @author Arithium
     * 
     */
    public class Skills {
    
        /**
         * Creates an instance of the player
         */
        private Player player;
    
        /**
         * Constructs the skill class for a player
         * 
         * @param player
         *            The player to handle the skills
         */
        public Skills(Player player) {
            this.player = player;
        }
        
        /**
         * The skill names.
         */
        public static final String[] SKILL_NAMES = {
            "Attack", "Defence", "Strength", "Constitution", "Ranged", "Prayer", "Magic", "Cooking", "Woodcutting", "Fletching", 
            "Fishing", "Firemaking", "Crafting", "Smithing", "Mining", "Herblore", "Agility", "Thieving", "Slayer", "Farming", 
            "Runecraft", "Construction", "Hunter", "Summoning", "Dungeoneering"
        };
    
        public static final int ATTACK = 0, DEFENCE = 1, STRENGTH = 2,
                HITPOINTS = 3, RANGED = 4, PRAYER = 5, MAGIC = 6, COOKING = 7,
                WOODCUTTING = 8, FLETCHING = 9, FISHING = 10, FIREMAKING = 11,
                CRAFTING = 12, SMITHING = 13, MINING = 14, HERBLORE = 15,
                AGILITY = 16, THIEVING = 17, SLAYER = 18, FARMING = 19,
                RUNECRAFTING = 20, SUMMONING = 21, HUNTER = 22, CONSTRUCTION = 23,
                DUNGEONEERING = 24;
    
        /**
         * The maximum amount of skills
         */
        private static final int MAXIMUM_SKILLS = 25;
    
        /**
         * The array of the players levels
         */
        private int[] playerLevel = new int[MAXIMUM_SKILLS];
    
        /**
         * The array of the players experience
         */
        private double[] playerXP = new double[MAXIMUM_SKILLS];
    
        /**
         * Gets the players level by checking the experience
         * 
         * @param skillExp
         *            The experience of the skill
         * @return The level of the skill
         */
        public int getLevelForXP(double skillExp) {
            int points = 0;
            int output = 0;
            if (skillExp > 13034430)
                return 99;
            for (int lvl = 1; lvl <= 99; lvl++) {
                points += Math.floor((double) lvl + 300.0
                        * Math.pow(2.0, (double) lvl / 7.0));
                output = (int) Math.floor(points / 4);
                if (output >= skillExp) {
                    return lvl;
                }
            }
            return 0;
        }
    
        /**
         * Gets the amount of experience for the level
         * 
         * @param level
         *            The level to check the amount of experience of
         * @return
         */
        public int getXPForLevel(int level) {
            int points = 0;
            int output = 0;
    
            for (int lvl = 1; lvl <= level; lvl++) {
                points += Math.floor((double) lvl + 300.0
                        * Math.pow(2.0, (double) lvl / 7.0));
                if (lvl >= level)
                    return output;
                output = (int) Math.floor(points / 4);
            }
            return 0;
        }
        
        public int getExpBonus() {
             Calendar calendar = new GregorianCalendar();
             int day = calendar.get(Calendar.DAY_OF_WEEK);
             if (day == 1 || day == 7) {
                  return 2;
             }
             return 1;
        }
    
        public boolean addSkillXP(int amount, int skill) {
            try {
                if (amount + getPlayerExp()[skill] < 0 || getPlayerExp()[skill] > 200000000) {
                    if (getPlayerExp()[skill] > 200000000) {
                        getPlayerExp()[skill] = 200000000;
                    }
                    return false;
                }
                amount = ((amount *= Constants.SERVER_EXP_BONUS) * getExpBonus());
                int oldLevel = getLevelForXP(getPlayerExp()[skill]);
                getPlayerExp()[skill] += amount;
                if (oldLevel < getLevelForXP(getPlayerExp()[skill])) {
                    if (getPlayerLevel()[skill] < player.getSkills().getLevelForXP(getPlayerExp()[skill]) && skill != 3 && skill != 5)
                        getPlayerLevel()[skill] = player.getSkills().getLevelForXP(getPlayerExp()[skill]);
                    handleLevelUp(skill);
                    player.sendGraphic(Graphic.highGraphic(199));
                    player.getPA().requestUpdates();
                }
                refreshSkill(skill);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return true;
        }
    
        private static final int[][] REFRESH_DATA = {
                { ATTACK, 4004, 4005, 4044, 4045, 18792, 18790 },
                { DEFENCE, 4008, 4009, 4056, 4057, 18817, 18815 },
                { STRENGTH, 4006, 4007, 4050, 4051, 18798, 18796 },
                { HITPOINTS, 4016, 4017, 18853, 18854, 18859, 18857 },
                { RANGED, 4010, 4011, 4062, 4063, 18822, 18820 },
                { PRAYER, 4012, 4013, 4068, 4069, 18827, 18825 },
                { MAGIC, 4014, 4015, 18832, 18833, 18838, 18836 },
                { COOKING, 4034, 4035, 19042, 19043, 19048, 19046 },
                { WOODCUTTING, 4038, 4039, 19084, 19085, 19090, 19088 },
                { FLETCHING, 4026, 4027, 18958, 18959, 18964, 18962 },
                { FISHING, 4032, 4033, 19021, 19022, 19027, 19025 },
                { FIREMAKING, 4036, 4037, 19063, 19064, 19069, 19067 },
                { CRAFTING, 4024, 4025, 18937, 18938, 18943, 18941 },
                { SMITHING, 4030, 4031, 19422, 19423, 19428, 19426 },
                { MINING, 4028, 4029, 18979, 18980, 18985, 18983 },
                { HERBLORE, 4020, 4021, 18895, 18896, 18901, 18899 },
                { AGILITY, 4018, 4019, 18874, 18875, 18880, 18878 },
                { THIEVING, 4022, 4023, 18916, 18917, 18922, 18920 },
                { SLAYER, 18809, 18810, 19126, 19127, 19132, 19130 },
                { FARMING, 18811, 18812, 19275, 19276, 19281, 19279 },
                { RUNECRAFTING, 18807, 18808, 19105, 19106, 19111, 19109 },
                { SUMMONING, 19178, 19179, 19232, 19233, 19238, 19236 },
                { HUNTER, 19176, 19177, 19211, 19212, 19217, 19215 },
                { CONSTRUCTION, 19174, 19175, 19190, 19191, 19196, 19194 },
                { DUNGEONEERING, 19180, 19181, 19253, 19254, 19259, 19257 }, };
    
        private enum LevelUpData {
            ATTACK(0, 6248, 6249, 6247, "Attack"), DEFENCE(1, 6254, 6255, 6253,
                    "Defence"), STRENGTH(2, 6207, 6208, 6206, "Strength"), HITPOINTS(
                    3, 6217, 6218, 6216, "Hitpoints"), RANGED(4, 5453, 6114, 4443,
                    "Ranged"), PRAYER(5, 6243, 6244, 6242, "Prayer"), MAGIC(6,
                    6212, 6213, 6211, "Magic"), COOKING(7, 6227, 6228, 6226,
                    "Cooking"), WOODCUTTING(8, 4273, 4274, 4272, "Woodcutting"), FLETCHING(
                    9, 6232, 6233, 6231, "Fletching"), FISHING(10, 6259, 6260,
                    6258, "Fishing"), FIREMAKING(11, 4283, 4284, 4282, "Firemaking"), CRAFTING(
                    12, 6264, 6265, 6263, "Crafting"), SMITHING(13, 6222, 6223,
                    6221, "Smithing"), MINING(14, 4417, 4418, 4416, "Mining"), HERBLORE(
                    15, 6238, 6239, 6237, "Herblore"), AGILITY(16, 4278, 4279,
                    4277, "Agility"), THIEVING(17, 4263, 4264, 4261, "Thieving"), SLAYER(
                    18, 12123, 12124, 12122, "Slayer"), FARMING(19, -1, -1, -1,
                    "Farming"), RUNECRAFTING(20, 4268, 4269, 4267, "Runecrafting"), SUMMONING(
                    21, 4268, 4269, 4267, "Summoning"), HUNTER(22, -1, -1, -1,
                    "Hunter"), CONSTRUCTION(23, 22602, 22603, 22601, "Construction"), DUNGEONEERING(
                    24, 12123, 12124, 12122, "Dungeoneering")
    
            ;
            private int skillId, frame1, frame2, frame3;
            private String skillName;
    
            LevelUpData(int skillId, int frame1, int frame2, int frame3, String name) {
                this.skillId = skillId;
                this.frame1 = frame1;
                this.frame2 = frame2;
                this.frame3 = frame3;
                this.skillName = name;
            }
    
            public int getSkillId() {
                return skillId;
            }
    
            public int getFrame1() {
                return frame1;
            }
    
            public int getFrame2() {
                return frame2;
            }
    
            public int getFrame3() {
                return frame3;
            }
    
            public String getSkillName() {
                return skillName;
            }
    
            private static Map<Integer, LevelUpData> levelUp = new HashMap<Integer, LevelUpData>();
    
            static {
                for (LevelUpData data : values()) {
                    levelUp.put(data.getSkillId(), data);
                }
            }
    
            public static LevelUpData forId(int skillId) {
                return levelUp.get(skillId);
            }
        }
    
        public void handleLevelUp(int skillId) {
            try {
                LevelUpData skill = LevelUpData.forId(skillId);
                if (skill == null)
                    return;
                String skillName = skill.getSkillName().toLowerCase();
                if (skill.getFrame1() > 0 && skill.getFrame2() > 0 && skill.getFrame3() > 0) {
                    player.getClient().send(new SendStringPacket("Congratulations, you just advanced a " + skillName + " level.", skill.getFrame1()));
                    player.getClient().send(new SendStringPacket("Your " + skillName + " is now " + getLevelForXP(getPlayerExp()[skillId]) + ".", skill.getFrame2()));
                    player.getClient().send(new SendChatInterfacePacket(skill.getFrame3()));
                } else {
                    player.getClient().sendMessage("Congralations, you just advanced a " + skillName + " level.");
                    player.getClient().sendMessage("Your " + skillName + " is now level " + getLevelForXP(getPlayerExp()[skillId]) + ".");
                }
                if (skill.skillId < 7 || skill.skillId == 21) {
                    setCombatLevel();
                    player.getClient().send(new SendStringPacket("Combat Level: " + player.combatLevel + "", 3983));
                }
                /*if (skill.skillId > 6 && player.getSkills().getLevelForXP(player.getSkills().getPlayerExp()[skill.skillId]) == 99) {
                    PlayerHandler.messageAll("<col=255>" + Misc.formatPlayerName(player.playerName) + " has achieved 99 in " + skill.getSkillName() + ".", 0, true);
                }*/
                player.nextChat = 0;
                player.dialogueAction = 0;
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public void refreshSkill(int i) {
            try {
                /*int frame1 = REFRESH_DATA[i][1];
                int frame2 = REFRESH_DATA[i][2];
                int frame3 = REFRESH_DATA[i][3];
                int frame4 = REFRESH_DATA[i][4];
                int frame5 = REFRESH_DATA[i][5];
                int frame6 = REFRESH_DATA[i][6];*/
                player.getClient().send(new SendSkillLevelPacket(i, getPlayerLevel()[i], getPlayerExp()[i]));
                /*player.send(new SendStringPacket("" + getPlayerLevel()[i],
                        frame1);
                player.send(new SendStringPacket(
                        "" + getLevelForXP(getPlayerExp()[i]), frame2);
                player.send(new SendStringPacket("" + getPlayerExp()[i], frame3);
                player.send(new SendStringPacket(
                        "" + getXPForLevel(getLevelForXP(getPlayerExp()[0]) + 1)
                                + "", frame4));
                player.getPacketSender()
                        .sendString(
                                ""
                                        + (getLevelForXP(getPlayerExp()[i]) < 99 ? (getXPForLevel(getLevelForXP(getPlayerExp()[i]) + 1) - getPlayerExp()[i])
                                                : "0"), frame5);
                player.send(new SendStringPacket(
                        "" + getPlayerLevel()[i] + "/"
                                + getLevelForXP(getPlayerExp()[i]), frame6));*/
                if (REFRESH_DATA[i][0] < 7 || REFRESH_DATA[i][0] == 21) {
                    player.getClient().send(new SendStringPacket("Combat Level: " + player.combatLevel, 3983));
                }
                /**
                 * Sends the prayer amount to the player interface
                 */
                /*if (i == 5) {
                    player.send(new SendStringPacket(
                            "" + playerLevel[5] + "/" + getLevelForXP(playerXP[5])
                                    + "", 687));
                }
                player.send(new SendStringPacket(
                        "Total Lvl: " + getTotalLevel(), 13984));*/
                player.getClient().send(new SendStringPacket(""+getPlayerLevel()[PRAYER], 4012));
                player.getClient().send(new SendStringPacket(""+getLevelForXP(getPlayerExp()[PRAYER]), 4013));
                player.getClient().send(new SendStringPacket(""+getPlayerLevel()[HITPOINTS], 4016));
                player.getClient().send(new SendStringPacket(""+getLevelForXP(getPlayerExp()[HITPOINTS]), 4016));
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        @SuppressWarnings("unused")
        private int getTotalLevel() {
            int totalLevel = (getLevelForXP(getPlayerExp()[0])
                    + getLevelForXP(getPlayerExp()[1])
                    + getLevelForXP(getPlayerExp()[2])
                    + getLevelForXP(getPlayerExp()[3])
                    + getLevelForXP(getPlayerExp()[4])
                    + getLevelForXP(getPlayerExp()[5])
                    + getLevelForXP(getPlayerExp()[6])
                    + getLevelForXP(getPlayerExp()[7])
                    + getLevelForXP(getPlayerExp()[8])
                    + getLevelForXP(getPlayerExp()[9])
                    + getLevelForXP(getPlayerExp()[10])
                    + getLevelForXP(getPlayerExp()[11])
                    + getLevelForXP(getPlayerExp()[12])
                    + getLevelForXP(getPlayerExp()[13])
                    + getLevelForXP(getPlayerExp()[14])
                    + getLevelForXP(getPlayerExp()[15])
                    + getLevelForXP(getPlayerExp()[16])
                    + getLevelForXP(getPlayerExp()[17])
                    + getLevelForXP(getPlayerExp()[18])
                    + getLevelForXP(getPlayerExp()[19])
                    + getLevelForXP(getPlayerExp()[20])
                    + getLevelForXP(getPlayerExp()[21])
                    + getLevelForXP(getPlayerExp()[22])
                    + getLevelForXP(getPlayerExp()[23]) + getLevelForXP(getPlayerExp()[24]));
            return totalLevel;
        }
        
        /**
         * Sets the players combat level
         * @return
         */
        public int setCombatLevel() {
            int mag = (int) ((getLevelForXP(getPlayerExp()[6])) * 1.5);
            int ran = (int) ((getLevelForXP(getPlayerExp()[4])) * 1.5);
            int attstr = (int) ((double) (getLevelForXP(getPlayerExp()[0])) + (double) (getLevelForXP(getPlayerExp()[2])));
    
            player.combatLevel = 0;
            if (ran > attstr) {
                player.combatLevel = (int) (((getLevelForXP(getPlayerExp()[1])) * 0.25)
                        + ((getLevelForXP(getPlayerExp()[3])) * 0.25)
                        + ((getLevelForXP(getPlayerExp()[5])) * 0.125) + ((getLevelForXP(getPlayerExp()[4])) * 0.4875));
            } else if (mag > attstr) {
                player.combatLevel = (int) (((getLevelForXP(getPlayerExp()[1])) * 0.25)
                        + ((getLevelForXP(getPlayerExp()[3])) * 0.25)
                        + ((getLevelForXP(getPlayerExp()[5])) * 0.125) + ((getLevelForXP(getPlayerExp()[6])) * 0.4875));
            } else {
                player.combatLevel = (int) (((getLevelForXP(getPlayerExp()[1])) * 0.25)
                        + ((getLevelForXP(getPlayerExp()[3])) * 0.25)
                        + ((getLevelForXP(getPlayerExp()[5])) * 0.125)
                        + ((getLevelForXP(getPlayerExp()[0])) * 0.325) + ((getLevelForXP(getPlayerExp()[2])) * 0.325));
            }
            return player.combatLevel;
        }
    
        /**
         * Returns the players levels
         * 
         * @return The level to be returned
         */
        public int[] getPlayerLevel() {
            return playerLevel;
        }
    
        public int get(int i) {
            return playerLevel[i];
        }
    
        /**
         * Returns the players experience
         * 
         * @return The experience to be returned
         */
        public double[] getPlayerExp() {
            return playerXP;
        }
    
    }
    Code:
        public boolean addSkillXP(int amount, int skill) {
            try {
                if (amount + getPlayerExp()[skill] < 0 || getPlayerExp()[skill] > 200000000) {
                    if (getPlayerExp()[skill] > 200000000) {
                        getPlayerExp()[skill] = 200000000;
                    }
                    return false;
                }
                amount = ((amount *= Constants.SERVER_EXP_BONUS) * getExpBonus());
                int oldLevel = getLevelForXP(getPlayerExp()[skill]);
                getPlayerExp()[skill] += amount;
                if (oldLevel < getLevelForXP(getPlayerExp()[skill])) {
                    if (getPlayerLevel()[skill] < player.getSkills().getLevelForXP(getPlayerExp()[skill]) && skill != 3 && skill != 5)
                        getPlayerLevel()[skill] = player.getSkills().getLevelForXP(getPlayerExp()[skill]);
                    handleLevelUp(skill);
                    player.sendGraphic(Graphic.highGraphic(199));
                    player.getPA().requestUpdates();
                }
                refreshSkill(skill);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return true;
        }
    When this method is being called, the integer skill is 99, while the max is 25.
    Reply With Quote  
     

  5. #5  
    Extreme Donator Simple Error Market Banned



    Join Date
    Dec 2010
    Age
    25
    Posts
    6,060
    Thanks given
    1,692
    Thanks received
    1,238
    Rep Power
    1765
    Quote Originally Posted by _Paramvir View Post
    Code:
        public boolean addSkillXP(int amount, int skill) {
            try {
                if (amount + getPlayerExp()[skill] < 0 || getPlayerExp()[skill] > 200000000) {
                    if (getPlayerExp()[skill] > 200000000) {
                        getPlayerExp()[skill] = 200000000;
                    }
                    return false;
                }
                amount = ((amount *= Constants.SERVER_EXP_BONUS) * getExpBonus());
                int oldLevel = getLevelForXP(getPlayerExp()[skill]);
                getPlayerExp()[skill] += amount;
                if (oldLevel < getLevelForXP(getPlayerExp()[skill])) {
                    if (getPlayerLevel()[skill] < player.getSkills().getLevelForXP(getPlayerExp()[skill]) && skill != 3 && skill != 5)
                        getPlayerLevel()[skill] = player.getSkills().getLevelForXP(getPlayerExp()[skill]);
                    handleLevelUp(skill);
                    player.sendGraphic(Graphic.highGraphic(199));
                    player.getPA().requestUpdates();
                }
                refreshSkill(skill);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return true;
        }
    When this method is being called, the integer skill is 99, while the max is 25.
    Thanks, fixed it all up.
    Reply With Quote  
     

  6. #6  
    Donator


    Join Date
    Mar 2013
    Age
    24
    Posts
    1,767
    Thanks given
    335
    Thanks received
    386
    Rep Power
    318
    Quote Originally Posted by Columbia View Post
    Thanks, fixed it all up.
    No problem, glad I could help you.

    Rep++ and a thanks would very much be appreciated!
    Reply With Quote  
     

  7. Thankful user:

    Bow

  8. #7  
    Registered Member
    Join Date
    Jan 2014
    Posts
    813
    Thanks given
    69
    Thanks received
    47
    Rep Power
    9
    Quote Originally Posted by _Paramvir View Post
    No problem, glad I could help you.

    Rep++ and a thanks would very much be appreciated!
    He dont give a fk.
    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. 510 simple error but cant fix Oo
    By lol ftw lol in forum Help
    Replies: 3
    Last Post: 04-30-2009, 01:34 PM
  2. [508]Simple error yet i cant seem to fix it?
    By Proffesor Oak in forum Help
    Replies: 11
    Last Post: 04-30-2009, 01:26 PM
  3. Simple Error I cant Figure out...
    By Senthery in forum Help
    Replies: 5
    Last Post: 04-11-2009, 09:22 AM
  4. Replies: 2
    Last Post: 01-29-2009, 11:22 PM
  5. Simple error needs fixing rep++ if u help
    By xx k03d xx in forum Help
    Replies: 25
    Last Post: 01-10-2009, 05:33 AM
Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •