CustomGames.ru - Dota 2 пользовательские игры

Атака союзника по таргету [РЕШЕНО]

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн den4iccc

  • Продвинутый
  • 400
  • Мощь: 7
Есть концепция скилла агр врагов как у акса(переделал в таргет), только хочу чтобы при использовании на вражеского героя скилла, вражеский герой начинал бить своих союзников в опред. радиусе, как мне записать, нужно ли делать кастомную тиму и перекидывать героев на время в кастомную тиму там их бить потом) или как то можно это реализовать :?
Спойлер
Код
function BerserkersCall( keys )
local caster = keys.caster
local target = keys.target

target:SetForceAttackTarget(nil)

if caster:IsAlive() then
local order =
{
UnitIndex = target:entindex(),
OrderType = DOTA_UNIT_ORDER_ATTACK_TARGET,
TargetIndex = caster:entindex()
}

ExecuteOrderFromTable(order)
else
target:Stop()
end

local units = FindUnitsInRadius( caster:GetTeam(), caster:GetOrigin(), nil, 99999, DOTA_UNIT_TARGET_TEAM_FRIENDLY, DOTA_UNIT_TARGET_HERO, DOTA_UNIT_TARGET_FLAG_NOT_CREEP_HERO, FIND_FARTHEST, false )
for _,unit in pairs(units) do
if unit:IsHero() == true then
target:SetForceAttackTarget(unit)
end
end

end

function BerserkersCallEnd(keys)
local target = keys.target

target:SetForceAttackTarget(nil)
end
[свернуть]
« Последнее редактирование: 26-10-2017, 15:41:47 от den4iccc »

Оффлайн den4iccc

  • Продвинутый
  • 400
  • Мощь: 7
Re: Атака союзника по таргету
« Ответ #1 : 22-10-2017, 14:14:06 »
Как мне заставить вражеского героя бить принуждённо своих союзников :) ?

Оффлайн I_Explorer

  • Продвинутый
  • 234
  • Мощь: 4
Re: Атака союзника по таргету
« Ответ #2 : 22-10-2017, 18:38:45 »
Если ты уже можешь сагрить юнита на другого юнита то просто дай юниту которого нужно бить модификатор позволяющий денаить (Такой в "зомби в деревне" например есть) p.s. сори все запятые растерял( ,,,,,,.,,,,
Мой недо-мод для ДотА2 - steamcommunity.com/...ils/?id=765024602

Оффлайн den4iccc

  • Продвинутый
  • 400
  • Мощь: 7
Re: Атака союзника по таргету
« Ответ #3 : 25-10-2017, 21:22:06 »
Лол, забыл отписать что сделал через модификатор с state - deniable

Оффлайн den4iccc

  • Продвинутый
  • 400
  • Мощь: 7
Re: Атака союзника по таргету
« Ответ #4 : 25-10-2017, 22:30:31 »
Кстати может кто подсказать как выбрать 1 юнита из списка а то получается если через FindUnitsInRadius я ищю героя, определяю тиму, вектор и т.д после этого пишу оредер на DOTA_UNIT_ORDER_ATTACK_TARGET. Получается так если есть на герое модификатор который всё это чекает происходит поиск игрока и если рядом есть несколько героев он будет бежать из одной стороны в другую для совершения SetForceAttackTarget и каждую секунду меняет выбор на другого игрока, но мне надо чтобы он выбирал одного героя и только на него это использовал

Спойлер
Код
local units = FindUnitsInRadius(....)
for _,unit in pairs(units) do
...
target:SetForceAttackTarget(unit)
end
[свернуть]
« Последнее редактирование: 25-10-2017, 22:34:27 от den4iccc »

Оффлайн I_GRIN_I

  • Продвинутый
  • 636
  • Мощь: 11
  • Научиться бы скриптить...
Re: Атака союзника по таргету
« Ответ #5 : 26-10-2017, 06:07:18 »
den4iccc, юзай форсатак на unit[1], тогда юнит всегда будет первым, либо, если все равно меняться будет ищи юнита по флагу ближний и записывай в переменную target, пока этот юнит не умрет

Оффлайн den4iccc

  • Продвинутый
  • 400
  • Мощь: 7
Re: Атака союзника по таргету
« Ответ #6 : 26-10-2017, 14:43:08 »
порядковый номер unit[1] не пашет почему то игрок просто на месте стоит, а по флагу прописываю за место FIND_FARTHEST на FIND_CLOSEST(от ближнего до дальнего) также пробовал для всех ордеров никаких реакций и пробовал просто обнулять тож самое
« Последнее редактирование: 26-10-2017, 15:16:49 от den4iccc »

Оффлайн den4iccc

  • Продвинутый
  • 400
  • Мощь: 7
Re: Атака союзника по таргету
« Ответ #7 : 26-10-2017, 15:41:19 »
Лол, я кароч забыл что когда тестил убрать OnIntervalThink и заменить на обычный ран по этому у меня юнит каждый раз перераспределял таргет