fix(Spectate & FreeCam): Dying while going far away from our ped (#458)
This commit is contained in:
parent
0597d8728e
commit
ca7906141f
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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<int>(control), true);
|
||||
PAD::ENABLE_CONTROL_ACTION(0, static_cast<int>(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;
|
||||
|
@ -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<int*>() = toggle; // "TRI_WARP" 2nd nested if statement below this text in freemode.c
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user