fix 6x2F client ID check
This commit is contained in:
@@ -4184,12 +4184,12 @@ struct G_SetOrClearPlayerFlags_6x2E {
|
|||||||
le_uint32_t or_mask = 0;
|
le_uint32_t or_mask = 0;
|
||||||
} __packed__;
|
} __packed__;
|
||||||
|
|
||||||
// 6x2F: Hit by enemy
|
// 6x2F: Change player HP
|
||||||
|
|
||||||
struct G_HitByEnemy_6x2F {
|
struct G_ChangePlayerHP_6x2F {
|
||||||
G_ClientIDHeader header;
|
G_UnusedHeader header;
|
||||||
le_uint32_t hit_type = 0; // 0 = set HP, 1 = add/subtract HP, 2 = add/sub fixed HP
|
le_uint32_t type = 0; // 0 = set HP, 1 = add/subtract HP, 2 = add/sub fixed HP
|
||||||
le_uint16_t damage = 0;
|
le_uint16_t amount = 0;
|
||||||
le_uint16_t client_id = 0;
|
le_uint16_t client_id = 0;
|
||||||
} __packed__;
|
} __packed__;
|
||||||
|
|
||||||
|
|||||||
@@ -1220,8 +1220,9 @@ static void on_received_condition(shared_ptr<Client> c, uint8_t command, uint8_t
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void on_hit_by_enemy(shared_ptr<Client> c, uint8_t command, uint8_t flag, void* data, size_t size) {
|
template <typename CmdT>
|
||||||
const auto& cmd = check_size_t<G_ClientIDHeader>(data, size, 0xFFFF);
|
static void on_change_hp(shared_ptr<Client> c, uint8_t command, uint8_t flag, void* data, size_t size) {
|
||||||
|
const auto& cmd = check_size_t<CmdT>(data, size, 0xFFFF);
|
||||||
|
|
||||||
auto l = c->require_lobby();
|
auto l = c->require_lobby();
|
||||||
if (l->is_game() && (cmd.client_id == c->lobby_client_id)) {
|
if (l->is_game() && (cmd.client_id == c->lobby_client_id)) {
|
||||||
@@ -3871,7 +3872,7 @@ const SubcommandDefinition subcommand_definitions[0x100] = {
|
|||||||
/* 6x2C */ {0x28, 0x2A, 0x2C, on_forward_check_client},
|
/* 6x2C */ {0x28, 0x2A, 0x2C, on_forward_check_client},
|
||||||
/* 6x2D */ {0x29, 0x2B, 0x2D, on_forward_check_client},
|
/* 6x2D */ {0x29, 0x2B, 0x2D, on_forward_check_client},
|
||||||
/* 6x2E */ {0x2A, 0x2C, 0x2E, on_forward_check_client},
|
/* 6x2E */ {0x2A, 0x2C, 0x2E, on_forward_check_client},
|
||||||
/* 6x2F */ {0x2B, 0x2D, 0x2F, on_hit_by_enemy},
|
/* 6x2F */ {0x2B, 0x2D, 0x2F, on_change_hp<G_ChangePlayerHP_6x2F>},
|
||||||
/* 6x30 */ {0x2C, 0x2E, 0x30, on_level_up},
|
/* 6x30 */ {0x2C, 0x2E, 0x30, on_level_up},
|
||||||
/* 6x31 */ {0x2D, 0x2F, 0x31, on_forward_check_game},
|
/* 6x31 */ {0x2D, 0x2F, 0x31, on_forward_check_game},
|
||||||
/* 6x32 */ {0x00, 0x00, 0x32, on_forward_check_game},
|
/* 6x32 */ {0x00, 0x00, 0x32, on_forward_check_game},
|
||||||
@@ -3899,8 +3900,8 @@ const SubcommandDefinition subcommand_definitions[0x100] = {
|
|||||||
/* 6x48 */ {0x00, 0x00, 0x48, on_cast_technique_finished},
|
/* 6x48 */ {0x00, 0x00, 0x48, on_cast_technique_finished},
|
||||||
/* 6x49 */ {0x3E, 0x44, 0x49, on_subtract_pb_energy},
|
/* 6x49 */ {0x3E, 0x44, 0x49, on_subtract_pb_energy},
|
||||||
/* 6x4A */ {0x3F, 0x45, 0x4A, on_forward_check_game_client},
|
/* 6x4A */ {0x3F, 0x45, 0x4A, on_forward_check_game_client},
|
||||||
/* 6x4B */ {0x40, 0x46, 0x4B, on_hit_by_enemy},
|
/* 6x4B */ {0x40, 0x46, 0x4B, on_change_hp<G_ClientIDHeader>},
|
||||||
/* 6x4C */ {0x41, 0x47, 0x4C, on_hit_by_enemy},
|
/* 6x4C */ {0x41, 0x47, 0x4C, on_change_hp<G_ClientIDHeader>},
|
||||||
/* 6x4D */ {0x42, 0x48, 0x4D, on_player_died},
|
/* 6x4D */ {0x42, 0x48, 0x4D, on_player_died},
|
||||||
/* 6x4E */ {0x00, 0x00, 0x4E, on_forward_check_game_client},
|
/* 6x4E */ {0x00, 0x00, 0x4E, on_forward_check_game_client},
|
||||||
/* 6x4F */ {0x43, 0x49, 0x4F, on_forward_check_game_client},
|
/* 6x4F */ {0x43, 0x49, 0x4F, on_forward_check_game_client},
|
||||||
|
|||||||
Reference in New Issue
Block a user