diff --git a/BigBaseV2/src/backend/looped/player/spectate.cpp b/BigBaseV2/src/backend/looped/player/spectate.cpp index f331d5d3..f7b0e237 100644 --- a/BigBaseV2/src/backend/looped/player/spectate.cpp +++ b/BigBaseV2/src/backend/looped/player/spectate.cpp @@ -1,6 +1,7 @@ #include "backend/looped/looped.hpp" #include "natives.hpp" #include "services/players/player_service.hpp" +#include "util/globals.hpp" namespace big { @@ -21,20 +22,30 @@ namespace big NETWORK::NETWORK_SET_IN_SPECTATOR_MODE(false, -1); HUD::SET_MINIMAP_IN_SPECTATOR_MODE(false, -1); + ENTITY::FREEZE_ENTITY_POSITION(ped, false); ENTITY::FREEZE_ENTITY_POSITION(vehicle, false); + + STREAMING::SET_FOCUS_ENTITY(ped); + + globals::disable_kill_trigger(false); } return; } - const Ped target = PLAYER::GET_PLAYER_PED_SCRIPT_INDEX(g_player_service->get_selected()->id()); + const auto target = PLAYER::GET_PLAYER_PED_SCRIPT_INDEX(g_player_service->get_selected()->id()); + + globals::disable_kill_trigger(true); NETWORK::NETWORK_SET_IN_SPECTATOR_MODE(true, target); HUD::SET_MINIMAP_IN_SPECTATOR_MODE(true, target); + ENTITY::FREEZE_ENTITY_POSITION(ped, true); ENTITY::FREEZE_ENTITY_POSITION(vehicle, true); + STREAMING::SET_FOCUS_ENTITY(target); + bReset = false; } } diff --git a/BigBaseV2/src/backend/looped/self/free_cam.cpp b/BigBaseV2/src/backend/looped/self/free_cam.cpp index fdc77136..a3739085 100644 --- a/BigBaseV2/src/backend/looped/self/free_cam.cpp +++ b/BigBaseV2/src/backend/looped/self/free_cam.cpp @@ -1,6 +1,7 @@ #include "backend/looped/looped.hpp" #include "gta/enums.hpp" #include "natives.hpp" +#include "util/globals.hpp" #include "util/math.hpp" namespace big @@ -32,12 +33,12 @@ namespace big { if (g_local_player == nullptr) return; - if (g->self.free_cam && !bLastFreeCam) + if (g->self.free_cam) { PAD::DISABLE_ALL_CONTROL_ACTIONS(0); for (const auto& control : controls) - PAD::DISABLE_CONTROL_ACTION(0, static_cast(control), true); + PAD::ENABLE_CONTROL_ACTION(0, static_cast(control), true); } } @@ -45,8 +46,8 @@ namespace big { if (g_local_player == nullptr) return; - Vehicle vehicle = self::veh; - Ped ped = self::ped; + const auto vehicle = self::veh; + const auto ped = self::ped; if (!g->self.free_cam && !bLastFreeCam) return; if (g->self.free_cam && !bLastFreeCam) @@ -56,7 +57,9 @@ namespace big vecPosition = CAM::GET_GAMEPLAY_CAM_COORD(); vecRot = CAM::GET_GAMEPLAY_CAM_ROT(2); + globals::disable_kill_trigger(true); ENTITY::FREEZE_ENTITY_POSITION(vehicle, true); + CAM::SET_CAM_COORD(cCam, vecPosition.x, vecPosition.y, vecPosition.z); CAM::SET_CAM_ROT(cCam, vecRot.x, vecRot.y, vecRot.z, 2); CAM::SET_CAM_ACTIVE(cCam, true); @@ -66,12 +69,14 @@ namespace big } else if (!g->self.free_cam && bLastFreeCam) { - ENTITY::FREEZE_ENTITY_POSITION(vehicle, false); CAM::SET_CAM_ACTIVE(cCam, false); CAM::RENDER_SCRIPT_CAMS(false, true, 500, true, true, 0); CAM::DESTROY_CAM(cCam, false); STREAMING::SET_FOCUS_ENTITY(ped); + ENTITY::FREEZE_ENTITY_POSITION(vehicle, false); + globals::disable_kill_trigger(false); + bLastFreeCam = false; return; diff --git a/BigBaseV2/src/util/globals.hpp b/BigBaseV2/src/util/globals.hpp index e882e331..356a7b1b 100644 --- a/BigBaseV2/src/util/globals.hpp +++ b/BigBaseV2/src/util/globals.hpp @@ -1,6 +1,6 @@ #pragma once +#include "pointers.hpp" #include "script_global.hpp" -#include "util/system.hpp" namespace big::globals { @@ -15,4 +15,9 @@ namespace big::globals g_pointers->m_trigger_script_event(1, args, arg_count, 1 << target); } + + inline void disable_kill_trigger(bool toggle) + { + *script_global(2815059).at(6753).as() = toggle; // "TRI_WARP" 2nd nested if statement below this text in freemode.c + } } \ No newline at end of file