incompletely document challenge data
This commit is contained in:
+10
-2
@@ -1616,8 +1616,16 @@ struct S_ChoiceSearchResultEntry_GC_C4 {
|
|||||||
parray<uint8_t, 0x58> unused2;
|
parray<uint8_t, 0x58> unused2;
|
||||||
};
|
};
|
||||||
|
|
||||||
// C5 (S->C): Challenge rank update
|
// C5 (S->C): Challenge rank update (GC/BB)
|
||||||
// TODO: Document format and usage for this command
|
// header.flag = entry count
|
||||||
|
// The server sends this command when a player joins a lobby to update the
|
||||||
|
// challenge mode records of all the present players.
|
||||||
|
// Entry format is PlayerChallengeDataGC or PlayerChallengeDataBB.
|
||||||
|
// newserv currently doesn't send this command at all because the GC and
|
||||||
|
// BB formats aren't fully documented.
|
||||||
|
// TODO: Figure out where the text is in those formats, write appropriate
|
||||||
|
// conversion functions, and implement the command. Don't forget to override the
|
||||||
|
// client_id field in each entry before sending.
|
||||||
|
|
||||||
// C6 (C->S): Set blocked senders list (GC/BB)
|
// C6 (C->S): Set blocked senders list (GC/BB)
|
||||||
|
|
||||||
|
|||||||
+47
-9
@@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
struct ItemData {
|
struct ItemData { // 0x14 bytes
|
||||||
union {
|
union {
|
||||||
uint8_t data1[12];
|
uint8_t data1[12];
|
||||||
le_uint16_t data1w[6];
|
le_uint16_t data1w[6];
|
||||||
@@ -34,7 +34,7 @@ struct ItemData {
|
|||||||
|
|
||||||
struct PlayerBankItem;
|
struct PlayerBankItem;
|
||||||
|
|
||||||
struct PlayerInventoryItem {
|
struct PlayerInventoryItem { // 0x1C bytes
|
||||||
le_uint16_t equip_flags;
|
le_uint16_t equip_flags;
|
||||||
le_uint16_t tech_flag;
|
le_uint16_t tech_flag;
|
||||||
le_uint32_t game_flags;
|
le_uint32_t game_flags;
|
||||||
@@ -44,7 +44,7 @@ struct PlayerInventoryItem {
|
|||||||
PlayerInventoryItem(const PlayerBankItem&);
|
PlayerInventoryItem(const PlayerBankItem&);
|
||||||
} __attribute__((packed));
|
} __attribute__((packed));
|
||||||
|
|
||||||
struct PlayerBankItem {
|
struct PlayerBankItem { // 0x18 bytes
|
||||||
ItemData data;
|
ItemData data;
|
||||||
le_uint16_t amount;
|
le_uint16_t amount;
|
||||||
le_uint16_t show_flags;
|
le_uint16_t show_flags;
|
||||||
@@ -53,7 +53,7 @@ struct PlayerBankItem {
|
|||||||
PlayerBankItem(const PlayerInventoryItem&);
|
PlayerBankItem(const PlayerInventoryItem&);
|
||||||
} __attribute__((packed));
|
} __attribute__((packed));
|
||||||
|
|
||||||
struct PlayerInventory {
|
struct PlayerInventory { // 0x34C bytes
|
||||||
uint8_t num_items;
|
uint8_t num_items;
|
||||||
uint8_t hp_materials_used;
|
uint8_t hp_materials_used;
|
||||||
uint8_t tp_materials_used;
|
uint8_t tp_materials_used;
|
||||||
@@ -65,7 +65,7 @@ struct PlayerInventory {
|
|||||||
size_t find_item(uint32_t item_id);
|
size_t find_item(uint32_t item_id);
|
||||||
} __attribute__((packed));
|
} __attribute__((packed));
|
||||||
|
|
||||||
struct PlayerBank {
|
struct PlayerBank { // 0xFA8 bytes
|
||||||
le_uint32_t num_items;
|
le_uint32_t num_items;
|
||||||
le_uint32_t meseta;
|
le_uint32_t meseta;
|
||||||
PlayerBankItem items[200];
|
PlayerBankItem items[200];
|
||||||
@@ -86,7 +86,7 @@ struct PlayerBank {
|
|||||||
struct PlayerDispDataBB;
|
struct PlayerDispDataBB;
|
||||||
|
|
||||||
// PC/GC player appearance and stats data
|
// PC/GC player appearance and stats data
|
||||||
struct PlayerDispDataPCGC { // 0xD0 in size
|
struct PlayerDispDataPCGC { // 0xD0 bytes
|
||||||
PlayerStats stats;
|
PlayerStats stats;
|
||||||
parray<uint8_t, 0x0A> unknown_a1;
|
parray<uint8_t, 0x0A> unknown_a1;
|
||||||
le_uint32_t level;
|
le_uint32_t level;
|
||||||
@@ -289,6 +289,41 @@ struct PlayerLobbyDataBB {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
struct PlayerChallengeDataGC {
|
||||||
|
le_uint32_t client_id;
|
||||||
|
struct {
|
||||||
|
le_uint16_t unknown_a1;
|
||||||
|
parray<uint8_t, 2> unknown_a2; // Possibly unused
|
||||||
|
parray<le_uint32_t, 0x17> unknown_a3;
|
||||||
|
struct {
|
||||||
|
parray<uint8_t, 4> unknown_a1;
|
||||||
|
le_uint16_t unknown_a2;
|
||||||
|
parray<uint8_t, 2> unknown_a3;
|
||||||
|
parray<le_uint32_t, 5> unknown_a4;
|
||||||
|
parray<uint8_t, 0x34> unknown_a5;
|
||||||
|
} __attribute__((packed)) unknown_a4;
|
||||||
|
struct {
|
||||||
|
parray<uint8_t, 4> unknown_a1;
|
||||||
|
parray<le_uint32_t, 3> unknown_a2;
|
||||||
|
} __attribute__((packed)) unknown_a5;
|
||||||
|
struct UnknownPair {
|
||||||
|
le_uint32_t unknown_a1;
|
||||||
|
le_uint32_t unknown_a2;
|
||||||
|
} __attribute__((packed));
|
||||||
|
parray<UnknownPair, 3> unknown_a6;
|
||||||
|
parray<uint8_t, 0x28> unknown_a7;
|
||||||
|
} __attribute__((packed)) unknown_a1;
|
||||||
|
parray<le_uint16_t, 8> unknown_a2;
|
||||||
|
parray<le_uint32_t, 2> unknown_a3;
|
||||||
|
} __attribute__((packed));
|
||||||
|
|
||||||
|
struct PlayerChallengeDataBB {
|
||||||
|
le_uint32_t client_id;
|
||||||
|
parray<uint8_t, 0x158> unknown_a1;
|
||||||
|
} __attribute__((packed));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
struct PSOPlayerDataPC { // For command 61
|
struct PSOPlayerDataPC { // For command 61
|
||||||
PlayerInventory inventory;
|
PlayerInventory inventory;
|
||||||
PlayerDispDataPCGC disp;
|
PlayerDispDataPCGC disp;
|
||||||
@@ -297,7 +332,8 @@ struct PSOPlayerDataPC { // For command 61
|
|||||||
struct PSOPlayerDataGC { // For command 61
|
struct PSOPlayerDataGC { // For command 61
|
||||||
PlayerInventory inventory;
|
PlayerInventory inventory;
|
||||||
PlayerDispDataPCGC disp;
|
PlayerDispDataPCGC disp;
|
||||||
parray<uint8_t, 0x134> unknown;
|
PlayerChallengeDataGC challenge_data;
|
||||||
|
parray<uint8_t, 0x18> unknown;
|
||||||
ptext<char, 0xAC> info_board;
|
ptext<char, 0xAC> info_board;
|
||||||
parray<le_uint32_t, 0x1E> blocked_senders;
|
parray<le_uint32_t, 0x1E> blocked_senders;
|
||||||
le_uint32_t auto_reply_enabled;
|
le_uint32_t auto_reply_enabled;
|
||||||
@@ -307,7 +343,8 @@ struct PSOPlayerDataGC { // For command 61
|
|||||||
struct PSOPlayerDataGCEp3 { // For command 61
|
struct PSOPlayerDataGCEp3 { // For command 61
|
||||||
PlayerInventory inventory;
|
PlayerInventory inventory;
|
||||||
PlayerDispDataPCGC disp;
|
PlayerDispDataPCGC disp;
|
||||||
parray<uint8_t, 0x134> unknown;
|
PlayerChallengeDataGC challenge_data;
|
||||||
|
parray<uint8_t, 0x18> unknown;
|
||||||
ptext<char, 0xAC> info_board;
|
ptext<char, 0xAC> info_board;
|
||||||
parray<le_uint32_t, 0x1E> blocked_senders;
|
parray<le_uint32_t, 0x1E> blocked_senders;
|
||||||
le_uint32_t auto_reply_enabled;
|
le_uint32_t auto_reply_enabled;
|
||||||
@@ -318,7 +355,8 @@ struct PSOPlayerDataGCEp3 { // For command 61
|
|||||||
struct PSOPlayerDataBB { // For command 61
|
struct PSOPlayerDataBB { // For command 61
|
||||||
PlayerInventory inventory;
|
PlayerInventory inventory;
|
||||||
PlayerDispDataBB disp;
|
PlayerDispDataBB disp;
|
||||||
ptext<char, 0x174> unused;
|
PlayerChallengeDataBB challenge_data;
|
||||||
|
parray<uint8_t, 0x18> unknown;
|
||||||
ptext<char16_t, 0xAC> info_board;
|
ptext<char16_t, 0xAC> info_board;
|
||||||
parray<le_uint32_t, 0x1E> blocked_senders;
|
parray<le_uint32_t, 0x1E> blocked_senders;
|
||||||
le_uint32_t auto_reply_enabled;
|
le_uint32_t auto_reply_enabled;
|
||||||
|
|||||||
Reference in New Issue
Block a user