mirror of
https://github.com/2006-Scape/apollo.git
synced 2026-07-03 00:38:21 +00:00
Merge pull request #331 from Major-/npc-item
Add support for decoding Item on Npc messages
This commit is contained in:
@@ -0,0 +1,83 @@
|
|||||||
|
package org.apollo.game.message.impl;
|
||||||
|
|
||||||
|
import org.apollo.net.message.Message;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A {@link Message} sent by the client when a player uses an item on a npc.
|
||||||
|
*
|
||||||
|
* @author Lmctruck30
|
||||||
|
*/
|
||||||
|
public final class ItemOnNpcMessage extends Message {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The id of the item used on the Npc.
|
||||||
|
*/
|
||||||
|
private final int id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The index of the Npc the item was used on.
|
||||||
|
*/
|
||||||
|
private final int index;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Item slot from inventory.
|
||||||
|
*/
|
||||||
|
private final int slot;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The id of the interface the item was in, before it was used.
|
||||||
|
*/
|
||||||
|
private final int interfaceId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates the ItemOnNpcMessage.
|
||||||
|
*
|
||||||
|
* @param id The id of the item used on the Npc.
|
||||||
|
* @param index The index of the Npc the item was used on.
|
||||||
|
* @param slot The slot the item was in, in the players inventory.
|
||||||
|
* @param interfaceId The id of the interface the item was in, before it was used.
|
||||||
|
*/
|
||||||
|
public ItemOnNpcMessage(int id, int index, int slot, int interfaceId) {
|
||||||
|
this.id = id;
|
||||||
|
this.slot = slot;
|
||||||
|
this.index = index;
|
||||||
|
this.interfaceId = interfaceId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the item id.
|
||||||
|
*
|
||||||
|
* @return The id.
|
||||||
|
*/
|
||||||
|
public int getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the slot the item was in.
|
||||||
|
*
|
||||||
|
* @return The slot.
|
||||||
|
*/
|
||||||
|
public int getSlot() {
|
||||||
|
return slot;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the index of the Npc the item was used on.
|
||||||
|
*
|
||||||
|
* @return The index.
|
||||||
|
*/
|
||||||
|
public int getIndex() {
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the id of the interface the item was in, before it was used.
|
||||||
|
*
|
||||||
|
* @return The interface id.
|
||||||
|
*/
|
||||||
|
public int getInterfaceId() {
|
||||||
|
return interfaceId;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package org.apollo.game.release.r317;
|
||||||
|
|
||||||
|
import org.apollo.game.message.impl.ItemOnNpcMessage;
|
||||||
|
import org.apollo.net.codec.game.DataOrder;
|
||||||
|
import org.apollo.net.codec.game.DataTransformation;
|
||||||
|
import org.apollo.net.codec.game.DataType;
|
||||||
|
import org.apollo.net.codec.game.GamePacket;
|
||||||
|
import org.apollo.net.codec.game.GamePacketReader;
|
||||||
|
import org.apollo.net.release.MessageDecoder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A {@link MessageDecoder} for the {@link ItemOnNpcMessage}.
|
||||||
|
*
|
||||||
|
* @author Lmctruck30
|
||||||
|
*/
|
||||||
|
public final class ItemOnNpcMessageDecoder extends MessageDecoder<ItemOnNpcMessage> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemOnNpcMessage decode(GamePacket packet) {
|
||||||
|
GamePacketReader reader = new GamePacketReader(packet);
|
||||||
|
|
||||||
|
int id = (int) reader.getUnsigned(DataType.SHORT, DataTransformation.ADD);
|
||||||
|
int index = (int) reader.getUnsigned(DataType.SHORT, DataTransformation.ADD);
|
||||||
|
int slot = (int) reader.getSigned(DataType.SHORT, DataOrder.LITTLE);
|
||||||
|
int interfaceId = (int) reader.getUnsigned(DataType.SHORT, DataTransformation.ADD);
|
||||||
|
|
||||||
|
return new ItemOnNpcMessage(id, index, slot, interfaceId);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -61,12 +61,13 @@ public final class Release317 extends Release {
|
|||||||
/**
|
/**
|
||||||
* The incoming packet lengths array.
|
* The incoming packet lengths array.
|
||||||
*/
|
*/
|
||||||
public static final int[] PACKET_LENGTHS = { 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, // 0
|
public static final int[] PACKET_LENGTHS = {
|
||||||
|
0, 0, 0, 1, -1, 0, 0, 0, 0, 0, // 0
|
||||||
0, 0, 0, 0, 8, 0, 6, 2, 2, 0, // 10
|
0, 0, 0, 0, 8, 0, 6, 2, 2, 0, // 10
|
||||||
0, 2, 0, 6, 0, 12, 0, 0, 0, 0, // 20
|
0, 2, 0, 6, 0, 12, 0, 0, 0, 0, // 20
|
||||||
0, 0, 0, 0, 0, 8, 4, 0, 0, 2, // 30
|
0, 0, 0, 0, 0, 8, 4, 0, 0, 2, // 30
|
||||||
2, 6, 0, 6, 0, -1, 0, 0, 0, 0, // 40
|
2, 6, 0, 6, 0, -1, 0, 0, 0, 0, // 40
|
||||||
0, 0, 0, 12, 0, 0, 0, 0, 8, 0, // 50
|
0, 0, 0, 12, 0, 0, 0, 8, 8, 0, // 50
|
||||||
0, 8, 0, 0, 0, 0, 0, 0, 0, 0, // 60
|
0, 8, 0, 0, 0, 0, 0, 0, 0, 0, // 60
|
||||||
6, 0, 2, 2, 8, 6, 0, -1, 0, 6, // 70
|
6, 0, 2, 2, 8, 6, 0, -1, 0, 6, // 70
|
||||||
0, 0, 0, 0, 0, 1, 4, 6, 0, 0, // 80
|
0, 0, 0, 0, 0, 1, 4, 6, 0, 0, // 80
|
||||||
@@ -136,6 +137,7 @@ public final class Release317 extends Release {
|
|||||||
register(120, new FlashingTabClickedMessageDecoder());
|
register(120, new FlashingTabClickedMessageDecoder());
|
||||||
|
|
||||||
register(53, new ItemOnItemMessageDecoder());
|
register(53, new ItemOnItemMessageDecoder());
|
||||||
|
register(57, new ItemOnNpcMessageDecoder());
|
||||||
register(237, new MagicOnItemMessageDecoder());
|
register(237, new MagicOnItemMessageDecoder());
|
||||||
register(249, new MagicOnPlayerMessageDecoder());
|
register(249, new MagicOnPlayerMessageDecoder());
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package org.apollo.game.release.r377;
|
||||||
|
|
||||||
|
import org.apollo.game.message.impl.ItemOnNpcMessage;
|
||||||
|
import org.apollo.net.codec.game.DataOrder;
|
||||||
|
import org.apollo.net.codec.game.DataTransformation;
|
||||||
|
import org.apollo.net.codec.game.DataType;
|
||||||
|
import org.apollo.net.codec.game.GamePacket;
|
||||||
|
import org.apollo.net.codec.game.GamePacketReader;
|
||||||
|
import org.apollo.net.release.MessageDecoder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A {@link MessageDecoder} for the {@link ItemOnNpcMessage}.
|
||||||
|
*
|
||||||
|
* @author Major
|
||||||
|
*/
|
||||||
|
public final class ItemOnNpcMessageDecoder extends MessageDecoder<ItemOnNpcMessage> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemOnNpcMessage decode(GamePacket packet) {
|
||||||
|
GamePacketReader reader = new GamePacketReader(packet);
|
||||||
|
|
||||||
|
int index = (int) reader.getUnsigned(DataType.SHORT);
|
||||||
|
int id = (int) reader.getSigned(DataType.SHORT, DataOrder.LITTLE);
|
||||||
|
int widget = (int) reader.getUnsigned(DataType.SHORT, DataOrder.LITTLE, DataTransformation.ADD);
|
||||||
|
int slot = (int) reader.getUnsigned(DataType.SHORT);
|
||||||
|
|
||||||
|
return new ItemOnNpcMessage(id, index, slot, widget);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -135,6 +135,7 @@ public final class Release377 extends Release {
|
|||||||
register(119, new FlashingTabClickedMessageDecoder());
|
register(119, new FlashingTabClickedMessageDecoder());
|
||||||
|
|
||||||
register(1, new ItemOnItemMessageDecoder());
|
register(1, new ItemOnItemMessageDecoder());
|
||||||
|
register(57, new ItemOnNpcMessageDecoder());
|
||||||
register(36, new MagicOnItemMessageDecoder());
|
register(36, new MagicOnItemMessageDecoder());
|
||||||
register(31, new MagicOnPlayerMessageDecoder());
|
register(31, new MagicOnPlayerMessageDecoder());
|
||||||
register(104, new MagicOnNpcMessageDecoder());
|
register(104, new MagicOnNpcMessageDecoder());
|
||||||
|
|||||||
Reference in New Issue
Block a user