Jump to content
Sign in to follow this  
'Kyle

[718+] Floor Item Examining

Recommended Posts

Being that I spent many hours working with this, trying to figure out what exactly was the issue and why it wouldn't work, I've decided to share this information with you all so that it may save you both the time and trouble. Furthermore, because I only have seen one snippet pertinent towards item floor examining and the amount of 718 revisions+ that have ground item examining are slim to none.

What was the issue? Well, as most of you are surely aware, client packets must be precise. The variables were not.
NOTE: If you either used this or if this helped you in ANY way, please don't hesitate to up-vote (its FREE!)

First you'll need to declare your packets+size inside WPD:

Spoiler

    private final static int ITEM_ON_FLOOR_EXAMINE = 102;

 

Then add this under processPackets method:

Spoiler

        } else if (packetId == ITEM_ON_FLOOR_EXAMINE) {
            int y = stream.readUnsignedShort(); //CLIENT SENDS THEM BACKWARDS ON PURPOSE
            int x = stream.readUnsignedShortLE();
            int id = stream.readUnsignedShort();
            boolean forceRun = stream.readUnsigned128Byte() == 1;
            player.getPackets().sendItemMessage(0, 15263739, id, x, y, ItemExamines.getExamine(new Item(id))); // ChatboxMessage

 

Inside WPE:

Spoiler


    public void sendItemMessage(int border, int colour, int id, int x, int y, String message) {
        sendGameMessage(message);
        sendGlobalString(306, message);
        sendGlobalConfig(1699, colour); //"color" - Default; 1 - Black
        sendGlobalConfig(1700, border); //"border" - Default; 0 - White; 1 - Red; 2 - No Border
        sendGlobalConfig(1695, 1);
        sendItemInterface(new Item(id), new WorldTile(x, y, player.getPlane()), true, 746, 0, 1177);
    }

    public void sendItemInterface(Item item, WorldTile tile, boolean noclipped, int windowId, int windowComponentId, int interfaceId) {
        int[] xteas = new int[4];
        OutputStream stream = new OutputStream(30);
        stream.writePacket(player, 36);
        stream.writeByte128(noclipped ? 1 : 0);
        stream.writeIntV2(xteas[0]);
        stream.writeIntLE((windowId << 16) | windowComponentId);
        stream.writeIntV1(xteas[1]);
        stream.writeShort(item.getId());
        stream.writeIntV1(xteas[2]);
        stream.writeInt(xteas[3]);
        stream.writeShortLE(interfaceId);
        stream.writeInt((tile.getPlane() << 28) | (tile.getX() << 14) | tile.getY());
        session.write(stream);
    }

 

unknown.png

 


Cody_
Wildskiller
Myself

 

Edited by 'Kyle

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×