1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
#include "base_cheat.hpp"
#include "context.hpp"
#include "input_system.hpp"
#include "math.hpp"
#include "hooks.hpp"
#include "interface.hpp"
#undef min
namespace features
{
void c_extra::use_spammer( user_cmd_t* cmd ) {
if( !g_settings.misc.use_spam( ) )
return;
if( !g_input.is_key_pressed( g_settings.misc.use_spam_key( ) ) )
return;
static bool toggle{ };
if( toggle )
cmd->m_buttons |= IN_USE;
else
cmd->m_buttons &= ~IN_USE;
toggle ^= 1;
}
void c_extra::third_person( ) {
if( !g_ctx.m_local )
return;
static bool enabled = false;
static bool toggle = true;
static bool key_held = false;
if( g_input.is_key_pressed( ( VirtualKeys_t )g_settings.misc.thirdperson_key( ) ) ) {
if( !key_held ) {
toggle ^= 1;
}
key_held = true;
}
else {
key_held = false;
}
if( !g_settings.misc.thirdperson || !toggle ) {
if( enabled ) {
g_gmod.m_input->m_fCameraInThirdPerson = false;
enabled = false;
}
return;
}
vec3_t viewangles{ };
if( g_ctx.m_local->is_alive( ) ) {
g_gmod.m_engine( )->GetViewAngles( viewangles );
g_gmod.m_input->m_fCameraInThirdPerson = true;
g_gmod.m_input->m_vecCameraOffset = vec3_t( viewangles.x, viewangles.y, 150.0f );
constexpr float cam_hull_offset{ 16.f };
const vec3_t cam_hull_min( -cam_hull_offset, -cam_hull_offset, -cam_hull_offset );
const vec3_t cam_hull_max( cam_hull_offset, cam_hull_offset, cam_hull_offset );
vec3_t cam_forward, origin = g_ctx.m_local->get_eye_pos( );
cam_forward = math::angle_vectors( vec3_t( viewangles.x, viewangles.y, 0.f ) );
CTraceFilterWorldAndPropsOnly filter;
Ray_t ray;
CGameTrace tr;
ray.Init( origin, origin - ( cam_forward * 150.f ), cam_hull_min, cam_hull_max );
g_gmod.m_trace( )->TraceRay( ray, MASK_SOLID & ~CONTENTS_MONSTER, &filter, &tr );
g_gmod.m_input->m_vecCameraOffset.z = 150.f * tr.fraction;
enabled = true;
}
else if( g_gmod.m_entlist( )->GetClientEntityFromHandle< >( g_ctx.m_local->m_hObserverTarget( ) ) ) {
g_gmod.m_input->m_fCameraInThirdPerson = false;
g_ctx.m_local->m_iObserverMode( ) = 5;
}
}
}
|