themeldingwars / PIN

Pirate Intelligence Network
https://themeldingwars.com/
52 stars 10 forks source link

Investigate differences between PIN and Aero Messages #18

Closed 0xlsca closed 1 year ago

0xlsca commented 1 year ago

The following removed classes need to be searched for named fields which are unknown in AeroMessages.

eXpl0it3r commented 1 year ago

It should be okay to move everything to Aero, as Aero is the golden source for the packets. All the other information was sourced from other places and is less precise/complete.
But of course there might be some additional code changes required that we can document.

0xlsca commented 1 year ago

Tbh, my motivation originates from the transition to ConfirmedPoseUpdate in Character/BaseController.MovementInput where I spotted that Aero doesn't include a field we have a name for.

ConfirmedPoseUpdate in Aero:

    [Aero]
    [AeroMessageId(MsgType.GSS, MsgSrc.Message, 2, 111)]
    public partial class ConfirmedPoseUpdate
    {
        public MovementPoseData PoseData;
        public ushort Unk; <-- This field
    }

ConfirmedPoseUpdate in PIN:

    [GSSMessage(Enums.GSS.Controllers.Character_BaseController, (byte)Events.ConfirmedPoseUpdate)]
    public class ConfirmedPoseUpdate
    {
        [Field]
        public ushort ShortTime;

        [Field]
        public byte UnkByte1;

        [Field]
        public byte UnkByte2;

        [Field]
        public Vector Position;

        [Field]
        public Quaternion Rotation;

        [Field]
        public ushort State;

        [Field]
        public Vector Velocity;

        [Field]
        public ushort UnkUShort1;

        [Field]
        public ushort UnkUShort2;

        [Field]
        public ushort LastJumpTimer;

        [Field]
        public byte UnkByte3;

        [Field]
        public ushort NextShortTime; <-- This field

Additionally, just tracking the removed files and when they were removed seems suitable because we can proceed with removing obsolete code and don't need to scan all of them at once.

Xsear commented 1 year ago

Tbh, my motivation originates from the transition to ConfirmedPoseUpdate in Character/BaseController.MovementInput where I spotted that Aero doesn't include a field we have a name for.

ConfirmedPoseUpdate in Aero:

    [Aero]
    [AeroMessageId(MsgType.GSS, MsgSrc.Message, 2, 111)]
    public partial class ConfirmedPoseUpdate
    {
        public MovementPoseData PoseData;
        public ushort Unk; <-- This field
    }

ConfirmedPoseUpdate in PIN:

    [GSSMessage(Enums.GSS.Controllers.Character_BaseController, (byte)Events.ConfirmedPoseUpdate)]
    public class ConfirmedPoseUpdate
    {
        [Field]
        public ushort ShortTime;

        [Field]
        public byte UnkByte1;

        [Field]
        public byte UnkByte2;

        [Field]
        public Vector Position;

        [Field]
        public Quaternion Rotation;

        [Field]
        public ushort State;

        [Field]
        public Vector Velocity;

        [Field]
        public ushort UnkUShort1;

        [Field]
        public ushort UnkUShort2;

        [Field]
        public ushort LastJumpTimer;

        [Field]
        public byte UnkByte3;

        [Field]
        public ushort NextShortTime; <-- This field

Additionally, just tracking the removed files and when they were removed seems suitable because we can proceed with removing obsolete code and don't need to scan all of them at once.

Thanks for pointing it out, just wanted to note here, I have since updated this in AeroMessages: https://github.com/themeldingwars/AeroMessages/commit/3febce7f1fe01f3826eaefc78d65ae3c808f58f9

eXpl0it3r commented 1 year ago

Switch has been done with #30