GWToolbox++ Documentation

repository·master·Indexed 19 days ago

https://github.com/gwdevhub/gwtoolboxpp

A suite of tools and extensions for Guild Wars players providing enhanced functionality through modules, widgets, and windows injected into the game client via a DLL. Includes documentation on building for Windows and Linux (via Docker/Wine), plugin development, and the autonomous GW-update repair pipeline for handling ArenaNet client updates.

Tokens
60.6K
Snippets
98
Records
339
Agent score
72%

What's inside GWToolbox++

  1. Overview of Quality of Life (QoL) Fixes

    master

    GWToolbox++ automatically applies several small base-game bug fixes and quality-of-life improvements by default. These include:

    • Experience bar shows XP progress: Displays current XP / XP needed instead of just the current level.
    • Vendor Fix: Ensures items beyond the 56th inventory slot are correctly recognized by collectors and crafters for trade-ins.
    • Code Optimiser: Replaces the internal CRC32 checksum routine with a faster version to reduce data validation stutters.
    • FPS Fix: Removes the hard-coded 90 FPS cap, allowing the game to match your monitor's refresh rate.

    Most of these features can be toggled individually in the Settings panel.

  2. What data GWToolbox++ collects and does not collect

    master

    GWToolbox++ is local, open-source software that does not require an account.

    Data NOT collected:

    • Account names, email addresses, or passwords.
    • IP address logging.
    • Advertising or third-party tracking.
    • The website gwtoolbox.com uses no analytics, cookies, or tracking scripts.

    Data collected/transmitted:

    • Anonymous gameplay data (Opt-in): If enabled, character names or a persistent account UUID (derived from your Guild Wars account but non-reversible) may be sent to gwmarket.net (for trade tracking) and party.gwtoolbox.com (for party-search listings).
    • Update checks: The launcher and Toolbox DLL make web requests to GitHub's public release API to check for updates. GitHub may log these requests per their own policy.
    • Crash dumps: If the software crashes, a dump file may be written to your local Documents\GWToolboxpp folder. These are not uploaded automatically; they remain on your computer unless you manually share them (e.g., via Discord or GitHub) to report a bug.
  3. Overview of the autonomous GWToolbox/GWCA repair pipeline

    master

    The autonomous repair system is designed to automatically fix GWCA and GWToolbox when a new Gw.exe (Guild Wars client) update breaks byte-signature scans and hardcoded offsets.

    The Workflow

    1. Detect: Identifies a new build via GetFileId port or SHA comparison.
    2. Survey: Builds an assert-free version of GWCA and the Debug toolbox, injects them, and parses log.txt to identify null [SCAN] anchors.
    3. Re-derive: Uses the Ghidra MCP server to map broken anchors to functions and extract fresh unique signatures or convert raw Find sites to assertion/string anchors.
    4. Patch & Build GWCA: Edits source files and runs cmake --build build --target create_release to update the GWCA/releases/latest symlink.
    5. Build Toolbox: Runs cmake --build build --config Debug --target GWToolboxdll to fix toolbox-specific raw scans.
    6. Inject & Verify: Uses harness.ps1 to launch GW, auto-login, and inject the DLL. It then parses log.txt for residual nulls and runs functional probes (path, nav, dialog, inventory, etc.).
    7. Present Diff: If the loop converges (zero null anchors and passing functional verification), it presents a staged diff for human review. If not, it repeats the loop up to a bounded round count K.

    Convergence Criteria

    An update is considered fixed when:

    • The scan-survey reports zero null anchors across both GWCA and the toolbox.
    • The functional verification matrix passes.
  4. Overview of the Autonomous GW-update Repair Pipeline

    master

    The autonomous GW-update repair system is designed to handle ArenaNet client (Gw.exe) updates by automatically re-deriving broken memory anchors, rebuilding GWCA and GWToolbox, and verifying functionality.

    The Pipeline Workflow:

    1. Detect Update: Identify changes via build-id.
    2. Survey Breakage: Check for broken anchors (indicated by [SCAN]=0 lines in log.txt).
    3. Re-derive Anchors: Use the Ghidra MCP server to find new memory addresses.
    4. Build GWCA: Use create_release to edit and rebuild GWCA.
    5. Build Toolbox: Build the toolbox in Debug mode.
    6. Inject & Verify: Use the TestHarness to inject into the game and run a functional matrix survey.
    7. Loop & Stage: Repeat until all checks are green, then present a staged diff for human review (the system never auto-commits).
    detect update (build-id) → survey breakage ([SCAN]=0 lines in log.txt) 
    → re-derive broken anchors in Ghidra (MCP) → edit + build GWCA (create_release) 
    → build toolbox (Debug) → inject via harness → verify (survey + functional matrix) 
    → loop until green → present staged diff  (never auto-commit)
  5. Overview of the Minimap widget

    master

    The Minimap widget is an advanced replacement for the standard Guild Wars compass. It provides an enhanced view of the game world by showing everything within party range (approximately 5000 gwinches), which is about 10% further than the default compass.

    Key capabilities include:

    • Accurate Pathing: Displays a background map showing valid movement paths.
    • Agent Visualization: Replaces standard dots with shaped/colored markers (teardrops for moving agents, circles for static agents, squares for items/signposts).
    • Range Visualization: Automatically draws party, spirit, cast, and aggro range circles, as well as special circles like HoS, chain aggro, and shadow step.
    • AoE Footprints: Displays spell footprints for enemy casters (e.g., Maelstrom, Chaos Storm, traps).
    • Interaction: Supports Ctrl+Click (default) to target agents and provides a click-through layer for movement and targeting.
    • Customization: Allows for custom drawings (lines, circles, polygons) that can optionally be projected onto the 3D game terrain.
    • Mission Map Overlay: Minimap layers can be overlaid on the in-game mission map.
  6. Overview of the Vanquish Overlay

    master

    The Vanquish Overlay is a widget that draws supplemental information directly on top of the in-game mission map (default key U). It is designed to help players plan Hard Mode vanquishes by visualizing the walkable area, explored territory, and enemy locations.

    Key visual features include:

    • Map border and inaccessible areas: Outlines and shades non-walkable regions.
    • Fog of explored area: Dims unexplored parts of the zone, with a frontier edge marking the boundary of explored territory.
    • Compass range circle: A circle centered on your character representing the minimap's tracking radius.
    • Enemy markers:
      • Blue: Alive and currently tracked enemies.
      • Orange: Last known position of an enemy, including a small arrow indicating their last movement direction.
    • Enemy count label: Displays the number of foes currently located (alive + last-known) that contribute to the vanquish.
  7. Overview of Toolbox windows

    master

    GWToolbox++ provides several specialized windows to assist with gameplay. Note that all windows have options in Settings to lock their position, prevent resizing, or remove the close button.

    Available Windows

    • Toolbox window: The central hub containing buttons to open all other windows (except Notepad) and a button to toggle auto pcons.
    • Pcons: Automatically pops consumables and pcons.
    • Hotkeys: Configures hotkeys for various Toolbox functions.
    • Builds: Sends team builds to party chat.
    • Travel: Enables fast travel to any outpost in the game.
    • Info: Displays useful game information.
    • Materials: Automatically purchases materials from the trader.
    • Settings: The central location for all Toolbox configuration.
    • Notepad: A persistent text area for notes or instructions. Content in the Notepad is preserved even after restarting Toolbox or Guild Wars.
  8. Limitations of the Damage Monitor

    master

    The Damage Monitor has several technical constraints due to how the GW client communicates with the server:

    • Compass Range: Only damage occurring within your compass range is registered.
    • Direct Interaction: Accuracy is highest for entities that have been directly damaged by the user (allowing Toolbox to learn their max health).
    • Damage vs. Degeneration: Only actual damage is registered. Health-degeneration (degen) is not counted. If a damage number does not pop up above an enemy, it will not be recorded.
    • Infliction Source: Only player-inflicted damage is registered. For example, damage from End of Exposure (EoE) is not measured as being inflicted by the caster. However, damage from a summoning stone is counted as being inflicted by the player who summoned it.
    • Life Steal: Life steal is counted as damage.
  9. Understand how Account Inventory data is stored

    master

    Inventory data is persisted as .ini files in a sub-directory named inventories within your Toolbox settings folder.

    Storage Structure:

    • One .ini file per character for character items.
    • One .ini file per account for Xunlai chest items.

    Persistence Behavior:

    • Files are saved on map load while you are in an outpost. Writes are suppressed in explorable areas to avoid impacting gameplay.
    • When you log out, Toolbox writes the current account's data and reloads foreign-account data to maintain synchronization between profiles.
  10. Important constraints and notes for GWToolbox.exe arguments

    master

    When using command-line arguments, keep the following constraints in mind:

    • Mutual Exclusivity: /install, /uninstall, and /reinstall are mutually exclusive. You can pass at most one of these.
    • Quiet Mode Requirements: The /quiet flag requires Toolbox to already be installed. If it is not installed, the command will error out rather than prompting for installation.
    • Developer Usage: The /localdll flag is primarily for developers. It loads the DLL from the launcher's own directory and automatically implies /noupdate and /noinstall.
    • Disabling Updates: The /noupdate flag only prevents the launcher from updating the DLL at startup. To fully prevent updates and stay on a specific release, you must also change the internal Toolbox setting: Settings → Updater → Update mode to Do not check for updates.
  11. Using GWToolbox++ Safely and Avoiding Bans

    master

    GWToolbox++ automates certain gameplay aspects (e.g., /afk responses, maintaining pcons, hero team loading, bulk salvaging). These automations may violate the ArenaNet Code of Conduct and User Agreement regarding third-party software and automated gameplay.

    Current Status: ArenaNet has indicated that GWToolbox++ from official sources is acceptable to use in PvE areas, provided it is used by itself without other mods.

    Disclaimer: Use this software at your own risk.