summaryrefslogtreecommitdiff
path: root/src/csgo/csgoentity.h.bak
diff options
context:
space:
mode:
Diffstat (limited to 'src/csgo/csgoentity.h.bak')
-rw-r--r--src/csgo/csgoentity.h.bak73
1 files changed, 73 insertions, 0 deletions
diff --git a/src/csgo/csgoentity.h.bak b/src/csgo/csgoentity.h.bak
new file mode 100644
index 0000000..0532673
--- /dev/null
+++ b/src/csgo/csgoentity.h.bak
@@ -0,0 +1,73 @@
+//|_ _ _. _ ._ |_ _. _ |
+//| | (/_ (_| \/ (/_ | | | | (_| (_ |<
+
+#pragma once
+#include "../util.h"
+
+#include "sdk.h"
+#include "netvar.h"
+
+#define OFFSET( name, prop, table, type, off ) \
+ type name() { \
+ static U32 offset = netvar_find( csgop, table, prop ) + off; \
+ return get<type>( offset ); } \
+ void name( type v ) { \
+ static U32 offset = netvar_find( csgop, table, #name ) + off; \
+ return set<type>( offset, v ); } \
+
+#define NETVAR( name, table, type ) \
+ type name() { \
+ static U32 offset = netvar_find( csgop, table, #name ); \
+ return get<type>( offset ); } \
+ void name( type v ) { \
+ static U32 offset = netvar_find( csgop, table, #name ); \
+ return set<type>( offset, v ); } \
+
+
+class CSGOENTITY {
+public:
+ static CSGO* csgop;
+
+public:
+ CSGOENTITY( U32 ptr ) : base( ptr ) {};
+ CSGOENTITY( const CSGOENTITY& other ) : base( other.base ) {}
+
+ inline operator U32&() { return base; }
+
+ template <typename t>
+ t get( U32 offset ) { return csgop->read<t>( base + offset ); }
+
+ template <typename t>
+ void set( U32 offset, t v ) { return csgop->write<t>( base + offset, v ); }
+
+public:
+ CSGO_CLIENT_CLASS get_clientclass() {
+ U32 networkable = get<U32>( 0x8 );
+ U32 create_fn = csgop->read<U32>( networkable + 0x8 );
+ U32 clientclass = csgop->read<U32>( create_fn + 0x1 );
+
+ return csgop->read<CSGO_CLIENT_CLASS>( clientclass );
+ }
+
+ NETVAR( m_fFlags, "DT_CSPlayer", I32 );
+ OFFSET( m_iCrosshairID, "m_bHasDefuser", "DT_CSPlayer", I32, 92 );
+ OFFSET( m_dwBoneMatrix, "m_nForceBone", "DT_BaseAnimating", U32, 28 );
+
+ static CSGOENTITY from_list( I32 idx ) {
+ const U64 entlist = csgop->code_match(
+ csgop->client, "BB ? ? ? ? 83 FF 01 0F 8C ? ? ? ? 3B F8"
+ );
+
+ return csgop->read<U32>(
+ csgop->client + entlist + idx * 0x10
+ );
+ }
+
+ bool is_weapon() {
+ CSGO_CLIENT_CLASS cl = get_clientclass();
+ return cl.index >= CWeaponAug && cl.index <= CWeaponXM1014;
+ }
+
+public:
+ U32 base;
+}; \ No newline at end of file