summaryrefslogtreecommitdiffstats
path: root/build.sh (unfollow)
Commit message (Collapse)AuthorFilesLines
12 daysOverlay: keep GUI and toasts drawing if the ESP font failssalmonik1-3/+4
12 daysGUI: add on-screen toasts and atomic config writessalmonik8-24/+309
- Toast queue drawn in the top-right by the overlay, independent of the GUI being open. Info/warn/error colors and 6/9/12 s lifetimes; timers start on the first painted frame so startup messages are not missed. - Queue a load toast after install_menu, plus warnings/errors for missing modules/interfaces/netvars, input hooks, fonts, ISurface, server datamap, and spread seed support. - Toast on config reload, reset, bind/unbind and config save failure. - Config saves now write `config.tmp`, flush, then rename it over the real file; failures leave the previous config intact. - config_load reports whether a file was found so Reload can distinguish a successful reload from a missing file. - Update CONTEXT and ISURFACE_STATUS for the single GUI, toasts and atomic config writes.
12 daysGUI: fix footer clipping; remove the old text menusalmonik5-411/+35
- Right-align the footer hint and size the config label from the remaining width, so "INS close" is no longer truncated. - Delete the text-tree menu now that the GUI has feature parity: remove the tree/input/render code, the F1 toggle and menu_force_close. - Keep only held-key polling for feature binds; poll it every frame from outer_draw. - Update CONTEXT/ADR: the GUI is the only menu.
12 daysGUI: wire real feature state and configsalmonik5-200/+438
Replace the dummy preview controls with the actual settings: - cards bind directly to the feature state and the existing option variables; Active/Bind now drive the same gates as the text menu; - every feature persists active+bind, including movement, melee and spread; - config path and build info are real; Reload config re-reads the INI; - Reset defaults is two-click, restores feature settings/binds and keeps the GUI layout; - window position, category and expanded cards persist under [gui] in the same config file; layout saves on drag/category/expand/close; - mouse bind capture handles all five buttons and consumes the click so it cannot re-arm immediately; - Active/Bind tooltips and full scancode names. The old text tree stays on F1 for one verification pass.
12 daysGUI: Insert-only close, freeze mouse look at the sourcesalmonik7-37/+110
Feedback pass: - Insert now toggles the GUI; the old text tree moved to F1. - Remove the title-bar X. Insert is the only close path; Esc only cancels bind capture. - Discard accumulated mouse deltas in CInput::CreateMove before the game can apply them (CInput::ClearStates), so the camera no longer moves for a frame and snaps back. Also skip ExtraMouseSample and zero relative mouse state while the GUI is open. - Strip attack/use/impulse/weapon selection from the command while open; keep jump, duck and walk. Skip combat command edits (spread seed) too. - Widen System page buttons so "Reload config" and "Reset defaults" fit. - Update CONTEXT/ADR for the Insert-only close behavior.
12 daysGUI: allow movement while open; freeze look and block bind capturesalmonik5-23/+133
Feedback pass on the preview shell: - Freeze the rendered view explicitly in CreateMove and again at FRAME_RENDER_START; CInput was still letting mouse look move the camera. - Allow normal WASD/jump/duck movement while the GUI is open; strip attack/use/impulse/weapon selection so GUI clicks do not fire. - While bind capture is active, block all game input. - Esc no longer closes the GUI; it only cancels bind capture. F2 or the title-bar X close the preview. - Interpose SDL_ShowCursor / SDL_SetRelativeMouseMode / warp / window grab so the game cannot re-capture or hide the native cursor while the GUI is open.
12 daysGUI: add F2 preview shell with dummy controlssalmonik7-4/+1326
First vertical slice for the custom ISurface GUI: - window/sidebar/content shell with Movement, Combat, Visuals, Weapons and System categories; - cards with dummy Active/Bind, collapsible settings, toggles, sliders, buttons, bind capture, scrolling and tooltips; - native OS cursor by releasing SDL relative mode; reasserted while open; - F2 toggles the preview; Insert still opens the old text tree; - while the GUI is open, do_move freezes movement/buttons/impulses/view and skips combat features; ESP and the speed graph keep drawing. Dummy controls do not touch the real config yet. The text menu is removed after feature parity in the next pass.
12 daysSpeedgraph: lower the graphsalmonik1-1/+1
12 daysESP/aimbot: mark male, female, monk and Odessa models friendlysalmonik1-3/+3
12 daysSpread control: override the server FireBullets seed for the local playersalmonik4-9/+58
The installed 2024 server ignores the client usercmd random_seed and uses its own shot seed. Force the server's CBaseEntity::FireBullets RandomSeed call for the local player only: - hook the server.so RandomSeed GOT slot (R_386_JUMP_SLOT at 0xce1348); - read the FireBullets `this` from the caller frame and compare it with the local server player base; - replace the seed with the precomputed best single/shotgun window and step it per pellet; NPC shots and everything else pass through. - client prediction still uses the same chosen usercmd seed, so both sides agree on the spread pattern.
12 daysSpread control: add server RandomSeed GOT diagnostic/overridesalmonik1-0/+61
12 daysSpread control: set random_seed after CInput::CreateMovesalmonik2-3/+58
CInput::CreateMove overwrites cmd->random_seed with MD5_PseudoRandom after CHLClient::CreateMove returns, so the seed set from the client-mode hook was being discarded. Hook the IInput vtable slot 3 (CInput::CreateMove), call the original, then apply the spread seed and update the verified command copy and CRC. This also keeps all aim/movement edits since the original copies the command into the verified table.
12 daysSpread control: client-seed no-spreadsalmonik5-15/+202
HL2's CBaseEntity::FireBullets seeds its RNG from the usercmd random_seed (m_bUseServerRandomSeed is false for HL2 weapons), so the client can select the 8-bit seed that puts CShotManipulator::ApplySpread closest to the center. - New feature Spread control -> Active / No spread (both default on). - Precompute the best seed for a single shot and for the shotgun's 8-shot primary (first pellet accurate) and 12-shot secondary windows using the engine's own RandomSeed/RandomFloat from libvstdlib. - Set cmd->random_seed on attack commands; note_modified repairs the CRC. - The random cone offset is neutralized, but the cone size, the pistol accuracy penalty, server view punch and any damage falloff remain server-side; stock HL2 has no distance damage falloff.
12 daysMelee killbot: 360-degree crowbar silent aimsalmonik7-35/+351
- New feature (default on): while the local player's active weapon is the crowbar, pick the nearest visible hostile NPC within the 75-unit crowbar range, sorted by distance to its collision AABB, and attack it through the normal silent-aim path (usercmd view + IN_ATTACK, movement preserved, rendered view restored at FRAME_RENDER_START). - Prefer the nearest visible hitbox center; fall back to the AABB center / closest point when bones are unavailable. Reuses the existing friendly / neutral and life-state filters and the world-only vischeck. - Detect the active weapon from the client m_hActiveWeapon handle, with the authoritative server m_hActiveWeapon handle as a fallback (client entity index from the low 16 bits). - While the crowbar is active and this feature is on, skip the gun aimbot, triggerbot and silent aim so they do not fight over the usercmd view. - Menu: Melee killbot -> Active; config [melee] active=...
12 daysMenu: latch the Insert key and expand the root on opensalmonik1-3/+23
12 daysJumpbug: optional velocity-timed assistsalmonik6-18/+191
The unduck window is only 2 units, while a 625-ups fall moves ~9.3 units per 66.7 Hz movement command, so pure jumpbug is ~20% reliable at that speed. - Add Jumpbug -> Assist timing (default off). When the natural next command would skip [36,38], pin the post-command ducked distance to 37 by writing the vertical velocity for that command. Pure jumpbug remains available with the option off. - Resolve the client local m_vecAbsVelocity (0x11C) via the client datamap and the server m_vecAbsVelocity (0x228) via the server datamap. - Write both the authoritative server velocity (what SetupMove reads through GetAbsVelocity) and the local prediction fields, so the next CreateMove sees the assisted origin on both sides. - Do not write the server m_vecVelocity directly: the datamap scan finds two same-named entries (0x1C and 0x29C); SetAbsVelocity syncs it after movement.
12 daysscript: change the map for testssalmonik1-1/+1
12 daysJumpbug: automatic duck+jump on damaging fallssalmonik5-18/+279
- Predict the landing speed from the current vertical velocity and a swept standing-hull ground trace; engage only when it exceeds PLAYER_MAX_SAFE_FALL_SPEED. - Press duck one command before the unduck window so FinishDuck's 36-unit origin raise places the feet ~37 units above the floor. - On the next command release duck and press jump: PlayerMove runs Duck() before CheckJumpButton, so FinishUnDuck sets ground, the jump executes, and CheckFalling never sees ground for the fall-damage check. - Measure the per-command fall from consecutive airborne origins instead of a fixed tick interval; clear IN_JUMP while waiting so the pogo latch is clear. - New Movement -> Jumpbug -> Active toggle (default on), config [jumpbug].
12 daysSpeed graph: show current speed at the top-rightsalmonik1-0/+6
12 daysSpeed graph: only sample while in-game and unpausedsalmonik1-0/+9
12 daysESP: HUD speed graph (last 10 s)salmonik4-5/+78
- 0.1 s sampling, 100-sample ring; horizontal speed of the local player - small (240x64) panel centered in the lower half of the screen - min 0, max auto-scales to the maximum in the 10 s window; shows max value - ESP -> Show speed graph toggle, persisted as speedgraph=1
12 daysDocs: add roadmap including distance weapon spread thesissalmonik1-0/+13
12 daysESP: draw the FOV circle as a stable screen-space ellipsesalmonik1-20/+39
12 daysAimbot/silent aim: settable FOV, FOV circle, target lockingsalmonik4-64/+224
- Aimbot -> FOV and Silent aim -> FOV values (1..180 deg from the crosshair) - Aimbot -> Show FOV circle: projects the FOV cone through the engine's world->screen transform (hidden for >=89 deg since the boundary is behind the eye) - target lock: while a feature has a bind and the key is held, the acquired target is kept while it is alive and has a visible selected hitbox point; it only re-acquires when the target dies/leaves visibility or the key is released. With bind = None both features keep selecting the nearest target.
13 daysBones: ignore uninitialized/zero bone matricessalmonik1-5/+31
- 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
13 daysFonts: recreate the VGUI font after menu/map transitionssalmonik1-0/+18
13 daysUse one float-precision PI constantsalmonik3-4/+5
- move PI_F into hl2h.h as constexpr 3.14159265f and remove the duplicated long-double-style literals from hl2h.cpp/esp.cpp - extra digits are compile-time only; float operations cost the same
13 daysFonts: bundle Liberation Sans and register it with fontconfigsalmonik4-10/+180
- ship assets/LiberationSans-Regular.ttf (+ OFL license/README) - at startup, resolve the .so path via dladdr, add assets/...ttf to the current fontconfig config with FcConfigAppFontAddFile, and fall back to the system Liberation path if the asset is missing - font creation tries Liberation Sans, then DejaVu Sans/Noto/Tahoma/Verdana/ Arial, so the overlay still renders on installs without the bundled font
13 daysBones: head fallback for headcrab black/fastsalmonik1-4/+23
- 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
13 daysBinds: allow multiple features to share the same keysalmonik1-9/+2
13 daysDocs/cleanup: refresh CONTEXT, update ISurface status, remove dead codesalmonik6-123/+180
- rewrite CONTEXT.md for the current architecture, interfaces, netvars, menu tree, bones/ESP, aimbot/vischeck, triggerbot, silent aim and ABH - update ISURFACE_STATUS.md: DrawLine slot, current menu/config path, 9 build TUs, current file layout - remove the stale root-level `tree` file - drop unused class_health_off/per-class health scan (NPC HP is not networked), surf_call_slot, and unused scancode helpers
13 daysConfig: store in $XDG_CONFIG_HOME/hl2hake/configsalmonik1-4/+23
13 daysABH: silent auto-ABH on the jump ticksalmonik1-3/+21
- on landing with jump held, face opposite the horizontal velocity and zero forward/side movement for that tick; the HL2 jump speed-bound subtraction then accelerates along the velocity (the classic no-input ABH exploit) - works standalone or with bhop; bhop's auto-strafe still applies in air when enabled - rendered view is restored at FRAME_RENDER_START via the existing hook, so the camera does not flip around
13 daysSilent aim: restore view at FRAME_RENDER_START; preserve movementsalmonik3-4/+52
- hook CHLClient::FrameStageNotify (vtable slot 35) and at FRAME_RENDER_START re-apply the player's original view angles after the engine has consumed the aimed usercmd; this fixes the slow pull with high-RPM weapons and the revolver leaving the view on the target - silent aim also rewrites forwardmove/sidemove so the world-space movement wish vector is unchanged by the temporary aim angles
13 daysSilent aim: exact usercmd angle + fire, restore rendered viewsalmonik4-37/+110
- new top-level Silent aim feature (Active + Bind, default Mouse3) - reuses the shared aim-target selection (bone checklist, nearest selected point, world-only MASK_VISIBLE vischeck) - writes the exact target angle into cmd->viewangles, sets IN_ATTACK for the shot, then immediately restores engine view angles to the player's input view (g_cam_view) so the camera stays where it was - shares the vischeck/bone selection with the aimbot; independent of the aimbot/triggerbot binds - config [silentaim] active/bind
13 daysTriggerbot: crosshair entity trace, hostile-onlysalmonik5-25/+159
- top-level Triggerbot feature (Active + Bind, default Mouse4, rebindable) - trace the crosshair ray from the eye with MASK_SHOT and TRACE_EVERYTHING; the filter ignores the local player - if the first entity hit is a live hostile NPC, press IN_ATTACK and fix the usercmd CRC; walls/props/friendly/neutral/corpses do not trigger - independent of Aimbot; config [triggerbot] active/bind
13 daysAimbot v3: world-only vischecksalmonik6-42/+179
- resolve EngineTraceClient003; TraceRay (slot 4) from the eye to the exact selected hitbox/bone point with MASK_VISIBLE - TRACE_WORLD_ONLY filter as requested (static props are not tested, per SDK) - Aimbot -> Vischeck toggle, persisted as vischeck=1; when on, blocked targets are skipped and the next-nearest candidate is tried - target candidates are ranked by angle; on each target the nearest visible selected hitbox point wins
13 daysESP: add Show box togglesalmonik3-5/+10
13 daysAimbot v2: bone checklist and numeric smoothnesssalmonik4-18/+164
- Aimbot -> 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 -> 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)
13 daysAimbot: fix eye height (m_vecViewOffset Z, not X); prefer head hitboxsalmonik3-3/+21
- 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
13 daysAimbot: push smoothed angles to engine view + diagnosticssalmonik2-1/+39
13 daysAimbot: head-only nearest-to-crosshair with bounded smoothingsalmonik4-8/+146
- select the hostile NPC whose (approximate) head is closest in angle to the crosshair, then refine to its actual head hitbox/bone - aimbot menu feature (Active + Bind, default Mouse5, rebindable via the existing bind chooser); config [aimbot] active/bind - never snap: move at most 5 degrees per tick toward the target, shortest-path yaw, pitch clamped to +/-89, 0.05 degree deadzone; no overshoot/oscillation - fixes the usercmd CRC after modifying viewangles - skip when dead; ignores friendly/neutral entities (crows, citizens, ...)
13 daysESP: generic full-bone skeleton for non-humanoid NPCs (headcrabs, crows, ...)salmonik3-3/+14
13 daysESP: include zombie head (headcrab body/head) in humanoid skeletonsalmonik1-2/+19
13 daysESP: derive skeleton core from hitbox bone paths (fixes unnamed ValveBiped ↵salmonik1-21/+42
bones)
13 daysESP: restrict skeleton to humanoid core bones (no fingers/toes/headcrab)salmonik3-2/+55
13 daysESP: skeleton ESPsalmonik3-5/+46
- render parent->child bone links from the SetupBones world matrices (ISurface DrawLine, projected once per bone) - menu option "Show skeleton" under ESP, persisted as skeleton=1 - skeletons use the same hostile/friendly/neutral colours as the boxes
13 daysBones: refresh snapshots every frame (head marker no longer lags)salmonik1-1/+3
13 daysBones: robust head lookup (hitbox name -> head bone) + hitbox dumpsalmonik3-28/+115
13 daysBones: client-side SetupBones/studiohdr groundworksalmonik4-1/+326
- bones.cpp: resolve IClientRenderable via IClientUnknown slot 6, validate it against IVModelInfo GetModel, call SetupBones (slot 16) with engine Time() (slot 14), and parse the studio header (GetStudiomodel, slot 29) for bones/bone names/parents and hitboxes - cache up to 64 entity bone snapshots, refreshed at ~30 Hz - helpers: bone_find/parent/pos, hitbox_center (e.g. "head") - debug probe: HL2H_BONE_DEBUG=1 draws a white marker at each NPC's head hitbox center and logs bone count/head position once