<feed xmlns='http://www.w3.org/2005/Atom'>
<title>hl2h/src/bones.cpp, branch master</title>
<subtitle>Simple internal C++ cheat for HL2 for GNU/Linux.
</subtitle>
<id>https://git.2137697.xyz/hl2h/atom?h=master</id>
<link rel='self' href='https://git.2137697.xyz/hl2h/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/hl2h/'/>
<updated>2026-11-06T15:09:55Z</updated>
<entry>
<title>Fix audit findings: crash safety, correctness, rendering, performance</title>
<updated>2026-11-06T15:09:55Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-11-06T15:09:55Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/hl2h/commit/?id=33f5ed9ef58f26c6b3b52cf605dd4311d658a60d'/>
<id>urn:sha1:33f5ed9ef58f26c6b3b52cf605dd4311d658a60d</id>
<content type='text'>
Crash/UB:
- gate every hook behind an init-stage flag until config/surface/input are ready
- publish module maps as immutable atomic snapshots instead of reallocating
  shared vectors under unlocked readers
- validate the %ebp walk in the RandomSeed/RandomFloat hooks against the stack
- bounds-check every RecvTable/RecvProp/string dereference with module_range()
- preserve the Itanium vtable header when cloning (client, CInput, model render,
  studio render)
- reject negative usercmd sequence numbers; guard config_load against a null
  section target; cap the bone parent walk; check mprotect; drop PROT_EXEC on
  the GOT patch; absorb server.so .bss tail

Correctness:
- filter dormant entities across ESP, aimbot, triggerbot, melee, items and
  projectiles (slot self-tested against the local player)
- reset the server-health latch per map and only latch on valid model indices
- bone cache sized for the 128-target scan; set valid=false on every failure;
  head_position keeps searching past an invalid bone
- vischeck steps past glass by probing until clear, and ignores entities owned
  by the target (held weapons, bone followers)
- aimbot: maxs no longer disables it, AABB-aware FOV prefilter, lock hysteresis,
  lead point re-checked for FOV and visibility
- spread: seed hook arms on the no-spread toggle alone; engine toggle only
  controls the RandomFloat zeroing
- resolve m_hOwnerEntity/m_hOwner; NPC lead velocity from the server entity
- vector_angles pitch range, point_ground normal test, underwater jump+duck no
  longer skips combat, semi-auto press/release edge for synthetic fire
- item/projectile markers and blast rings refresh origin per frame while
  discovery stays at 10 Hz; trajectory uses the real m_DmgRadius and honours
  the blast-radius toggle

Rendering/GUI:
- one overlay draw per engine frame (FRAME_RENDER_START boundary), fixing
  alpha stacking and the speed-graph flicker
- clipped lines/outlines and ellipsised text instead of drawing past the
  content pane or shifting over neighbours
- dropdown dismissal consumes the click; hover ignores hidden controls
- chams: reset AlphaModulate, reference shared materials once, restore prop
  tint colour; fonts created once per handle
- projection uses Source's 4:3 aspect scaling and roll; screen size refreshed
  each frame; FOV circle gated on the aim toggles, not the bind

Performance:
- TTL caches for NPC relation, friendly/neutral and damage class
- model names memoised per model index
- entity pointer -&gt; index cache for the triggerbot (was a 4096-slot walk/tick)

Build:
- real Makefile with -MMD dependency tracking, debug/release objects and an
  always-relink rule; build.sh kept as a thin wrapper
</content>
</entry>
<entry>
<title>Melee: surface weapon state across maps; reset stale caches</title>
<updated>2026-10-28T12:02:26Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-10-28T12:02:26Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/hl2h/commit/?id=b212e8e13835cfdc4849a61c1b57146bd0312a29'/>
<id>urn:sha1:b212e8e13835cfdc4849a61c1b57146bd0312a29</id>
<content type='text'>
- Map transitions often leave a non-crowbar weapon active, so the killbot
  silently does nothing. Log every active-weapon change as a normal
  `melee: active ... crowbar=0/1` line and toast once suggesting the crowbar.
- Recover the crowbar model from the server entity when the client weapon
  model index is missing/0 after a map change.
- Clear the bone cache and aim/silent locks when the local player entity
  changes (map load/respawn) so stale entity/model data cannot poison melee
  target selection.
</content>
</entry>
<entry>
<title>Logging: per-session file and debug-gated verbose logs</title>
<updated>2026-10-28T11:24:10Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-10-28T11:24:10Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/hl2h/commit/?id=16546e5818408f35adc60c2d937cf4541ff7840a'/>
<id>urn:sha1:16546e5818408f35adc60c2d937cf4541ff7840a</id>
<content type='text'>
- Open /tmp/hl2hake.log once in the library constructor with "w" so each
  session starts clean, use line buffering, flush each line, and close it via
  atexit. No more fopen/fclose per message.
- Add logd() for verbose diagnostics, enabled only with HL2H_DEBUG=1.
- Move ESP/NPC scans, item-prop/item-classification logs, aimbot/silent-aim/
  melee/triggerbot/spread details, jumpbug tracking, bone dumps, netvar dumps,
  cmd-modified and ground-trace noise to logd().
- Keep logf() for lifecycle, config, warnings/errors, GUI open/close, item
  category/tagging summaries and item-crate detections so crate debugging
  works without the ESP stream.
- Supply crates now respect the max-distance slider (user change), with the
  stale comment and CONTEXT updated.
- Document HL2H_DEBUG=1 in play.sh and CONTEXT.
</content>
</entry>
<entry>
<title>Bones: ignore uninitialized/zero bone matrices</title>
<updated>2026-10-26T19:33:46Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-10-26T19:33:46Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/hl2h/commit/?id=0d0e0602ed89ef6950c27657889a9dcceb0cc697'/>
<id>urn:sha1:0d0e0602ed89ef6950c27657889a9dcceb0cc697</id>
<content type='text'>
- validate each SetupBones matrix (finite and non-zero world translation);
  extra/modded and some vanilla bones (Father Grigori) can be uninitialized
  and were drawing lines to world (0,0,0)
- invalid bones are skipped by the skeleton, hitbox centers and aim points;
  skeleton children connect to the nearest valid ancestor instead of a dead
  bone
- log the per-model invalid bone count with the first bones diagnostics
</content>
</entry>
<entry>
<title>Bones: head fallback for headcrab black/fast</title>
<updated>2026-10-26T17:26:43Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-10-26T17:26:43Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/hl2h/commit/?id=d45bf3b974171b34655421c8996f1ff37d34178a'/>
<id>urn:sha1:d45bf3b974171b34655421c8996f1ff37d34178a</id>
<content type='text'>
- head lookup now accepts head-like bone names (teeth, mouth, jaw, face, eye,
  front, snout, beak) after the HITGROUP_HEAD check
  (headcrabblack: HCblack.teeth; headcrab/fast: HCfast.wiggle_front)
- final fallback is the model's first hitbox center for non-humanoids with
  no head information at all
</content>
</entry>
<entry>
<title>Aimbot v2: bone checklist and numeric smoothness</title>
<updated>2026-10-26T16:02:45Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-10-26T16:02:45Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/hl2h/commit/?id=ab3d725cacbe8cd7153c02faf2d9fe6df7e37949'/>
<id>urn:sha1:ab3d725cacbe8cd7153c02faf2d9fe6df7e37949</id>
<content type='text'>
- Aimbot -&gt; Bones: Head, Torso (chest+stomach), Left/Right arm,
  Left/Right leg; the aimbot aims at the nearest selected hitbox point on
  the chosen target (head uses the head hitbox/bone fallback)
- Aimbot -&gt; Smoothness: value 1..45 deg/tick, Left/Right in the menu to
  adjust, persisted as smooth=N; default 5 (previous behaviour)
- config: bone_* toggles + smooth under [aimbot]
- menu gains a NODE_VALUE type (right-aligned value, Left/Right edit)
</content>
</entry>
<entry>
<title>Aimbot: fix eye height (m_vecViewOffset Z, not X); prefer head hitbox</title>
<updated>2026-10-26T15:46:37Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-10-26T15:46:37Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/hl2h/commit/?id=ccec960a0d53a740eb546a9523811e066a5f118a'/>
<id>urn:sha1:ccec960a0d53a740eb546a9523811e066a5f118a</id>
<content type='text'>
- g_cam_eye was adding the X component of m_vecViewOffset to Z, leaving the
  eye ~64 units too low; the aimbot consequently aimed above heads
- head_position now prefers the HITGROUP_HEAD hitbox center before falling
  back to bone names (zombie: headcrab body hitbox)
- log the exact head and desired angles for the first few aim ticks
</content>
</entry>
<entry>
<title>ESP: generic full-bone skeleton for non-humanoid NPCs (headcrabs, crows, ...)</title>
<updated>2026-10-26T15:31:44Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-10-26T15:31:44Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/hl2h/commit/?id=d74e4900f8247f2fb20ede70bea4c65c12fd0b55'/>
<id>urn:sha1:d74e4900f8247f2fb20ede70bea4c65c12fd0b55</id>
<content type='text'>
</content>
</entry>
<entry>
<title>ESP: include zombie head (headcrab body/head) in humanoid skeleton</title>
<updated>2026-10-26T15:29:10Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-10-26T15:29:10Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/hl2h/commit/?id=ac578cd21c5f05ebdb6647d595b5bdf5aeefd598'/>
<id>urn:sha1:ac578cd21c5f05ebdb6647d595b5bdf5aeefd598</id>
<content type='text'>
</content>
</entry>
<entry>
<title>ESP: derive skeleton core from hitbox bone paths (fixes unnamed ValveBiped bones)</title>
<updated>2026-10-26T15:25:28Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-10-26T15:25:28Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/hl2h/commit/?id=1e3b1cabaea62ef0e30ce8a478fb8418aa835229'/>
<id>urn:sha1:1e3b1cabaea62ef0e30ce8a478fb8418aa835229</id>
<content type='text'>
</content>
</entry>
</feed>
