summaryrefslogtreecommitdiffstats
path: root/src/netvars.cpp
diff options
context:
space:
mode:
authorsalmonik <salmonik@tuta.io>2026-09-14 16:47:32 +0200
committersalmonik <salmonik@tuta.io>2026-09-14 16:47:32 +0200
commit8af245ae414cb548a2188030ed8a52b31986252f (patch)
tree0c77362c60b3441ddbb9d4da80944e667f24a927 /src/netvars.cpp
parentRemove Climb feature; keep bind system for aimbot prep (mouse buttons bindable) (diff)
downloadhl2h-8af245ae414cb548a2188030ed8a52b31986252f.tar.gz
hl2h-8af245ae414cb548a2188030ed8a52b31986252f.zip
Default map d1_town_01 (intro-less, enemies spawned)
Diffstat (limited to 'src/netvars.cpp')
-rw-r--r--src/netvars.cpp56
1 files changed, 43 insertions, 13 deletions
diff --git a/src/netvars.cpp b/src/netvars.cpp
index 41070c7..5c8c296 100644
--- a/src/netvars.cpp
+++ b/src/netvars.cpp
@@ -82,10 +82,44 @@ static void collect_netvars(uintptr_t table, uintptr_t base_off, int depth) {
82 } else { 82 } else {
83 g_net.velocity = (int)(base_off + (uint32_t)poff); 83 g_net.velocity = (int)(base_off + (uint32_t)poff);
84 } 84 }
85 } else if (strcmp(pname2, "m_iHealth") == 0 && g_net.health < 0) {
86 g_net.health = (int)(base_off + (uint32_t)poff);
87 } else if (strcmp(pname2, "m_iMaxHealth") == 0 && g_net.maxhealth < 0) {
88 g_net.maxhealth = (int)(base_off + (uint32_t)poff);
89 } else if (strcmp(pname2, "m_iTeamNum") == 0 && g_net.teamnum < 0) {
90 g_net.teamnum = (int)(base_off + (uint32_t)poff);
91 } else if (strcmp(pname2, "m_vecOrigin") == 0 && g_net.origin < 0) {
92 if (parray && g_client.contains(parray)) {
93 int32_t eoff = *(int32_t *)(parray + 0x2C);
94 g_net.origin = (int)(base_off + (uint32_t)(eoff ? eoff : poff));
95 } else {
96 g_net.origin = (int)(base_off + (uint32_t)poff);
97 }
98 } else if (strcmp(pname2, "m_vecViewOffset") == 0 && g_net.viewoffset < 0) {
99 if (parray && g_client.contains(parray)) {
100 int32_t eoff = *(int32_t *)(parray + 0x2C);
101 g_net.viewoffset = (int)(base_off + (uint32_t)(eoff ? eoff : poff));
102 } else {
103 g_net.viewoffset = (int)(base_off + (uint32_t)poff);
104 }
105 } else if (strcmp(pname2, "m_vecMins") == 0 && g_net.mins < 0) {
106 if (parray && g_client.contains(parray)) {
107 int32_t eoff = *(int32_t *)(parray + 0x2C);
108 g_net.mins = (int)(base_off + (uint32_t)(eoff ? eoff : poff));
109 } else {
110 g_net.mins = (int)(base_off + (uint32_t)poff);
111 }
112 } else if (strcmp(pname2, "m_vecMaxs") == 0 && g_net.maxs < 0) {
113 if (parray && g_client.contains(parray)) {
114 int32_t eoff = *(int32_t *)(parray + 0x2C);
115 g_net.maxs = (int)(base_off + (uint32_t)(eoff ? eoff : poff));
116 } else {
117 g_net.maxs = (int)(base_off + (uint32_t)poff);
118 }
85 } 119 }
86 if (g_net.ok()) 120 if (g_net.esp_ok())
87 return; 121 return;
88 } 122}
89} 123}
90 124
91// prediction datamap scan for m_MoveType (FIELD_CHARACTER, fieldOffset in range) 125// prediction datamap scan for m_MoveType (FIELD_CHARACTER, fieldOffset in range)
@@ -161,11 +195,9 @@ void resolve_netvars() {
161 for (uintptr_t cc = head; cc && g_client.contains(cc) && classes < 1024; 195 for (uintptr_t cc = head; cc && g_client.contains(cc) && classes < 1024;
162 cc = *(uintptr_t *)(cc + 0x10)) { 196 cc = *(uintptr_t *)(cc + 0x10)) {
163 classes++; 197 classes++;
164 char name[64];
165 if (!module_string(*(uintptr_t *)(cc + 0x08), name, sizeof(name)))
166 break;
167 collect_netvars(*(uintptr_t *)(cc + 0x0C), 0, 0); 198 collect_netvars(*(uintptr_t *)(cc + 0x0C), 0, 0);
168 if (g_net.flags >= 0 && g_net.velocity >= 0) 199 if (g_net.esp_ok() || (g_net.flags >= 0 && g_net.velocity >= 0 &&
200 g_net.health < 0))
169 break; 201 break;
170 } 202 }
171 logf("client classes walked: %d", classes); 203 logf("client classes walked: %d", classes);
@@ -175,11 +207,9 @@ void resolve_netvars() {
175 logf("movetype guard disabled"); 207 logf("movetype guard disabled");
176 } 208 }
177 209
178 if (g_net.ok()) { 210 logf("netvars: flags=%d velocity=%d movetype=%d health=%d maxhealth=%d "
179 logf("netvars: m_fFlags=+0x%X m_vecVelocity[0]=+0x%X m_MoveType=+0x%X", 211 "teamnum=%d origin=%d viewoffset=%d mins=%d maxs=%d",
180 g_net.flags, g_net.velocity, g_net.movetype); 212 g_net.flags, g_net.velocity, g_net.movetype, g_net.health,
181 } else { 213 g_net.maxhealth, g_net.teamnum, g_net.origin, g_net.viewoffset,
182 logf("netvar resolution incomplete: flags=%d velocity=%d movetype=%d", 214 g_net.mins, g_net.maxs);
183 g_net.flags, g_net.velocity, g_net.movetype);
184 }
185} 215}