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

vulkantsk

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

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

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

vulkantsk

Супермодератор
Команда форума
21 Июн 2017
1,149
196
www.dotabuff.com
Проект
Roshan defense
Re: Новый скил. Специализация героя.

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

Pancer

Активный
30 Мар 2017
127
5
steamcommunity.com
Проект
MARVEL Heroes
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

vulkantsk

Супермодератор
Команда форума
21 Июн 2017
1,149
196
www.dotabuff.com
Проект
Roshan defense
Re: Новый скил. Специализация героя.

Если я правильно понял, то этот скрипт при появлении героя прокачивает "ABILITY_NAME" на 1 с самого начала ?
 
Последнее редактирование модератором:

Pancer

Активный
30 Мар 2017
127
5
steamcommunity.com
Проект
MARVEL Heroes
Re: Новый скил. Специализация героя.

[quote author=vulkantsk link=topic=1589.msg10396#msg10396 date=1499347248]
Если я правильно понял, то этот скрипт при появлении героя прокачивает "ABILITY_NAME" на 1 с самого начала ?
[/quote]
да, можно любой лвл прокачать
 
Последнее редактирование модератором:

Pancer

Активный
30 Мар 2017
127
5
steamcommunity.com
Проект
MARVEL Heroes
У меня в кастомке так есть у каждого героя по одному встроенному скиллу
 

Илья

Друзья CG
25 Сен 2015
2,348
41
Да, в основном это делают через SetLevel в момент спавна.
Но подход может быть разный: можешь абилку сделать, которая при создании этой абилки будет сама себя прокачивать (если память не изменяет, OnCreated в абилках работает альтернативно OnSpawned в модификаторах).

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

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

Илья

Друзья CG
25 Сен 2015
2,348
41
А насчет ауры: тебе надо то что, чтобы это была аура или чтобы это был постоянный баф всем подконтрольным или союзным юнитам?

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

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

В любом случае - так же через lua и так же просто. На одном ДД вообще далеко не уедешь.
Почитай про слушатели событий (listener/ListenToGameEvent).
 

vulkantsk

Супермодератор
Команда форума
21 Июн 2017
1,149
196
www.dotabuff.com
Проект
Roshan defense
Если способность имеет только 1 уровень , то можно добавить в ДД строчки
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE"
"MaxLevel" "0"
Герой спавнится с врожденной способностью ))
И все !
 
Последнее редактирование модератором:

Илья

Друзья CG
25 Сен 2015
2,348
41
Если способность имеет только 1 уровень , то можно добавить в ДД строчки
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NOT_LEARNABLE"
"MaxLevel" "0"
Герой спавнится с врожденной способностью ))
И все !

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

Но непонятно, почему так.
 
Последнее редактирование модератором:

vulkantsk

Супермодератор
Команда форума
21 Июн 2017
1,149
196
www.dotabuff.com
Проект
Roshan defense
Интересный мув. Я вот знал, что у крипов автоматически учится абилка, но чтобы на героев. Весьма полезно.

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

Илья

Друзья CG
25 Сен 2015
2,348
41
У Инвока , Рубика , Дума и Макаки врожденные скилы так же )
У дума например и рубика , просто 2 слота пустых .

Ну пустые слоты то понятное дело. Хотя я не обращал внимания, что они там якобы "выученные".
 
Последнее редактирование модератором:

vulkantsk

Супермодератор
Команда форума
21 Июн 2017
1,149
196
www.dotabuff.com
Проект
Roshan defense
Ребята помогите , как реализовать эту абилку я ваще хз , можете коды покидать
Или просто идеи , понятия не имею куда двигаться...
То , что я придумал не канает .
Я хотел сделать так , что при прокачке скилла запускается скрипт :
Код:
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
Но это не выходит из за того , что переменные видны только внутри функции, вот как-то так...
 
Последнее редактирование модератором:

Илья

Друзья CG
25 Сен 2015
2,348
41
Во первых, перечитай статью, что злой кидал.
Во вторых, тебе вроде говорили, делать переменные у юнитов (типа как у героев hero.myVar).
 

vulkantsk

Супермодератор
Команда форума
21 Июн 2017
1,149
196
www.dotabuff.com
Проект
Roshan defense
[quote author=I_GRIN_I link=topic=1589.msg11019#msg11019 date=1502143097]
vulkantsk, oncreated self.centaurbuff = 0
[/quote]
добавить self каждой переменной ?
 

I_GRIN_I

Друзья CG
15 Мар 2016
1,335
105
vulkantsk, да, и объявляй переменные в ОнКриэйтед
 

Adam Smith

Друзья CG
4 Окт 2014
473
2
[quote author=I_GRIN_I link=topic=1589.msg11021#msg11021 date=1502145283]
vulkantsk, да, и объявляй переменные в ОнКриэйтед
[/quote]
Эммм? ШТА
У него как бы это функция просто, а не фулл абилка.
 

vulkantsk

Супермодератор
Команда форума
21 Июн 2017
1,149
196
www.dotabuff.com
Проект
Roshan defense
Последнее редактирование модератором:
  • Нравится
Реакции: HappyFeedFriends

I_GRIN_I

Друзья CG
15 Мар 2016
1,335
105
Adam Smith, ааа, я думал у него это все один модификатор
 
Реклама: