Простые вопросы

Статус
В этой теме нельзя размещать новые ответы.
Кто знает как сделать так что бы предмет можно было использовать через ctrl при этом AbilityBehavior - DOTA_ABILITY_BEHAVIOR_NO_TARGET как ботл
 
Кто знает как сделать так что бы предмет можно было использовать через ctrl при этом AbilityBehavior - DOTA_ABILITY_BEHAVIOR_NO_TARGET как ботл
Нужно добавить DOTA_ABILITY_BEHAVIOR_OPTIONAL_UNIT_TARGET, но видимо нужно добавить ещё что-то ибо у меня не работает.
 
Последнее редактирование модератором:
den4iccc, делаешь айтем на луа и прописываешь там getbehavior if altckicked(там есть функция на проверку альта) зен ретурн таргет
 
Есть вопрос насчёт ООП. Я понимаю что его в lua нет, но создать некое подобие функционалу ООП всё таки можно, так вот стоит ли использовать концепцию инкапсуляции в lua и сильно ли она может отразиться на функциональности кода?
 
Нужно добавить DOTA_ABILITY_BEHAVIOR_OPTIONAL_UNIT_TARGET, но видимо нужно добавить ещё что-то ибо у меня не работает.
Кстати я вчера этот DOTA_ABILITY_BEHAVIOR_OPTIONAL_UNIT_TARGET чекал, требует AbilityUnitTargetTeam и AbilityUnitTargetType он определяет по типам, но не может скастовать, потом добавил для профилактики "SpendCharge" {}, по сути должно было сработать но эффект тот же
 
Последнее редактирование модератором:
"ActOnTargets"
{
"Target"
{
"Center" "CASTER"
"Radius" "GLOBAL"
"Teams" "DOTA_UNIT_TARGET_TEAM_FRIENDLY"
"Types" "DOTA_UNIT_TARGET_ALL"
}
}
На всех работает , а на мишку призванного лоно друда не работает !
 
Последнее редактирование модератором:
Может в DOTA_UNIT_TARGET_ALL не входят DOTA_UNIT_TARGET_HERO ?
Попробуй
Код:
"Types"  "DOTA_UNIT_TARGET_ALL | DOTA_UNIT_TARGET_HERO"
 
Последнее редактирование модератором:
Код:
local centaur_caster= nil
local centaur_const = 0
local centaur_ability =nil

function centaur_buff(keys)
	Say(nil,"centaur_buff works !!!" , false)
	centaur_caster=keys.caster
	centaur_ability= centaur_caster:FindAbilityByName("inherit_centaur_buff")
	centaur_const=1
	
end

function Spawn:OnNPCSpawned(keys)
	if centaur_const==1 then Say(nil,"Spawn:OnNPCSpawned works !!!" , false) end 	
	local npc = EntIndexToHScript(keys.entindex)
	if npc:GetUnitName() == "npc_dota_dire1" and centaur_const==1 
		then 			centaur_ability:ApplyDataDrivenModifier(centaur_caster, unit, "modifer_buff", {}) end
	
end
В чем косяк ?
Функция function centaur_buff работает кошерно , а остальное нет !
 
Последнее редактирование модератором:
Почему ты скидываешь кусок кода, в котором только тело функции, без её вызова?
Скидывай всю цепочку.
 
LinkLuaModifier(...) достаточно один раз прописать в gamemode (в главном файле/корне) что бы использовать предназначенный модификатор в разных скриптах(отдельных файлах) или нужно в каждом файле прописывать LinkLuaModifier для обозначения именно в определённой функции (то есть прописывать LinkLuaModifier в каждом файле, где я использую этот модификатор)???
 
Код:
local centaur_caster = nil
local centaur_const = 0
local centaur_ability =nil

function centaur_buff(keys) // срабатывает при изучении скила
	Say(nil,"centaur_buff works !!!" , false)
	centaur_caster=keys.caster
	centaur_ability= centaur_caster:FindAbilityByName("inherit_centaur_buff")
	centaur_const=1
	
end

function Spawn:InitGameMode() 
	ListenToGameEvent("npc_spawned",Dynamic_Wrap( Spawn, 'OnNPCSpawned' ), self )
end

function Spawn:OnNPCSpawned(keys)
	if centaur_const==1 then Say(nil,"Spawn:OnNPCSpawned works !!!" , false) end 	
	local npc = EntIndexToHScript(keys.entindex)
	if npc:GetUnitName() == "npc_dota_dire1" and centaur_const==1 
		then centaur_ability:ApplyDataDrivenModifier(centaur_caster, unit, "modifer_buff", {}) end
	
end
Это мое представление специализации героя , когда каждое существо имеет определенный бафф.
 
Последнее редактирование модератором:
[quote author=Илья link=topic=849.msg10732#msg10732 date=1500979217]
Может в DOTA_UNIT_TARGET_ALL не входят DOTA_UNIT_TARGET_HERO ?
Попробуй
Код:
"Types"  "DOTA_UNIT_TARGET_ALL | DOTA_UNIT_TARGET_HERO"
[/quote]
Все работает , спасибо )
Нащел дублирование в коде ))
 
Последнее редактирование модератором:
vulkantsk, а не легче создать таблицу с именами юнитов, на которые нужно вешать тот или иной бафф и при спавне проверять есть ли имя этого юнита в таблице и вещать модификатор?
 
vulkantsk, к слову у тебя переменная одна на всех крипов
 
vulkantsk, и сделай просто пустышки модификаторов на луа и все, нахер эти датадрайвены в аддон гейммоде использовать
 
[quote author=I_GRIN_I link=topic=849.msg10739#msg10739 date=1501008990]
vulkantsk, а не легче создать таблицу с именами юнитов, на которые нужно вешать тот или иной бафф и при спавне проверять есть ли имя этого юнита в таблице и вещать модификатор?
[/quote]
Свою цель я описал тут.
По твоему твоя идея подойдет для этого ?
 
vulkantsk, вполне себе

Просто будешь проверку делать в фильтре каста есть ли модификатор кентавра/паука/человека/великого летающего макаронного монстра
 
Ты опять не скидываешь всю цепочку...

Вот где у тебя вызывается функция Spawn:InitGameMode() ? ? ?

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

Лично я не проверял, но по идеи можешь в одном файле прописать link, а в нужных других подключать его через require. Но по сути это то же самое, что и везде использовать link.

Лично я просто все ссылки на самодельные модификаторы объявляю в одном файле, а затем попросту везде, где надо, подключаю этот мой файл. Ну и иногда реализую функцию, что мне те или иные модификаторы дает. Такая система позволяет в будущем менять только этот файл, не меняя другие, если я вдруг решу изменить имя модификатора или еще что.
 
Последнее редактирование модератором:
Статус
В этой теме нельзя размещать новые ответы.
Реклама: