summaryrefslogtreecommitdiffstats
path: root/vgui_surface030_vtable_identification.md (unfollow)
Commit message (Collapse)AuthorFilesLines
12 daysItem ESP: fix AR2/RPG/stunstick world-model namessalmonik1-10/+17
HL2 uses w_irifle for the AR2, w_rocket_launcher for the RPG and w_stunbaton for the stunstick. Keep the model-path fallback (with larger buffers) so unknown world models can still be identified in-game, and make the supply-crate marker larger.
12 daysedge-case in weapon displaying and fixing RPG filteringsalmonik1-2/+2
12 daysItem ESP: focus crate diagnostics on nearby props; log build timesalmonik2-3/+3
12 daysDocs: note supply crates ignore the distance limitsalmonik1-2/+3
12 daysItem ESP: always tag supply crates regardless of distancesalmonik1-1/+4
12 daysItem ESP: raise max distance default to 5000 unitssalmonik3-5/+5
12 daysItem ESP: log every crate-like entity for diagnosissalmonik1-7/+9
12 daysItem ESP: tag world weapons, name ammo types, restrict cratessalmonik6-39/+243
- 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.
12 daysItem ESP: tag breakable wood/plastic/metal cratessalmonik2-1/+16
12 daysRemove stucklaunch; add valuable-item ESPsalmonik7-241/+339
- 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.
12 daysStucklaunch: fix prop detection and add diagnosticssalmonik4-11/+73
- 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.
12 daysBind labels: name unlisted scancodes instead of showing Nonesalmonik1-1/+11
12 daysToasts: account for panel padding when wrappingsalmonik1-2/+5
12 daysGUI: wrap all text instead of truncatingsalmonik3-174/+250
- 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.
12 daysStucklaunch: alternate attack/use and expose spam ratesalmonik5-16/+44
- 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.
12 daysFix tooltip truncation; add Stucklaunch assistsalmonik7-25/+190
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.
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