diff options
Diffstat (limited to 'cheat/gmod/skins.cpp')
| -rw-r--r-- | cheat/gmod/skins.cpp | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/cheat/gmod/skins.cpp b/cheat/gmod/skins.cpp new file mode 100644 index 0000000..9564abf --- /dev/null +++ b/cheat/gmod/skins.cpp @@ -0,0 +1,75 @@ +#include "skins.hpp"
+#include "settings.hpp"
+#include "context.hpp"
+#include "interface.hpp"
+
+namespace features
+{
+ int c_skins::get_knife_index( ) {
+ switch( g_settings.misc.skins.knife( ) ) {
+ case 0:
+ return 0;
+ case 1:
+ return 500;
+ case 2:
+ return 505;
+ case 3:
+ return 506;
+ case 4:
+ return 507;
+ case 5:
+ return 508;
+ case 6:
+ return 509;
+ }
+
+ return 0;
+ }
+
+ const char* c_skins::get_model_str( ) {
+ switch( g_settings.misc.skins.knife( ) ) {
+ case 0:
+ return 0;
+ case 1:
+ return xors( "models/weapons/v_knife_bayonet.mdl" );
+ case 2:
+ return xors( "models/weapons/v_knife_flip.mdl" );
+ case 3:
+ return xors( "models/weapons/v_knife_gut.mdl" );
+ case 4:
+ return xors( "models/weapons/v_knife_karam.mdl" );
+ case 5:
+ return xors( "models/weapons/v_knife_m9_bay.mdl" );
+ case 6:
+ return xors( "models/weapons/v_knife_tactical.mdl" );
+ }
+
+ return nullptr;
+ }
+
+ void c_skins::override_knife( ) {
+ auto weapons = ( uint32_t* )( uintptr_t( g_ctx.m_local ) + 0x2DE8 );
+ for( int i{ }; weapons[ i ]; ++i ) {
+ auto wep = g_csgo.m_entlist( )->GetClientEntityFromHandle< c_base_weapon >( weapons[ i ] );
+ auto vm = g_csgo.m_entlist( )->GetClientEntityFromHandle< c_base_weapon >( g_ctx.m_local->m_hViewModel( ) );
+ if( wep && wep->is_knife( ) ) {
+ int index = get_knife_index( );
+ if( index ) {
+ int model = g_csgo.m_model_info( )->GetModelIndex( get_model_str( ) );
+
+ wep->m_iItemDefinitionIndex( ) = index;
+ wep->m_nModelIndex( ) = model;
+ if( weapons[ i ] == g_ctx.m_local->m_hActiveWeapon( ) ) {
+ vm->m_nModelIndex( ) = model;
+ }
+ }
+ }
+ }
+ }
+
+ void c_skins::operator()( ) {
+ if( g_ctx.m_local && g_ctx.m_local->is_valid( ) ) {
+ override_knife( );
+ }
+ }
+}
\ No newline at end of file |
