parent
f6a6682c86
commit
7433b0a69f
@ -1,18 +1,30 @@
|
|||||||
#include "hooking.hpp"
|
#include "hooking.hpp"
|
||||||
#include <datanodes/player/CPlayerGameStateDataNode.hpp>
|
#include <datanodes/player/CPlayerGameStateDataNode.hpp>
|
||||||
#include "natives.hpp"
|
#include "services/players/player_service.hpp"
|
||||||
|
#include "util/globals.hpp"
|
||||||
|
|
||||||
namespace big
|
namespace big
|
||||||
{
|
{
|
||||||
bool is_player_in_cutscene(Player player) { return NETWORK::NETWORK_IS_PLAYER_IN_MP_CUTSCENE(player); }
|
static bool is_in_cutscene()
|
||||||
|
{
|
||||||
|
if (g_local_player && g_local_player->m_player_info)
|
||||||
|
return g_local_player->m_player_info->m_game_state == eGameState::InMPCutscene;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
bool is_player_in_interior(Ped player) { return (INTERIOR::GET_INTERIOR_FROM_ENTITY(player) != 0); }
|
static bool is_in_interior()
|
||||||
|
{
|
||||||
|
int id = 0;
|
||||||
|
if (auto self_ptr = g_player_service->get_self(); self_ptr->is_valid())
|
||||||
|
id = self_ptr->id();
|
||||||
|
return globals::get_interior_from_player(id) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
bool hooks::write_player_game_state_data_node(rage::netObject* player, CPlayerGameStateDataNode* node)
|
bool hooks::write_player_game_state_data_node(rage::netObject* player, CPlayerGameStateDataNode* node)
|
||||||
{
|
{
|
||||||
auto ret = g_hooking->get_original<write_player_game_state_data_node>()(player, node);
|
auto ret = g_hooking->get_original<write_player_game_state_data_node>()(player, node);
|
||||||
|
|
||||||
if (g.spoofing.spoof_hide_god && !is_player_in_cutscene(self::id) && !is_player_in_interior(self::ped))
|
if (g.spoofing.spoof_hide_god && !is_in_cutscene() && !is_in_interior())
|
||||||
{
|
{
|
||||||
node->m_is_invincible = false;
|
node->m_is_invincible = false;
|
||||||
node->m_bullet_proof = false;
|
node->m_bullet_proof = false;
|
||||||
|
@ -33,4 +33,9 @@ namespace big::globals
|
|||||||
|
|
||||||
g_pointers->m_trigger_script_event(1, args, arg_count, 1 << target);
|
g_pointers->m_trigger_script_event(1, args, arg_count, 1 << target);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline Interior get_interior_from_player(Player player)
|
||||||
|
{
|
||||||
|
return *scr_globals::globalplayer_bd.at(player, scr_globals::size::globalplayer_bd).at(245).as<Interior*>();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user