Demo: F10 camouflage, the short freeze ~1min, and solution menu
| Category | Capabilities |
|---|---|
| ESP | Dot / 2D Box / Skeleton overlay, names, distance, snap lines, team filter, distance scaling |
| Camouflage | WARNING DEV / OPTIONAL - Disabled by default. F10 samples screen color and applies to character material. Prompt at startup to enable. |
| Health Bars | Health bar and shield bar, adjustable model height and Y offset |
| Radar | External minimap radar with configurable size and range |
| Aimbot | Smooth aim assist, FOV circle, rebindable key |
| Colors | Enemy, local, skeleton color pickers |
All features are fully external - no DLL injection, no UE4SS, no DXGI.
- Download MecchaCamouflage.exe from the latest release
- Launch MECCA CHAMELEON (windowed / borderless)
- Run MecchaCamouflage.exe
pip install -r requirements.txt
python -m meccha_chameleon_tools
Requirements: Windows 10/11, game running in windowed/borderless mode.
Startup prompts -- On each launch the tool runs two prompts:
- Enable Camouflage? (optional, DEV -- disabled by default)
- Auto-install -- Only prompts on first launch if no release is found in the game directory:
- First time -- Checks GitHub and asks "Install MecchaCamouflage?" with latest release info; Yes = download & install, No = skip to menu.
- Already installed -- No dialog at all, opens menu directly.
A .meccha_version file in the game directory tracks the installed version.
WARNING: This feature is in DEVELOPMENT and disabled by default.
- Enable at startup -- A dialog asks "Would you like to enable camouflage?" Click Yes to activate.
If you click Yes
success
make sure the game start with next run
- Or enable later -- Open settings (Insert/F1), go to the CAMOUFLAGE tab, check "Camouflage Enabled".
- Sample and apply -- Press F10 in-game to sample screen color and apply to character's 3D model.
- Toggle off -- Press F10 again to restore original color.
The setting is per-session. You will be prompted again each launch.
| Dependency | Purpose |
|---|---|
| pymem | Game process memory read/write |
| PyQt5 | Transparent overlay + settings UI |
| pywin32 | GDI pixel sampling, window detection |
| Key | Action |
|---|---|
| Insert / F1 | Toggle settings menu |
| F10 | Camouflage (DEV / optional -- disabled by default) |
| Close button | Bottom bar of menu -- quits the application entirely |
The menu organises options across five tabs selected from a sidebar:
ESP - Enable/disable, style toggles (Dot / 2D Box / Skeleton), Show Local Player, Names, Distance, Snap Lines, Team Filter, Distance Scaling, dot radius.
HEALTH - Health bar toggle, shield bar toggle, model height, Y offset.
RADAR - Enable/disable, radar size (80-400 px), radar range (1000-50000).
AIMBOT - Enable toggle, FOV circle display, key binding recorder, FOV radius, smoothing factor, aim offset.
COLORS - Pick colours for enemy, local player, and skeleton overlay via colour picker dialog.
CAMOUFLAGE - WARNING DEV / OPTIONAL -- Disabled by default. Enable via startup prompt or the CAMOUFLAGE tab. Press F10 to sample screen colour and apply it to your character's 3D model.
meccha_chameleon_tools/ # Python package
|-- __init__.py # Main application entry point
|-- __main__.py # Module runner
|-- config.py # Configuration + JSON save/load
|-- core.py # Memory reading, ESP logic
|-- ui.py # Qt5 overlay + menu GUI
PatternScanner -> GUObjectArray, FNamePool
UObjectArray -> find_class, iter_objects
OffsetResolver -> dynamic property walking
GameReader -> world, camera, players
Overlay -> QPainter rendering loop @ 60 fps
Menu -> PyQt5 settings window (6-tab sidebar: ESP, HEALTH, RADAR, AIMBOT, COLORS, CAMOUFLAGE)
- Pattern scanning locates GUObjectArray and FNamePool in the game module via signature matching with fallback chains.
- Object walking enumerates all UObjects to resolve engine class addresses and find player pawns, controllers, and camera managers.
- Dynamic offset resolution walks the UStruct::ChildProperties -> FField::Next chain to find property offsets at runtime - no hardcoded offsets.
- ESP reads player positions from GameState -> PlayerArray -> PlayerState -> PawnPrivate -> RootComponent -> RelativeLocation, projects through the camera view matrix.
- Radar projects player positions relative to local player orientation onto a 2D minimap display.
- Aimbot reads/writes ControlRotation on the local player controller with configurable smoothing.
The FNameResolver auto-detects UE4, UE5, and custom header-layout variants. The PatternScanner uses chunked reads (2 MiB) to avoid large allocations on shipping executables.
| Symptom | Likely Cause | Fix |
|---|---|---|
| Game Freeze after pressing F10 | time to write and analyze the colors location | Normal this takes between 1-2min |
| Game attach failed | Process name mismatch | Verify PenguinHotel-Win64-Shipping.exe is running |
| ESP shows nothing | Not in a match with players | Load into a lobby or match |
| Only 1-2 players detected (4+ in game) | Team filter on; all use same character class | Disable Team Filter in the ESP tab (or update to v1.2.1 where it defaults to off) |
| Snap lines not visible | w2s dropped off-screen projections | Update to v1.2.1 — off-screen players now correctly draw lines to screen edge |
| Aimbot not firing | Key binding mismatch | Re-record the aim key in the AIMBOT tab |
| Radar not showing | Radar disabled | Enable Radar Enabled in the RADAR tab |
- CI/CD -- GitHub Actions auto-builds the single-file EXE on every push to master and attaches it to releases.
- Close button -- added to the menu bottom bar to quit the application at any time.
- main.py fix -- corrected import path (double-init) to prevent EXE crash when game is not running.
- CI/CD -- GitHub Actions auto-builds the EXE on every push to master and attaches it to published releases.
- Prompt only once -- dialog only shows if no release is found in the game directory.
- Already installed -- no dialog at all, no GitHub API call, opens menu directly.
- First install -- checks GitHub and asks "Install MecchaCamouflage?" with version info.
- No skips to menu -- clicking No opens menu immediately.
- Version tracking -- .meccha_version file written to game directory after install.
- Camouflage is now disabled by default -- user is asked at startup whether to enable it.
- Camouflage marked as DEV / experimental -- clearly labelled throughout UI and README.
- Auto-install prompt -- tool asks at startup whether to download the latest release from GitHub to the game directory.
- Startup dialogs -- two Qt prompts at launch: camouflage opt-in and release download/install.
- Fix: Only 1-2 players detected - Team filter default changed to False. Previously, players sharing the same character class as the local player were filtered out; this caused most or all enemies to be invisible in modes where everyone uses the same Blueprint class.
- Fix: Snap lines not drawing - w2s() no longer returns None for off-screen positions. Snap lines now draw from screen bottom-center to the player angular position at the screen edge. On-screen elements (dots, health bars, labels) are clamped to the visible area.
- Added clamp_screen() helper for clean off-screen element handling.
- Sidebar with five tabs: ESP, HEALTH, RADAR, AIMBOT, COLORS
- All toggles, sliders, and color pickers organised per-tab
- Rebindable aim key with Insert/F1 menu toggle
- First standalone release with PyInstaller build
Educational and research purposes only. Use at your own risk.
