hey guys, noticed that PI doesn't check if you are within distance when using item on object so i decided to post it here
ItemOnObject.java
Code:
package server.model.players.packets;
/**
* @author Ryan / Lmctruck30 / Aleksandr
*/
import server.model.items.UseItem;
import server.model.players.Client;
import server.model.players.PacketType;
import server.util.Misc;
public class ItemOnObject implements PacketType {
@Override
public void processPacket(Client c, int packetType, int packetSize) {
/*
* a = ?
* b = ?
*/
int a = c.getInStream().readUnsignedWord();
c.objectId = c.getInStream().readSignedWordBigEndian();
c.objectY = c.getInStream().readSignedWordBigEndianA();
int b = c.getInStream().readUnsignedWord();
c.objectX = c.getInStream().readSignedWordBigEndianA();
c.usedItemID = c.getInStream().readUnsignedWord();
if(c.playerRights >= 3) {
Misc.println("objectId: "+c.objectId+" ObjectX: "+c.objectX+ " objectY: "+c.objectY+" Xoff: "+ (c.getX() - c.objectX)+" Yoff: "+ (c.getY() - c.objectY));
c.sendMessage("objectId: " + c.objectId + " objectX: " + c.objectX + " objectY: " + c.objectY);
}
switch(c.objectId) {
default:
c.objectDistance = 1;
c.objectXOffset = 0;
c.objectYOffset = 0;
break;
}
if(c.goodDistance(c.objectX+c.objectXOffset, c.objectY+c.objectYOffset, c.getX(), c.getY(), c.objectDistance)) {
c.turnPlayerTo(c.objectX, c.objectY);
UseItem.ItemonObject(c, c.objectId, c.objectX, c.objectY, c.usedItemID);
} else {
c.clickObjectType = 4;
}
}
}
in Player.java declare
Code:
public int usedItemID;
Then in UseItem.java search for
Code:
public static void ItemonObject(Client c, int objectID, int objectX, int objectY, int itemId) {
and underneath add
Code:
c.clickObjectType = 0;
in Client.java search for
Code:
if(clickObjectType == 3) {
getActions().thirdClickObject(objectId, objectX, objectY);
}
and underneath add
Code:
if(clickObjectType == 4) {
turnPlayerTo(objectX, objectY);
UseItem.ItemonObject(this, objectId, objectX, objectY, usedItemID);
}
Hope i didn't miss anything. Now you will need to add object Offsets and object distance to ItemOnObject.java
The default is
Code:
default:
c.objectDistance = 1;
c.objectXOffset = 0;
c.objectYOffset = 0;
break;