Jump to content

The RuneLocus forum has been archived and does not accept new registrations.
Click here for more information, and click here to join the community on Discord.

[718+] Floor Item Examining


'Kyle
 Share

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
Link to comment
Share on other sites

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...