Можно ли оставить у юнита иконку незанятого работника, но включить автоатаку?

Принятый ответ

Fakov, разве что сделать систему, которая будет заставлять юнитов атаковать окружающих противников.
`
ОЖИДАНИЕ РЕКЛАМЫ...
2
32
6 лет назад
2
не получится
0
13
6 лет назад
0
Fakov, разве что сделать систему, которая будет заставлять юнитов атаковать окружающих противников.
Принятый ответ
0
8
6 лет назад
Отредактирован uranus
0
А дистанция получения приказа не то? Пока придумал только отвечать на событие "Юнит атакован" или когда в него скилл юзают враги.
1
13
6 лет назад
1
uranus, или же взять событие - "юнит вторгся в личное пространство" -> действие: отомстить супостату (ну, там заставить нападать или применить заклинание) ))
Дистанция получения приказа не сыграет роли, поскольку юнит не захочет кого-то атаковать, так как является рабочим (главное, ему поле зрение хорошее обеспечить, чтобы он хотя бы мог видеть противника в радиусе, на которых по триггеру будет нападать).
0
8
6 лет назад
0
Пушистый, хм, интересно, не использовал это событие.
0
32
6 лет назад
0
"юнит вторгся в личное пространство", а есть ли такое событие? рисовать регион каждые н секунд и ловит события "враг в регионе" или ещё чаще выбирать всех в радиусе от каждого работника, и если есть враги то нападать
0
8
6 лет назад
0
Bergi_Bear, на самом деле событие подобное было, только его можно вешать на конкретного юнита, а не использовать как общее для всех юнитов.
2
13
6 лет назад
2
Bergi_Bear, думал, пошутить, но ладно) В GUI есть событие: Unit Within Range (JASS: TriggerRegisterUnitInRange). Можно добавлять это событие на юнита-"рабочего", чтобы дать тому возможность ответить мимопроходящему противнику.
0
8
6 лет назад
0
Нашел я событие EVENT_UNIT_TARGET_IN_RANGE, но не могу понять, делаю ли я правильно.
void AutoAttack() {
    unit u = GetTriggerUnit();
    unit target = GetEventTargetUnit();
    int co = GetUnitCurrentOrder(u);
    if (co == null || co == order_stop) {
        IssuePointOrder(u,"attack",GetUnitX(target),GetUnitY(target));
    }
    u=null; target=null;
}
Вообще не понимаю, как это событие работает, добавлял дебаги вида
BJDebugMsg(GetUnitName(u) + " - " + GetUnitName(target));
Но иногда выводит так, будто u и target - один юнит
Чтобы оставить комментарий, пожалуйста, войдите на сайт.