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();
}