Thread: [Avalon] Found money pouch dupe, heres fix.

Results 1 to 6 of 6
  1. #1 [Avalon] Found money pouch dupe, heres fix. 
    Registered Member

    Join Date
    Mar 2011
    Age
    27
    Posts
    555
    Thanks given
    168
    Thanks received
    190
    Rep Power
    0
    in World.java replace your
    Code:
    public static final boolean removeGroundItem(Player player, final FloorItem floorItem, boolean add) {
    with

    Code:
    public static final boolean removeGroundItem(Player player, final FloorItem floorItem, boolean add) {
    		int regionId = floorItem.getTile().getRegionId();
    		Region region = getRegion(regionId);
    		WorldTile playerTile = new WorldTile(player.getX(), player.getY(), player.getPlane());
    		if (!region.getGroundItemsSafe().contains(floorItem))
    			return false;
    		int amount = floorItem.getAmount();
    		if (floorItem.getId() == 995 && !player.isAtWild() && !FfaZone.inRiskArea(player)) {
    			amount = floorItem.getAmount();
    			int leftOver = 0;
    			int inventoryLeftOver = 0;
    			if (player.getMoneyPouch().getTotal() + amount > Integer.MAX_VALUE
    					|| player.getMoneyPouch().getTotal() + amount < 0) {
    				if (player.getMoneyPouch().getTotal() != Integer.MAX_VALUE)
    					player.getPackets().sendGameMessage("Your money pouch is not big enough to hold that much cash.");
    				leftOver = Integer.MAX_VALUE - player.getMoneyPouch().getTotal();
    				amount = amount - leftOver;
    				if (player.getMoneyPouch().getTotal() != Integer.MAX_VALUE) {
    					player.getPackets().sendRunScript(5561, 1, leftOver);
    					player.getMoneyPouch().setTotal(Integer.MAX_VALUE);
    					player.getPackets().sendGameMessage(
    							Utils.getFormattedNumber(leftOver, ',') + " coins have been added to your money pouch.");
    					player.getMoneyPouch().refresh();
    					floorItem.setAmount(leftOver);
    				}
    				if (!player.getInventory().hasFreeSlots() && !player.getInventory().containsItem(995, 1)) {
    					player.getPackets().sendGameMessage("You don't have enough inventory space.");
    					return false;
    				}
    				if (player.getInventory().getNumberOf(995) + amount > Integer.MAX_VALUE
    						|| player.getInventory().getNumberOf(995) + amount < 0) {
    					inventoryLeftOver = Integer.MAX_VALUE - player.getInventory().getNumberOf(995);
    					amount = amount - inventoryLeftOver;
    					if (player.getInventory().getNumberOf(995) != Integer.MAX_VALUE) {
    						player.getInventory().deleteItem(995, Integer.MAX_VALUE);
    						player.getInventory().addItem(995, Integer.MAX_VALUE);
    					}
    					floorItem.setAmount(amount);
    					player.getPackets().sendRemoveGroundItem(floorItem);
    					player.getPackets().sendGroundItem(floorItem);
    					return false;
    				}
    				player.getInventory().addItem(995, amount);
    				region.getGroundItemsSafe().remove(floorItem);
    				if (floorItem.isInvisible()) {
    					player.getPackets().sendRemoveGroundItem(floorItem);
    					return true;
    				} else {
    					for (Player p2 : World.getPlayers()) {
    						if (p2 == null || !p2.hasStarted() || p2.hasFinished()
    								|| p2.getPlane() != floorItem.getTile().getPlane()
    								|| !p2.getMapRegionsIds().contains(regionId))
    							continue;
    						p2.getPackets().sendRemoveGroundItem(floorItem);
    					}
    					if (floorItem.isForever()) {
    						CoresManager.slowExecutor.schedule(new Runnable() {
    							@Override
    							public void run() {
    								try {
    									addGroundItemForever(floorItem, floorItem.getTile());
    								} catch (Throwable e) {
    									Logger.handle(e);
    								}
    							}
    						}, 60, TimeUnit.SECONDS);
    					}
    					return true;
    				}
    			}
    			if (player.getMoneyPouch().getTotal() == Integer.MAX_VALUE)
    				return false;
    			if (amount > 1)
    				player.getPackets().sendGameMessage(
    						Utils.getFormattedNumber(amount, ',') + " coins have been added to your money pouch.");
    			else
    				player.getPackets().sendGameMessage("One coin has been added to your money pouch.");
    			player.getPackets().sendRunScript(5561, 1, amount);
    			player.getMoneyPouch().setTotal(player.getMoneyPouch().getTotal() + amount);
    			player.getMoneyPouch().refresh();
    			if (player.getFreezeDelay() >= Utils.currentTimeMillis()) {
    				if (!floorItem.getTile().matches(playerTile))
    					player.setNextAnimation(new Animation(537));
    			}
    			region.getGroundItemsSafe().remove(floorItem);
    			if (floorItem.isInvisible()) {
    				player.getPackets().sendRemoveGroundItem(floorItem);
    				return true;
    			} else {
    				for (Player p2 : World.getPlayers()) {
    					if (p2 == null || !p2.hasStarted() || p2.hasFinished()
    							|| p2.getPlane() != floorItem.getTile().getPlane()
    							|| !p2.getMapRegionsIds().contains(regionId))
    						continue;
    					p2.getPackets().sendRemoveGroundItem(floorItem);
    				}
    				if (floorItem.isForever()) {
    					CoresManager.slowExecutor.schedule(new Runnable() {
    						@Override
    						public void run() {
    							try {
    								addGroundItemForever(floorItem, floorItem.getTile());
    							} catch (Throwable e) {
    								Logger.handle(e);
    							}
    						}
    					}, 60, TimeUnit.SECONDS);
    				}
    				return true;
    			}
    		}
    		int inventoryLeftOver = 0;
    		if (player.getInventory().getAmountOf(floorItem.getId()) == Integer.MAX_VALUE) {
    			player.getPackets().sendGameMessage("Not enough space in your inventory.");
    			return false;
    		}
    		if (!player.getInventory().hasFreeSlots()
    				&& ((floorItem.getDefinitions().isStackable() || floorItem.getDefinitions().isNoted())
    						&& !player.getInventory().containsItem(floorItem.getId(), 1))) {
    			player.getPackets().sendGameMessage("Not enough space in your inventory.");
    			return false;
    		} else if (!player.getInventory().hasFreeSlots()
    				&& (!floorItem.getDefinitions().isStackable() && !floorItem.getDefinitions().isNoted())) {
    			player.getPackets().sendGameMessage("Not enough space in your inventory.");
    			return false;
    		}
    		if (player.getInventory().getNumberOf(floorItem.getId()) + amount > Integer.MAX_VALUE
    				|| player.getInventory().getNumberOf(floorItem.getId()) + amount < 0) {
    			inventoryLeftOver = Integer.MAX_VALUE - player.getInventory().getNumberOf(floorItem.getId());
    			amount = amount - inventoryLeftOver;
    			if (player.getInventory().getNumberOf(floorItem.getId()) != Integer.MAX_VALUE) {
    				player.getInventory().deleteItem(floorItem.getId(), Integer.MAX_VALUE);
    				player.getInventory().addItem(floorItem.getId(), Integer.MAX_VALUE);
    			}
    			floorItem.setAmount(amount);
    			player.getPackets().sendRemoveGroundItem(floorItem);
    			player.getPackets().sendGroundItem(floorItem);
    			return false;
    		}
    		if (player.getFreezeDelay() >= Utils.currentTimeMillis()) {
    			if (!floorItem.getTile().matches(playerTile))
    				player.setNextAnimation(new Animation(537));
    		}
    		region.getGroundItemsSafe().remove(floorItem);
    		if (add)
    			player.getInventory().addItem(new Item(floorItem.getId(), floorItem.getAmount()));
    		if (floorItem.isInvisible()) {
    			player.getPackets().sendRemoveGroundItem(floorItem);
    			return true;
    		} else {
    			for (Player p2 : World.getPlayers()) {
    				if (p2 == null || !p2.hasStarted() || p2.hasFinished()
    						|| p2.getPlane() != floorItem.getTile().getPlane() || !p2.getMapRegionsIds().contains(regionId))
    					continue;
    				p2.getPackets().sendRemoveGroundItem(floorItem);
    			}
    			if (floorItem.isForever()) {
    				CoresManager.slowExecutor.schedule(new Runnable() {
    					@Override
    					public void run() {
    						try {
    							addGroundItemForever(floorItem, floorItem.getTile());
    						} catch (Throwable e) {
    							Logger.handle(e);
    						}
    					}
    				}, 60, TimeUnit.SECONDS);
    			}
    		}
    		return true;
    	}

    Also if you want to fix so you can withdraw money from pouch while having full inventory but you still have coins in inventory

    in MoneyPouch.java replace
    Code:
    public void withdrawPouch(int amount) {

    with

    Code:
    	public void withdrawPouch(int amount) {
    		if (amount <= 0)
    			return;
    		if (getTotal() <= 0) {
    			player.getPackets().sendGameMessage("You don't have any money stored in your money pouch.");
    			return;
    		}
    		if (player.getInventory().getFreeSlots() == 0 && player.getInventory().getNumberOf(995) < 1
    				|| player.getInventory().getNumberOf(995) == Integer.MAX_VALUE) {
    			player.getPackets().sendGameMessage("no space bro");
    			return;
    		}
    		if (player.getInventory().getNumberOf(995) > Integer.MAX_VALUE - amount) {
    			amount = Integer.MAX_VALUE - player.getInventory().getNumberOf(995);
    		}
    		if (amount > getTotal()) {
    			amount = getTotal();
    		}
    		if (amount > 1) {
    			player.getPackets().sendGameMessage(
    					Utils.getFormattedNumber(amount, ',') + " coins have been removed from your money pouch.");
    		} else {
    			player.getPackets().sendGameMessage("One coin has been removed from your money pouch.");
    		}
    		player.getMoneyPouch().setTotal(player.getMoneyPouch().getTotal() - amount);
    		player.getInventory().addItem(new Item(995, amount));
    		player.getPackets().sendRunScript(5561, 0, amount);
    		refresh();
    	}
    Avalon Developer
    Reply With Quote  
     

  2. #2  
    love

    scoob's Avatar
    Join Date
    Oct 2015
    Age
    25
    Posts
    1,642
    Thanks given
    367
    Thanks received
    640
    Rep Power
    1559
    Thanks for the contribution : )
    Attached image
    Reply With Quote  
     

  3. Thankful user:


  4. #3  
    Registered Member

    Join Date
    Mar 2011
    Age
    27
    Posts
    555
    Thanks given
    168
    Thanks received
    190
    Rep Power
    0
    Quote Originally Posted by MemeStar View Post
    Thanks for the contribution : )
    No problem
    Avalon Developer
    Reply With Quote  
     

  5. #4  
    van 't stad

    Shnek's Avatar
    Join Date
    Oct 2013
    Posts
    1,065
    Thanks given
    343
    Thanks received
    297
    Rep Power
    109
    as always gj What was the bug btw ?
    Attached image

    Do not use the vps from ovh, blocking vps without reason and no customer support
    Reply With Quote  
     

  6. Thankful user:


  7. #5  
    Registered Member

    Join Date
    Mar 2011
    Age
    27
    Posts
    555
    Thanks given
    168
    Thanks received
    190
    Rep Power
    0
    Quote Originally Posted by omglolomghi View Post
    as always gj What was the bug btw ?
    Just a simple mistake, if you had for example 1m away from full money pouch & pick up money, it would fill money pouch to full and then leave the leftOver to inventory, just like it should, but instead of removing the floorItem it would set the floor item to Integer.MAX_VALUE - leftOver, that would mean it would appear 2146m on floor aswell.
    Avalon Developer
    Reply With Quote  
     

  8. #6  
    Zamron Founder

    Join Date
    Feb 2015
    Posts
    274
    Thanks given
    26
    Thanks received
    27
    Rep Power
    61
    Thanks for this, will help alot of people!
    Attached image
    Attached image
    Reply With Quote  
     

  9. Thankful user:



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. [718] Trade/Money Pouch dupe fix
    By Sammi in forum Help
    Replies: 1
    Last Post: 09-02-2014, 12:45 AM
  2. Money pouch dupe fix
    By Your tits trololololol in forum Requests
    Replies: 3
    Last Post: 09-21-2012, 09:55 PM
  3. Money pouch dupe [fix]
    By Uzumaki in forum Snippets
    Replies: 8
    Last Post: 07-24-2012, 01:28 PM
  4. Money Pouch dupe fix
    By woof woof bish in forum Snippets
    Replies: 12
    Last Post: 06-04-2012, 07:13 PM
  5. Money Pouch Dupe Fix
    By 01053 in forum Snippets
    Replies: 14
    Last Post: 02-18-2012, 12:03 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
  •