diff --git a/src/CommandFormats.hh b/src/CommandFormats.hh index a3012c8e..b2e76bf8 100644 --- a/src/CommandFormats.hh +++ b/src/CommandFormats.hh @@ -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; diff --git a/src/ReceiveSubcommands.cc b/src/ReceiveSubcommands.cc index f5b3c2ab..ebd4517b 100644 --- a/src/ReceiveSubcommands.cc +++ b/src/ReceiveSubcommands.cc @@ -293,8 +293,8 @@ static void on_subcommand_player_drop_item(shared_ptr, 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, 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, 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, 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, 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, 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, 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, } 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, 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); diff --git a/src/SendCommands.cc b/src/SendCommands.cc index 06ed7d2c..95d32236 100644 --- a/src/SendCommands.cc +++ b/src/SendCommands.cc @@ -1458,7 +1458,7 @@ void send_drop_stacked_item(shared_ptr 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 l, shared_ptr c, void send_destroy_item(shared_ptr l, shared_ptr 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 l, shared_ptr 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 l, shared_ptr c) { void send_give_experience(shared_ptr l, shared_ptr 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); }