You just need to do some changes in packet 0x03F2 in order to make your packet based program work again, change it like this:
Before patch 4312:
After patch 4312:
Before patch 4312:
Code:
typedef struct ACTIONSTRUCT {
STRUCTHDR Header; // 0x1c / 0x03f2 = STRUCT_TYPE_ACTION
DWORD TimeStamp; // timeGetTime()
DWORD PlayerID; // ID of player
WORD x; // x action coordinate
WORD y; // y action coordinate
DWORD Direction; // see below
union {
struct {WORD ToX; WORD ToY;} Coordinates;
DWORD GestureType; // for gestures, see below
DWORD AvatarID; // for changing avatar, see below
DWORD MapID; // for warps
DWORD Zero; // when mining etc
};
DWORD Type; // see below
} *PACTIONSTRUCT;
// ACTIONSTRUCT::Type
#define ACTIONSTRUCT_TYPE_GESTURE 126
#define ACTIONSTRUCT_TYPE_WARP 131
#define ACTIONSTRUCT_TYPE_HEROSPAWN 137
#define ACTIONSTRUCT_TYPE_JUMP 142
#define ACTIONSTRUCT_TYPE_MINE 159
Code:
typedef struct ACTIONSTRUCT {
STRUCTHDR Header; // 0x18 / 0x03f2 = STRUCT_TYPE_ACTION
DWORD TimeStamp; // timeGetTime()
DWORD PlayerID; // ID of player
union {
struct {WORD ToX; WORD ToY;} Coordinates;
DWORD GestureType; // for gestures, see below
DWORD AvatarID; // for changing avatar, see below
DWORD MapID; // for warps
DWORD Zero; // when mining etc
};
WORD x; // x action coordinate
WORD y; // y action coordinate
WORD Direction; // see below
WORD Type; // see below
} *PACTIONSTRUCT;
#define ACTIONSTRUCT_TYPE_GESTURE 81
#define ACTIONSTRUCT_TYPE_WARP 86
#define ACTIONSTRUCT_TYPE_HEROSPAWN 74
#define ACTIONSTRUCT_TYPE_JUMP 133
#define ACTIONSTRUCT_TYPE_MINE 99