fix client_id field width in some subcommands
This commit is contained in:
+13
-26
@@ -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
@@ -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
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user