Search in sources :

Example 61 with GamePacketReader

use of org.apollo.net.codec.game.GamePacketReader in project apollo by apollo-rsps.

the class WalkMessageDecoder method decode.

@Override
public WalkMessage decode(GamePacket packet) {
    GamePacketReader reader = new GamePacketReader(packet);
    int length = packet.getLength();
    if (packet.getOpcode() == 213) {
        // strip off anti-cheat data
        length -= 14;
    }
    int steps = (length - 5) / 2;
    int[][] path = new int[steps][2];
    int x = (int) reader.getUnsigned(DataType.SHORT, DataOrder.LITTLE, DataTransformation.ADD);
    boolean run = reader.getUnsigned(DataType.BYTE) == 1;
    int y = (int) reader.getUnsigned(DataType.SHORT, DataOrder.LITTLE, DataTransformation.ADD);
    for (int i = 0; i < steps; i++) {
        path[i][0] = (int) reader.getSigned(DataType.BYTE);
        path[i][1] = (int) reader.getSigned(DataType.BYTE, DataTransformation.SUBTRACT);
    }
    Position[] positions = new Position[steps + 1];
    positions[0] = new Position(x, y);
    for (int i = 0; i < steps; i++) {
        positions[i + 1] = new Position(path[i][0] + x, path[i][1] + y);
    }
    return new WalkMessage(positions, run);
}
Also used : WalkMessage(org.apollo.game.message.impl.WalkMessage) GamePacketReader(org.apollo.net.codec.game.GamePacketReader) Position(org.apollo.game.model.Position)

Example 62 with GamePacketReader

use of org.apollo.net.codec.game.GamePacketReader in project apollo by apollo-rsps.

the class MagicOnItemMessageDecoder method decode.

@Override
public MagicOnItemMessage decode(GamePacket packet) {
    GamePacketReader reader = new GamePacketReader(packet);
    int spell = (int) reader.getUnsigned(DataType.SHORT);
    int interfaceId = (int) reader.getUnsigned(DataType.SHORT, DataTransformation.ADD);
    int slot = (int) reader.getUnsigned(DataType.SHORT, DataTransformation.ADD);
    int id = (int) reader.getUnsigned(DataType.SHORT, DataTransformation.ADD);
    return new MagicOnItemMessage(interfaceId, id, slot, spell);
}
Also used : GamePacketReader(org.apollo.net.codec.game.GamePacketReader) MagicOnItemMessage(org.apollo.game.message.impl.MagicOnItemMessage)

Example 63 with GamePacketReader

use of org.apollo.net.codec.game.GamePacketReader in project apollo by apollo-rsps.

the class ReportAbuseMessageDecoder method decode.

@Override
public ReportAbuseMessage decode(GamePacket packet) {
    GamePacketReader reader = new GamePacketReader(packet);
    String name = NameUtil.decodeBase37(reader.getSigned(DataType.LONG));
    int rule = (int) reader.getUnsigned(DataType.BYTE);
    boolean mute = reader.getUnsigned(DataType.BYTE) == 1;
    return new ReportAbuseMessage(name, rule, mute);
}
Also used : ReportAbuseMessage(org.apollo.game.message.impl.ReportAbuseMessage) GamePacketReader(org.apollo.net.codec.game.GamePacketReader)

Example 64 with GamePacketReader

use of org.apollo.net.codec.game.GamePacketReader in project apollo by apollo-rsps.

the class PlayerDesignMessageDecoder method decode.

@Override
public PlayerDesignMessage decode(GamePacket packet) {
    GamePacketReader reader = new GamePacketReader(packet);
    int genderIntValue = (int) reader.getUnsigned(DataType.BYTE);
    int[] style = new int[7];
    for (int i = 0; i < style.length; i++) {
        style[i] = (int) reader.getUnsigned(DataType.BYTE);
    }
    int[] color = new int[5];
    for (int i = 0; i < color.length; i++) {
        color[i] = (int) reader.getUnsigned(DataType.BYTE);
    }
    Gender gender = genderIntValue == Gender.MALE.toInteger() ? Gender.MALE : Gender.FEMALE;
    return new PlayerDesignMessage(new Appearance(gender, style, color));
}
Also used : PlayerDesignMessage(org.apollo.game.message.impl.PlayerDesignMessage) GamePacketReader(org.apollo.net.codec.game.GamePacketReader) Gender(org.apollo.game.model.entity.setting.Gender) Appearance(org.apollo.game.model.Appearance)

Example 65 with GamePacketReader

use of org.apollo.net.codec.game.GamePacketReader in project apollo by apollo-rsps.

the class PublicChatMessageDecoder method decode.

@Override
public PublicChatMessage decode(GamePacket packet) {
    GamePacketReader reader = new GamePacketReader(packet);
    int color = (int) reader.getUnsigned(DataType.BYTE, DataTransformation.NEGATE);
    int effects = (int) reader.getUnsigned(DataType.BYTE, DataTransformation.ADD);
    int length = packet.getLength() - 2;
    byte[] originalCompressed = new byte[length];
    reader.getBytes(originalCompressed);
    String uncompressed = TextUtil.decompress(originalCompressed, length);
    uncompressed = TextUtil.filterInvalidCharacters(uncompressed);
    uncompressed = TextUtil.capitalize(uncompressed);
    byte[] recompressed = new byte[length];
    // in case invalid data gets sent, this effectively verifies it
    TextUtil.compress(uncompressed, recompressed);
    return new PublicChatMessage(uncompressed, recompressed, color, effects);
}
Also used : GamePacketReader(org.apollo.net.codec.game.GamePacketReader) PublicChatMessage(org.apollo.game.message.impl.PublicChatMessage)

Aggregations

GamePacketReader (org.apollo.net.codec.game.GamePacketReader)97 ItemActionMessage (org.apollo.game.message.impl.ItemActionMessage)10 ItemOptionMessage (org.apollo.game.message.impl.ItemOptionMessage)10 NpcActionMessage (org.apollo.game.message.impl.NpcActionMessage)10 PlayerActionMessage (org.apollo.game.message.impl.PlayerActionMessage)10 Position (org.apollo.game.model.Position)10 ObjectActionMessage (org.apollo.game.message.impl.ObjectActionMessage)6 AddFriendMessage (org.apollo.game.message.impl.AddFriendMessage)2 AddIgnoreMessage (org.apollo.game.message.impl.AddIgnoreMessage)2 ArrowKeyMessage (org.apollo.game.message.impl.ArrowKeyMessage)2 ButtonMessage (org.apollo.game.message.impl.ButtonMessage)2 DialogueContinueMessage (org.apollo.game.message.impl.DialogueContinueMessage)2 EnteredAmountMessage (org.apollo.game.message.impl.EnteredAmountMessage)2 FlaggedMouseEventMessage (org.apollo.game.message.impl.FlaggedMouseEventMessage)2 FlashingTabClickedMessage (org.apollo.game.message.impl.FlashingTabClickedMessage)2 ItemOnItemMessage (org.apollo.game.message.impl.ItemOnItemMessage)2 ItemOnNpcMessage (org.apollo.game.message.impl.ItemOnNpcMessage)2 ItemOnObjectMessage (org.apollo.game.message.impl.ItemOnObjectMessage)2 MagicOnItemMessage (org.apollo.game.message.impl.MagicOnItemMessage)2 MagicOnNpcMessage (org.apollo.game.message.impl.MagicOnNpcMessage)2