This repository has been archived on 2024-10-22. You can view files and clone it, but cannot push or open issues or pull requests.
YimMenu/src/hooks/protections/serialize_parachute_task.cpp
maybegreat48 5eead0436f
Huge protection improvements and other stuff (#1963)
* feat(protections): add a fuzzer
* feat(protections): improve protections
* feat(spoofing): add warning
* feat(world): force object cleanup
* fix(weapons): fix custom weapon code
* fix(weapons): fix for #1983
2023-08-19 13:01:08 +02:00

30 lines
748 B
C++

#include "hooking.hpp"
#include "util/notify.hpp"
#include <entities/CDynamicEntity.hpp>
namespace big
{
#pragma pack(push, 8)
struct TaskObject
{
uint16_t m_net_id;
rage::CDynamicEntity* m_entity;
};
#pragma pack(pop)
void hooks::serialize_parachute_task(__int64 info, rage::CSyncDataBase* serializer)
{
auto object = reinterpret_cast<TaskObject*>(info + 0x30);
g_hooking->get_original<hooks::serialize_parachute_task>()(info, serializer);
if (object->m_entity && object->m_entity->m_entity_type != 5)
{
g_pointers->m_gta.m_remove_reference(object->m_entity, &object->m_entity);
notify::crash_blocked(g.m_syncing_player, "invalid parachute object type");
object->m_entity = nullptr;
object->m_net_id = 0;
}
}
}