fix client_id field width in some subcommands

This commit is contained in:
Martin Michelsen
2022-10-02 01:28:17 -07:00
parent bc071155b0
commit e273629cd1
3 changed files with 32 additions and 45 deletions
+13 -26
View File
@@ -2784,8 +2784,7 @@ struct S_Unknown_BB_F0 {
struct G_ItemSubcommand {
uint8_t command;
uint8_t size;
uint8_t client_id;
uint8_t unused;
le_uint16_t client_id;
le_uint32_t item_id;
le_uint32_t amount;
};
@@ -2939,8 +2938,7 @@ struct G_SetPlayerVisibility_6x22_6x23 {
struct G_EquipItem_6x25 {
uint8_t command;
uint8_t size;
uint8_t client_id;
uint8_t unused;
le_uint16_t client_id;
le_uint32_t item_id;
le_uint32_t equip_slot;
};
@@ -2950,8 +2948,7 @@ struct G_EquipItem_6x25 {
struct G_UnequipItem_6x26 {
uint8_t command;
uint8_t size;
uint8_t client_id;
uint8_t unused;
le_uint16_t client_id;
le_uint32_t item_id;
le_uint32_t unused2;
};
@@ -2961,8 +2958,7 @@ struct G_UnequipItem_6x26 {
struct G_UseItem_6x27 {
uint8_t command;
uint8_t size;
uint8_t client_id;
uint8_t unused;
le_uint16_t client_id;
le_uint32_t item_id;
};
@@ -2986,8 +2982,7 @@ struct G_FeedMAG_6x28 {
struct G_PlayerDropItem_6x2A {
uint8_t command;
uint8_t size;
uint8_t client_id;
uint8_t unused;
le_uint16_t client_id;
le_uint16_t unused2; // should be 1
le_uint16_t area;
le_uint32_t item_id;
@@ -3001,8 +2996,7 @@ struct G_PlayerDropItem_6x2A {
struct G_PlayerCreateInventoryItem_DC_6x2B {
uint8_t command;
uint8_t size;
uint8_t client_id;
uint8_t unused;
le_uint16_t client_id;
ItemData item;
};
@@ -3020,8 +3014,7 @@ struct G_PlayerCreateInventoryItem_PC_V3_BB_6x2B : G_PlayerCreateInventoryItem_D
struct G_LevelUp_6x30 {
uint8_t command;
uint8_t size;
uint8_t client_id;
uint8_t unused;
le_uint16_t client_id;
le_uint16_t atp;
le_uint16_t mst;
le_uint16_t evp;
@@ -3132,8 +3125,7 @@ struct G_PickUpItem_6x59 {
struct G_PickUpItemRequest_6x5A {
uint8_t command;
uint8_t size;
uint8_t client_id;
uint8_t unused;
le_uint16_t client_id;
le_uint32_t item_id;
uint8_t area;
uint8_t unused2[3];
@@ -3147,8 +3139,7 @@ struct G_PickUpItemRequest_6x5A {
struct G_DropStackedItem_DC_6x5D {
uint8_t subcommand;
uint8_t size;
uint8_t client_id;
uint8_t unused;
le_uint16_t client_id;
le_uint16_t area;
le_uint16_t unused2;
le_float x;
@@ -3165,8 +3156,7 @@ struct G_DropStackedItem_PC_V3_BB_6x5D : G_DropStackedItem_DC_6x5D {
struct G_BuyShopItem_6x5E {
uint8_t subcommand;
uint8_t size;
uint8_t client_id;
uint8_t unused;
le_uint16_t client_id;
ItemData item;
};
@@ -3346,8 +3336,7 @@ struct G_BuyShopItem_BB_6xB7 {
struct G_IdentifyResult_BB_6xB9 {
uint8_t subcommand;
uint8_t size;
uint8_t client_id;
uint8_t unused;
le_uint16_t client_id;
ItemData item;
};
@@ -3403,8 +3392,7 @@ struct G_CreateInventoryItem_BB_6xBE {
struct G_GiveExperience_BB_6xBF {
uint8_t subcommand;
uint8_t size;
uint8_t client_id;
uint8_t unused;
le_uint16_t client_id;
le_uint32_t amount;
};
@@ -3421,8 +3409,7 @@ struct G_GiveExperience_BB_6xBF {
struct G_SplitStackedItem_6xC3 {
uint8_t command;
uint8_t size;
uint8_t client_id;
uint8_t unused;
le_uint16_t client_id;
le_uint16_t area;
le_uint16_t unused2;
le_float x;
+16 -15
View File
@@ -293,8 +293,8 @@ static void on_subcommand_player_drop_item(shared_ptr<ServerState>,
l->add_item(c->game_data.player()->remove_item(cmd->item_id, 0),
cmd->area, cmd->x, cmd->z);
l->log.info("Player %hhu dropped item %08" PRIX32 " at %hu:(%g, %g)",
cmd->client_id, cmd->item_id.load(), cmd->area.load(), cmd->x.load(), cmd->z.load());
l->log.info("Player %hu dropped item %08" PRIX32 " at %hu:(%g, %g)",
cmd->client_id.load(), cmd->item_id.load(), cmd->area.load(), cmd->x.load(), cmd->z.load());
c->game_data.player()->print_inventory(stderr);
}
@@ -323,8 +323,8 @@ static void on_subcommand_create_inventory_item(shared_ptr<ServerState>,
item.data = cmd->item;
c->game_data.player()->add_item(item);
l->log.info("Player %hhu created inventory item %08" PRIX32,
cmd->client_id, cmd->item.id.load());
l->log.info("Player %hu created inventory item %08" PRIX32,
cmd->client_id.load(), cmd->item.id.load());
c->game_data.player()->print_inventory(stderr);
}
@@ -354,8 +354,8 @@ static void on_subcommand_drop_partial_stack(shared_ptr<ServerState>,
item.data = cmd->data;
l->add_item(item, cmd->area, cmd->x, cmd->z);
l->log.info("Player %hhu split stack to create ground item %08" PRIX32 " at %hu:(%g, %g)",
cmd->client_id, item.data.id.load(), cmd->area.load(), cmd->x.load(), cmd->z.load());
l->log.info("Player %hu split stack to create ground item %08" PRIX32 " at %hu:(%g, %g)",
cmd->client_id.load(), item.data.id.load(), cmd->area.load(), cmd->x.load(), cmd->z.load());
c->game_data.player()->print_inventory(stderr);
}
@@ -391,8 +391,8 @@ static void on_subcommand_drop_partial_stack_bb(shared_ptr<ServerState>,
l->add_item(item, cmd->area, cmd->x, cmd->z);
l->log.info("Player %hhu split stack %08" PRIX32 " (%" PRIu32 " of them) at %hu:(%g, %g)",
cmd->client_id, cmd->item_id.load(), cmd->amount.load(),
l->log.info("Player %hu split stack %08" PRIX32 " (%" PRIu32 " of them) at %hu:(%g, %g)",
cmd->client_id.load(), cmd->item_id.load(), cmd->amount.load(),
cmd->area.load(), cmd->x.load(), cmd->z.load());
c->game_data.player()->print_inventory(stderr);
@@ -422,8 +422,8 @@ static void on_subcommand_buy_shop_item(shared_ptr<ServerState>,
item.data = cmd->item;
c->game_data.player()->add_item(item);
l->log.info("Player %hhu bought item %08" PRIX32 " from shop",
cmd->client_id, item.data.id.load());
l->log.info("Player %hu bought item %08" PRIX32 " from shop",
cmd->client_id.load(), item.data.id.load());
c->game_data.player()->print_inventory(stderr);
}
@@ -501,7 +501,8 @@ static void on_subcommand_pick_up_item_request(shared_ptr<ServerState>,
c->game_data.player()->add_item(l->remove_item(cmd->item_id));
l->log.info("Player %hhu picked up %08" PRIX32, cmd->client_id, cmd->item_id.load());
l->log.info("Player %hu picked up %08" PRIX32,
cmd->client_id.load(), cmd->item_id.load());
c->game_data.player()->print_inventory(stderr);
send_pick_up_item(l, c, cmd->item_id, cmd->area);
@@ -549,7 +550,8 @@ static void on_subcommand_use_item(shared_ptr<ServerState>,
size_t index = c->game_data.player()->inventory.find_item(cmd->item_id);
player_use_item(c, index);
l->log.info("Player used item %hhu:%08" PRIX32, cmd->client_id, cmd->item_id.load());
l->log.info("Player used item %hu:%08" PRIX32,
cmd->client_id.load(), cmd->item_id.load());
c->game_data.player()->print_inventory(stderr);
}
@@ -940,8 +942,8 @@ static void on_subcommand_destroy_inventory_item(shared_ptr<ServerState>,
}
if (l->flags & Lobby::Flag::ITEM_TRACKING_ENABLED) {
c->game_data.player()->remove_item(cmd->item_id, cmd->amount);
l->log.info("Inventory item %hhu:%08" PRIX32 " destroyed (%" PRIX32 " of them)",
cmd->client_id, cmd->item_id.load(), cmd->amount.load());
l->log.info("Inventory item %hu:%08" PRIX32 " destroyed (%" PRIX32 " of them)",
cmd->client_id.load(), cmd->item_id.load(), cmd->amount.load());
c->game_data.player()->print_inventory(stderr);
forward_subcommand(l, c, command, flag, data);
}
@@ -988,7 +990,6 @@ static void on_subcommand_identify_item_bb(shared_ptr<ServerState>,
res.subcommand = 0xB9;
res.size = sizeof(res) / 4;
res.client_id = c->lobby_client_id;
res.unused = 0;
res.item = c->game_data.identify_result.data;
send_command_t(l, 0x60, 0x00, res);
+3 -4
View File
@@ -1458,7 +1458,7 @@ void send_drop_stacked_item(shared_ptr<Lobby> l, const ItemData& item,
// TODO: Is this order correct? The original code sent {item, 0}, but it seems
// GC sends {0, item} (the last two fields in the struct are switched).
G_DropStackedItem_PC_V3_BB_6x5D cmd = {
{0x5D, 0x0A, 0x00, 0x00, area, 0, x, z, item}, 0};
{0x5D, 0x0A, 0x0000, area, 0, x, z, item}, 0};
send_command_t(l, 0x60, 0x00, cmd);
}
@@ -1482,7 +1482,7 @@ void send_create_inventory_item(shared_ptr<Lobby> l, shared_ptr<Client> c,
void send_destroy_item(shared_ptr<Lobby> l, shared_ptr<Client> c,
uint32_t item_id, uint32_t amount) {
G_ItemSubcommand cmd = {
0x29, 0x03, c->lobby_client_id, 0x00, item_id, amount};
0x29, 0x03, c->lobby_client_id, item_id, amount};
send_command_t(l, 0x60, 0x00, cmd);
}
@@ -1543,7 +1543,6 @@ void send_level_up(shared_ptr<Lobby> l, shared_ptr<Client> c) {
0x30,
sizeof(G_LevelUp_6x30) / 4,
c->lobby_client_id,
0,
stats.atp,
stats.mst,
stats.evp,
@@ -1558,7 +1557,7 @@ void send_level_up(shared_ptr<Lobby> l, shared_ptr<Client> c) {
void send_give_experience(shared_ptr<Lobby> l, shared_ptr<Client> c,
uint32_t amount) {
G_GiveExperience_BB_6xBF cmd = {
0xBF, sizeof(G_GiveExperience_BB_6xBF) / 4, c->lobby_client_id, 0, amount};
0xBF, sizeof(G_GiveExperience_BB_6xBF) / 4, c->lobby_client_id, amount};
send_command_t(l, 0x60, 0x00, cmd);
}