AddNewModifier

Owletass

Пользователь
21 Авг 2014
57
0
6
17
Реакции
0 0 0
#1
Как добавить кастомный modifier? Можно добавить готовый, типа "modifier_stunned", а свой, который находится в каком-нибудь кастомном скилле, нельзя.
 
Последнее редактирование модератором:

doter.ua

Продвинутый
17 Авг 2014
280
4
18
24
UA
Реакции
4 0 0
#2
Как добавить кастомный modifier? Можно добавить готовый, типа "modifier_stunned", а свой, который находится в каком-нибудь кастомном скилле, нельзя.
Как использовать хочешь? почему не добавлять в дата_драйв, зачем скрипты? можешь сделать в углу карты юнита, который будет вешать всем модифаеры.

UPD:
void AddNewModifier(handle caster, handle optionalSourceAbility, string modifierName, handle modifierData) так то по описанию должен быть какой-то способ, а то многовато параметров для стандартных модификаторов.
 
Последнее редактирование модератором:

Owletass

Пользователь
21 Авг 2014
57
0
6
17
Реакции
0 0 0
#3
Как использовать хочешь? почему не добавлять в дата_драйв, зачем скрипты? можешь сделать в углу карты юнита, который будет вешать всем модифаеры.

UPD:
void AddNewModifier(handle caster, handle optionalSourceAbility, string modifierName, handle modifierData) так то по описанию должен быть какой-то способ, а то многовато параметров для стандартных модификаторов.
Хочу сделать так, что, когда у героя остается определенное кол-во маны, то он получает баф.
Пытался добавить название кастомного скила, вместо handle optionalSourceAbility, но только начала вылетать ошибка.
 
Последнее редактирование модератором:

doter.ua

Продвинутый
17 Авг 2014
280
4
18
24
UA
Реакции
4 0 0
#4
Тогда создай в углу юнита с нужным скилом (который вешает модиф.) И юзай myUnit:CastAbilityOnTarget(handle target, handle ability, int playerIndex) где handle ability берется так: myAbility = myUnit:FindAbilityByName('myAbility')
 

doter.ua

Продвинутый
17 Авг 2014
280
4
18
24
UA
Реакции
4 0 0
#5
Owletass, скинь текст ошибки и строчку которая ее вызвала.
 
Реклама:

Owletass

Пользователь
21 Авг 2014
57
0
6
17
Реакции
0 0 0
#6
[quote author=doter.ua link=topic=74.msg368#msg368 date=1412448635]
Owletass, скинь текст ошибки и строчку которая ее вызвала.
[/quote]
proxy.php?image=http%3A%2F%2Fi64.fastpic.ru%2Fbig%2F2014%2F1005%2F1c%2Ff02280222cd31942d034689bd24edc1c.png&hash=81691c24581a346ce0353f88883e60bf

Аналогичная ошибка была, когда я изменял handle optionalSourceAbility.
 

Instagib

Пользователь
29 Авг 2014
18
0
1
17
Реакции
0 0 0
#7
Owletass, "attempt to call method FindAbilityByName (a nil value)" означает что у объекта, у которого ты вызываешь метод FindAbilityByName, такого метода нету. Кстати ошибку можно было скопировать из консоли)
 
Последнее редактирование модератором:

Owletass

Пользователь
21 Авг 2014
57
0
6
17
Реакции
0 0 0
#8
[quote author=Instagib link=topic=74.msg374#msg374 date=1412509004]
Owletass, "attempt to call method FindAbilityByName (a nil value)" означает что у объекта, у которого ты вызываешь метод FindAbilityByName, такого метода нету. Кстати ошибку можно было скопировать из консоли)
[/quote]
FindAbilityByName('alpha_wolf_command_aura'). Я неправильно написал имя скилла?
 
Последнее редактирование модератором:

Instagib

Пользователь
29 Авг 2014
18
0
1
17
Реакции
0 0 0
#9
Owletass,ее надо у нпс вызывать. Например, unit:FindAbilityByName('alpha_wolf_command_aura'), где unit - тот, у кого ты ищешь абилку.
 

Owletass

Пользователь
21 Авг 2014
57
0
6
17
Реакции
0 0 0
#10
[quote author=Instagib link=topic=74.msg376#msg376 date=1412510051]
Owletass, ее надо у нпс вызывать. Например, unit:FindAbilityByName('alpha_wolf_command_aura'), где unit - тот, у кого ты ищешь абилку.
[/quote]
Ну я сделал так:
local myUnit = {"npc_alpha_wolf"}
local myAbility = myUnit:FindAbilityByName('alpha_wolf_command_aura')
myUnit:CastAbilityOnTarget(hero, myAbility, nil)
 
Последнее редактирование модератором:
Реклама:

Instagib

Пользователь
29 Авг 2014
18
0
1
17
Реакции
0 0 0
#11
Owletass,local myUnit = {"npc_alpha_wolf"} - это у тебя получился массив с одним элементом, который является строкой. А нужен объект типаCBaseEntity.
Сделай так local myUnit = Entities:FindByName(nil,"npc_alpha_wolf")
 
Последнее редактирование модератором:

Owletass

Пользователь
21 Авг 2014
57
0
6
17
Реакции
0 0 0
#12
[quote author=Instagib link=topic=74.msg378#msg378 date=1412511651]
Owletass, local myUnit = {"npc_alpha_wolf"} - это у тебя получился массив с одним элементом, который является строкой. А нужен объект типа CBaseEntity.
Сделай так local myUnit = Entities:FindByName(nil, "npc_alpha_wolf")

[/quote]
теперь эта ошибка: Script Runtime Error: ...ame\dota_addons\new\scripts\vscripts\addon_game_mode.lua:172: attempt to index local 'myUnit' (a nil value)
 
Последнее редактирование модератором:

Instagib

Пользователь
29 Авг 2014
18
0
1
17
Реакции
0 0 0
#13
Owletass, это значит что myUnit не существует. Функция FindByName ничего не нашла и вернула nil. Наверно ты его не создал) вот и не находит)
 

Owletass

Пользователь
21 Авг 2014
57
0
6
17
Реакции
0 0 0
#14
[quote author=Instagib link=topic=74.msg380#msg380 date=1412513280]
Owletass, это значит что myUnit не существует. Функция FindByName ничего не нашла и вернула nil. Наверно ты его не создал) вот и не находит)
[/quote]
но ведь я создал:
local myUnit = Entities:FindByName(nil, "npc_alpha_wolf")
local myAbility = myUnit:FindAbilityByName('alpha_wolf_command_aura')
 
Последнее редактирование модератором:

Instagib

Пользователь
29 Авг 2014
18
0
1
17
Реакции
0 0 0
#15
Owletass,local myUnit = Entities:FindByName(nil, "npc_alpha_wolf") - она ищет энтити, которые уже есть на карте, но не создает. тебе нужно сначала создать своего юнита.
Создавай прямо вInitGameMode():
ТвойМод.alpha_wolf = CreateUnitByName("npc_alpha_wolf", Vector(0, 0, 0), true, nil, nil, DOTA_TEAM_GOODGUYS)
Координаты вектора Vector(0, 0, 0) задай какие надо.
Теперь можешь обращаться откуда угодно к твоему юниту такТвойМод.alpha_wolf
Ну и собственноlocal myAbility = ТвойМод.alpha_wolf:FindAbilityByName('alpha_wolf_command_aura')
Как то так :)
 
Последнее редактирование модератором:
Реклама:

Owletass

Пользователь
21 Авг 2014
57
0
6
17
Реакции
0 0 0
#16
[quote author=Instagib link=topic=74.msg382#msg382 date=1412514626]
Owletass, local myUnit = Entities:FindByName(nil, "npc_alpha_wolf") - она ищет энтити, которые уже есть на карте, но не создает. тебе нужно сначала создать своего юнита.
Создавай прямо в InitGameMode():
ТвойМод.alpha_wolf = CreateUnitByName("npc_alpha_wolf", Vector(0, 0, 0), true, nil, nil, DOTA_TEAM_GOODGUYS)
Координаты вектора Vector(0, 0, 0) задай какие надо.
Теперь можешь обращаться откуда угодно к твоему юниту так ТвойМод.alpha_wolf
Ну и собственно local myAbility = ТвойМод.alpha_wolf:FindAbilityByName('alpha_wolf_command_aura')
Как то так :)
[/quote]
на карте уже присутствует волк (npc_alpha_wolf) со своей своей аурой
 
Последнее редактирование модератором:

doter.ua

Продвинутый
17 Авг 2014
280
4
18
24
UA
Реакции
4 0 0
#17

Owletass

Пользователь
21 Авг 2014
57
0
6
17
Реакции
0 0 0
#18
[quote author=doter.ua link=topic=74.msg385#msg385 date=1412523683]
По-моему речь шла про кастомные модификаторы. Волчьи ауры - стандартные:
modifier_alpha_wolf_command_aura
modifier_alpha_wolf_command_aura_bonus
modifier_alpha_wolf_critical_strike
источник https://developer.valvesoftware.com/wiki/Dota_2_Workshop_Tools/Scripting/Built-In_Modifier_Names
[/quote]
речь шла об одном, а перешла на другое
 
Реклама: