parent
f6a6682c86
commit
7433b0a69f
@ -1,18 +1,30 @@
|
||||
#include "hooking.hpp"
|
||||
#include <datanodes/player/CPlayerGameStateDataNode.hpp>
|
||||
#include "natives.hpp"
|
||||
#include "services/players/player_service.hpp"
|
||||
#include "util/globals.hpp"
|
||||
|
||||
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)
|
||||
{
|
||||
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_bullet_proof = false;
|
||||
|
@ -33,4 +33,9 @@ namespace big::globals
|
||||
|
||||
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