| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
- Add a Weapons category and classify world weapon models (crowbar, pistol,
revolver, SMG, AR2, shotgun, crossbow, RPG, grenade, gravity gun, stunstick,
bugbait, sniper). Skip the active weapon and anything with a valid
m_hOwner/m_hOwnerEntity handle so held weapons do not tag.
- Label ammo by model: pistol, SMG, AR2, .357, crossbow, shotgun, sniper,
flares, AR2 grenade, RPG rocket and specific ammo-crate variants.
- Only item_item_crate and item_beacon_crate are supply crates; generic
breakable crates are no longer tagged. Crate chunks stay excluded.
- Add item diagnostics: category state, prop-like entities with class/model/
kind/distance/origin, and every item crate seen.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Drop the stucklaunch feature, its settings, diagnostics and
m_hGroundEntity resolution.
- Add a Visuals feature that scans the client entity list for valuable
pickups: health/medkits/chargers, ammo boxes/crates/grenades, batteries,
HEV suit modules/chargers, supply crates and generic items.
- Model-first classification with class fallbacks; category toggles, distance
labels and a max-distance slider.
- Draw colored marker/label tags through walls, independent of the hostile NPC
ESP.
- Persist [items] active/bind/health/ammo/armor/crates/distance/max_dist;
Reset restores defaults; GUI card and CONTEXT updated.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
- Client physics props are CPhysicsProp/CPhysBox, not the server class
prop_physics; the old case-sensitive class check never matched. Detect
MOVETYPE_VPHYSICS first (the reliable signal), then case-insensitive
class/model patterns.
- Log the first few prop checks with index, movetype, class and model so a
failed ground lookup is diagnosable.
- Log once when Stucklaunch is active (with run state, bind and ground
offset), when it engages, and when the ground is not a prop.
- Toast a warning when binding a feature that is not Active yet.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Remove ellipsis truncation from text_in; text is never cut to fit.
- Add a wrapping helper that breaks at spaces and, for long words such as
paths, at character boundaries. Card titles, control labels, info rows,
sections, tooltips and toasts now wrap and their rows/panels grow.
- Use ISurface::GetTextSize (slot 75) for real glyph widths, with the old
estimate only as a fallback before the surface/fonts exist.
- Dynamic card header height for wrapped titles; Active/Bind controls stay
vertically centered. Slider controls are vertically centered in taller
wrapped rows.
- Auto-size System buttons to their labels.
- Tooltips wrap to a panel sized by the widest line.
- Drop the duplicate config path from the footer; the System page shows it
wrapped, so the footer hint fits without clipping.
|
| |
|
|
|
|
|
|
| |
- Gravity-gun spam now alternates +attack (grab) and +use (drop) instead of
pressing both together, which would punt the prop.
- Add a Spam rate slider (1..16 ticks, default 2) so the pickup/drop cycle can
be tuned; it persists as spam_ticks in [stucklaunch].
- Log the prop index the first few times a stucklaunch engages to aid testing.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Tooltips: text_in() shifted the x position to fit the full string before
truncating, which drew the tooltip text outside its box. Truncate to the
available width first, then clamp inside the clip.
Stucklaunch (Movement):
- opt-in feature (Active off by default) with its own bind;
- holds jump, alternates +use every 2 ticks to regrab a physics prop,
optionally +attack while the gravity gun is active, and air-strafes;
- engagement uses m_hGroundEntity (client netvar) latched for ~0.5 s so the
prop stays active while airborne; falls back to running whenever active if
the netvar is unavailable, with a startup warning to bind it;
- does not spawn or place props; the player supplies the prop and initial
speed.
Config gets [stucklaunch] active/bind/use_spam/gravspam/autostrafe; Reset
restores those defaults. CONTEXT documents the assist and its limits.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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.
|
| |
|
|
|
|
|
|
|
|
| |
- 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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| | |
|
| |
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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=...
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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].
|
| | |
|
| | |
|
| |
|
|
|
|
|
| |
- 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
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
- 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.
|
| |
|
|
|
|
|
|
|
|
| |
- 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
|
| | |
|
| |
|
|
|
|
| |
- 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
|
| |
|
|
|
|
|
|
|
| |
- 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
|
| |
|
|
|
|
|
|
| |
- 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
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
- 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
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
- 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
|
| |
|
|
|
|
|
|
|
| |
- 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
|
| |
|
|
|
|
|
|
|
|
|
|
| |
- 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
|