Weapon events refactor. (#2622)

* Removed legacy REMOVE_ALL_WEAPONS_EVENT network event check.
Added GIVE_WEAPON_EVENT check to prevent people giving us weapons.
This commit is contained in:
gir489 2023-12-21 10:17:45 -05:00 committed by GitHub
parent 5324d0a244
commit 4312d9d15c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -570,8 +570,8 @@ namespace big
} }
case eNetworkEvents::REMOVE_WEAPON_EVENT: case eNetworkEvents::REMOVE_WEAPON_EVENT:
{ {
int net_id = buffer->Read<int>(13); std::int16_t net_id = buffer->Read<std::int16_t>(13);
uint32_t hash = buffer->Read<uint32_t>(32); Hash hash = buffer->Read<Hash>(32);
if (hash == RAGE_JOAAT("WEAPON_UNARMED")) if (hash == RAGE_JOAAT("WEAPON_UNARMED"))
{ {
@ -582,8 +582,9 @@ namespace big
if (g_local_player && g_local_player->m_net_object && g_local_player->m_net_object->m_object_id == net_id) if (g_local_player && g_local_player->m_net_object && g_local_player->m_net_object->m_object_id == net_id)
{ {
weapon_item weapon = g_gta_data_service->weapon_by_hash(hash);
g_notification_service->push_warning("PROTECTIONS"_T.data(), g_notification_service->push_warning("PROTECTIONS"_T.data(),
std::vformat("REMOVE_WEAPON_ATTEMPT"_T, std::make_format_args(source_player->get_name()))); std::format("{} {} {}.", source_player->get_name(), "REMOVE_WEAPON_ATTEMPT_MESSAGE"_T, weapon.m_display_name));
g_pointers->m_gta.m_send_event_ack(event_manager, source_player, target_player, event_index, event_handled_bitset); g_pointers->m_gta.m_send_event_ack(event_manager, source_player, target_player, event_index, event_handled_bitset);
return; return;
} }
@ -591,14 +592,16 @@ namespace big
buffer->Seek(0); buffer->Seek(0);
break; break;
} }
case eNetworkEvents::REMOVE_ALL_WEAPONS_EVENT: case eNetworkEvents::GIVE_WEAPON_EVENT:
{ {
int net_id = buffer->Read<int>(13); std::int16_t net_id = buffer->Read<std::int16_t>(13);
Hash hash = buffer->Read<Hash>(32);
if (g_local_player && g_local_player->m_net_object && g_local_player->m_net_object->m_object_id == net_id) if (g_local_player && g_local_player->m_net_object && g_local_player->m_net_object->m_object_id == net_id)
{ {
weapon_item weapon = g_gta_data_service->weapon_by_hash(hash);
g_notification_service->push_warning("PROTECTIONS"_T.data(), g_notification_service->push_warning("PROTECTIONS"_T.data(),
std::vformat("REMOVE_ALL_WEAPONS_ATTEMPT"_T, std::make_format_args(source_player->get_name()))); std::format("{} {} {}.", source_player->get_name(), "GIVE_WEAPON_ATTEMPT_MESSAGE"_T, weapon.m_display_name));
g_pointers->m_gta.m_send_event_ack(event_manager, source_player, target_player, event_index, event_handled_bitset); g_pointers->m_gta.m_send_event_ack(event_manager, source_player, target_player, event_index, event_handled_bitset);
return; return;
} }