Scripting in Dota 2 is handled by the VScript virtual machine using the Lua programming language. Lua will be launched at run time when Dota 2 loads your add-on and can manipulate most facets of the game. Scripts can control the events that happen in game modes, game rules, abilities, hero interactions, neutrals , AI, and many more.
The documentation presented here assumes basic knowledge of Lua. If you're new to programming and Lua it's worth spending some time at the official Lua website learning some of the basic concepts. Additional resources are available at the bottom of the page for new users.
- Entity Scripts
- Thinker Functions
- Console Commands
- Dedicated VConsole Log Viewer
- Listening to Game Events
- Script Filters
- Custom Game Events
- Custom Nettables
- Scripting API
- Animation System API
- Built-In Engine Events (warning: many broken)
- Built-In Ability Names
- Built-In Modifier Names
- Built-In Item Names
- Heroes Internal Names
- Built-In Unit Names
- BoundsHullName Size Reference
- Simple trigger that calls Lua
- Data driven item that drops upon death
- Motion Controller Example
- Creating a Tower Example
- Detecting If Player Clicked Inside A Given Area When Using Items or Spells
- Using Bitfields To Adjust Stat Value Bonuses
- Using CreateHTTPRequest
- Official Lua Website
- Programming in Lua - Good resource for learning Lua. If you're new to Lua or programming this is a good reference point to start from.
- Programming In Lua - Online - First edition of the above book is available online for free.
- Sublime Text 2/3 Snippets for all functions