diff options
| author | boris <wzn@moneybot.cc> | 2018-11-28 16:00:02 +1300 |
|---|---|---|
| committer | boris <wzn@moneybot.cc> | 2018-11-28 16:00:02 +1300 |
| commit | 3d412a4b30a9f7c7f51ea6562e694315948bd3da (patch) | |
| tree | 26d67dfd1f3e5fd12903ad13e85d0cb8bcf8f21c /cheat/gmod/extra.cpp | |
| parent | e4729e4393d90271a3814c7a79950a660c48325a (diff) | |
cleaned up
in short, the cheat and loader are now separate solutions. unused stuff was moved into the legacy solution in case anyone wants to compile it or whatever.
i can change this back if you want to. also, i configured the loader to compile in x64, and have separate build types for linux and win64
Diffstat (limited to 'cheat/gmod/extra.cpp')
| -rw-r--r-- | cheat/gmod/extra.cpp | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/cheat/gmod/extra.cpp b/cheat/gmod/extra.cpp new file mode 100644 index 0000000..454971e --- /dev/null +++ b/cheat/gmod/extra.cpp @@ -0,0 +1,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; + } + } +}
\ No newline at end of file |
