есть стандартный трент и 1 скил у него это его инвиз, вопрос как заставить его ударить из инвиза. У меня он просто стоит и не реагирует ни на что!
пробовал дать ему еще один скил, думал выйдет из инвиза применив скил но нет) не хочет код 2-го скила
пробовал дать ему еще один скил, думал выйдет из инвиза применив скил но нет) не хочет код 2-го скила
Код:
function Spawn( entityKeyValues ) -- вызывается когда юнит появляется
if not IsServer() then -- если сервер не отвечает
return
end
if thisEntity == nil then -- если данного юнита не существует
return
end
TargetAbility = thisEntity:FindAbilityByName( "treant_leech_seed" )
thisEntity:SetContextThink( "treantthink", treantthink, 1 ) -- поведение юнита каждую секунду
end
function treantthink()
if ( not thisEntity:IsAlive() ) then --если юнит мертв
return -1
end
if GameRules:IsGamePaused() == true then --если игра приостановлена
return 1
end
local enemies = FindUnitsInRadius(
thisEntity:GetTeamNumber(), --команда юнита
thisEntity:GetOrigin(), --местоположение юнита
nil, --айди юнита (необязательно)
500, --радиус поиска
DOTA_UNIT_TARGET_TEAM_ENEMY, -- юнитов чьей команды ищем вражеской/дружественной
DOTA_UNIT_TARGET_HERO, --юнитов какого типа ищем
DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES + DOTA_UNIT_TARGET_FLAG_NO_INVIS, --поиск по флагам
FIND_CLOSEST, --сортировка от ближнего к дальнему или от дальнего к ближнему
false )
if #enemies > 0 then -- если количество найденных юнитов больше нуля
if TargetAbility ~= nil and TargetAbility:IsFullyCastable() then --если абилка существует и её можно использовать
for i=1, #enemies do
if enemies[i]:GetHealth() < (enemies[i]:GetMaxHealth() * 0.35 ) then
TargetAbilityCast( enemies[i])
end
end
end
end
return 0.5
end
function TargetAbilityCast( enemy )
ExecuteOrderFromTable({
UnitIndex = thisEntity:entindex(), --индекс кастера
OrderType = DOTA_UNIT_ORDER_CAST_TARGET, -- тип приказа
AbilityIndex = TargetAbility:entindex(), -- индекс способности
TargetIndex = enemy:entindex(),
Queue = false,
})
return 1.5
end
function FindItemAbility( hCaster, szItemName ) --необходимая утилита , без нее не будет работать функция FindItemAbility
for i = 0, 5 do
local item = hCaster:GetItemInSlot( i )
if item then
if item:GetAbilityName() == szItemName then
return item
end
end
end
end