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

HELP! Автоатака, всё должно быть просто, но нет...

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

Оффлайн Epselot

  • 34
  • Мощь: 0
TD карта.
Условно есть 2 башни, одну строит герой, другая это улучшение первого.
Первое строится через:
Код
"OnSpellStart"
{
"SpawnUnit"
{
"UnitName" "npc_dota_building_homebase"
"Target" "POINT"
}
}

С ним всё нормально, оно автоатакует врагов.

Второе строится через RunScript:

Код
function TowerUP(keys)

local tower = keys.caster
local caster = tower:GetOwnerEntity()
local ability = keys.ability
local tower_loc = tower:GetAbsOrigin()
local player_id = caster:GetPlayerID()

tower:Kill(ability, caster_up)

local caster_up = CreateUnitByName("npc_dota_building_homebase", tower_loc, false, caster, caster, caster:GetTeam())

caster_up:SetControllableByPlayer(player_id, true)

end

и вот тут начинаются проблемы, башня не хочет автоатаковать, перепробовал всё что смог найти. Просто нет.
При этом всё дело именно в том что башня создаётся таким образом. Если поменять башни местами то вторая станет атаковать а первая предпочтёт стоять как истукан, даже если её начинают бить.

Пробовал и через команду ReplaceUnit, тот же результат...

И вот тут уже в тупике, третий день пытаюсь с этим что то сделать, но нефига. Уже предположений нет в чём тут дело, что искать и как исправить... HELP!
« Последнее редактирование: 11-01-2017, 16:29:14 от Epselot »

Оффлайн Epselot

  • 34
  • Мощь: 0
Кажется понял. При создании юнита у него стоит команда stop, та что если выбрать юнита и нажать клавишу "s".
Теперь всё проще, доскажите что прописать, для снятия юнита с команды stop? Применить ту команду что на клавише "d" стоит?
« Последнее редактирование: 11-01-2017, 17:12:11 от Epselot »

Оффлайн CryDeS

  • Друзья CG
  • 1208
  • Мощь: 12
Кажется понял. При создании юнита у него стоит команда stop, та что если выбрать юнита и нажать клавишу "s".
Теперь всё проще, доскажите что прописать, для снятия юнита с команды stop? Применить ту команду что на клавише "d" стоит?
developer.valvesoftware.com/...romTable

Оффлайн Epselot

  • 34
  • Мощь: 0
developer.valvesoftware.com/...romTable

Разобрался с этой штукой, но она не фига не даёт в данном случае. Моя башня просто стоит с командой "stop", мне нужно отменить эту команду. Приказ атаковать в области, не даёт результата, наверное потому что здание не может двигаться.
Пробовал делать:
Код
ExecuteOrderFromTable({ UnitIndex = caster_up:GetEntityIndex(), OrderType = DOTA_UNIT_ORDER_ATTACK_TARGET, TargetIndex = caster:entindex()})
но тоже если герой при использовании не в зоне атаки, то команда "stop" не отменяется.

Какие ещё варианты есть?

Оффлайн Илья

  • Супермодератор
  • 2031
  • Мощь: 19
По любому есть способ включить атаку. Ну а пока его не найдешь, или еще кто тебе не найдет, можешь сделать абилку, что будет атаковать за башню (просто создаешь снаряд на месте башни и отправляешь в полет до найденного юнита, а по соприкосновению наносишь урон).

Оффлайн ZLOY

  • Супермодератор
  • 395
  • Мощь: 5
По любому есть способ включить атаку. Ну а пока его не найдешь, или еще кто тебе не найдет, можешь сделать абилку, что будет атаковать за башню (просто создаешь снаряд на месте башни и отправляешь в полет до найденного юнита, а по соприкосновению наносишь урон).
Не проще тогда просто искать юнитов в радиусе атаки башни и давать ей приказ атаковать?
PS: попробуй Interrupt()

Оффлайн Илья

  • Супермодератор
  • 2031
  • Мощь: 19
Не проще тогда просто искать юнитов в радиусе атаки башни и давать ей приказ атаковать?

Ну так он вроде бы так пробовал:

Цитировать
Приказ атаковать в области, не даёт результата, наверное потому что здание не может двигаться.

Оффлайн Epselot

  • 34
  • Мощь: 0
При применении любой способности команда "stop" отменяется, попробую сделать пустую способность которая скрыта от игрока и при создании юнита, юнит её применит, должно сработать, как то это неказисто конечно, но других идей пока нет...