Thread: [PI] Item Lending Base

Page 1 of 2 12 LastLast
Results 1 to 10 of 12
  1. #1 [PI] Item Lending Base 
    Registered Member
    Join Date
    Oct 2013
    Posts
    775
    Thanks given
    48
    Thanks received
    104
    Rep Power
    14
    Code:
    package com.divine.fate.main.world.plugins;
    
    import java.util.HashMap;
    
    import com.divine.fate.main.cycle.CycleEvent;
    import com.divine.fate.main.cycle.CycleEventContainer;
    import com.divine.fate.main.cycle.CycleEventHandler;
    import com.divine.fate.main.model.entity.players.Player;
    import com.divine.fate.main.model.entity.players.PlayerHandler;
    
    /**
     * Handles the lending of an item
     * @author Final Project
     *
     */
    public class ItemLending {
    
    	/**
    	 * Creates an instance of the player
    	 */
    	private Player player;
    
    	/**
    	 * Constructs the class for the player
    	 * @param player
    	 * 			the player
    	 */
    	public ItemLending(Player player) {
    		this.player = player;
    	}
    
    	public enum LendItems {
    		ABYSSAL_WHIP(4151, 13444);
    
    		private final int id, lendId;
    
    		public int getItemId() {
    			return id;
    		}
    
    		public int getLendId() {
    			return lendId;
    		}
    
    		private LendItems(final int itemId, final int lendId) {
    			this.id = itemId;
    			this.lendId = lendId;
    		}
    
    		static HashMap<Integer, LendItems> lend = new HashMap<Integer, LendItems>();
    
    		static {
    			for (final LendItems l : lend.values())
    				lend.put(l.getItemId(), l);
    		}
    
    	}
    
    	/**
    	 * If item being lent is a lendable item
    	 * @param itemId
    	 * 			the item being lent
    	 * @return
    	 * 			if is lendable
    	 */
    	private boolean canLend(int itemId) {
    		return LendItems.lend.containsKey(itemId);
    	}
    
    	/**
    	 * Determines the lend times from hours to seconds
    	 */
    	private int[][] lendTimes = {
    			{ 1, 3600 }, { 2, 7200 },
    			{ 3, 10800 }, { 4, 14400 },
    			{ 5, 18000 }, { 6, 21600 },
    			{ 7, 25200 }, { 8, 28800 },
    			{ 9, 32400 }, { 10, 36000 },
    			{ 11, 39600 }, { 12, },
    			{ 13, }, { 14, },
    			{ 15, }, { 16, },
    			{ 17, }, { 18, },
    			{ 19, }, { 20, },
    			{ 21, }, { 22, },
    			{ 23, }, { 24, },
    	};
    
    	/**
    	 * Grabs the lend time
    	 * @param time
    	 * 			the lend time in hours
    	 * @return
    	 * 			the lend time in seconds
    	 */
    	private int getLendTimes(int time) {
    		for (int i = 0; i < lendTimes.length; i++) {
    			if (time == lendTimes[i][0]) {
    				return lendTimes[i][1];
    			}
    		}
    		return 0;
    	}
    
    	/**
    	 * Lends the item to a player
    	 * @param itemId
    	 * 			the item to be lent
    	 * @param playerId
    	 * 			the player to lend item to
    	 */
    	public void lendItem(int itemId, int playerId) {
    		Player other = PlayerHandler.players[playerId];
    		if (other.getItems().freeSlots() < 1) {
    			player.sendMessage("The other player doesn't have enough inventory space!");
    			return;
    		}
    		if (other.hasLentItem) {
    			player.sendMessage("The other player already has a lent item.");
    			other.sendMessage("You already have a lent item.");
    			return;
    		}
    		if (canLend(itemId)) {
    			for (final LendItems lendItems : LendItems.values()) {
    				if (itemId == lendItems.getItemId()) {
    					if (player.getItems().playerHasItem(itemId, 1)) {
    						other.getDH().sendItems(5, lendItems.getItemId());
    						player.sendMessage("Sending lent item request...");
    						break;
    					}
    				}
    			}
    		} else {
    			player.sendMessage("This item cannot be lent.");
    		}
    	}
    
    	/**
    	 * Handles the time deduction for a lent item
    	 */
    	public void handleLendTime() {
    		CycleEventHandler.getSingleton().addEvent(this, new CycleEvent() {
    			@Override
    			public void execute(CycleEventContainer container) {
    				if (player.lendTime <= 0) {
    					container.stop();
    					return;
    				} else if (player.lendTime >= 0) {
    					player.lendTime --;
    				}
    			}
    			@Override
    			public void stop() {
    				player.lendTime = 0;
    			}
    
    		}, getLendTimes(player.lendTime));
    	}
    	
    	/**
    	 * Handles the dropping of a lent item
    	 * @param itemId
    	 * 			the lent item being dropped
    	 * @param amount
    	 * 			the amount being dropped
    	 */
    	public void dropLentItem(int itemId, int amount) {
    		for (final LendItems lendItems : LendItems.values()) {
    			if (itemId == lendItems.getItemId()) {
    				player.getItems().deleteItem(itemId, amount);
    				player.lendTime = 0;
    				break;
    			}
    		}
    	}
    
    	public void handleDialogueButton(int buttonId) {
    		switch (buttonId) {
    		case 9157:
    			if (player.itemAction == 1) {
    				//usedOn.getItems().addItem(lendItems.getLendId(), 1);
    				//player.getItems().deleteItem(lendItems.getItemId(), 1);
    			}
    			break;
    		}
    	}
    
    }
    Code:
    	/**
    	 * Lent items TODO
    	 */
    	public boolean hasLentItem = false;
    	public String whoLent = null;
    	public int lendTime = 0;
    	public boolean beingLent = false;
    got bored and felt like writing one after seeing the other one, obviously not complete and i left a few mistakes, will finish this up later
    Reply With Quote  
     

  2. Thankful users:


  3. #2  
    Registered Member
    Join Date
    Oct 2013
    Posts
    775
    Thanks given
    48
    Thanks received
    104
    Rep Power
    14


    Reply With Quote  
     

  4. #3  
    Member
    Join Date
    Jun 2014
    Posts
    74
    Thanks given
    5
    Thanks received
    1
    Rep Power
    0
    Looks nice, good work.
    Rep+ & Thanks.
    Reply With Quote  
     

  5. #4  
    What's a sundial in the shade?

    Lumiere's Avatar
    Join Date
    May 2013
    Age
    27
    Posts
    543
    Thanks given
    224
    Thanks received
    100
    Rep Power
    113
    Spoiler for Quote:
    Quote Originally Posted by Our Promise View Post
    Code:
    package com.divine.fate.main.world.plugins;
    
    import java.util.HashMap;
    
    import com.divine.fate.main.cycle.CycleEvent;
    import com.divine.fate.main.cycle.CycleEventContainer;
    import com.divine.fate.main.cycle.CycleEventHandler;
    import com.divine.fate.main.model.entity.players.Player;
    import com.divine.fate.main.model.entity.players.PlayerHandler;
    
    /**
     * Handles the lending of an item
     * @author Final Project
     *
     */
    public class ItemLending {
    
    	/**
    	 * Creates an instance of the player
    	 */
    	private Player player;
    
    	/**
    	 * Constructs the class for the player
    	 * @param player
    	 * 			the player
    	 */
    	public ItemLending(Player player) {
    		this.player = player;
    	}
    
    	public enum LendItems {
    		ABYSSAL_WHIP(4151, 13444);
    
    		private final int id, lendId;
    
    		public int getItemId() {
    			return id;
    		}
    
    		public int getLendId() {
    			return lendId;
    		}
    
    		private LendItems(final int itemId, final int lendId) {
    			this.id = itemId;
    			this.lendId = lendId;
    		}
    
    		static HashMap<Integer, LendItems> lend = new HashMap<Integer, LendItems>();
    
    		static {
    			for (final LendItems l : lend.values())
    				lend.put(l.getItemId(), l);
    		}
    
    	}
    
    	/**
    	 * If item being lent is a lendable item
    	 * @param itemId
    	 * 			the item being lent
    	 * @return
    	 * 			if is lendable
    	 */
    	private boolean canLend(int itemId) {
    		return LendItems.lend.containsKey(itemId);
    	}
    
    	/**
    	 * Determines the lend times from hours to seconds
    	 */
    	private int[][] lendTimes = {
    			{ 1, 3600 }, { 2, 7200 },
    			{ 3, 10800 }, { 4, 14400 },
    			{ 5, 18000 }, { 6, 21600 },
    			{ 7, 25200 }, { 8, 28800 },
    			{ 9, 32400 }, { 10, 36000 },
    			{ 11, 39600 }, { 12, },
    			{ 13, }, { 14, },
    			{ 15, }, { 16, },
    			{ 17, }, { 18, },
    			{ 19, }, { 20, },
    			{ 21, }, { 22, },
    			{ 23, }, { 24, },
    	};
    
    	/**
    	 * Grabs the lend time
    	 * @param time
    	 * 			the lend time in hours
    	 * @return
    	 * 			the lend time in seconds
    	 */
    	private int getLendTimes(int time) {
    		for (int i = 0; i < lendTimes.length; i++) {
    			if (time == lendTimes[i][0]) {
    				return lendTimes[i][1];
    			}
    		}
    		return 0;
    	}
    
    	/**
    	 * Lends the item to a player
    	 * @param itemId
    	 * 			the item to be lent
    	 * @param playerId
    	 * 			the player to lend item to
    	 */
    	public void lendItem(int itemId, int playerId) {
    		Player other = PlayerHandler.players[playerId];
    		if (other.getItems().freeSlots() < 1) {
    			player.sendMessage("The other player doesn't have enough inventory space!");
    			return;
    		}
    		if (other.hasLentItem) {
    			player.sendMessage("The other player already has a lent item.");
    			other.sendMessage("You already have a lent item.");
    			return;
    		}
    		if (canLend(itemId)) {
    			for (final LendItems lendItems : LendItems.values()) {
    				if (itemId == lendItems.getItemId()) {
    					if (player.getItems().playerHasItem(itemId, 1)) {
    						other.getDH().sendItems(5, lendItems.getItemId());
    						player.sendMessage("Sending lent item request...");
    						break;
    					}
    				}
    			}
    		} else {
    			player.sendMessage("This item cannot be lent.");
    		}
    	}
    
    	/**
    	 * Handles the time deduction for a lent item
    	 */
    	public void handleLendTime() {
    		CycleEventHandler.getSingleton().addEvent(this, new CycleEvent() {
    			@Override
    			public void execute(CycleEventContainer container) {
    				if (player.lendTime <= 0) {
    					container.stop();
    					return;
    				} else if (player.lendTime >= 0) {
    					player.lendTime --;
    				}
    			}
    			@Override
    			public void stop() {
    				player.lendTime = 0;
    			}
    
    		}, getLendTimes(player.lendTime));
    	}
    	
    	/**
    	 * Handles the dropping of a lent item
    	 * @param itemId
    	 * 			the lent item being dropped
    	 * @param amount
    	 * 			the amount being dropped
    	 */
    	public void dropLentItem(int itemId, int amount) {
    		for (final LendItems lendItems : LendItems.values()) {
    			if (itemId == lendItems.getItemId()) {
    				player.getItems().deleteItem(itemId, amount);
    				player.lendTime = 0;
    				break;
    			}
    		}
    	}
    
    	public void handleDialogueButton(int buttonId) {
    		switch (buttonId) {
    		case 9157:
    			if (player.itemAction == 1) {
    				//usedOn.getItems().addItem(lendItems.getLendId(), 1);
    				//player.getItems().deleteItem(lendItems.getItemId(), 1);
    			}
    			break;
    		}
    	}
    
    }
    Code:
    	/**
    	 * Lent items TODO
    	 */
    	public boolean hasLentItem = false;
    	public String whoLent = null;
    	public int lendTime = 0;
    	public boolean beingLent = false;
    got bored and felt like writing one after seeing the other one, obviously not complete and i left a few mistakes, will finish this up later


    Nice work, I might use at some point.

    Also; is there any chance that PvP On/PvP Off thing has been released?
    I've been looking for something of the sort, foreevverr. I'm not even sure where to begin.
    Or.. is that just a way of telling the player when they're in the PvP Zone? Bahah.

    Spoiler for Revy is perfect:
    Reply With Quote  
     

  6. #5  
    Respected Member


    George's Avatar
    Join Date
    Mar 2009
    Posts
    7,099
    Thanks given
    2,226
    Thanks received
    3,146
    Rep Power
    5000
    Code:
    	public enum LendItems {
    		ABYSSAL_WHIP(4151, 13444);
    
    		private final int id, lendId;
    
    		public int getItemId() {
    			return id;
    		}
    
    		public int getLendId() {
    			return lendId;
    		}
    
    		private LendItems(final int itemId, final int lendId) {
    			this.id = itemId;
    			this.lendId = lendId;
    		}
    
    		static HashMap<Integer, LendItems> lend = new HashMap<Integer, LendItems>();
    
    		static {
    			for (final LendItems l : lend.values())
    				lend.put(l.getItemId(), l);
    		}
    
    	}
    ?????????????????????????????+
    Attached image

    Spoiler for Spoilers!:
    Attached image
    Attached image
    Attached image
    Attached image
    Reply With Quote  
     

  7. #6  
    Software Developer

    Tyrant's Avatar
    Join Date
    Jul 2013
    Age
    24
    Posts
    1,562
    Thanks given
    678
    Thanks received
    423
    Rep Power
    1060
    Quote Originally Posted by Humpty Dumpty View Post
    Code:
    	public enum LendItems {
    		ABYSSAL_WHIP(4151, 13444);
    
    		private final int id, lendId;
    
    		public int getItemId() {
    			return id;
    		}
    
    		public int getLendId() {
    			return lendId;
    		}
    
    		private LendItems(final int itemId, final int lendId) {
    			this.id = itemId;
    			this.lendId = lendId;
    		}
    
    		static HashMap<Integer, LendItems> lend = new HashMap<Integer, LendItems>();
    
    		static {
    			for (final LendItems l : lend.values())
    				lend.put(l.getItemId(), l);
    		}
    
    	}
    ?????????????????????????????+

    ^ I also wonder
    Reply With Quote  
     

  8. #7  
    Shit Developer


    Join Date
    Dec 2012
    Posts
    627
    Thanks given
    128
    Thanks received
    122
    Rep Power
    105
    Thanks for the contribution
    Reply With Quote  
     

  9. #8  
    Registered Member
    Join Date
    Oct 2013
    Posts
    775
    Thanks given
    48
    Thanks received
    104
    Rep Power
    14
    Quote Originally Posted by Humpty Dumpty View Post
    Code:
    	public enum LendItems {
    		ABYSSAL_WHIP(4151, 13444);
    
    		private final int id, lendId;
    
    		public int getItemId() {
    			return id;
    		}
    
    		public int getLendId() {
    			return lendId;
    		}
    
    		private LendItems(final int itemId, final int lendId) {
    			this.id = itemId;
    			this.lendId = lendId;
    		}
    
    		static HashMap<Integer, LendItems> lend = new HashMap<Integer, LendItems>();
    
    		static {
    			for (final LendItems l : lend.values())http://oi57.tinypic.com/3013ga8.jpg
    				lend.put(l.getItemId(), l);
    		}
    
    	}
    ?????????????????????????????+
    hmm?
    Reply With Quote  
     

  10. #9  
    Registered Member
    Join Date
    Oct 2013
    Posts
    775
    Thanks given
    48
    Thanks received
    104
    Rep Power
    14
    Quote Originally Posted by Lumiere View Post

    Nice work, I might use at some point.

    Also; is there any chance that PvP On/PvP Off thing has been released?
    I've been looking for something of the sort, foreevverr. I'm not even sure where to begin.
    Or.. is that just a way of telling the player when they're in the PvP Zone? Bahah.
    its relatively simple actually. you just evolve the whole pvp thing around a boolean and turn it true or false to turn it on and off. if you wanna reference it, you can look through my old release here, http://www.rune-server.org/runescape...te-decide.html

    which i dont advice using as its total crap, in the process of cleaning it up
    Reply With Quote  
     

  11. Thankful user:


  12. #10  
    Registered Member
    Stanaveli's Avatar
    Join Date
    Aug 2014
    Posts
    1,491
    Thanks given
    184
    Thanks received
    653
    Rep Power
    1338
    Quote Originally Posted by Our Promise View Post
    hmm?
    You don't need hashmaps or any other type of collection to store the already defined constants.

    Enum.values() is all you need as the constants are all returned in an array in the same order they were declared.
    Keep your head up.



    Reply With Quote  
     

Page 1 of 2 12 LastLast

Thread Information
Users Browsing this Thread

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


User Tag List

Similar Threads

  1. [508] Item on Item herblore base
    By Tonypker in forum Tutorials
    Replies: 8
    Last Post: 05-18-2009, 01:36 AM
  2. [525]My item lending. One last thing!
    By Extea in forum Help
    Replies: 9
    Last Post: 05-10-2009, 09:37 AM
  3. [525]My item lending. One last thing!
    By Extea in forum Help
    Replies: 0
    Last Post: 03-13-2009, 10:51 PM
  4. Making items 2handed base, not fully working...
    By kilermage in forum Tutorials
    Replies: 4
    Last Post: 09-29-2007, 06:29 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
  •