Skip to content

MCESP v3.0.0

Latest

Choose a tag to compare

@iamjrmh iamjrmh released this 04 Jul 18:12
8c42808
MCESP

MCESP v3.0.0

Platform
Engine
Version


ESP

Aimbot

Movement

Settings

What's new since v2.1.0

Players tab + Teleport to Player

  • New Players tab: pick any live player by name and teleport your own pawn near them via the engine's own K2_TeleportTo, works from any role, no host needed.
  • Known limitation: this game's Mover-plugin movement prediction actively corrects position jumps it didn't originate, so the teleport is a real, visible jump but doesn't reliably stick - expect a quick snap-there-and-back "glitch" moment rather than a persistent relocation. Kept in because it's still a fun visible beat for footage; a fully persistent version would need much deeper Mover-internals work.

Flick Bot

  • New button + rebindable key in the Aimbot tab: instantly snaps your view to the nearest visible player in one shot, ignoring the FOV circle and Strength smoothing entirely (unlike the held continuous aimbot).
  • Internally re-measures and re-corrects a few times within a single press (a few tens of milliseconds) to land dead-on - the angular-offset math used for the continuous aimbot is only a good approximation for small, near-center corrections, and Flick Bot routinely has to close a much larger gap.

Full menu redesign

  • Every tab now groups its controls into bordered, rounded cards matching the Settings tab's About section look, instead of a flat list of controls directly on the tab background.
  • Added a fifth tab (Players) for the teleport feature above; the tab bar was re-tuned to stay perfectly even edge-to-edge at five tabs instead of overflowing off-screen.
  • Buttons got a softer border radius and an accent-colored hover state to match the card aesthetic.

Overlay flashing/stutter fix

  • The overlay's repaint timer now matches your actual monitor refresh rate (queried live) instead of a hardcoded ~62.5Hz guess, which was visibly out of step with the game's own frame rate on higher-refresh displays.
  • Requests 1ms Windows timer resolution for the app's lifetime - the previous ~16ms interval sat right on top of Windows' default ~15.6ms scheduler granularity, causing the timer to fire irregularly.
  • Stopped repositioning the overlay window on every single tick; it now only touches window geometry when the game window's rect actually changes, cutting out unnecessary compositor churn.

Everything from v2.1.0 (still current)

Shared config across .exe and source

  • Settings now live in Documents\MCESP\esp_config.json instead of next to the script/exe, so the compiled .exe and the python MCESP.py source version read and write the exact same file. Updating one no longer orphans your setup.
  • Auto-migrates a config found in the old script-relative location the first time it runs.

Check for Updates

  • New button in Settings (in the About card) that checks this repo's latest GitHub Release tag against the running version, and links straight to the MCESP.exe download if a newer one is out.
  • Makes it a one-click update for buddies instead of re-sending the exe manually.

Overlay auto-hide on focus loss

  • The overlay and menu now automatically hide the moment focus moves to another program, and automatically reappear when MECCHA CHAMELEON is refocused - same behavior as manually pressing F1/F2, just automatic. No more ESP boxes floating over your desktop/Discord/browser when you alt-tab out.

Force Spectate is now a smart toggle

  • The Force Spectate key now checks whether you're already in spectate mode: if you are, it just presses 5 to exit; if you're not, it calls GoToSpectate/FreeCameraChange to force you in. One key, either direction.
  • Added a dedicated Reset View button (Movement tab) that does the same "press 5 to exit spectate" action without needing the hotkey.

Reset Movement Speed

  • New button in the Movement tab that snaps the Movement Speed slider (and the live in-game speed) back to the character's true baseline, undoing any custom speed scaling without having to remember or re-enter the default value.

Cleaner ESP - no more dead body markers

  • Actors with no resolvable player name (dead bodies, decorative doubles, etc. - previously drawn with a placeholder "Enemy N" label) are now skipped entirely instead of drawn with a fake name.

About section, redesigned

  • Settings tab's About card was rebuilt: cleaner bordered card with the MCESP name/version, "by JURMR" credit, and pill-style buttons linking to the Discord and GitHub - alongside the Check for Updates button above.
  • Top menu tag shortened from "MECCHA ESP" to just MCESP.

Post-injection message

  • After attaching, the console now prints a clear "this window must remain open for MCESP to keep running - please do not close it" notice instead of just Injected, since the console window is still required to stay open (it's a console app by design, so you can see waiting/injected status at a glance).

Fully self-healing now

  • Removed the last hardcoded, game-content-specific offset (FREE_CAM_FLAG_OFFSET) - it was vestigial after Force Spectate's exit path was simplified to a keypress. Everything that isn't inherent to the engine itself now resolves dynamically via reflection or live validation each session.

Dev tooling

  • Added bump.bat for maintainers: run it, type the new version number, and it updates the VERSION constant in MCESP.py and this file's header together (backed by bump_helper.ps1, not meant to be run directly).

Everything from v2.0.0 (still current)

Force Spectate

  • Rebindable hotkey that forces you into full free-camera spectate mode from any role or location - in a match, still in the lobby, alive, spawned in or not.
  • Real remote function calling, not a keypress simulation: it invokes the game's own GoToSpectate and FreeCameraChange engine functions directly via UObject::ProcessEvent, run through a small hand-assembled x64 shellcode stub injected with CreateRemoteThread.
  • ProcessEvent's address is resolved live from the target object's own vtable (a fixed slot index found once via reflection), not a hardcoded code offset.
  • Unbound by default; bind it in the Movement tab.

Movement tab (Fly, Noclip, Movement Speed)

  • Fly: gravity-override based vertical flight, rebindable up/down keys, with a short counter-thrust on release so you settle into a stable hover instead of drifting on residual momentum.
  • Noclip: full wall/collision passthrough. Only takes effect in the game's own Free Camera / Free Movement mode.
  • Movement Speed: a single slider (100-10,000) that scales walking, sprinting, and fly-thrust speed together.

RGB Mode + accent color

  • Toggle in Settings: cycles every colored UI/ESP element through a synced rainbow.
  • Accent color is pink (#ff2e97).

Menu reorganized into tabs

  • Four tabs: ESP, Aimbot, Movement, Settings. Equal-width, edge-to-edge, no scroll arrows.

Overlay overhaul

  • Overlay tracks the game's actual client-area rect every frame, so it stays correctly positioned/sized through window moves, resizes, and borderless-fullscreen changes.
  • Player names resolved from PlayerState (real names).
  • RGB Mode is fully wired into rendering: markers, snap lines, and name labels all recolor together when enabled.

Everything from v1.0.0 (still current)

ESP

  • Player Marker with 3 styles: Dot, Box Outline, Skeleton
    • Skeleton is a real bone-driven skeleton - live bone poses + actual parent/child hierarchy read from the game, projected to screen and connected joint-to-joint.
    • Falls back to the proportioned stick-figure approximation if real bone data isn't available for an actor on a given frame.
  • Show/hide local player, names, distance, snap lines, debug counters
  • Separate enemy/local marker colors
  • Adjustable dot radius, model height, Y offset (sliders)

Aimbot

  • Screen-space angular-offset targeting (not raw 3D vector math) - avoids the camera-vs-character origin mismatch that caused early jump/snap bugs
  • Adjustable FOV circle and Strength (smoothing factor)
  • Adjustable target offset (center mass by default, head/chest optional)
  • Rebindable aim key, or keyless mode (clear the bind - fires continuously while Aimbot Enabled is on)
  • Hard-capped turn rate (20 degrees/frame) - structurally cannot instant-snap the view regardless of any future edge case

Quality of life

  • All settings live in an in-game menu - sliders, checkboxes, dropdowns, no manual config editing
  • Save Settings / Load Settings, plus auto-load on launch
  • Rebindable menu-toggle key (default F2) and aimbot key (default MB5) via in-menu key recorder
  • Clean Ctrl+C exit ("Have a great day!" instead of a traceback)
  • Styled dark-theme UI (sliders, dropdowns) matching the rest of the menu

Self-healing skeleton offsets

The bone-pose-cache and bone-name-table offsets aren't discoverable via the engine's reflection system (no UPROPERTY), so they're hardcoded seed values found by manually scanning game build 5.6.1. On every session, MCESP.py validates those seeds live (unit-length quaternions / real ASCII bone names) before trusting them, and if a future game update shifts the memory layout, it automatically re-scans the object body and adopts whatever validates - no manual re-discovery needed unless the auto-scan itself can't find a confident match.


Known limitations

  • Skeleton marker has no limb animation beyond the actual bone pose read each frame - if the offsets above ever fail validation and auto-discovery, it silently falls back to the static approximation rather than erroring.
  • Depends on the game window title being exactly Chameleon (see Overlay._find_game_window()).
  • Teleport to Player doesn't persist - the game's Mover-plugin movement prediction corrects the position back shortly after, so it reads as a visible glitch/flicker rather than a real relocation.
  • Everything else (positions, camera, names, controller/pawn chain, Force Spectate's function lookups) resolves dynamically via UE reflection and should survive most game patches without changes.

Requirements

Windows 10/11, just run MCESP.exe directly.