Where to Put .lua Files in Dota 2 — path for scripts, configs, addons
SETUP · 3 MIN READ

Where to Put .lua Files in Dota 2

The folder for .lua scripts differs depending on what you are using: Workshop custom maps, the developer addon mode, or third-party software like Umbrella. Let us sort it out in order.

where to put lua dota 2 dota scripts folder addon dota 2 script_addon cfg dota 2 path

Standard Dota 2 path

The base folder of the Steam installation:

C:\Program Files (x86)\Steam\steamapps\common\dota 2 beta\game\dota\

Inside it are subfolders: maps, scripts, cfg. By default there is nothing for the user to write there — Dota 2 only executes Valve-signed files.

Custom Game (Workshop)

If you are developing your own Workshop map, the working directory is:

...\dota 2 beta\game\dota_addons\your_mod\scripts\vscripts\

Files with the .lua extension are executed by the engine when a match loads. They are loaded via require() or automatically by naming convention (e.g. addon_game_mode.lua).

After adding a file, restart Tools (DotaToolGame), otherwise the engine will not pick up new scripts.

Developer addon mode

For testing addon mode without Workshop:

  1. Open Steam → Library → Tools → launch Dota 2 Workshop Tools.
  2. In DotaToolGame create a new addon — the folder will appear in game\dota_addons\.
  3. Load .lua files here. Hot-reload works via the console command script_reload.

For debug integration use VSCode with the Dota Lua extension. Console output via print() in the Tools window.

Umbrella — cloud configs

Third-party software Umbrella works differently. No .lua files in the game folder:

  • All module settings (maphack, scripts, binds) are stored in the cloud on Umbrella's servers.
  • Config loading — through the Loader interface → Cloud → Add By Code.
  • The game folder on disk — empty. The anti-cheat scanner finds no suspicious files.

Ready presets with binds for every hero — on the CFG page. One-click import by code.

i

This is a fundamental difference: classic cheats (such as AHK scripts) place .lua or .cfg files in the game directory — Valve easily detects them through its scanner. Umbrella works via in-memory injection with no trace on disk.

File not found — what to do

  • Check the extension. Windows hides .lua extensions — your file might actually be script.lua.txt. Enable file extension display in Folder Options.
  • Encoding: UTF-8 without BOM. Save with Notepad++ or VSCode specifying UTF-8. A BOM breaks the parser.
  • Write permissions. The Program Files folder requires admin rights. Move the game folder to a user drive or use Tools.
  • Latin-only filename. Non-Latin characters in script names cause issues with the Lua engine.
  • Restart Tools. Not all hot-reloads are instant — sometimes you need to fully exit DotaToolGame.

FAQ

Can you run .lua in a normal (non-addon) Dota 2?

No. The standard Dota 2 client only executes Valve-signed scripts. For custom .lua use Workshop Tools or addon mode.

Where are ability hotkey binds stored?

Inside Dota 2: Settings → Hotkeys. Saved in the Steam cloud, tied to the account. On disk — in encrypted form in userdata\STEAMID\570\local\cfg\.

What is addon_game_mode.lua?

The mandatory entry file for any custom game. It contains mode initialization, event registration, and unit spawning. Without it, Workshop will not accept your map.

Does Umbrella support .lua scripts?

No. All module logic is built into the software core. Custom binds are made through the visual Combo Builder — no coding required.