Zh/Dota 2 Workshop Tools/Scripting/Creating a Tower Example

=== 第一步 ===
* 在 \dota 2 beta\dota_ugc\game\dota_addons\your_addon_name\scripts\npc 创建一个 npc_units_custom.txt。这个文档允许你设置和修改在你的自定义游戏中使用的新单位。
=== 第二步 ===
* 复制以下代码并粘贴到你的npc_units_custom.txt。*这样你就拥有一个可以编辑的防御塔并且可以在你的游戏中使用。*这样你就拥有一个可以编辑的防御塔并且可以在你的游戏中使用。*
// Dota Units File
"DOTAUnits"
{
	"Version"	"1"	
	"npc_dota_tower_basedef"
		{
			// General
			//
			"BaseClass"					"npc_dota_tower"	// 实体链接的类。
			"Model"						"models/props_structures/tower_good.mdl"// 模型。
			"SoundSet"					"Tower.Water"					// 声音集名。
			"MinimapIcon"				""
			"MinimapIconSize"			"0"
			"Level"						"1"
			
			// Abilities
			//----------------------------------------------------------------
			
			"Ability1"					""			// 技能 1.
			"Ability2"					""			// 技能 2.
			"Ability3"					""			// 技能 3.
			"Ability4"					""			// 技能 4.
			"Ability5"					""			// 技能 5.
			"Ability6"					""			// 技能 6 - 额外.
			"Ability7"					""			// 技能 7 - 额外.
			"Ability8"					""			// 技能 8 - 额外.
	
			// Armor
			//----------------------------------------------------------------
			"ArmorPhysical"				"322"		// 物抗。
			"MagicalResistance"				"0"			// 魔抗。
	
			// Attack
			//----------------------------------------------------------------
			"AttackCapabilities"		"DOTA_UNIT_CAP_RANGED_ATTACK"
			"AttackDamageMin"			"200"		// 伤害范围最小值。
			"AttackDamageMax"			"250"		// 伤害范围最大值。
			"AttackDamageType"			"DAMAGE_TYPE_ArmorPhysical"
			"AttackRate"				"0.25"			// 攻速。
			"AttackAnimationPoint"		"0.0"		// Normalized time in animation cycle to attack.
			"AttackAcquisitionRange"	"800"		// Range within a target can be acquired.
			"AttackRange"				"800"		// 攻击范围
			"ProjectileModel"			"particles/base_attacks/ranged_tower_good.vpcf"		// 弹道的粒子模型。
			"ProjectileSpeed"			"1250"		// 弹道飞行速度。
	
			// Attributes
			//----------------------------------------------------------------
			"AttributePrimary"			"DOTA_ATTRIBUTE_STRENGTH"
			"AttributeBaseStrength"		"0"			// 初始力量
			"AttributeStrengthGain"		"0"			// 每升一级获得的力量
			"AttributeBaseIntelligence"	"0"			// 初始智力
			"AttributeIntelligenceGain"	"0"			// 每升一级获得的智力
			"AttributeBaseAgility"		"0"			// 初始敏捷
			"AttributeAgilityGain"		"0"			// 每升一级获得的敏捷
	
			// Bounty
			//----------------------------------------------------------------
			"BountyXP"					"0"		// 经验获取
			"BountyGoldMin"				"0"		// 最小获得金钱
			"BountyGoldMax"				"0"		// 最大获得金钱
	
			// Bounds
			//----------------------------------------------------------------
			"BoundsHullName"			"DOTA_HULL_SIZE_TOWER"			// Hull type used for navigation/locomotion.
			"ProjectileCollisionSize"	"50"
			"RingRadius"				"130"
			"HealthBarOffset"			"260"
	
			// Movement
			//----------------------------------------------------------------
			"MovementCapabilities"		"DOTA_UNIT_CAP_MOVE_NONE"			// Type of locomotion - ground, air
			"MovementSpeed"				"0"			// Speed
			"MovementTurnRate"			"1.0"			// Turning rate.
	
			// Status
			//----------------------------------------------------------------
			"StatusHealth"				"1337"		// Base health.
			"StatusHealthRegen"			"0"			// Health regeneration rate.
			"StatusMana"				"0"			// Base mana.
			"StatusManaRegen"			"0"			// Mana regeneration rate.
	
			// Team
			//----------------------------------------------------------------
			"TeamName"					"DOTA_TEAM_GOODGUYS"			// 队伍名
			"CombatClassAttack"			"DOTA_COMBAT_CLASS_ATTACK_SIEGE"
			"CombatClassDefend"			"DOTA_COMBAT_CLASS_DEFEND_STRUCTURE"
			"UnitRelationshipClass"		"DOTA_NPC_UNIT_RELATIONSHIP_TYPE_BUILDING"
			
			// Vision
			//----------------------------------------------------------------
			"VisionDaytimeRange"		"1000"		// Range of vision during day light.
			"VisionNighttimeRange"		"1000"		// Range of vision at night time.
		}
}
=== 第三步 ===
强烈建议在编辑单位前先在游戏中测试以下你的单位来确保你的单位能正常工作。
* 打开你的npc_units_custom.txt 并注意顶部的 "npc_dota_tower_basedef"。
你可以改成你想要的任何名字但是我们为了方便把它命名为"npc_dota_custom_tower"。以后我们将会在 Hammer editor 用到。保存并退出。
* 现在启动你的 Dota 2 自定义游戏（注意 必须是那个含有你刚刚放有npc_units_custom.txt的自定义游戏）然后打开你的地图。
* 选择实体编辑工具（Entity Tool） () 然后改变工具的实体类别为你的"npc_dota_tower"单位类别。这个类别是在游戏中声明你的单位是一个防御塔。
* 放置这个实体到一个你容易找到的位置，当选择实体的时候按下 () 来打开物体属性 （Object Properties） 窗口。
* 为了让这个实体实现你的自定义防御塔设定，你需要设置它的"Unit Name" 为你在npc_units_custom.txt文件中命名的名字。向下滚动到Unit Name 然后写 "npc_dota_custom_tower" (不需双引号符号)。然后, 向下滚动到队伍编号Team Number设置为"Bad Guys"这样当你在天辉的时候它就是敌方的单位。
在Hammer中你不必担心这个实体没有模型。在自定义游戏运行时模型会加载好。
----------
=== 完成！ ===
保存你的地图并按 来打开Build Map窗口。第一次构造地图的时候确保所有选项都打勾,如果这地图之前构造过那么可以只勾选Build Entities(这样可以减少构造地图的时间)。
游戏加载完成并且选择一个英雄后第一要事是确保你的防御塔模型是否正确显示，比如靠近模型检查他的攻击和攻击弹道是否显示粒子。
如果万事正常那么再次打开你的 npc_units_custom.txt 然后根据你的需要开始修改里面的值。尽量在dota_addons文件夹和网上寻找属于你的灵感。
=== 注意 ===
* 如果你想在编辑器上添加更多的防御塔那么请重复第三步。
* \dota 2 beta\dota_ugc\game\dota_addons\your_addon_name\resource\addon_english.txt 可以在游戏中让单位得到正确的名字。
举例：
 "lang"
 {
 	 "Language"		"English"
	 "Tokens"
	 {		
		 "npc_dota_tower_basedef"							"Tower"
	 }
 }
Category:Dota 2 创意工坊工具集
Category:AMHC 汉化