Что за команда??

MrPolnoch

Пользователь
2 Фев 2017
29
0
Вот нашел команду: "CosmeticAbility" "donkey_cosmetics" (точнее увидел в Element TD)
Код:
	//===============================================================================================================
	// HERO: (Light) Builder
	//===============================================================================================================
	"npc_dota_hero_skywrath_mage"
	{
	  "Model"           "models/courier/donkey_unicorn/donkey_unicorn.vmdl"
	  "ModelScale"        "2"
	  "DisableWearables"     "1"
	
	  "CosmeticAbility"      "donkey_cosmetics"
	
	  "override_hero"       "npc_dota_hero_skywrath_mage"
	  "MovementCapabilities"   "DOTA_UNIT_CAP_MOVE_FLY"
	  "MovementSpeed"       "522"
	
	  "AbilityLayout"       "6"
	  "Ability1"         "build_light_tower_disabled"  
	  "Ability2"         "build_dark_tower_disabled" 
	  "Ability3"         "build_water_tower_disabled"  
	  "Ability4"         "build_fire_tower_disabled" 
	  "Ability5"         "build_nature_tower_disabled"  
	  "Ability6"         "build_earth_tower_disabled"    
	  "Ability8"         "hero_ui"
	  "Ability9"         ""
	  "Ability10"         ""
	  "Ability11"         ""
	  "Ability12"         ""
	  "Ability13"         ""
	  "Ability14"         ""
	  "Ability15"         ""
	  "Ability16"         ""
	
	  "StatusHealth"       "50"  
	  "StatusHealthRegen"     "0"     
	  "StatusMana"        "0" 
	  "MovementTurnRate"     "20"
	
	  "ArmorPhysical"       "0"     
	  "MagicalResistance"     "0"     
	
	  "AttributeBaseStrength"   "0"     
	  "AttributeStrengthGain"   "0"     
	  "AttributeBaseIntelligence" "0"     
	  "AttributeIntelligenceGain" "0"     
	  "AttributeBaseAgility"   "0"     
	  "AttributeAgilityGain"   "0"
вот фул код персонажа.

Код:
	"donkey_cosmetics"
	{
	  "BaseClass"           "ability_datadriven"
	  "AbilityBehavior"        "DOTA_ABILITY_BEHAVIOR_PASSIVE | DOTA_ABILITY_BEHAVIOR_HIDDEN"
	  "MaxLevel"           "1"
	
	  "precache"
	  {
	    "particle" "particles/econ/courier/courier_donkey_unicorn/courier_donkey_unicorn_ambient.vpcf"
	  }
	
	  "Modifiers"
	  {
	    "modifier_donkey_cosmetics"
	    {
	      "Passive"      "1"
	      "IsHidden"      "1"
	    
	      "OnCreated"
	      {
	        "AttachEffect"
	        {
	          "EffectName"    "particles/econ/courier/courier_donkey_unicorn/courier_donkey_unicorn_ambient.vpcf"
	          "EffectAttachType" "attach_hitloc"
	          "Target"      "TARGET"
	          "ControlPointEntities"
	          {
	            "CASTER"  "attach_hitloc"
	            "CASTER"  "attach_hitloc"
	          }
	        }
	      }
	    }
	  }
	}
вот код абилки этой.
Пробывал я эту команду просто обычному персонажу поставить, не работает. Вопрос, что это и как её использовать?
 
Последнее редактирование модератором:
Я могу ошибаться, но скорее всего он просто ввел себе для удобства переменную "CosmeticAbility" и указывает в ней id-имя той абилки, которая отвечает за "косметику" на данном объекте: навешивание партиклей.
 
Последнее редактирование модератором:
Работать с ней конечно же через lua, в dd на неё реакции не будет.
Все это только предположения, но если смотреть в его проекте, то в lua он обращается к ней один лишь раз, когда создает новый объект. А значит, скорее всего он именно здесь и осуществляет её раскрытие: то есть просто берет хранящееся в ней имя и добавляет новому объекту абилку с этим именем. То есть сама переменная "CosmeticAbility" не связана даже со слотами абилок в dd. В общем, те объекты у которых прописана эта переменная - не настоящие объекты, а лишь подготовительный шаблон, а сам объект он реализует уже в lua с помощью этого шаблона. Либо это все же полноценные объекты, но переменную он использует не для них, а для производных от них объектов.

В общем, проще говоря: он все это делал себе для удобства и никакая это не "новая переменная общего пользования от valve", это лишь часть его архитектурного решения, которая помогает ему реализовать задуманное.
 
Последнее редактирование модератором:
[quote author=Илья link=topic=1376.msg8757#msg8757 date=1489046291]
Работать с ней конечно же через lua, в dd на неё реакции не будет.
Все это только предположения, но если смотреть в его проекте, то в lua он обращается к ней один лишь раз, когда создает новый объект. А значит, скорее всего он именно здесь и осуществляет её раскрытие: то есть просто берет хранящееся в ней имя и добавляет новому объекту абилку с этим именем. То есть сама переменная "CosmeticAbility" не связана даже со слотами абилок в dd. В общем, те объекты у которых прописана эта переменная - не настоящие объекты, а лишь подготовительный шаблон, а сам объект он реализует уже в lua с помощью этого шаблона. Либо это все же полноценные объекты, но переменную он использует не для них, а для производных от них объектов.

В общем, проще говоря: он все это делал себе для удобства и никакая это не "новая переменная общего пользования от valve", это лишь часть его архитектурного решения, которая помогает ему реализовать задуманное.
[/quote]спасибо огромное за пояснения! Тоесть если просто скопировать эту строчку из луа и вставить ее в свой проект, то в дд тогда всё будет работать?
 
Последнее редактирование модератором:
Нет, не просто. Смотри, как он осуществляет вызов:
Код:
local cosmetic_ability = NPC_HEROES_CUSTOM[heroName]["CosmeticAbility"]

NPC_HEROES_CUSTOM - какая-то константа (константы обычно заглавными обозначают). А исходя из того, что здесь идет обращение в таком духе: NPC_HEROES_CUSTOM[][] - то это константа, которая является хэш мапой, в значениях которой лежат еще хэш мапы. Не совсем уверен, правильно ли я употребляю тут термин "hash map", так как у неё должны быть в обязательном порядке реализованы методы по добавлению/удалению элементов и т.п., но проще говоря там таблица в таблице.

Смотришь, где он её создает, и понимаешь, что он по сути копирует файл конфигурации. Ну то есть последний по своей сути и есть таблица с ключами/значениями, и он просто работает с ней именно вручную, а не привычными обыденными методами через GetValueFore() и т.д., потому что ему так удобнее в его архитектуре.

Думаю, ты понял, что если хочешь так же запариться (чего не советую, если у тебя другая архитектура проекта), то тебе нужно так же подгружать и работать.
 
Последнее редактирование модератором:
[quote author=Илья link=topic=1376.msg8759#msg8759 date=1489057399]
Нет, не просто. Смотри, как он осуществляет вызов:
Код:
local cosmetic_ability = NPC_HEROES_CUSTOM[heroName]["CosmeticAbility"]

NPC_HEROES_CUSTOM - какая-то константа (константы обычно заглавными обозначают). А исходя из того, что здесь идет обращение в таком духе: NPC_HEROES_CUSTOM[][] - то это константа, которая является хэш мапой, в значениях которой лежат еще хэш мапы. Не совсем уверен, правильно ли я употребляю тут термин "hash map", так как у неё должны быть в обязательном порядке реализованы методы по добавлению/удалению элементов и т.п., но проще говоря там таблица в таблице.

Смотришь, где он её создает, и понимаешь, что он по сути копирует файл конфигурации. Ну то есть последний по своей сути и есть таблица с ключами/значениями, и он просто работает с ней именно вручную, а не привычными обыденными методами через GetValueFore() и т.д., потому что ему так удобнее в его архитектуре.

Думаю, ты понял, что если хочешь так же запариться (чего не советую, если у тебя другая архитектура проекта), то тебе нужно так же подгружать и работать.
[/quote]спасибо еще раз огромное! Теперь более менее стало понятно как он использует эту переменеую и тд.
 
Последнее редактирование модератором:
И ничего там в дд не работает в "моддерском" понимании. В lua он работает. Он использует файлы конфигурации именно в их естественном и изначальном виде - как базу данных, место хранение информации. И работает с ними именно как работал бы программист, а не любитель без знания программирования, для которых реализован стандартный интерфейс в виде API и т.п..

Так проще программировать. Это как мы, где-то год назад, с тогдашними ребятами форума, обсуждали плюсы и минусы работы с barebones. Мне и другим ребятам с опытом программирования гораздо проще без его шаблона, в отличие от других людей, которые до моддинга не изучали программирование.
 
Последнее редактирование модератором:
Реклама: