Thread: 317 Item Level Requirements XML

Results 1 to 5 of 5
  1. #1 317 Item Level Requirements XML 
    Community Veteran

    Dexter Morgan's Avatar
    Join Date
    Nov 2008
    Age
    28
    Posts
    4,419
    Thanks given
    1,184
    Thanks received
    757
    Rep Power
    3098
    I haven't found any items that shouldn't be there or any wrong but if you do please post on this thread thanks.

    This is current for 317 items. If you have higher items then I posted a class which dumps the data so you could add items to it and dump it.

    LevelDefinition
    Code:
    package org.game.content.item;
    
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.util.Map;
    
    import org.game.content.skill.Skill;
    import org.game.model.player.Player;
    import org.game.util.XStreamUtil;
    
    /**
     * 
     * @author 2012 <http://www.rune-server.org/members/dexter+morgan/>
     * 
     */
    public class LevelDefinition {
    
    	/**
    	 * The levels
    	 */
    	private LevelRequirement[] levels;
    
    	/**
    	 * Checks if player has correct level
    	 * 
    	 * @param player
    	 *            the player
    	 * @param item
    	 *            the item
    	 * @return has level
    	 */
    	public static boolean hasLevel(Player player, int item) {
    		/**
    		 * Item definition
    		 */
    		ItemDefinition itemD = ItemDefinition.forId(item);
    		/**
    		 * Invalid item
    		 */
    		if (itemD == null) {
    			return false;
    		}
    		/**
    		 * The levels
    		 */
    		LevelDefinition def = LevelDefinitionLoader.getLevel(item);
    		/**
    		 * Has no requirements
    		 */
    		if(def == null) {
    			return true; 
    		}
    		/**
    		 * The levels
    		 */
    		for (int i = 0; i < def.getLevels().length; i++) {
    			if (def.getLevels()[i].getLevel() > player.getSkill().getLevel(
    					def.getLevels()[i].getId())) {
    				player.getPacketSender()
    						.sendMessage(
    								"You don't have the required "
    										+ Skill.SKILL_NAME[def.getLevels()[i]
    												.getId()]
    										+ " level to "
    										+ (def.getLevels()[i].getId() == 0
    												|| def.getLevels()[i].getId() == 2 ? "wield"
    												: "wear") + " "
    										+ itemD.getName());
    				player.getPacketSender()
    						.sendMessage(
    								"You need the "
    										+ Skill.SKILL_NAME[def.getLevels()[i]
    												.getId()]
    										+ " of at least "
    										+ def.getLevels()[i].getLevel()
    										+ " to "
    										+ (def.getLevels()[i].getId() == 0
    												|| def.getLevels()[i].getId() == 2 ? "wield"
    												: "wear") + " "
    										+ itemD.getName());
    				return false;
    			}
    		}
    		return true;
    	}
    
    	/**
    	 * Sets the levels
    	 * 
    	 * @param levels
    	 *            the new levels
    	 */
    	public void setLevels(LevelRequirement[] levels) {
    		this.levels = levels;
    	}
    
    	/**
    	 * Gets the levels
    	 * 
    	 * @return the levels
    	 */
    	public LevelRequirement[] getLevels() {
    		return levels;
    	}
    
    	/**
    	 * A level requirement
    	 */
    	public static class LevelRequirement {
    
    		/**
    		 * The skill id
    		 */
    		private int id;
    
    		/**
    		 * The skill level
    		 */
    		private int level;
    
    		/**
    		 * Sets the id
    		 * 
    		 * @param id
    		 *            the new id
    		 */
    		public void setId(int id) {
    			this.id = id;
    		}
    
    		/**
    		 * Gets the id
    		 * 
    		 * @return the id
    		 */
    		public int getId() {
    			return id;
    		}
    
    		/**
    		 * Sets the level
    		 * 
    		 * @param level
    		 *            the new level
    		 */
    		public void setLevel(int level) {
    			this.level = level;
    		}
    
    		/**
    		 * Gets the level
    		 * 
    		 * @return the level
    		 */
    		public int getLevel() {
    			return level;
    		}
    	}
    
    	/**
    	 * Loads the definitions
    	 */
    	public static class LevelDefinitionLoader {
    
    		/**
    		 * The LevelDefinition
    		 */
    		private static Map<Integer, LevelDefinition> levels;
    
    		/**
    		 * Gets the LevelDefinition
    		 * 
    		 * @param id
    		 *            the id
    		 * @return the LevelDefinition
    		 */
    		public static LevelDefinition getLevel(final int id) {
    			return levels.get(id);
    		}
    
    		@SuppressWarnings("unchecked")
    		public static void init() throws FileNotFoundException {
    			levels = (Map<Integer, LevelDefinition>) XStreamUtil.getXStream()
    					.fromXML(new FileInputStream("./data/levelDefinition.xml"));
    		}
    	}
    }
    This is what I used to dump the data

    Code:
    package org.game.content.item;
    
    import java.io.BufferedWriter;
    import java.io.FileWriter;
    import java.io.IOException;
    
    import org.game.content.combat.range.RangedWeapon;
    import org.game.content.item.container.Equipment;
    
    /**
     * 
     * @author 2012 <http://www.rune-server.org/members/dexter+morgan/>
     * 
     */
    public class LevelDefinitionDumper {
    
    	/**
    	 * Invalid items
    	 */
    	public static final String[] INVALID = { "skirt", "robe", "gauntlets",
    			"apron", "partyhat", };
    
    	/**
    	 * All the throwing range ammo
    	 */
    	public static final String[] AMMO = { "dart", "knife", "thrownaxe",
    			"javelin", "chinchompas", "tokz-xil-ul", "arrow", };
    
    	/**
    	 * Gets the magic level
    	 * 
    	 * @param id
    	 *            the item id
    	 * @return the magicl level
    	 */
    	public static int getRange(int id) {
    		/**
    		 * Definition
    		 */
    		ItemDefinition def = ItemDefinition.forId(id);
    		/**
    		 * Invalid def
    		 */
    		if (def == null) {
    			return 0;
    		}
    		/**
    		 * The name
    		 */
    		String name = def.getName().toLowerCase();
    		for (int i = 0; i < INVALID.length; i++) {
    			if (name.contains(INVALID[i])) {
    				return 0;
    			}
    		}
    		for (int i = 0; i < AMMO.length; i++) {
    			if (name.contains(AMMO[i])) {
    				return 0;
    			}
    		}
    		if (name.contains("hardleather")) {
    			return 10;
    		} else if (name.contains("studded")) {
    			return 20;
    		} else if (name.contains("snakeskin")) {
    			return 30;
    		} else if (name.contains("spined")) {
    			return 50;
    		} else if (name.contains("d'hide")) {
    			if (name.contains("green")) {
    				return 40;
    			} else if (name.contains("blue")) {
    				return 50;
    			} else if (name.contains("red")) {
    				return 60;
    			} else if (name.contains("black")) {
    				return 70;
    			}
    		} else if (name.contains("karils")) {
    			return 70;
    		} else if (name.contains("robin") || name.contains("rangers")) {
    			return 40;
    		}
    		return 0;
    	}
    
    	/**
    	 * Gets the magic level
    	 * 
    	 * @param id
    	 *            the item id
    	 * @return the magicl level
    	 */
    	public static int getMagic(int id) {
    		/**
    		 * Definition
    		 */
    		ItemDefinition def = ItemDefinition.forId(id);
    		/**
    		 * Invalid def
    		 */
    		if (def == null) {
    			return 0;
    		}
    		/**
    		 * The name
    		 */
    		String name = def.getName().toLowerCase();
    		/**
    		 * Invalids
    		 */
    		for (int i = 0; i < AMMO.length; i++) {
    			if (name.contains(AMMO[i])) {
    				return 0;
    			}
    		}
    		for (int i = 0; i < INVALID.length; i++) {
    			if (name.contains(INVALID[i])) {
    				return 0;
    			}
    		}
    		/**
    		 * Gets the level
    		 */
    		if (name.contains("wizard boots")) {
    			return 20;
    		} else if (name.contains("mystic")) {
    			return 30;
    		} else if (name.contains("splitbark") || name.contains("enchanted")) {
    			return 40;
    		} else if (name.contains("skeletal")) {
    			return 50;
    		} else if (name.contains("inifnity")) {
    			return 55;
    		} else if (name.contains("ahrim's")) {
    			return 70;
    		}
    		return 0;
    	}
    
    	// defence arrows
    
    	/**
    	 * Gets the defence level
    	 * 
    	 * @param id
    	 *            the item id
    	 * @return the defence level
    	 */
    	public static int getDefence(int id) {
    		/**
    		 * Definition
    		 */
    		ItemDefinition def = ItemDefinition.forId(id);
    		/**
    		 * Invalid def
    		 */
    		if (def == null) {
    			return 0;
    		}
    		/**
    		 * The name
    		 */
    		String name = def.getName().toLowerCase();
    		/**
    		 * Invalids
    		 */
    		for (int i = 0; i < AMMO.length; i++) {
    			if (name.contains(AMMO[i])) {
    				return 0;
    			}
    		}
    		for (int i = 0; i < INVALID.length; i++) {
    			if (name.contains(INVALID[i])) {
    				return 0;
    			}
    		}
    		if (def.getEquipmentType().getSlot() == Equipment.WEAPON_SLOT) {
    			return 0;
    		}
    		/**
    		 * Gets the level
    		 */
    		if (name.contains("d'hide body")) {
    			if (name.contains("green")) {
    				return 40;
    			} else if (name.contains("blue")) {
    				return 50;
    			} else if (name.contains("red")) {
    				return 60;
    			} else if (name.contains("black")) {
    				return 70;
    			}
    		} else if (name.contains("steel") || name.contains("spiny")) {
    			return 5;
    		} else if (name.contains("black") && !name.contains("robe")
    				&& !name.contains("d'hide")) {
    			return 10;
    		} else if (name.contains("white")) {
    			return 10;
    		} else if (name.contains("mithril")) {
    			return 20;
    		} else if (name.contains("adamant")) {
    			return 30;
    		} else if (name.contains("rune")) {
    			return 40;
    		} else if (name.contains("dragon")) {
    			return 60;
    		} else if (name.contains("yak") || name.contains("initiate")
    				|| name.contains("mirror") || name.contains("enchante")) {
    			return 20;
    		} else if (name.contains("infinity") || name.contains("frog-leather")) {
    			return 25;
    		} else if (name.contains("snakeskin")) {
    			return 30;
    		} else if (name.contains("spinned")) {
    			return 40;
    		} else if (name.contains("warrior helm")
    				|| name.contains("berserker helm")
    				|| name.contains("farseer helm")
    				|| name.contains("archer helm")) {
    			return 45;
    		} else if (name.contains("granite")) {
    			return 50;
    		} else if (name.contains("toktz")) {
    			return 60;
    		} else if (name.contains("crystal")) {
    			return 70;
    		} else if (name.contains("verac") || name.contains("torag")
    				|| name.contains("dharok") || name.contains("ahrim")
    				|| name.contains("karils") || name.contains("guthan")) {
    			return 70;
    		}
    		return 0;
    	}
    
    	/**
    	 * Gets the required level for item
    	 * 
    	 * @param itemId
    	 *            the item id
    	 * @return the required level
    	 */
    	public static int getStrength(int itemId) {
    		/**
    		 * Item definition
    		 */
    		ItemDefinition def = ItemDefinition.forId(itemId);
    		/**
    		 * Invalid def
    		 */
    		if (def == null) {
    			return 0;
    		}
    		/**
    		 * Item name
    		 */
    		String name = def.getName().toLowerCase();
    		/**
    		 * Invalids
    		 */
    		for (int i = 0; i < AMMO.length; i++) {
    			if (name.contains(AMMO[i])) {
    				return 0;
    			}
    		}
    		for (int i = 0; i < INVALID.length; i++) {
    			if (name.contains(INVALID[i])) {
    				return 0;
    			}
    		}
    		/**
    		 * Gets the level
    		 */
    		if (name.contains("halberd")) {
    			if (name.contains("steel")) {
    				return 5;
    			} else if (name.contains("black") ) {
    				return 10;
    			} else if (name.contains("white")) {
    				return 10;
    			} else if (name.contains("mithril")) {
    				return 20;
    			} else if (name.contains("adamant")) {
    				return 30;
    			} else if (name.contains("rune")) {
    				return 40;
    			} else if (name.contains("dragon")) {
    				return 60;
    			}
    		} else if (name.equals("tzhaar-ket-om")) {
    			return 60;
    		} else if (name.contains("granite")) {
    			return 50;
    		} else if (name.contains("torag")) {
    			return 70;
    		} else if (name.contains("dharok")) {
    			return 70;
    
    		} else if (name.contains("torva")) {
    			return 80;
    		} else if (name.contains("slayer helm")) {
    			return 20;
    		} else if (name.contains("black mask")) {
    			return 20;
    		}
    		return 0;
    	}
    
    	/**
    	 * Gets the required level for item
    	 * 
    	 * @param player
    	 *            the player
    	 * @param itemId
    	 *            the item id
    	 * @return the required level
    	 */
    	public static int getAttack(int itemId) {
    		/**
    		 * Item definition
    		 */
    		ItemDefinition def = ItemDefinition.forId(itemId);
    		/**
    		 * Invalid def
    		 */
    		if (def == null) {
    			return 0;
    		}
    		/**
    		 * Item name
    		 */
    		String name = def.getName().toLowerCase();
    		/**
    		 * Invalids
    		 */
    		for (int i = 0; i < AMMO.length; i++) {
    			if (name.contains(AMMO[i])) {
    				return 0;
    			}
    		}
    		for (int i = 0; i < INVALID.length; i++) {
    			if (name.contains(INVALID[i])) {
    				return 0;
    			}
    		}
    		/**
    		 * Gets the level
    		 */
    		if (name.contains("steel")) {
    			return 5;
    		} else if (name.contains("black") && !name.contains("d'hide")) {
    			return 10;
    		} else if (name.contains("white")) {
    			return 10;
    		} else if (name.contains("mithril")) {
    			return 20;
    		} else if (name.contains("adamant")) {
    			return 30;
    		} else if (name.contains("rune")) {
    			return 40;
    		} else if (name.contains("granite")) {
    			return 50;
    		} else if (name.contains("toktz") && !name.contains("tzhaar-ket-om")) {
    			return 60;
    		} else if (name.contains("dragon")) {
    			return 60;
    		} else if (name.contains("dharok")) {
    			return 70;
    		} else if (name.contains("torag")) {
    			return 70;
    		} else if (name.contains("guthan")) {
    			return 70;
    		} else if (name.contains("verac")) {
    			return 70;
    		} else if (name.contains("whip")) {
    			return 70;
    		} else if (name.contains("leaf-blade")) {
    			return 50;
    		} else if (name.contains("iban's staff")) {
    			return 50;
    		}
    		return 0;
    	}
    
    	/**
    	 * Dumps the definitions
    	 * 
    	 * @param args
    	 *            the shit
    	 * @throws IOException
    	 */
    	public static void main(String[] args) throws IOException {
    		ItemDefinition.init();
    		try {
    			BufferedWriter bw = new BufferedWriter(new FileWriter(
    					"./data/levelDefinition.xml/", false));
    			bw.write("<map>");
    			bw.newLine();
    			int dump = 1;
    			for (int i = 0; i < 7996; i++) {
    				if (hasLevels(i)
    						&& ItemDefinition.forId(i).getEquipmentType().getSlot() >= 0
    						&& !ItemDefinition.forId(i).isNoted()) {
    					dump++;
    					bw.write("	<entry>");
    					bw.newLine();
    					bw.write("		<int>" + i + "</int>");
    					bw.newLine();
    					bw.write("			<levelDef>");
    					bw.newLine();
    					bw.write("			<levels>");
    					bw.newLine();
    
    					if (getAttack(i) > 0) {
    						bw.write("				<levelReq>");
    						bw.newLine(); // attack
    						bw.write("					<id>0</id>");
    						bw.newLine();
    						bw.write("					<level>" + getAttack(i) + "</level>");
    						bw.newLine();
    						bw.write("				</levelReq>");
    						bw.newLine();
    					}
    
    					if (getDefence(i) > 0) {
    						bw.write("				<levelReq>");
    						bw.newLine();// defence
    						bw.write("					<id>1</id>");
    						bw.newLine();
    						bw.write("					<level>" + getDefence(i) + "</level>");
    						bw.newLine();
    						bw.write("				</levelReq>");
    						bw.newLine();
    					}
    
    					if (getStrength(i) > 0) {
    						bw.write("				<levelReq>");
    						bw.newLine(); // strength
    						bw.write("					<id>2</id>");
    						bw.newLine();
    						bw.write("					<level>" + getStrength(i) + "</level>");
    						bw.newLine();
    						bw.write("				</levelReq>");
    						bw.newLine();
    					}
    
    					if (getRange(i) > 0) {
    						bw.write("				<levelReq>");
    						bw.newLine(); // strength
    						bw.write("					<id>4</id>");
    						bw.newLine();
    						bw.write("					<level>" + getRange(i) + "</level>");
    						bw.newLine();
    						bw.write("				</levelReq>");
    						bw.newLine();
    					}
    
    					if (getMagic(i) > 0) {
    						bw.write("				<levelReq>");
    						bw.newLine(); // strength
    						bw.write("					<id>6</id>");
    						bw.newLine();
    						bw.write("					<level>" + getMagic(i) + "</level>");
    						bw.newLine();
    						bw.write("				</levelReq>");
    						bw.newLine();
    					}
    					bw.write("			</levels>");
    					bw.newLine();
    					bw.write("		</levelDef>");
    					bw.newLine();
    					bw.write("	</entry>");
    					bw.newLine();
    				}
    			}
    			System.out.println("total dump: " + dump);
    			bw.write("</map>");
    			bw.newLine();
    			bw.close();
    		} catch (IOException ioe) {
    			System.out.println("Error: " + ioe.getMessage());
    		}
    	}
    
    	/**
    	 * Checks if has a required level
    	 * 
    	 * @param id
    	 *            the item
    	 * @return has required
    	 */
    	private static boolean hasLevels(int id) {
    		return getMagic(id) > 0 || getRange(id) > 0 || getStrength(id) > 0
    				|| getAttack(id) > 0 || getDefence(id) > 0;
    	}
    }
    File download:

    V1Download level.Definition.xml @ UppIT

    V2
    Fixed d'hide items: Download level.Definition.xml @ UppIT


    I understand that this might not be the best way of doing and that I could just used the methods in the dumper class to check for level but this is my personal preference and I'm just sharing, but I also accept constructive criticism.
    Reply With Quote  
     

  2. Thankful users:


  3. #2  
    « Pokémon Master »
    Ash Ketchum's Avatar
    Join Date
    Jun 2011
    Age
    29
    Posts
    1,423
    Thanks given
    275
    Thanks received
    153
    Rep Power
    39
    This is actually pretty nice. Might use it. thanks
    Attached image
    Spoiler for Galkon:

    Spoiler for Great Quotes:
    Quote Originally Posted by i am prod View Post
    **** YOU this just erased everyones passwords and no one can log in!!!
    Quote Originally Posted by blade2 View Post
    did i ****ing say it was a ****ing virus u dip shit i said virus scan dont scan java files i didn't say its a virus... l2****ingreadkid
    Spoiler for (╯°□°)╯︵┻━┻:
    Reply With Quote  
     

  4. #3  
    Donator


    Join Date
    Jul 2011
    Posts
    921
    Thanks given
    199
    Thanks received
    178
    Rep Power
    189
    Nice, needed this
    Reply With Quote  
     

  5. #4  
    Banned 317 Item Level Requirements XML Market Banned


    Join Date
    Jan 2011
    Age
    26
    Posts
    3,112
    Thanks given
    1,198
    Thanks received
    1,479
    Rep Power
    0
    ugh the ****ing link is down :/ does anyone have a mirror of v2
    Reply With Quote  
     

  6. #5  
    Project Drop-Zone Owner & The BLOOD Gang Always Banging RED


    Join Date
    May 2013
    Age
    28
    Posts
    2,992
    Thanks given
    5
    Thanks received
    937
    Rep Power
    183
    Saved a lot of people time that's for sure.
    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. [Pi] Item level Requirement (easy question)
    By killag123 in forum Help
    Replies: 2
    Last Post: 08-16-2012, 10:17 PM
  2. Replies: 5
    Last Post: 07-08-2012, 11:03 PM
  3. [PI] Item Level Requirements [PI]
    By Versuprace in forum Tutorials
    Replies: 16
    Last Post: 06-28-2012, 10:52 PM
  4. [614] Item: Level-requirements
    By Redslash in forum Help
    Replies: 0
    Last Post: 05-04-2011, 01:20 PM
  5. 554 Item Level Requirements
    By The xx in forum Requests
    Replies: 1
    Last Post: 09-02-2010, 09:54 PM
Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •