Врожденный скилл. Специализация героя.

vulkantsk

Администратор
Команда форума
21 Июн 2017
1,241
205
www.dotabuff.com
Проект
Roshan defense
Хочу создать скилл .
Врожденный скилл (доступен с 0 уровня) который будет специализацией героя как в "Герои меча и магии 3", который будет распространять баф на некоторый тип юнитов , например только на сатиров +25% хп и 5 брони .
Как это реализовать ?

1)Если через ауру , то она будет отключаться когда герой мертв .
Но тут еще вопрос в том , как ауру правильно раздать , скорее всего комбинацией флагов "DOTA_UNIT_TARGET_FLAG" и типов "DOTA_UNIT_TARGET".

2)Через луа скрипт , это я пока не понимаю как , но по моему должно быть просто.
 
Последнее редактирование модератором:
Re: Новый скил. Специализация героя.

Если через луа , то я думаю сделать так
Если герой был , выбран то присваиваем переменной значение true
Когда спавнится юнит , то делаем проверку на переменную , если true то юниту присваивается "Модифаер_специализации" .
 
Последнее редактирование модератором:
Re: Новый скил. Специализация героя.

[quote author=vulkantsk link=topic=1589.msg10391#msg10391 date=1499335546]
Хочу создать скилл .
Врожденный скилл (доступен с 0 уровня) который будет специализацией героя как в "Герои меча и магии 3", который будет распространяться на некоторый тип юнитов , например только на сатиров .
Как это реализовать ?

1)Если через ауру , то она будет отключаться когда герой мертв .
Но тут еще вопрос в том , как ауру правильно раздать , скорее всего комбинацией флагов "DOTA_UNIT_TARGET_FLAG" и типов "DOTA_UNIT_TARGET".

2)Через луа скрипт , это я пока не понимаю как , но по моему должно быть просто.
[/quote]

Чтобы сделать скилл с 0 уровня, надо в addon_game_mode.lua вставить такой вот скрип.
Код:
function COverthrowGameMode:InitGameMode()
	function COverthrowGameMode:OnNPCSpawned(keys)
		local npc = EntIndexToHScript(keys.entindex)
		local ABILITY_NAME = npc:FindAbilityByName("ABILITY_NAME")
		if npc:IsRealHero() then
			if ABILITY_NAME then
				ABILITY_NAME:SetLevel(1)
			end
		end
	end
end
Вместо Overtrow вставляешь название своего мода заданное в .lua
 
Последнее редактирование модератором:
  • Нравится
Реакции: Meepo
Re: Новый скил. Специализация героя.

Если я правильно понял, то этот скрипт при появлении героя прокачивает "ABILITY_NAME" на 1 с самого начала ?
 
Последнее редактирование модератором:
Re: Новый скил. Специализация героя.

[quote author=vulkantsk link=topic=1589.msg10396#msg10396 date=1499347248]
Если я правильно понял, то этот скрипт при появлении героя прокачивает "ABILITY_NAME" на 1 с самого начала ?
[/quote]
да, можно любой лвл прокачать
 
Последнее редактирование модератором:
У меня в кастомке так есть у каждого героя по одному встроенному скиллу
 
Да, в основном это делают через SetLevel в момент спавна.
Но подход может быть разный: можешь абилку сделать, которая при создании этой абилки будет сама себя прокачивать (если память не изменяет, OnCreated в абилках работает альтернативно OnSpawned в модификаторах).

Или как нынче модно у новичков: триггер на место спавна, что будет качать абилку на 1.

Ну и другие варианты. Но в любом случае все это через lua и да, делается все действительно просто.
 
А насчет ауры: тебе надо то что, чтобы это была аура или чтобы это был постоянный баф всем подконтрольным или союзным юнитам?

Если как аура, то вполне естественно, что при смерти разносчика ауры не будет и бафа от нее. А когда герой возродится, то баф снова появистя. Аура - это диапазонный бафф. Можно конечно сделать так, чтобы если юни попадет под раздачу бафа, то этот баф не пропадет и за его границами (через флаг RemoveOnDeath в модификаторе ).

Ну а если второй вариант: баф всем подконтрольным юнитам - просто в событии подчинения (или смены команды, не помню конкретно), снимаешь или навешиваешь модификатор на юнита.

В любом случае - так же через lua и так же просто. На одном ДД вообще далеко не уедешь.
Почитай про слушатели событий (listener/ListenToGameEvent).
 
Если способность имеет только 1 уровень , то можно добавить в ДД строчки
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE"
"MaxLevel" "0"
Герой спавнится с врожденной способностью ))
И все !
 
Последнее редактирование модератором:
Если способность имеет только 1 уровень , то можно добавить в ДД строчки
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE"
"MaxLevel" "0"
Герой спавнится с врожденной способностью ))
И все !

Интересный мув. Я вот знал, что у крипов автоматически учится абилка, но чтобы на героев. Весьма полезно.

Но непонятно, почему так.
 
Последнее редактирование модератором:
Интересный мув. Я вот знал, что у крипов автоматически учится абилка, но чтобы на героев. Весьма полезно.

Но непонятно, почему так.
У Инвока , Рубика , Дума и Макаки врожденные скилы так же )
У дума например и рубика , просто 2 слота пустых .
 
Последнее редактирование модератором:
У Инвока , Рубика , Дума и Макаки врожденные скилы так же )
У дума например и рубика , просто 2 слота пустых .

Ну пустые слоты то понятное дело. Хотя я не обращал внимания, что они там якобы "выученные".
 
Последнее редактирование модератором:
Ребята помогите , как реализовать эту абилку я ваще хз , можете коды покидать
Или просто идеи , понятия не имею куда двигаться...
То , что я придумал не канает .
Я хотел сделать так , что при прокачке скилла запускается скрипт :
Код:
centaur_caster = nil
centaur_const = 0
centaur_ability = nil
function f1(keys)
	Say(nil,"centaur_buff works !!!" , false)
	centaur_caster=keys.caster
	centaur_ability= centaur_caster:FindAbilityByName("inherit_centaur_buff")
	centaur_const=1	
end
А при рождении крипа делает проверку на переменную centaur_const и наделяет юнита магией !
Код:
function Spawn:OnNPCSpawned(keys)
	if centaur_const==0 then Say(nil,"Sorry , Const= 0 !!!" , false) end 
	--Say(nil,"Spawn:OnNPCSpawned works !!!" , false)
	local npc = EntIndexToHScript(keys.entindex)
	if npc:GetUnitName() == "npc_dota_dire1" and centaur_const==1 
		then Say(nil,"centaur_buff works !!!" , false)
			centaur_ability:ApplyDataDrivenModifier(centaur_caster, unit, "modifer_buff", {}) end
	
end
Но это не выходит из за того , что переменные видны только внутри функции, вот как-то так...
 
Последнее редактирование модератором:
Во первых, перечитай статью, что злой кидал.
Во вторых, тебе вроде говорили, делать переменные у юнитов (типа как у героев hero.myVar).
 
[quote author=I_GRIN_I link=topic=1589.msg11019#msg11019 date=1502143097]
vulkantsk, oncreated self.centaurbuff = 0
[/quote]
добавить self каждой переменной ?
 
[quote author=I_GRIN_I link=topic=1589.msg11021#msg11021 date=1502145283]
vulkantsk, да, и объявляй переменные в ОнКриэйтед
[/quote]
Эммм? ШТА
У него как бы это функция просто, а не фулл абилка.
 
Последнее редактирование модератором:
  • Нравится
Реакции: HappyFeedFriends
Adam Smith, ааа, я думал у него это все один модификатор
 
Реклама: