Dota 2 Workshop Tools:ru/Scripting:ru/Creating a Tower Example:ru

From Valve Developer Community
< Dota 2 Workshop Tools:ru‎ | Scripting:ru
Revision as of 12:09, 10 June 2016 by Gameizeazy (talk | contribs) (Добавлено описание про баунти руну)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Создание простой кастомной башни

Подготовка файла

Находим в папке с вашим аддоном в директории \dota 2 beta\game\dota_addons\your_addon_name\scripts\npc файл npc_units_custom.txt (если нет таких папок или файла то создаете сами).

Создаем башню и её свойства

Скопируйте пример указанный ниже в файл npc_units_custom.txt .

// Кастомные юниты
"DOTAUnits"
{
	"Version"	"1"	
 
	"npc_dota_custom_tower"                   // имя нашего юнита
		{
			// 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 способность (Экстра)
 
			// Защита
			//----------------------------------------------------------------
			"ArmorPhysical"				"322"		// физическая защита
			"MagicalResistance"				"0"			// Магическая защита
 
			// Атака
			//----------------------------------------------------------------
			"AttackCapabilities"		"DOTA_UNIT_CAP_RANGED_ATTACK"
			"AttackDamageMin"			"200"		// Минимальный урон
			"AttackDamageMax"			"250"		// Максимальный урон
			"AttackDamageType"			"DAMAGE_TYPE_ArmorPhysical"  // Тип наносимого урона урона(в данном случае физический)
			"AttackRate"				"0.25"			// Скорость атаки
			"AttackAnimationPoint"		"0.0"		// Нормальное время анимации между атаками
			"AttackAcquisitionRange"	"800"		// 
			"AttackRange"				"800"		// Дальность атаки
			"ProjectileModel"			"particles/base_attacks/ranged_tower_good.vpcf"		// Используемый эффект снаряда(атаки)
			"ProjectileSpeed"			"1250"		// скорость снаряда
 
			// Характеристики(атрибуты, статы как вам угодно)
			//----------------------------------------------------------------
			"AttributePrimary"		"DOTA_ATTRIBUTE_STRENGTH"   //Основная характеристика
			"AttributeBaseStrength"		"0"			// Базовое значение силы
			"AttributeStrengthGain"		"0"			// Бонус силы за каждый лвл
			"AttributeBaseIntelligence"	"0"			// Базовое значение интеллекта
			"AttributeIntelligenceGain"	"0"			// Бонус интеллекта за каждый лвл
			"AttributeBaseAgility"		"0"			// Базовое значение ловкости
			"AttributeAgilityGain"		"0"			// Бонус ловкости за каждый лвл
 
			// Руна богатсво(в нашем случае бесполезно)
			//----------------------------------------------------------------
			"BountyXP"					"0"		// опыт за руну
			"BountyGoldMin"				"0"		// минимальное зололо за руну
			"BountyGoldMax"				"0"		// максимальное золото за руну
 
			// Bounds
			//----------------------------------------------------------------
			"BoundsHullName"			"DOTA_HULL_SIZE_TOWER"			// Hull type used for navigation/locomotion.
			"ProjectileCollisionSize"	"50"
			"RingRadius"				"130"
			"HealthBarOffset"			"260"
 
			// Передвижение
			//----------------------------------------------------------------
			"MovementCapabilities"		"DOTA_UNIT_CAP_MOVE_NONE"			// Тип юнита (наземный или воздушный)
			"MovementSpeed"				"0"			// скорость передвижения
			"MovementTurnRate"			"1.0"			// Turning rate.
 
			// Status
			//----------------------------------------------------------------
			"StatusHealth"				"1337"		        // Базовое здоровье
			"StatusHealthRegen"			"0"			// Регенерация в сек.
			"StatusMana"				"0"			// Базовая мана
			"StatusManaRegen"			"0"			// Регенерация в сек.
 
			// Команда
			//----------------------------------------------------------------
			"TeamName"					"DOTA_TEAM_GOODGUYS"			// Имя команды
			"CombatClassAttack"			"DOTA_COMBAT_CLASS_ATTACK_SIEGE"
			"CombatClassDefend"			"DOTA_COMBAT_CLASS_DEFEND_STRUCTURE"
			"UnitRelationshipClass"		"DOTA_NPC_UNIT_RELATIONSHIP_TYPE_BUILDING"
 
			// Дальность обзора
			//----------------------------------------------------------------
			"VisionDaytimeRange"		"1000"		// В дневное время
			"VisionNighttimeRange"		"1000"		// В ночное время
		}
}

Сохраняем файл

Note:Если у вас был такой файл нужно его на время переместить в другое место оставить только этот для тестирования или же в конце файла добавить только текст указанный ниже. Т.к. вы можете нарушить синтаксис строения кода, если новичок в этом деле

Пример синтаксиса

"DOTAUnits"
{
	"Version"	"1"
        "юнит 1"
          {
            параметры
          }
        "юнит 2"
          {
            параметры
          }
}

Главное добавить юнита между первыми и последними скобками

Ниже сам пример для добавления в готовый файл

	"npc_dota_custom_tower"                   // имя нашего юнита
		{
			// 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 способность (Экстра)
 
			// Защита
			//----------------------------------------------------------------
			"ArmorPhysical"				"322"		// физическая защита
			"MagicalResistance"				"0"			// Магическая защита
 
			// Атака
			//----------------------------------------------------------------
			"AttackCapabilities"		"DOTA_UNIT_CAP_RANGED_ATTACK"
			"AttackDamageMin"			"200"		// Минимальный урон
			"AttackDamageMax"			"250"		// Максимальный урон
			"AttackDamageType"			"DAMAGE_TYPE_ArmorPhysical"  // Тип наносимого урона урона(в данном случае физический)
			"AttackRate"				"0.25"			// Скорость атаки
			"AttackAnimationPoint"		"0.0"		// Нормальное время анимации между атаками
			"AttackAcquisitionRange"	"800"		// 
			"AttackRange"				"800"		// Дальность атаки
			"ProjectileModel"			"particles/base_attacks/ranged_tower_good.vpcf"		// Используемый эффект снаряда(атаки)
			"ProjectileSpeed"			"1250"		// скорость снаряда
 
			// Характеристики(атрибуты, статы как вам угодно)
			//----------------------------------------------------------------
			"AttributePrimary"		"DOTA_ATTRIBUTE_STRENGTH"   //Основная характеристика
			"AttributeBaseStrength"		"0"			// Базовое значение силы
			"AttributeStrengthGain"		"0"			// Бонус силы за каждый лвл
			"AttributeBaseIntelligence"	"0"			// Базовое значение интеллекта
			"AttributeIntelligenceGain"	"0"			// Бонус интеллекта за каждый лвл
			"AttributeBaseAgility"		"0"			// Базовое значение ловкости
			"AttributeAgilityGain"		"0"			// Бонус ловкости за каждый лвл
 
			// Точно не знаю как работает параметр, но возможно =>
			//----------------------------------------------------------------
			"BountyXP"					"0"		// "опыт за убийство юнита"
			"BountyGoldMin"				"0"		// минимальное золото 
			"BountyGoldMax"				"0"		// максимальное золото
 
			// Bounds
			//----------------------------------------------------------------
			"BoundsHullName"			"DOTA_HULL_SIZE_TOWER"			// Hull type used for navigation/locomotion.
			"ProjectileCollisionSize"	"50"
			"RingRadius"				"130"
			"HealthBarOffset"			"260"
 
			// Передвижение
			//----------------------------------------------------------------
			"MovementCapabilities"		"DOTA_UNIT_CAP_MOVE_NONE"			// Тип юнита (наземный или воздушный)
			"MovementSpeed"				"0"			// скорость передвижения
			"MovementTurnRate"			"1.0"			// Turning rate.
 
			// Status
			//----------------------------------------------------------------
			"StatusHealth"				"1337"		        // Базовое здоровье
			"StatusHealthRegen"			"0"			// Регенерация в сек.
			"StatusMana"				"0"			// Базовая мана
			"StatusManaRegen"			"0"			// Регенерация в сек.
 
			// Команда
			//----------------------------------------------------------------
			"TeamName"					"DOTA_TEAM_GOODGUYS"			// Имя команды
			"CombatClassAttack"			"DOTA_COMBAT_CLASS_ATTACK_SIEGE"
			"CombatClassDefend"			"DOTA_COMBAT_CLASS_DEFEND_STRUCTURE"
			"UnitRelationshipClass"		"DOTA_NPC_UNIT_RELATIONSHIP_TYPE_BUILDING"
 
			// Дальность обзора
			//----------------------------------------------------------------
			"VisionDaytimeRange"		"1000"		// В дневное время
			"VisionNighttimeRange"		"1000"		// В ночное время
		}

Добавление башни на карту

Теперь открываем Workshop tools заходим в редактор и открываем вашу карту

Note:Выбираем тот аддон, в котором вы добавили юнита

Создаем на пустом месте сущность(Entity) горячие клавиши (Shift+E) и задаем класс npc_dota_tower. Откройте свойства объекта горячие клавиши (Alt + Enter) в поле "Unit name" пропишите имя нашего юнита npc_dota_custom_tower. Далее находим параметр "Team number" и устанавливаем Badguys

Note:Не волнуйтесь что модель не показывается в редакторе, после компиляции в игре все появится

Проверяем башню в игре

Компилируем карту и запускаем ей. Заходим за команду "Свет" и проверяем правильно ли показывает модель башни, частицу(спрей атаки башни). Если все работает правильно заходим в наш файл npc_units_custom.txt и меняем характеристики как вам душе угодно.

Примечания

  • Таким же образом копировав код вы можете добавлять больше башен(присваивайте разные имена)
  • Вы можете присвоить имя башни на русском языке(отображение в игре) добавив эти строчки в файл в директории вашего аддона \resource\addon_russian.txt
Note:Если нет? Создайте
      "lang"
    {
    	    "Language"		"Russian"
	    "Tokens"
	    {		
		    "npc_dota_custom_tower"							"Башня"
	    }
    }