nyuuzyou/wikis huggingface dataset:
Dota 2 Navigation Meshes

=== Building the NavMesh ===
Required Tool: GNVTool 1.0 by Penguinwizzard
This tool converts netpbm formats to valve's GNV format. It also converts GNV to pbm files.
netpbms are 1 bit bimap files. Dota 2 uses white for walkable, and black for not walkable
Usage: 'GNVtool.exe tognv source.pbm target.gnv offsetx offsety'
offsetx and offsety are offets by 64 units (offsetx|y * 64). Your pbm dimensions must be divisible by 8 or the grid gets sheared.
list of software that support pbm files or converts to pbm format
You can view your navmesh in game by doing 'dota_gridnav_show 1'
Category:Dota 2
Dota 2 Scaleform to WebM

sftowebm.exe is a tool that will convert Scaleform encoded WebM files to a standard WebM format which allows them to be played on media players and other tools such as HTML5 video players. Using this tool, third parties can convert the hero portrait Scaleform video files (and more) into a friendly usable WebM format.
You can download the binary from here.
== Usage ==
To use the tool you will need to open up a command prompt window (Windows Key + R) and then point it to the directory containing the sftowebm.exe tool.
:sftowebm.exe
:Convert a webmsf file to webm format
:Usage:
:sftowebm input.webm
You will need to place the Scaleform WebM file in the same directory as the tool and then (for example) run the following command:
:sftowebm.exe npc_dota_hero_abaddon.webm
Upon doing so a second version of the file will be created in the same directory containing the extension ".webm.webm", this is the version that is formatted under the standard WebM format and will be playable on other devices and HTML5 video players.
Category:Dota 2
Dota 2 Tooltip Formatting

[WIP]
List of codes used in formatting tooltips.
Code	Output 	Example Input	Example Output
+ 	Shows a + followed by the value.	+$str 	+ 50 Strength
: 	Shows the value after the colon.	HEALTH BONUS:	HEALTH BONUS: 200
% 	Shows the value followed by a %.	%$mana_regen:	Mana Regeneration: 30%
There are also variables for different value descriptions. Used for localization.
Code 	Output
$health 	Health
$health 	Mana
$armor 	Armor
$damage 	Damage
$str 	Strength
$int 	Intellect
$agi 	Agility
$all 	All Attributes
$attack 	Attack Speed
$hp_regen 	HP Regeneration
$mana_regen 	Mana Regeneration
$move_speed 	Movement Speed
$evasion 	Evasion
$spell_resist 	Spell Resistance
$selected_attribute	Selected Attribute
To create a new key ( like $name ) just add an entry in your localization file
 "dota_ability_variable_name"		"Name"
Category:Dota 2
Dota 2 Workshop Tools/Addon Overview

Category:Dota 2 Workshop Tools
An overview of getting started with creating custom game modes for Dota 2. Custom game modes are also referred to as addons in the documentation.
== Getting Started ==
* Creating Addons
* File Structure
== Publishing ==
* Publishing Addons
== Playing ==
* Playing Addons
== Tools ==
* 
* 
* 
* 
* 
* 
== Development Tips ==
* Simulating Players During Development
Dota 2 Workshop Tools/Addon Overview/Addon Creation

== Creating an Addon ==
Once the tools are installed, launch the Dota 2 Workshop Tools from Steam. It can be found in your Library under Tools.
; Create Empty Addon
* Creates an addon with the desired name and minimum files required in the appropriate directories.
; Create New Addon From Existing Addon
* Creates an addon with the desired name and copies the files from one addon into a new directory. Can be used to make variations of "Holdout Example" for instance.
; Create Desktop Shortcut
* Places a shortcut on your desktop with the appropriate command switches to directly launch the tools with the appropriate addon.
; Set As Default
* Marks an addon as default when launching the Dota 2 Workshop Tools. Default is saved between sessions.
Category:Dota 2 Workshop Tools
Dota 2 Workshop Tools/Addon Overview/File Structure

After an addon has been created two directories with the desired addon name will be created under the content and game directories. Both of these directories are used when developing addons. The Dota 2 Workshop Tools expect these directories to exist and will not function properly outside of these locations.
All of your files should be saved to one of these locations depending on what type of content it is.
Remember to use lowercase only or bad things might happen.
== Content ==
All raw source content should be placed into the /content directory. This includes things like images, maps, and model files. These tend to be files created or modified with various software packages.
;Content File Type Examples
* OBJ
* FBX
* LXO
* TGA
* PSD
* VMAP
* VMAT
;Location
== Game ==
Compiled files that have been generated from source material or files that are read by the game at run time are located in /game. The tools will automatically compile new files it finds in the /content directory and place them in the /game directory.
;Game File Type Examples
* LUA
* VTEX_C
* VPK
* VMAT_C
;Location
== Asset Organization ==
All assets should be organized into sub directories within the addon. Not only is this a good practice to start early but tools expect default locations for particular assets. These should be identical in both the "game" directory and "content" directories.
Included here are common paths for most assets. If unsure, refer to the "dota_imported" directory for examples.
* 
* 
* 
* 
* 
* 
* 
* 
* 
*
Dota 2 Workshop Tools/Addon Overview/Playing Addons

Once an addon has been published to the Steam Workshop it will be available for players to subscribe to by browsing the Custom Games tab of the Steam Workshop.
: 
== Playing Custom Game Modes ==
Players can subscribe to addons either through the Steam Workshop or inside of the Dota 2 client when joining a lobby running a particular addon.
=== Hosting a Custom Game ===
# Locate an addon you wish to play in the Steam Workshop Custom Games tab
# Subscribe to an addon
# Launch Dota 2 and it will download the requested addon
# Click the Play tab and then Custom Games
# Change the Browse By menu option to Subscribed Game Modes and a list of available addons will be displayed
# Left-Click an addon and Create Lobby
# Once the necessary players have joined and are assigned to the right team, click Start Game
=== Joining a Custom Game ===
# Click the Play tab and then Custom Games
# Friend's lobbies will be displayed here by default if they are not, ensure Browse By is set to Friend Lobbies
# Click Join when a lobby is available.
# A Subscribe dialog will come up and will then download the addon
# Once the download is complete, click Join again
# Assign yourself to a team and wait for the host to start the game
=== Starting a Custom Game via the Console ===
This is primarly used for testing addons.
# Open VConsole by hitting located above the Tab key. (Note: The default console key is for new installations.)
# At the console type dota_launch_custom_game my_addon_name my_map_name
# Type in the console jointeam good to connect to the Radiant team or jointeam bad to connect to the Dire team
Dota 2 Workshop Tools/Addon Overview/Simulating Players During Development

== Simulating Players During Development ==
It's often useful to simulate players with bots while on a local system. This allows you to preview your custom UIs (as well as certain aspects of gameplay like kill limits) without having to wrangle testers to help.
NOTE: If you spawn more bots on a team than its max size, the game session will end and you'll be returned to the main menu.
The dota_bot_populate console command will fill in the teams with passive bots up to their player limits:
// Launch overthrow in the 5x2 map
dota_launch_custom_game overthrow desert_duo
// (wait for the team select screen to appear)
// Fill in the rest of the slots with bots
dota_bot_populate
The dota_create_unit command can also manually spawn individual bots at any point.
// Launch overthrow in the 5x2 map
dota_launch_custom_game overthrow desert_duo
// (wait for the team select screen to appear)
// Create 4 heroes on the first 4 teams (You can execute multiple console commands in sequence by putting them on a single line, separated by semicolon)
dota_create_unit meepo radiant; dota_create_unit lina dire; dota_create_unit crystal custom1; dota_create_unit pugna custom2
Category: Dota 2 Workshop Tools
Dota 2 Workshop Tools/Community

Category:Dota 2 Workshop Tools
Dota 2 has an active modding community where you can get help, share your mods, or help document the API.
== Community Sites ==
There are many community sites where you can get additional help or other resources.
* Dota 2 Workshop discussion on Steam
* /r/dota2modding
* moddota
* d2modd.in docs
* PlayDota Forum
* Sublime Package for Lua API
* Sublime Package for KV
* The Hive Workshop - Dota 2
== IRC ==
Another location to talk about Dota 2 modding is on IRC.
* Using IRC
* Using Lebot, the api documentation bot.
Dota 2 Workshop Tools/Community/IRC

IRC is the primary hub for talking about modding dota. If you are already familiar with IRC, you can join us on
: #dota2mods
: irc.gamesurge.net
== IRC Rules ==
# English Only. 
# Be concise with your questions. Know what you are asking and it will probably get answered
# Don't spam
# Use an external service for posting your code, like pastebin or hastebin. Do not post code to the channel.
# Be helpful! If you know the answer to someone's question, answer it.
== Bots ==
There are a few bots in the irc channel. They can be used to assist you.
* lebot by RoyAwesome. Indexes the lua API and maintains the wiki
* Renol by SinZ. Sends memos (offline messages), stored keywords, and api searching
* idler2 by VoiDeD. Reports the status of the Dota 2 servers and when Dota 2 is updated.
Category:Dota 2 Workshop Tools
Dota 2 Workshop Tools/Community/IRC/lebot

== Overview ==
Lebot is RoyAwesome's API bot. It was responsible for maintaining the API page.
Access to modifying the API info is restricted to certain users. Ask RoyAwesome for permission to modify API content.
Lebot can be accessed on 
::::irc.gamesurge.net
::::#dota2modding
::::#dota2api
== Usage ==
Lebot has 3 public functions, all preceded by a .
=== .function ===
 .function searches through the api function database. .f is also an alias of this command.
Usage:
 .function 
Reports back a help text
 .function find [text] 
Searches the API for any function that contains [text] and reports back the function name and API link
 .function [functionName] <Modify|View> [Property] [optional: Data] 
Looks up functionName's Property. Properties are <Code>Class, FunctionDescription, ReturnType, ReturnDescription, Example</code>
 .function add <rawhastebinLink> 
Adds a functionto the Database. The 2nd parameter must be a 'just text' link of a json blob hosted on hastebin.com.
Example function definition:
 {
 "Params": [
 {
 "Name": "groupSpawnTables",
 "Type": "handle",
 "Description": "No Description Set"
 },
 {
 "Name": "bAsync",
 "Type": "bool",
 "Description": "true if running asynchronously"
 },
 {
 "Name": "hCallback",
 "Type": "handle",
 "Description": "No Description Set"
 }
 ],
 "FunctionName": "SpawnEntityGroupFromTable",
 "Class": "Global",
 "FunctionDescription": "Hierarchically spawn an entity group from a set of spawn tables.",
 "ReturnType": "bool",
 "ReturnDescription": "No Description Set",
 "Example": "--some code here",
 "LastUpdate": "2014-08-08T23:31:26.8743406-07:00"
 }
.function <replace> oldFuncName hastebinblob
replaces oldFuncName with a json blob at the hastebin link. See add for the format
=== .class ===
 .class searches through the api function database. 
Usage:
 .class 
Reports back a help text
 .class find [text] 
Searches the API for any class that contains [text] and reports back the class name.
 .class [className] <Modify|View> [Property] [optional: Data] 
Looks up className's Property. Properties are <Code>Description, Accessor, BaseClass</code>
 .class add <rawhastebinLink> 
Adds a class to the Database. The 2nd parameter must be a 'just text' link of a json blob hosted on hastebin.com.
Example class:
 {
 "ClassName": "Global",
 "Description": "Global functions. These can be called without any class",
 "Accessor": "",
 "BaseClass": ""
 }
=== .param ===
 .param modifies or views a parameter as part of a function. 
Usage:
 .param 
Reports back a help text
 .paramlist [functionName] 
Displays the parameters for functionName
 .param[functionName] [paramID] <Modify|View> [Property] [optional: Data] 
Looks up the parameter paramID in functionName. ParamIDs start indexing at 0. 
Properties are Name, Type, Description
Dota 2 Workshop Tools/Custom Animation Scripts

This API allows custom games to use the Valve-authored Dota models while still adding additional custom sequences.
Before a model is loaded (ie. at the beginning of addon_game_mode.lua) you must register a custom animation script:
RegisterCustomAnimationScriptForModel( "models/heroes/medusa/medusa.vmdl", "animation/heroes/medusa/medusa_custom.lua" )
Important Note:The custom script should only be additions you want to make to the original Valve model (ie. don’t include the contents of old Valve .lua animation scripts, only your new sequences.)
An example of such a script is:
-- animation/heroes/medusa/medusa_custom.lua - Add a custom ATTACK2 sequence for Medusa's model
model:CreateSequence(
 {
 name = "attack_q",
 sequences = {
 { "abil1" }
 },
 activities = {
 { name = "ACT_DOTA_ATTACK2", weight = 1 }
 }
 }
)
Category: Dota 2 Workshop Tools
Dota 2 Workshop Tools/Custom Game Events

== Custom Game Events ==
CustomGameEventManager is a new system designed to be a more powerful and easier to use version of the game events specified in the 'custom_events.txt' file.
Using this new system, you can send events from server-to-client and client-to-server. You do not have to pre-register your event or the type of data it uses. Lua tables on the server will automatically be cross-converted to and from JS objects on the client.
== Server-To-Client Example ==
=== Server Lua ===
The server can send custom game events to all players, a specific team, or an individual player:
local event_data =
{
 key1 = "value2",
 key2 = "value2",
}
CustomGameEventManager:Send_ServerToAllClients( "my_event_name", event_data )
CustomGameEventManager:Send_ServerToTeam( team_number, "my_event_name", event_data )
CustomGameEventManager:Send_ServerToPlayer( player_entity, "my_event_name", event_data )
=== Client Javascript ===
In JS you subscribe to custom game events the same way you subscribe to normal game events:
function OnMyEvent( event_data )
{
	$.Msg( "OnMyEvent: ", event_data );
}
GameEvents.Subscribe( "my_event_name", OnMyEvent);
== Client-To-Server Example ==
=== Client Javascript ===
Use SendCustomGameEventToServer on the client to send a message to the server:
GameEvents.SendCustomGameEventToServer( "my_event_name", { "key1" : "value1", "key2" : "value2" } );
=== Server Lua ===
To listen for a game event on the server, use CustomGameEventManager:RegisterListener. The callback function will be passed the event data, and the entity index of the source of the message (player entity for the client that sent the event.)
function OnMyEvent( eventSourceIndex, args )
	print( "My event: ( " .. eventSourceIndex .. ", " .. args['key2'] .. " )" )
end
CustomGameEventManager:RegisterListener( "my_event_name", OnMyEvent ) 
Category:Dota 2 Workshop Tools
Dota 2 Workshop Tools/Custom Nettables

Custom Nettables are a powerful new tool to communicate data from the game server to clients. Unlike game events, nettables are persistent stores that can be queried at any time and will be recreated if a player disconnects and reconnects.
== Example ==
=== Table Registration ===
You must list top-level table names in game/ADDON_NAME/scripts/custom_net_tables.txt. (If the file doesn't exist in your addon you can create it.) It uses KeyValues3 syntax described here: Dota 2 Workshop Tools/KeyValues3
<!-- kv3 encoding:text:version{e21c7f3c-8a33-41c5-9977-a76d3a32aa0d} format:generic:version{7412167c-06e9-4698-aff2-e63eb59037e7} -->
 {
 custom_net_tables =
 [
 "example_nettable_1",
 "example_nettable_2"
 ]
}
=== Writing a Nettable on the Server (Lua) ===
Server code can set table values using this function: CustomNetTables:SetTableValue( string table_name, string key, table value )
A table can have any number of string keys, each of which corresponds to a Lua table value.
CustomNetTables:SetTableValue( "example_nettable_1", "key_1", {} )
CustomNetTables:SetTableValue( "example_nettable_1", "key_2", { value = "hello" } )
CustomNetTables:SetTableValue( "example_nettable_2", "key_1", { a = 1, b = 2 } )
=== Reading a Nettable on a Client (Javascript) ===
When a network table changes on the server, it will be replicated to all clients. Javascript can query the current values in a table, and subscribe to be notified when a table changes.
//--------------------------------------------------------------------------------------------------
// GetAllTableValues returns the entire nettable as a Javascript object
//--------------------------------------------------------------------------------------------------
$.Msg( CustomNetTables.GetAllTableValues( "example_nettable_1" ) );
//--------------------------------------------------------------------------------------------------
// GetTableValue returns the value associated with a particular key
//--------------------------------------------------------------------------------------------------
$.Msg( CustomNetTables.GetTableValue( "example_nettable_2", "key_1" ) );
//--------------------------------------------------------------------------------------------------
// SubscribeNetTableListener allows you to be notified when any value in a table changes
//--------------------------------------------------------------------------------------------------
function OnNettable2Changed( table_name, key, data )
{
	$.Msg( "Table ", table_name, " changed: '", key, "' = ", data );
}
CustomNetTables.SubscribeNetTableListener( "example_nettable_2", OnNettable2Changed );
Category:Dota 2 Workshop Tools Category: Panorama
Dota 2 Workshop Tools/Custom UI

Custom UI is created by using ActionScript with Adobe Flash to create panels, overlays, and buttons.
=== Getting Started ===
* Setting Up Flash
=== Reference ===
* Actionscript 3 Reference
* Dota 2 Actionscript Functions
=== Tutorials ===
* Replacing MovieClips with Valve Components
* Utilise error_msg panel to show your own error
=== Examples ===
* SpellShop UI
* Custom Error (uses dota error_msg panel)
* PipNumbers (changes ability level indicators to numbers)
* Custom Timer (Adds a WC3 like timer panel)
Category:Dota 2 Workshop Tools
Dota 2 Workshop Tools/Dota Camera

== Endgame Camera ==
At the end of the game, all player views can be interpolated to a shared ending camera (In Dota, this is to show the Ancient destruction.)
To get this behavior, add an 'prop_dynamic' entity named '@end_camera' to your map. (The '@' prefix prevents it from being renamed if it's in a prefab.)
If your model has an attachment point called "camera_attach" the camera will follow it, otherwise it will follow the position and orientation of the camera entity.
To more easily position your camera, consider the Hammer menu commands View > Align Active Camera to Selection (moves the Hammer camera to the selection) and View > Align Selection to Active Camera (moves the selected object to the Hammer camera). Note that the exact field of view may be different in Hammer from game, and different between players running with different video settings.
Category:Dota 2 Workshop Tools
Dota 2 Workshop Tools/Dota Workshop Tools FAQ

;I'm working on cosmetic items for Dota 2. Can I use these tools?
:Not at this time. With the overhaul to the content system only custom game modes are currently supported. Content developers wishing to create cosmetic items for Dota 2 should visit the Dota 2 Workshop website. The method to create cosmetic items has not changed with this update.
;How are custom game modes distributed?
:Custom game modes are distributed via Steam's Dota 2 Workshop page. After authoring a custom game mode it can then be uploaded through the Dota 2 client. Once the game mode has been uploaded it will become available for download when subscribed to.
;Why do I subscribe to custom game modes?
:Subscribing to a custom game mode will not only download the game mode for the first time it will always grab the latest updates to that addon. This allows author's to keep their games up to date and all players on the same version.
;I've subscribed to a game mode, how do I play?
:Please see the playing game modes section of the wiki for more details.
;Some tools appear to be missing. Where's the Sound Editor?
:Not all the tools are available in this beta release. As we continue to work on the tools more of them will be made available to everyone to utilize in creating their custom game modes.
;Something is broken, crashes, or doesn't appear to be working as intended. Should I submit a bug?
:Yes! Please visit the GitHub issues page or the Workshop Discussion pages.
;My custom game mode I've been developing no longer runs with the most recent update, why?
:The tools are in an early state of development and there may be a need to update a system, such as file formats for example, requiring custom game modes to be updated and resubmitted to the Workshop. This is usually a rare occurrence.
;I need help, is there anyone out there in the community also working on custom game modes?
: Visit the GitHub issues to ask questions and report bugs.
: #dota2mods on irc.gamesurge.net is a community run channel of Dota 2 modders. #dota2modhelpdesk is also an active channel to ask questions.
Dota 2 Workshop Tools/Installing and Launching Tools

The Dota 2 Workshop Tools are an optional free download included in Dota 2 and must be installed to create workshop items or addons.
== Installation ==
* Right-click on Dota 2 in Steam and select View Downloadable Content.
* Check the box in the Install column next to Dota 2 Workshop Tools DLC.
* Click Close. The required content will begin downloading.
== Launching the Tools ==
In Steam, play Dota 2 and select Launch Dota 2 - Tools.
Category:Dota 2 Workshop Tools
Dota 2 Workshop Tools/Items Overview

Category:Dota 2 Workshop Tools
An overview of how to create items for inclusion in the Dota store.
See also: Dota 2 Workshop Info (NOTE: Some of the information on this page is Source1-specific and will be updated soon.)
== Getting Started ==
* Install and launch the tools
* Select "Launch Item Tools"
* Select "Create New Item" to select your files to preview and upload, or select an existing workshop entry from the list to update it.
Dota 2 Workshop Tools/Level Design

Documentation for creating custom maps with the Dota 2 Workshop Tools using the Hammer level editor.
== Introduction to Hammer ==
Hammer is the editor used to create maps for Dota 2. This introductory tutorial is focused on creating a basic map using the Tile Editor within Hammer. This is a good place to start if new to Hammer or the Dota 2 Workshop Tools.
* Getting Started
* Tile Editor Basics: Your First Dota Map
* Compile and Run
== Hammer Documentation ==
Additional Hammer feature documentation. This includes some more advanced concepts such as geometry creation.
* Navigation
* Hammer Overview
* Basic Construction
* Prefabs and Instances
* Mesh Entities
* Tile Editor
* New Tilesets
* Terrain Blending
* World Layers
* Creating A Dota-Style Map
== Dota 2 Concepts ==
Documentation on Dota 2 specific content.
* Grid Navigation Mesh
* Fog of War
* Minimap
* Common Developer Commands
* Lighting
* Performance
* Blocking Heroes' Routes Tutorial
== Dota 2 Example Maps ==
* dota_addons/holdout_example/holdout_example.vmap
* dota_addons/holdout_example/basic.vmap
* dota_addons/dota_pvp/dota_pvp.vmap
* dota_addons/dota_pvp/dota_pvp_tiled.vmap
* dota_addons/dota_pvp/simple_dota_map_example.vmap
Category:Dota 2 Workshop Tools