Собственно - возможно ли отследить незанятого работника?
Тоесть, я хочу сделать так, чтоб каждого незанятого работника подсвечивало сверху восклицательным знаком (модель talktome)
Думаю вешать баф с анимацией этой модели на афк работника.
Возможно ли как-то отловить это?
Либо если есть идея как можно это оформить подругому, жду предложения.

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

Вообщем решение как обозначить незанятого раба простое пока не пришло(
Делаем способность А на основе Atol. Если не JNGP, то на основе Asph. Способности даём нужный эффект.
Далее делаем триггер.
Событие: каждые 0.25 секунд игры
Действия
Установить Workers = Юниты на Вся карта типа Работник.
Выбрать всех юнитов в Workers и для каждого делать
    Custom script: if GetUnitCurrentOrder(GetEnumUnit()) == 0 then
    Добавить способность А Выбранному юниту.
    Custom script: else
    Удалить способность А у Выбранного юнита.
    Custom script: endif
Custom script: call DestroyGroup(udg_Workers)

А вот и карта.
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
24
4 года назад
0
nvc123, мне казалось что stop отдается автоматически в любом случае, но, конечно, могу ошибаться, давно последний раз с этим работал.
0
9
4 года назад
0
Obelick:
Можно выбирать всех работников на карте и если их текущий приказ = null то значит работник стоит афк.
Тригер с проверкой переодичностью каждую 1 сек?
Не не пойдет, большая нагрузка на карту. либо я тебя не правильно понял.
прикрепи пример тригера что имеешь ввиду.
нужно что-то типа:
событие - воин отдал приказ стоп
условие - воин=работник (у меня они самоубийцы в по)
действие - повесить баф или добавить способность с бафом.
иначе - удалить баф/способность.
как-то так...

Steal nerves:
читал, что в новых патчах добавили boolean-проверку на бездействие. но это может быть не точно
1.26 нужен. новые версии кривее всего кривого((((
0
16
4 года назад
0
без мемхака?
0
27
4 года назад
0
Obelick, это тоже не всегда помогает к сожалению. как сказал nvc123
1
28
4 года назад
1
Достаточно просто отслеживать, что текущий приказ 0.

Не не пойдет, большая нагрузка на карту.
Совсем не большая нагрузка. В лазурных башнях период меньше, а лагов нет.
0
30
4 года назад
0
Попробуй ForceUIKey("`") (ну или какой там хоткей на выбор незанятых рабочих)

В лазурных башнях период меньше, а лагов нет.
В лазурных башнях максимум 5 рабочих на игрока
1
28
4 года назад
Отредактирован PT153
1
Steal nerves, это как раз-таки поможет, если приказ 0, то юнит ничего не делает.

В лазурных башнях максимум 5 рабочих на игрока
А причём тут рабочие? Любой игрок может построит 100500 финальных башен, для которых и делается цикл 4 раза в секунду.

В любом случае нагрузка никчёмная.
0
30
4 года назад
0
Подробнее опишу свою идею: запоминаем выделение игрока, после чего форсим выбор незанятых рабочих в цикле, добавляя их в исходно пустую группу. Когда выделится рабочий, уже находящийся в группе, считаем группу полной и всем рабочим без "!" вешаем "!", после чего выделяем тех юнитов, которые были выделены игроком.

Не уверен, что оно сработает, но сомнение есть только в том, можно ли зафорсить не буквенную клавишу, в остальном метод сработает 100%
3
28
4 года назад
Отредактирован PT153
3
Не виду смысла городить костыли через выделение, ибо приказы могут отдаваться триггерно. Достаточно просто 4 раза в секунду у всех рабочих смотреть приказ. Нагрузки на карту не будет. И вообще, с чего бы её быть? Откуда это убеждение, что периодические события или таймеры - плохо?

Выбираем всех рабочих.
Для всех рабочих проверяем приказ. Если он 0, удаляем рабочего из группы.
На выходе имеем группу незанятых рабочих.

Делал похожее тут. Там карта, где 4 раза в секунду отображаются приказы юнита. Когда юнит ничего не делает, приказ 0.
0
27
4 года назад
Отредактирован MpW
0
PT153, ну ладно. если работает. просто это мб не всегда так, я просто уже не помню. Но когда то Диод говорил что не работает. Например, у вас стоит рабочий, его атаковал враг, рабочий естественно убежит от него. Но приказ то он не имеет вообще, тк не получал приказа от игрока вроде. Там надо тогда проверять не сдвинулся. Но и еще много других случаев. Пардон, мы говорим не про бездействие юнита, а про занятость. хотя это почти одно и тоже
4
28
4 года назад
Отредактирован PT153
4
Но когда то Диод говорил что не работает.
Старички XGM много чего говорили, вот только это было лет 10 назад, за 10 лет вещи изменились. Близы не всегда пишут все изменения. Порой это просто невозможно.
Например, у вас стоит рабочий, его атаковал враг, рабочий естественно убежит от него.
Способ Clamp данный случай не хендлит как раз. При этом убегающий рабочий не является незанятым.
Но приказ то он не имеет вообще, тк не получал приказа от игрока вроде.
Но он имеет приказ. Пруф.
Поэтому способ с проверкой приказа на 0 вполне рабочий.
Загруженные файлы
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.