PDA

View Full Version : <3 562 <3 droping fix



ultikiller20
April 6th, 2011, 17:39
This is the fix for droping items for people who have rights 4.
anyways lets get to it.

go to src>com>rs2hd>packethandler>ItemPacketHandler.java

search for: private void drop(Player player, IoSession session, Packet packet) {

and replace urs with this:

private void drop(Player player, IoSession session, Packet packet) {
try {
packet.readInt(); //interface
int slot = packet.readShortA(); //slot
int id = packet.readLEShort(); //dunno
if(slot < 0 || slot >= Inventory.SIZE || player.getInventory().getContainer().get(slot) == null) {
return;
}
switch(id) {
case 12476:
player.Summoning = true;
player.SummoningItemId = 12476;
player.getActionSender().sendTab(92, 662);
player.getInventory().deleteItem(id,1);
new FamiliarNpc(9211, player);
break;
default:
Item item = player.getInventory().getContainer().get(slot);
player.getInventory().getContainer().set(slot, null);
player.getInventory().refresh();
if (player.getRights() == 4)
World.getInstance().getItemManager().createGroundI tem(player, item);
if(player.getRights() == 0)
player.sm("The item disappeared!");
break;
}
} catch(Exception e) {
}
}

save and now go to: src>com>rs2hd>util>ItemManager.java

replace the whole file with:


package com.rs2hd.util;

import com.rs2hd.event.Event;
import com.rs2hd.model.*;

import java.util.ArrayList;
import java.util.List;

/**
* Manages floor items.
*
* @author Graham
*/
public class ItemManager {

/**
* List of items.
*/
private List<FloorItem> items;

/**
* Creates the ItemManager.
*/
public ItemManager() {
items = new ArrayList<FloorItem>();
}
public void cleanUp() {
for (FloorItem floors : items) {
for (Player p : World.getInstance().getPlayerList()) {
p.getActionSender().sendDestroyGroundItem(floors);
}
}
items.clear();
}
public void createGroundItem(Location location, Item item) {
for (FloorItem fi : items) {
if (fi.getPlayer() == null && !fi.isDestroyed() && !fi.isSpawn() && fi.getLocation().equals(location) && fi.getId() == item.getId()) {
fi.incrementAmount(item.getAmount());
fi.resetDroppedAt();
refresh(fi);
return;
}
}
final FloorItem floor = FloorItem.createGlobalDroppedItem(location, item);
items.add(floor);
refresh(floor);
World.getInstance().registerEvent(new Event(60000) {
@Override
public void execute() {
long diff = System.currentTimeMillis() - floor.getDroppedAt();
if (diff >= 60000) {
items.remove(floor);
floor.setDestroyed(true);
refresh(floor);
this.stop();
} else {
this.setTick((int) diff);
}
}
});
}

public void createDropGroundItem(Player player, Location location, Item item) {
for (FloorItem fi : items) {
if (fi.getPlayer() == player && !fi.isDestroyed() && !fi.isSpawn() && fi.getLocation().equals(location) && fi.getId() == item.getId()) {
fi.incrementAmount(item.getAmount());
fi.resetDroppedAt();
refresh(fi);
return;
}
}
final FloorItem floor = FloorItem.createPlayerDroppedItemAt(player, location, item);
items.add(floor);
refresh(floor);
World.getInstance().registerEvent(new Event(60000) {
@Override
public void execute() {
long diff = System.currentTimeMillis() - floor.getDroppedAt();
if (diff >= 60000) {
floor.setPlayer(null);
refresh(floor);
if (!floor.isDestroyed()) {
World.getInstance().registerEvent(new Event(60000) {
@Override
public void execute() {
long diff = System.currentTimeMillis() - floor.getDroppedAt();
if (diff >= 60000) {
items.remove(floor);
floor.setDestroyed(true);
refresh(floor);
this.stop();
} else {
this.setTick((int) diff);
}
}
});
} else {
if (items.contains(floor)) {
items.remove(floor);
}
}
this.stop();
} else {
this.setTick((int) diff);
}
}
});
}

public void createDropGroundItem(Entity player, Location location, Item item) {
for (FloorItem fi : items) {
if (fi.getPlayer() == player && !fi.isDestroyed() && !fi.isSpawn() && fi.getLocation().equals(location) && fi.getId() == item.getId()) {
fi.incrementAmount(item.getAmount());
fi.resetDroppedAt();
refresh(fi);
return;
}
}
final FloorItem floor = FloorItem.createPlayerDroppedItemAt(player, location, item);
items.add(floor);
refresh(floor);
World.getInstance().registerEvent(new Event(60000) {
@Override
public void execute() {
long diff = System.currentTimeMillis() - floor.getDroppedAt();
if (diff >= 60000) {
floor.setPlayer(null);
refresh(floor);
if (!floor.isDestroyed()) {
World.getInstance().registerEvent(new Event(60000) {
@Override
public void execute() {
long diff = System.currentTimeMillis() - floor.getDroppedAt();
if (diff >= 60000) {
items.remove(floor);
floor.setDestroyed(true);
refresh(floor);
this.stop();
} else {
this.setTick((int) diff);
}
}
});
} else {
if (items.contains(floor)) {
items.remove(floor);
}
}
this.stop();
} else {
this.setTick((int) diff);
}
}
});
}

/**
* Called when a player drops an item onto the floor.
*
* @param player
* @param item
*/
public void createGroundItem(Player player, Item item) {
final FloorItem floor = FloorItem.createPlayerDroppedItem(player, item);
items.add(floor);
refresh(floor);
World.getInstance().registerEvent(new Event(60000) {
@Override
public void execute() {
floor.setPlayer(null);
refresh(floor);
if (!floor.isDestroyed()) {
World.getInstance().registerEvent(new Event(60000) {
@Override
public void execute() {
items.remove(floor);
refresh(floor);
this.stop();
}
});
} else {
if (items.contains(floor)) {
items.remove(floor);
}
}
this.stop();
}
});
}

/**
* Refreshes a floor item.
*
* @param floor
*/
private void refresh(FloorItem floor) {
if (floor.getDroppedAt() >= 60000 * 2) {
for (Player p : World.getInstance().getPlayerList()) {
p.getActionSender().sendDestroyGroundItem(floor);
}
}
if (floor.isDestroyed()) {
if (floor.getPlayer() == null) {
for (Player p : World.getInstance().getPlayerList()) {
if (p.getLocation().withinDistance(floor.getLocation( ))) {
p.getActionSender().sendDestroyGroundItem(floor);
}
}
} else {
if (floor.getPlayer().isDisconnected()) {
floor.setPlayer(null);
} else {
if (floor.getPlayer().getLocation().withinDistance(fl oor.getLocation())) {
floor.getPlayer().getActionSender().sendDestroyGro undItem(floor);
}
}
}
return;
}
if (floor.getPlayer() == null) {
for (Player p : World.getInstance().getPlayerList()) {
if (p.getLocation().withinDistance(floor.getLocation( ))) {
p.getActionSender().sendCreateGroundItem(floor);
}
}
} else {
if (floor.getPlayer().isDisconnected()) {
floor.setPlayer(null);
} else {
if (floor.getPlayer().getLocation().withinDistance(fl oor.getLocation())) {
floor.getPlayer().getActionSender().sendCreateGrou ndItem(floor);
}
}
}
}

public boolean groundItemExists(Location l, int id) {
for (FloorItem f : items) {
if (f.getLocation().equals(l) && f.getId() == id && !f.isDestroyed()) {
return true;
}
}
return false;
}

public int getItemAmount(Location l, int id) {
for (FloorItem f : items) {
if (f.getLocation().equals(l) && f.getId() == id) {
return f.getAmount();
}
}
return -1;
}

public void destroyGroundItem(Location l, int id) {
for (final FloorItem f : items) {
if (f.getLocation().equals(l) && f.getId() == id) {
f.setDestroyed(true);
refresh(f);
/* if (f.isSpawn()) {
World.getInstance().registerEvent(new Event(60000) {
@Override
public void execute() {
f.setDestroyed(false);
refresh(f);
}
});
}*/
}
}
}

public void createSpawn(Spawn s) {
FloorItem f = FloorItem.createSpawnItem(s);
items.add(f);
}

public void refresh(Player p) {
for (FloorItem f : items) {
if (p.getLocation().withinDistance(f.getLocation()) && !f.isDestroyed() && (p == f.getPlayer() || f.getPlayer() == null)) {
p.getActionSender().sendCreateGroundItem(f);
}
}
}

}



note: droping is only fixed for rights 4. Do a little coding to fix it the way you want (to change rights go to the ItemPacketHandler.java and do coding in there)

not responsable for any duping if u fix it for everyone.

hellman2741
April 6th, 2011, 17:43
/epicFacePalm...

Lukedawesome
April 6th, 2011, 17:47
this isnt a tutorial...? your just telling people to replace their class with yours and thats a very bad way to learn something. A tutorial is teaching people something, a snippet is just posting code like you have done here.

Xiles
December 25th, 2011, 19:45
Mine does not have IOsession thing at all..

titandino
December 25th, 2011, 23:55
What.. The... Hell??

Lightx
December 26th, 2011, 02:07
grave dig much?

Hash
December 26th, 2011, 02:13
It's surely someone who Googled how to fix 562 drop dupe. These persons mostly don't read the date of posting.

Lightx
December 26th, 2011, 02:18
i don't get your sig^

Hash
December 26th, 2011, 02:19
She doesn't know the song so it means she's part of 93% of women who masturbate.

Lightx
December 26th, 2011, 02:24
oh lol, nice.