nyuuzyou/wikis huggingface dataset:
Zh/Detailing metal walls

__NOTOC__
本指南将教您如何详图化中的金属墙。我们有一组用于创建墙的特定规则。请注意，金属墙是方块，而不是面板。不要这样对待他们。
==创建==
===开始===
从金属墙壁或天花板开始，使用metalwall048b 贴图创建它们。
地面则使用metal_modular_floor001。
===常规===
在一般区域，金属墙从底部的小块开始，顶部则是大块。
从64个单位高的小金属墙开始。
下一组墙应高 192 个单位并使用metalwall048b_med。但是，如果你的房间是128个单位高的走廊或墙壁/正上方是混凝土，此部分墙体应高64个单位。
最后，如果你的墙足够大，创建一个 128 个单位高的墙，使用metalwall048b_lrg贴图。如果你的墙足够高。使用Face Edit Sheet将两者都设置为0.5缩放。如果你的墙的长和高为 256 个单位，则只需略微调整即可。
一般天花板与墙壁的图案一致。有时，选择哪面墙并不重要。但对于长而高的区域，例如testchmb_a_06的最后一个房间，请选择玩家需要前往的区域的墙。
===小走廊===
在 Portal 中，只有128个单位的小型走廊没有一致的模式。它们要么是完全小的块，要么使用general。
===垂直区域===
如图（testchmb_a_14），有一个带有独特金属墙的大坑。根据坑的大小，使用metalwall048b_med和位于中心的metalwall048b_lrg
===关于块状===
请记住，金属墙是方块，这意味着在制作实验室时，并非所有方块都能完美放置。
你需要将一些方块稍微从大体中推出来，也就是将其单独切割分离，然后稍微向实验室内移动，从而做出凹凸不平的质感。
===照明===
使用Clipping Tool在方块周围切割。将画笔向后（嵌墙）/上（天花板）移动至少32个单位，然后使用灯光纹理（例如white001）对其进行处理。
在整个 Portal 中看到的最常见的浅色纹理是white001，所以建议你在所有灯光上都使用这个纹理。
如果你想做一个小灯，请确保它被正确的围住。
==例外==
* 可以添加一条小小的金属块线来修补可能导致泄漏的地图部分。
* 在非常少的情况下，可以稍微细化一面墙。例如，偶尔将大型金属墙换成中型是可以的。
==重要提醒==
* metalwall048b，即小金属块纹理永远不会出现在天花板上，除非它在小走廊中或需要密封天花板/墙壁。
* metalwall048b_lrg almost always is never too pushed in or too pushed out.
* 天花板上的金属块几乎不会被推入或推出。
* 如果你的需要有金属包围，请始终用metalwall048b。唯一的例外是testchmb_a_09
==参考==
*
Category:Portal
Category:Tutorials
Zh/Developer console

控制台 是一个用来配置和修改游戏的命令行界面工具. 事实上任何东西都可以通过控制台来修改, 并且有许多都是 有必要的.
== 启用控制台 ==
控制台在默认情况下是无法启动的.激活它，需要开启游戏并在 设置 > 键盘 > 高级选项. 这将会出现两个选项, 其中一个就是 "启用控制台". 一旦激活, 就可以通过 上面的那个键, 也就是人民群众喜闻乐见的 "反单引号." 
== 提交 ==
底部灰色的输入框是用来输入命令的. 它支持两种输入格式: 命令和变量. 命令是一种的代码, 但是特殊变量指令 ("cvars") 需要赋值才能被控制台接受. 当你设置一个特殊变量指令时你应该这样做 :
 mat_wireframe 1
当你输入结束时,敲击或者来提交. 之后你将会在控制台窗口的最前端看到控制台返回你的信息 ].
一些小提示:
* 使用空格键来分隔多个值. 如果一个值包含了字符, 请用双引号来区分这些字符. (例如say "Hello everyone on the server".)
* 控制台有时会自动识别出你将要输入的命令(在输入框的下方弹出你将可能输入的指令). 通过/键来翻阅这些指令并通过 来选择这些指令.
* 只有"archived" 这个指令会在游戏结束后进行. 使用如果你想要在游戏开始自动运行一些指令.
* 一些命令是服务器指令, 一些是客户端命令.在多人游戏中，你只能使用客户端命令.
* 有许多命令都带有前缀.其中最常见的就是cl ("客户端命令")和sv ("服务器命令").在服务器上你有权限执行客户端命令（如果你不是服主），但你没有权利执行服务器命令，在服务器上只有服主能够执行服务器命令
== 实用指令 ==
; find <关键字>
: 这个经常使用到的指令find是用来搜索带关键字的指令的.十分有用
; find_ent <关键字>
: 和find命令一样，只不过这个是用来搜索带有关键字的地图.
; help <指令名>
: 简单的对所输入的指令名的功能进行介绍.
;sv_cheats <>
:有许多特殊变量指令将会影响游戏性, 在多人游戏中这些指令将被视为作弊行为. 提交sv_cheats 1指令用来接触这些指令的限制. 
;developer <0-2>
:开发者模式将会提供更多的控制台命令,允许作弊和让控制台自动启动, 并且使得指令变得更加的有用和不受限制. 如果是使用2模式,最后输出的几行将会显示在屏幕上.
;con_log <文件名>
;condump
:如果你想把控制台显示的内容保存成一个文件以便于以后使用，那么请使用这个命令吧. con_log是用来读取由condump保存的命令文件 
（中文译者注）
== 查看更多 ==
* - for programmers
* - partial list of console commands and variables
* - list of written articles for console commands
* - list of written articles for console variables
Zh/Dimensions/Left 4 Dead

本文由大康翻译。最后更新于2024年8月26日。
----
 以下数字是的已知尺寸(Dimension)。任何缺失的尺寸
===尺寸===
针对玩家：
 玩家站立高度	= 71 单位 (为了安全通过，间隙必须大于72个单位) (译者注：Hammer 单位)
 玩家蹲伏高度	= 56 单位
 玩家宽度	= 32 单位 (为了安全通过，间隙必须大于73个单位)
 玩家跳跃高度	= 56 单位
 __________________________________
 
 站立时眼睛高度	= 62 单位
 蹲伏时眼睛高度	= 44 单位
其他的：
 最大可直接越过的障碍高度= 18 单位
 普通感染者最大跳跃高度	= 180 单位 (仅当导航网格连接两个区域时才适用于普通感染者。特殊感染者需要特定于感染者的梯子。)
 小门			= 48x104 单位
 大门			= 56x104 单位
 正常走廊高度		= 128 单位
 正常走廊宽度		= 64 单位
求生之路 2 包含 的dev_measure纹理，其中一些纹理不适用于求生之路 2。你可以从此创意工坊物品中获得专门给求生之路 2 的测量值。
Zh/Displacement

表层位移是被转化成一系列由网格构成的多边形表面，能够被自由变形和雕刻成多种形状。表层位移常被用来创造各种地形：山脉、峡谷、沟道、斜坡等等，又称地形位移。
== 优点 ==
* 它们是批量渲染的，使得其很「」（运行时能极快处理）：每个多边形表面实际上要比标准固体廉价许多！
* 它们可以通过使用几何体绘制工具创造出多变的形状，完全超越普通固体所能创造的。
* 每个顶点都能赋予alpha通道值，这样可以在置换表层上混合两种纹理。可以创造出诸如沙石混合的效果来。
* 能自动附着上（细化地图表现的实体，例如草丛）。
== 局限 ==
* 必须是建立在四边形之上的。
* 必须是静态的，无法附属于任何实体。无法把置换表层设为。
* 无法封住地图中的。
* 在起源2013中，一张地图的表层位移数量上限为2048个。的上限为4096个。的上限为32768个。的上限为16384个。
* 比较大的表层位移无法使用很小的lightmap。
* 通常的编译器无法压缩4阶的表层位移。
== 其他特征 ==
* 表层位移有三个等级的分辨率，但是多边形的数量最终还是取决于表层位移的尺寸。需要更精细的表面时请进行剪切()。
* 不可见的背面不会阻挡光线。
* 一个固体所能具有的表层位移数量等于它的面数（固体本身不会被编译）。
== 构造 ==
表层位移是通过使用固体笔刷的基本面来创建的。一旦创建了表层位移的面，使用了这个基本面的固体表面便不会被编译器编译。而且，如果一个固体包含了任何表层位移面，所有其他未被置换的表面也不会被编译器编译。换句话说，一旦你将某个固体转化成了包含表层位移的固体，它就不再是一个固体物件，并且在运行地图时会被移除。
以下图片描述了这个特征：:
== 基本的表层位移创建 ==
以下是如何创建和绘制表层位移表面：
# 使用绘制一个固体作为创建表层位移的基础。
# 点击纹理应用工具（Texture Application Tool）打开Face Edit对话框,选择 标签页。
# 在3D视角,点击笔刷表面以选择面。使用CTRL+单击将面加入或移出选择范围。
# 在Displacement标签页中点击Create。输入一个2到4之间的值，选定表层位移的密度，点击 OK。
# 在Displacement标签页中选择Paint Geometry工具。Paint Geometry将会打开。
# 在3D视角, 左键单击一个表面以提升其顶点高度，右键降低。在Paint Geometry面板中使用Radius滑动条控制绘制范围尺寸。
参见绘制几何体获取更多有关表层位移的信息。
== 表层位移选项 ==
 
使用表层位移遮罩（Displacement Mask）按钮（在工具栏中）开关显示固体中非表层位移的面。
你可以在每个固体中绘制多于一个的表层位移面，如左图所示。只要一个面拥有四条棱，你便可以在上面创建一个表层位移面。 
参见了解你所有能在表层位移面上绘制的几何形状的描述。
== 缝合表层位移 ==
缝合（Sew）按钮（在Displacement标签页中）可以被使用来连接两个或更多选择的表层位移面的边缘。你可以在以下情况使用缝合功能：
* 任意两个表层位移的基本面享有一条端点重合的棱（例1）。
* 一个表层位移和非位移表层的基本面享有一条端点重合的棱（例3）。
* 一个表层位移A和另一表层位移B享有一条棱，当一条棱正好是另一条棱长的一半。（称为T型接合）（例4）。
你可以缝合具有不同分辨率设置的表层位移——高分辨率的表层位移的顶点将会适应低分辨率（例2）。
以下是缝合能被使用的例子:
 
 
如果表层位移的基本面没有共享一条棱表面将不能被缝合。
如果两个面没有共享同一「高度标识（Elev）」属性，表面也不能被缝合（在Displacement标签页下的Power和Scale之间）。
== 细分表层位移 ==
== 其他修改表层位移的方法 ==
除了表层位移绘制工具外，一些标准的固体操作工具也能用于表层位移。
=== 变换 ===
File:Hammer_select.png‎ 
表层位移能被自由移动、缩放、旋转、修剪（使用），如同标准的固体。对基本面的变换对表层位移同样有效。
=== 切割 ===
 
切割工具（）也能用来切割置换表层。可以用来剔除不需要的表层位移部分，或将一个表面一分为二而不改变其形状。
下面例子展示了切割工具如何修剪一个表层位移：
=== 顶点编辑（技巧） ===
 
顶点工具（）同样可以用来修改表层位移。顶点编辑能有效将表层位移的角与棱结合（参见缝合），或者用来提高整个地形的最大高度而不用通过在置换表层中手动绘制山脉或提升表面。
当使用顶点编辑工具编辑表层位移时有一些重要的限制：
* 顶点编辑只对基本面有效，而不是置换表层本身。
* 不允许删除或添加顶点，这样会破坏附着于基本面上的表层位移。
* 顶点编辑结束后必须是平坦的，构造非法表面会破坏附着的表层位移。
下面的例子展示了顶点编辑工具如何被使用来提高表层位移的海拔：
=== 在表层位移上挖洞 ===
有时候因为各种原因需要在表层位移上挖洞或沟，参见获取更多如何在置换表层几何体上挖洞的信息。
=== 混合的表层位移材质（阿尔法通道绘制） ===
绘制阿尔法（Paint Alpha）工具允许你在置换表层通过绘制阿尔法通道混合两种不同的纹理。阿尔法通道包含了两种纹理在表面上所分配的可见程度。这使得能创造纹理间的过渡效果，例如草地和尘土、沙子和石子，等等。要使用阿尔法通道材质混合，必须使用为实现此目的而特定的混合材质，只有这些材质能被用于混合。如果使用一种标准材质，绘制阿尔法工具将没有可视效果。
要在表层位移添加添加混合材质并绘制阿尔法通道数据以混合纹理：
# 选择Texture Application Tool打开对话框。
# 在3D视角中左键单击你想要混合材质的表层位移。
# 在Face Edit对话框的Material标签页下点击Browse按钮。
# 当出现时, 在底部的过滤器（filter）中输入 blend。
# 双击以选择某一个混合材质并关闭Texture Browser。
# 在Face Edit对话框中点击Apply按钮将材质应用到选择的表层位移。
# 在Face Edit对话框中点击标签页。
# 在Displacement标签页中点击Paint Alpha按钮打开绘制阿尔法（Paint Alpha）工具.
# 在Value滑动条旁边的框中输入一个30到100之间的值。确保Effect下的Raise/Lower被选中。数值越小阿尔法通道数据改变越慢，越大则越快。
# 在3D视角中左键点击某个置换表层的顶点以添加阿尔法通道数据。右键点击移除。
参见Paint Alpha获取更多有关阿尔法绘制工具的信息。
== 快捷键 ==
; Alt+鼠标右键
: 当几何体轴心设定为面法线时，将轴心设定为你所点击面的垂直方向。
; Shift
: 忽略距离的设置，自由拖动截面的海拔高度。
; 鼠标右键
: 反转几何体绘制工具的方向。
== 另见 ==
* 
* 
== 外部链接 ==
* Tunnels - 使用地形位移挖隧道。
* Youme's guide to displacement cliffs
* Practical Cliffs (interlopers.net)
* Smooth Corners - 用地形位移构造光滑的圆角。
* Destroyed Walls - 用地形位移构造毁坏的墙。
* Displacement series (sdknuts) 柱子、拐角、立方体等基本要素。
Zh/Dota 2 Workshop Tools/Addon Overview

Category:Dota 2 Workshop Tools Category:AMHC 汉化
这是一篇关于创建Dota2自定义游戏模式的入门指南。自定义游戏模式也被简称为地图(addons)。
== 入门指南 ==
* 
* 
== 相关工具 ==
* 
* 
* 
* 
* 
* 
== 发布与订阅 ==
* 
*
Zh/Dota 2 Workshop Tools/Addon Overview/Addon Creation

== 创建一个自定义游戏模式 ==
在工具安装之后，你可以从steam中启动 Dota 2 Workshop Tools 。你可以在“库”下的“工具”列表中找到它。
; 创建空的自定义地图 (Create Empty Addon)
* 在相应的目录中，用你想用的名字和所需的最小文件创建一个自定义地图。
; 从现有的自定义地图创建新的自定义地图 (Create New Addon From Existing Addon)
* 用你想用的名字创建一个自定义地图，并且把原自定义地图下的所有文件复制到新目录中。例如可以借用 "Holdout Example" 中的内容进行代替。
; 创建桌面快捷方式 (Create Desktop Shortcut)
* 在有相应自定义地图时可以用相应的命令开关直接启动工具，并在桌面创建一个快捷方式。
; 设为默认 (Set As Default)
* 在启动Dota 2 Workshop Tools时设置一个自定义地图为默认，默认的自定义地图可以在各工程之间保存调用。
Zh/Dota 2 Workshop Tools/Addon Overview/File Structure

创建完成自定义地图之后，在content和game文件夹下将会创建两个以你的Addon命名的文件夹，Dota 2 Workshop Tools 在 Addon 制作的过程中调用的是这两个目录。需要调用这些目录并且在这些目录之外不会起作用。
根据你文件的不同类型，你的文件会保存在不同的位置下面。
== Content文件夹 ==
所有内容的源文件都放在 /content 目录下，这些源文件包括图片，地图和模型文件。这都是需要创建或者修改的文件。
;Content内文件类型示例：
* OBJ
* FBX
* LXO
* TGA
* PSD
* VMAP
* VMAT
;Content文件夹路径
\\Steam\steamapps\common\dota2\dota_ugc\content\dota_addons\your_addon_here\
;起源2引擎的Content文件路径已经改为如下：
\\Steam\steamapps\common\dota2\content\dota_addons\your_addon_here\
== Game文件夹 ==
由源材质生成的文件、游戏运行时的读取文件都会位于 /game文件夹下。 工具会自动查找 /content 文件夹下面的新文件进行编译，然后放在 /game 目录下。
;Game内文件类型示例
* LUA
* VTEX_C
* VPK
* VMAT_C
;路径
\\Steam\steamapps\common\dota2\dota_ugc\game\dota_addons\your_addon_here\
;起源2引擎的路径已经改为如下：
\\Steam\steamapps\common\dota2\game\dota_addons\your_addon_here\
== 游戏资源管理 ==
地图内所有游戏资源应按不同子目录进行分类管理。这么做是因为软件在加载特定游戏资源时需要前往默认地址进行访问，因此每个地图作者都应尽早养成这个习惯。所以文件应该在 "game" 和 "content" 同一目录下。
这里包括了大部分游戏资源的共同路径。如果不确定，请参阅“dota_imported”目录中的示例。
* your_addon_here\maps(地图)
* your_addon_here\materials(材质)
* your_addon_here\materials\models(模型材质)
* your_addon_here\models(模型)
* your_addon_here\particles(粒子特效)
* your_addon_here\resource(资源)
* your_addon_here\scripts(脚本)
* your_addon_here\scripts\vscripts(Lua脚本)
* your_addon_here\soundevents(声音事件)
* your_addon_here\sounds(声音)
Category:Dota 2 Workshop Tools
Category:AMHC 汉化
Zh/Dota 2 Workshop Tools/Addon Overview/Playing Addons

一旦地图在 Steam Workshop 上发布，那么玩家就可以在 自定义游戏(Custom Games) 页面进行订阅。
:
== 运行自定义地图 ==
玩家可以在Steam Workshop订阅地图，或者Dota2客户端里进入一个运行自定义游戏的房间下载地图。
=== 建立自定义游戏 ===
# 在 Steam Workshop Custom Games 页面找到一个你想玩的地图。
# 订阅（Subscribe） 这个地图。
# 启动 Dota 2 就会自动下载想要的地图了。
# 点击 游戏（Play） 界面然后选中 自定义地图（Custom Games）
# 在 浏览依据（Browse By） 切换到 已订阅的游戏模式（Subscribed Game Modes） ，在这就会列出可用的地图。
# 单击一张地图然后 创建房间（Create Lobby）
# 一旦参与玩家都进入到地图，并且分好队伍，那就点击 开始游戏（Start Game）
=== 加入自定义游戏 ===
# 点击 游戏（Play） 界面然后选中 自定义地图（Custom Games）
# 好友的房间默认会在这里显示出来，如果没有的话，请在 浏览依据（Browse By） 上切换到 好友房间（Friend Lobbies）列表。
# 当房间建好之后，点击 加入（Join）
# 弹出一个订阅（Subscribe） 窗口，便会开始下载地图
# 一旦下载完成，再次点击 加入（Join） 
# 把你自己分到一个队伍里去，然后等待房主开始游戏。
=== 通过控制台开始自定义游戏 ===
# 按下tab键上方的 打开VConsole
# 输入 dota_launch_custom_game my_addon_name my_map_name
Category:AMHC 汉化
Zh/Dota 2 Workshop Tools/Addon Overview/Publishing Addons

自定义地图可以通过Dota2客户端中的顶部Store按钮中的WorkShop（创意工坊）发布。所有信息填完后，文件将会上传至Steam创意工坊(Steam WorkShop)。
:
Category:Dota 2 Workshop Tools
Category:AMHC 汉化
Zh/Dota 2 Workshop Tools/Asset Browser

资源管理器（Asset Browser）作为 Dota 2 Workshop Tools 中的“枢纽站”，能启动所有的可用工具。比如，包括 Hammer，材质编辑器，模型编辑器 和 特效编辑器 。默认情况下，双击 资源管理器 中的游戏资源，就能启动其相关联的编辑器。
__TOC__
* 在游戏资源管理器顶部的图标可启动任何可用的工具。
* 游戏资源管理器是用来浏览、 筛选和编辑内容的一个自定义的插件。
== 预览窗格 ==
显示已选中的游戏资源视图。游戏资源视图还包括关于游戏资源依赖项（如模型和其相关的材料信息）。任何给定的游戏资源依赖项都会在游戏资源视图中显示。
== 资源列表窗格 ==
=== 名称过滤器 (Name Filter) ===
输入要查找的游戏资源名称或者输入所有已加载游戏资源的一部分（关键字）。
=== 网格/列表 切换 (Grid/List Toggle) ===
任何游戏资源的网格视图和列表视图之间能任意切换。这个视图通过筛选Mods或者资源类型就可以进行设置。
=== 模组 (Mods) ===
这会决定采用什么Mod目录进行加载。通常，模组会包含dota2所有的基础内容，但不包括那些已加载的自定义地图。
=== 资源类型 (Asset Types) ===
按特定的类型或按所有类型显示游戏资源。
=== 过滤器 (Filter) ===
设置简单的规则，进行较为复杂的资源过滤。
== 工作组件 (Working Sets) ==
工作组件可以将一些常用的内容整合成一个组，便于召看。在默认情况下，这个功能可以快速定位到资源组上，比如，当你在找一棵树的时候，你可以在 /models/props_tree下找到所有的树。
工作组件也可以由用户自己来定义，比如创建一个新的组别，然后往里面添加各种资源。当需要把不同资源整合到一起时，这个功能会帮上大忙。
Category:Dota 2 Workshop Tools
Category:AMHC 汉化
Zh/Dota 2 Workshop Tools/Community

Category:Dota 2 Workshop Tools
Dota 2 有一个活跃的模组社区，您可以在其中获得帮助、分享模组或帮助记录 API。
== 吐槽论坛 ==
 欢迎留言讨论做图问题
== vscode 代码编辑器插件支持 == 
== TypeScripts项目模版 ==
使用强类型语言需要你有更好的代码规范和写声明的觉悟。
== 社群网站 ==
有许多社区站点，您可以在其中获得更多帮助或其他资源。
=== 国内作者搭建 ===
* - AMHC - 阿哈利姆魔法隐修议会
* 
* 
=== 国际作者搭建 ===
* 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 ==
另一个全英文交流。谈论 Dota 2 游廊的地方是在 IRC 上。
* 
* , the api documentation bot.
Zh/Dota 2 Workshop Tools/Custom Nettables

自定义网表（Nettable）是一个强大的游戏服务器与客户端之间的数据通讯工具。与游戏时间不同，网表将持续进行储存，并可以随时查询，玩家断开并重连时将重新创建。
== 示例 ==
=== 注册表格 ===
你必须将顶级表格的名字列在game/ADDON_NAME/scripts/custom_net_tables.txt。（如果此文件不在您的地图中您可以自行创建。）它使用这里所描述的：
<!-- 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"
 ]
}
=== 在服务器中写入网表（Lua） ===
服务器代码可以使用以下函数设置表格的值: CustomNetTables:SetTableValue( string table_name, string key, table value )
一个表格可以含有任意个字符串关键字，每一个都对应着一个Lua表格值。
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 } );
=== 读取客户端的网表（Javascript） ===
当服务器上的网表数据发生变化时，他将被复制到各个客户端。Javascript可以查表格中的当前值，然后订阅以获取表格变化的通知。
//--------------------------------------------------------------------------------------------------
// 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
Zh/Dota 2 Workshop Tools/Custom UI

Category:Dota 2 创意工坊工具集 Category:AMHC 汉化
自定义用户界面是使用ActionScript做的。
== 入门指南 ==
* 
== 参考 ==
* ActionScript 3的参考
* 
== 教程 ==
* 引擎内置UI组件
* 
== 范例 ==
* 法术商店 UI
* 自定义错误信息 (使用 dota error_msg 面板)
* PipNumbers (根据熟练度改变技能等级)
Zh/Dota 2 Workshop Tools/Custom UI/Custom Error Tutorial

示例视频
这是一个教你如何定义自己的自定义错误提示 ( GitHub上的完整的源代码)的教程，虽然不长，但是能够让你明白如何扩展VALVE的UI面板。
首先，我们需要使用Flash编辑器（例如Adobe Flash CS5）来创建一个名为 CustomError.fla的文件，同时，在同一位置创建一个CustomError.as文件，如果你并不明白如何完成这个工作，请先查看Flash的必要设置这个章节的内容，当然，也要在项目中导入VALVE的Globals类。
在完成了创建和导入的工作后，CustomError.as文件应该是这样：
package {
	
	import flash.display.MovieClip;//导入Adobe的Flash类
	
	import ValveLib.Globals;//导入VALVE的Globals类
				
	public class CustomError extends MovieClip {
		//以下这三个变量，为引擎所必须
		public var gameAPI:Object;
		public var globals:Object;
		public var elementName:String;
		//类的构造函数，在DOTA2的HUD中，我们一般使用onLoaded函数而不是构造函数来初始化HUD
		public function CustomError() {
		}
		//onLoaded函数，将会在引擎载入这个HUD的时候执行。
		public function onLoaded() : void {			
			//让UI可见
			visible = true;
		}
	}
	
}
之后，我们需要在 custom_events.txt 文件中创建一个自定义事件，这个文件位于 "../game/dota_addons/<addon_name>/scripts/"
"CustomEvents"
{
	
	"custom_error_show"//显示自定义错误信息的事件
	{
		"player_ID"		"short"//事件数据变量名 - 玩家ID
		"_error"		"string"//事件数据变量名 - 错误信息
	}
	
}
"custom_error_show" 是事件的名字，player_ID 和 _error 是事件的数据变量，我们之后将会在Lua代码中传递这两个变量，short 和 string 代表这两个数据的类型。
在Lua中触发这个事件之前，我们先到CustomError.as中监听这个事件，这个过程很简单，我们在 onLoaded() 函数中添加如下代码：
public function onLoaded() : void {			
	//让UI可见
	visible = true;
	
	//添加事件监听器
	this.gameAPI.SubscribeToGameEvent("custom_error_show", this.showError);			
}
"custom_error_show" 就是我们所监听的事件，this.ShowError代表HUD在监听到这个事件后将会调用的函数，所以我们现在来创建这个函数：
public function showError( args:Object ){
	//获取这个HUD的本地玩家ID
	var pID:int = this.globals.Players.GetLocalPlayer();
	// 如果玩家ID和触发这个事件的玩家ID一致，那么就在HUD上显示 _error 的内容。
	if( pID == args.player_ID ) {
		this.globals.Loader_error_msg.movieClip.setErrorMsg(args._error);
	}
}
其中，在 "public function showError( args:Object )" 中的 "args:Object" 变量会包含从LUA中传递过来的数据，我们使用 args.事件数据变量名 来获取他们的值。
这样 CustomError.as文件已经创建完成，他应该是：
package {
	
	import flash.display.MovieClip;
	
	import ValveLib.Globals;
				
	public class CustomError extends MovieClip {
		
		public var gameAPI:Object;
		public var globals:Object;
		public var elementName:String;
		
		public function CustomError() {
		}
		
		public function onLoaded() : void {			
			//让UI可见
			visible = true;
			//添加事件监听器
			this.gameAPI.SubscribeToGameEvent("custom_error_show", this.showError);	
		}
		public function showError( args:Object ){
			// 获取本地玩家ID
			var pID:int = this.globals.Players.GetLocalPlayer();
			// 如果玩家ID和事件中的玩家ID变量值一致，那么显示 _error 的内容
			if( pID == args.player_ID ) {
				this.globals.Loader_error_msg.movieClip.setErrorMsg(args._error);
			}
		}
	}
	
}
之后，编译 CustomError.swf文件，并放到"../game/dota_addons/<addon_name>/resource/flash3/" 文件夹中，并在这个文件夹的 custom_ui.txt 文件中添加这个swf文件：
"CustomUI"
{
	"1"
	{
		"File"		"CustomError"
		"Depth"		"50"
	}
}
完成了上述工作之后，你只需要在你需要显示错误的Lua代码中添加如下代码就可以显示了:
FireGameEvent('custom_error_show', { player_ID = <playerID>, _error = 'Insert custom error here!' } )
当然，你需要将<playerID>改为你所需要的玩家ID。
和Flash的必要设置中所写的一样，你可以将'Insert custom error here!'改为'#your_custom_error'，来将它变成一个多语言的文本。
完成，撒花~
作者: Zedor
翻译: XavierCHN 
Category:Dota 2 创意工坊工具集
Category:AMHC 汉化
Zh/Dota 2 Workshop Tools/Dota Workshop Tools FAQ

;我运行的是32位版本的Windows，为什么我不能玩任何自定义的游戏？
:现在Dota 2创意工坊工具处于早期测试阶段，我们认为现在应该让地图开发者制作自定义地图，即使是使用一个初期版本，而不是等待工具的最终版本。我们会尽快加入32位系统对自定义游戏模式的支持。
;现在很难找到自定义游戏模式进行游戏怎么办，这个情况会得到改善吗？
:现在寻找游戏以及房间系统还不完善。随着工具的改进我们将对Dota 2客户端进行更新，提高对自定义游戏模式的可玩性。
;现在我在制作Dota 2的饰品，我可以用这些工具吗？
:现在还不行，现在编辑器仅支持自定义游戏模式。 如果想要制作Dota 2饰品的话请访问 创意工坊 页面。 本次更新后原来的饰品制作流程并未有所改变。
;如何发布自定义游戏模式？
:自定义游戏模式通过Steam的创意工坊页面进行发布. 制作自定义游戏模式完成后作者可以通过 Dota 2 客户端进行上传. 上传完毕后其他人可以在相应页面上进行订阅，然后地图将自动下载到客户端中。
;为什么我要订阅自定义游戏模式？
:订阅自定义游戏模式后不仅是会下载当前的游戏，而是在以后保持持续更新。这样就能保证作者和其他玩家永远是相同的版本。
;我已经订阅了自定义游戏模式，我应该怎么玩呢?
:请查阅 部分以获得更多相关细节。
;有些工具比如音效编辑器我找不到怎么回事？
:本次发布中不是所有工具都已准备妥当。我们会陆续进行更新，让所有人都能在制作自定义地图模式中使用更多的工具。
;有时候出现崩溃、工作不正常等情况，我是不是该提交bug？
:是的！请访问Dota 2 开发者论坛或者创意工坊的讨论页面进行提交。
;我原来一直在开发的地图经过本次更新后不能使用了，怎么回事？
:由于开发工具处于早期版本，可能有一系列的更新，比如需要更新文件格式，这时需要更新自定义地图，并重新提交到创意工坊。而且这是非常罕见的问题。
;我需要帮助, 社区中有没有任何人也在为自定义游戏模式而工作呢?
: 请访问dota2创意工坊交流论坛，在这里提问或报告bug。
: 在irc.gamesurge.net论坛中＃dota2mods板块是Dota2的游戏模组与社会交流的通道。
: 中国的制作者们可以通过访问 AMHC官网获得更多的交流与帮助。
Category:Dota 2 Workshop Tools
Zh/Dota 2 Workshop Tools/Installing and Launching Tools

是一个可以选择在dota2中免费下载的插件，并且安装完成这个工具是创建或者运行自定义游戏模式地图的必要条件。
== 安装 ==
=== 方法一 ===
* 在steam库中右击 Dota 2 并选择 查看DLC选项。
* 选中 Dota 2 Workshop Tools DLC 所属的 安装 复选框。
* 点击 关闭 后所需下载内容将开始下载。
* 在steam中，前往 库 菜单并点击 工具 选项后再安装 Dota 2 Workshop Tools Alpha(Dota 2 创意工坊工具集早期测试版)。
=== 方法二 ===
* 在steam中运行 Dota 2 客户端。
* 点击 游戏 选项并选择 自定义游戏。
* 点击 安装 按钮。
* 在steam中，前往 库 菜单并点击 工具 选项后再安装 Dota 2 Workshop Tools Alpha(Dota 2 创意工坊工具集早期测试版)。
== 运行工具 ==
一旦下载完毕,就可以在steam 库 菜单下的 工具 类别中找到启动器。双击 Dota 2 Workshop Tools Alpha(Dota 2 创意工坊工具集早期测试版)以开始运行工具.
Zh/Dota 2 Workshop Tools/Items Overview

Category:Dota 2 创意工坊工具集
一个关于如何创建包括在Dota 商店的物品的概览。
另见: Dota 2 Workshop Info (小记: 这个页面上的一些内容是针对Source 1的并且将会被更新)
== 新手入门 ==
* 
* 选择 "Launch Item Tools"
* 选择 "Create New Item" 以挑选您需要预览或上传的文件, 或者从列表中选择一个已经存在的创意工坊项目来更新它。
Zh/Dota 2 Workshop Tools/KeyValues3

KeyValues3 is a Valve developed data format. It is similar in structure to JSON, but supports binary encodings, versioning, and data annotations. The text syntax also has some minor ergonomic improvements (support for single- and multi-line comments, trailing commas, and multi-line strings.)
==Text Header==
The header of a text KV3 file specifies the encoding and format of the file. These are specified as GUIDs rather than integers to prevent unintentional collision if two people change format or encoding simultaneously in separate projects.
: For the average user, GUIDs at the top of a KV3 file should always be the same.</font>
==Example==
<!-- kv3 encoding:text:version{e21c7f3c-8a33-41c5-9977-a76d3a32aa0d} format:generic:version{7412167c-06e9-4698-aff2-e63eb59037e7} -->
{
	boolValue = false
	intValue = 128
	doubleValue = 64.000000
	stringValue = "hello world"
	stringThatIsAResourceReference = resource:"particles/items3_fx/star_emblem.vpcf"
	multiLineStringValue = """
First line of a multi-line string literal.
Second line of a multi-line string literal.
"""
	arrayValue =
	[
		1,
		2,
	]
	objectValue =
	{
		n = 5
		s = "foo"
	}
	// single line comment
	/* multi
	line
	comment */
}
== Multiline String Literals ==
Multiline string format is:
* Begin string with three unescaped quotes followed by an immediate newline (eg. the buffer looks like "\"\"\"\n")
* End string with a newline followed by three unescaped quotes (eg. the buffer looks like "\n\"\"\"")
* All characters between the two newlines (non-inclusive) are taken literally, with no normal escape characters.
== Flags ==
* KV3 keys can have flags to annotate their value as having special importance to some system. Currently the only flags are "resource" and "deferred_resource" to indicate that the flagged string is a resource reference. (ie. used for models and textures referenced by a particle system.)
Category: Dota 2 Workshop Tools
Zh/Dota 2 Workshop Tools/Level Design

<onlyinclude>
这是关于使用Dota2 Workshop Tools中Hammer关卡编辑器创建自定义地图的帮助文档。
== Hammer 简介 ==
Hammer是用来为Dota 2创建地图的编辑器。 这篇入门教程的重点是用Hammer 中 地形编辑器(Tile Editor) 来创建一个基础的地图。 对于Hammer或Dota2 Workshop Tools的入门者来说，不失为一个好的选择。
* 
* 
* 
== Hammer 文档 ==
关于 Hammer 的功能文档，这里包含了一些更高级的概念，例如：创建几何形状。
* 
* 
* 
* 
* 
* 
* 
* 
* 
== Dota 2 概念 ==
关于Dota 2具体内容的文档。
* 
* 
* 
* 
* 
* 
== Dota 2 示例地图 ==
* 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/onlyinclude>
Zh/Dota 2 Workshop Tools/Level Design/Compile and Run

Category:Dota 2 Workshop Tools Category:AMHC 汉化
是时候编译和运行你的地图了！按下 或者进入 File -> Build Map 打开构建地图（Build Map）窗口。就会弹出一个带有很多选项的窗口。
如果你希望你的地图构建完成之后，可以立即运行起来，需要选中"构建之后在引擎中加载（Load in engine after building）"和"把引擎带入前台（Bring engine to front）" 当然，如果这你是地图的第一个版本，需要选中"加载时创建小地图（Create minimap on load）"选型，这样就可以自动给你创建一张小地图了。之后点击构建就开始编译地图了。
一旦地图构建完成，就可以在游戏中运行了。如果你选中了"构建之后在引擎中加载（Load in engine after building）"，那就会自动在游戏中加载地图，如果没有的话，这有一些需要操作的步骤：
# 按下 打开控制台，这个键一般都在 上面。
# 输入 "dota_launch_custom_game my_addon_name my_map_name" ，在适当的地方输入你自己的自定义游戏（addons）名称和地图（map）名称。
# 按下 
进入游戏之后，如果你没有分配队伍，你需要再次打开控制台，输入 "jointeam good" 进行分配。
你已经完成了第一张入门地图，关于Hammer和地形编辑器的介绍也就到此为止。你可以返回 查看别的Hammer文档和教程。更多关于地形编辑器的深入信息和进阶使用技巧都可以在 章节里查看。
Zh/Dota 2 Workshop Tools/Level Design/Dota/Common Developer Commands

Category:Dota 2 Workshop Tools Category:AMHC 汉化
现在有大量的开发者命令可以帮助测试插件和地图，分为两种类型的命令：控制台命令和游戏中命令。下面列出的是一些最常用的命令。
= 常见控制台命令 =
按下 打开 VConsole(开发者控制台) 便可以输入命令。 欲深入了解 请看 。
输入控制台命令的首段文本将显示所有相似命令。例如，键入 "dota_dev " （下拉条）显示了 dota_dev 类别中包含的所有的命令。
* bind: 输入"bind [按键] [命令]" 可以让一个按键绑定命令，例如：输入 "bind k dota_dev hero_teleport" 后，每当按下 就会运行 dota_dev hero_teleport 。
* dota_ability_debug 1: 技能没有冷却时间，这对敌方也会生效！
* dota_bot_give_level [N]: 提高全部电脑玩家等级N级。
* dota_dev hero_level [N]: 提高被选中英雄N个等级。
* dota_dev hero_teleport: 传送到当前英雄到鼠标点击位置。
* dota_dev forcegamestart: 强制游戏开始（号角声，出兵等）。
* dota_dev dota_gridnav_show: 切换可见范围指引，输入"incrementvar dota_gridnav_show 0 1 1" 进行打开或关闭。
* dota_create_item item_*: 输入 "dota_create_item item_boots" 命令，将会创建一双鞋并且把它们放在选定英雄的物品栏。输入 "dota_create_item " 会显示所有游戏中的全部物品。
* dota_create_unit: 在光标的位置创建一个单位，这个方式可以创建任何单位。 "dota_create_unit earthshaker" 可产生一个可操作的earthshaker（撼地者）。 "dota_create_unit earthshaker enemy" 则会产生敌方earthshaker（撼地者）。
* fow_client_debug 1: 显示是否打开战争迷雾(绿色关闭,红色开启）。
* jointeam good: 将玩家分配到天辉方并且开始选择英雄，相反，"jointeam bad"则会让玩家加入到夜魇方。
* noclip: 玩家都会变成非锁定并且可以飞行，在DOTA2里这只会影响到视角，玩家相对于英雄来说是一个完全独立的位置和概念。
= 常见游戏中命令 =
游戏中的指令在聊天框输入，按下 可以打开聊天框。
* -lvlup N: 提升英雄N个等级
* -gold N: 得到N个金币
* -refresh: 回复全部生命值，魔法值并且刷新所有技能的冷却时间。
Zh/Dota 2 Workshop Tools/Level Design/Dota/Fog of War

Category:Dota 2 Workshop Tools Category:AMHC 汉化
__TOC__
在DOTA2自定义游戏运行中，战争迷雾是一个动态系统，自定义游戏模式可以根据需要启用或关闭战争迷雾，默认情况下为启用。
== 限制/需求 ==
当关卡设计者需要建立一个自定义地图时，许多来源于系统本身的约束会起到优化作用。
=== 平面地形 ===
DOTA2地图完全是由平整的阶梯和不同高度的坡道构成的空间地图。各层材料的混合有助于打破平面感,使它看起来更加逼真。
在地面上可以在创建起伏的山峦，但是战争迷雾却不能这样来做，它就是依据一个物体的导航窗格建立的视线而已。
=== 高度变化 ===
而地形本身就是平面高低可变的，Dota2中有个绝佳的例子：在中路河道，有单位可以下到河道里也可以从河道上去，在河道上的单位Z轴坐标为128，在河道里的坐标为0。
* 所有可以跨越过的地形都应该建在128的高度以上
* 战争迷雾被限制在32高度
=== 高度限制 ===
没有什么可跨越的地形在Z轴上的值小于0，作为优化，战争迷雾系统不会去计算那些低于0的单位的视野。所以Dota2地图中，河道是最低点。
=== 地图尺寸 ===
可游戏的空间不能超过16384x16384单位，超出后战争迷雾将无法正常工作。