Собственно - возможно ли отследить незанятого работника?
Тоесть, я хочу сделать так, чтоб каждого незанятого работника подсвечивало сверху восклицательным знаком (модель 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)

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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
4
28
4 года назад
Отредактирован PT153
4
Но когда то Диод говорил что не работает.
Старички XGM много чего говорили, вот только это было лет 10 назад, за 10 лет вещи изменились. Близы не всегда пишут все изменения. Порой это просто невозможно.
Например, у вас стоит рабочий, его атаковал враг, рабочий естественно убежит от него.
Способ Clamp данный случай не хендлит как раз. При этом убегающий рабочий не является незанятым.
Но приказ то он не имеет вообще, тк не получал приказа от игрока вроде.
Но он имеет приказ. Пруф.
Поэтому способ с проверкой приказа на 0 вполне рабочий.
Загруженные файлы
1
16
4 года назад
1
Приказа при автоатаке, убегании - нет. Он пустой.
1
30
4 года назад
1
Способ Clamp данный случай не хендлит как раз.
Лол, описанный мной вариант тупо выделяет всех рабочих, которые находятся под кнопкой "свободные рабочие", я хз о чём ты. Убегающий рабочий не является незанятым, он занят убеганием (твой кэп).
0
28
4 года назад
Отредактирован PT153
0
убегании - нет
Есть, приказ "move", карта выложена выше. Для автоатаки не смотрел, ибо речь о рабочих.

Clamp, я изначально не понял, что имелось в виду. Да и сейчас не совсем ясно, с какой периодичностью происходит перебор всех незанятых рабочих. Если это делается единожды и далее занятость снимается и восстанавливается только на отслеживании выделения юнитов, то, как и сказал, такой способ не хендлит случай убегания: рабочий был свободен в момент форса, но после стал убегать, при это игрок им не управлял. Если есть периодичность, то проще просто проверять текущий приказ.

Вроде понял, периодичность должна быть. Но не думаю, что можно вызывать ForceUIKey в цикле без пауз между вызовами.
0
9
4 года назад
0
PT153:
убегании - нет
Есть, приказ "move", карта выложена выше. Для автоатаки не смотрел, ибо речь о рабочих.

Clamp, я изначально не понял, что имелось в виду. Да и сейчас не совсем ясно, с какой периодичностью происходит перебор всех незанятых рабочих. Если это делается единожды и далее занятость снимается и восстанавливается только на отслеживании выделения юнитов, то, как и сказал, такой способ не хендлит случай убегания: рабочий был свободен в момент форса, но после стал убегать, при это игрок им не управлял. Если есть периодичность, то проще просто проверять текущий приказ.

Вроде понял, периодичность должна быть. Но не думаю, что можно вызывать ForceUIKey в цикле без пауз между вызовами.
Ваши рассуждения и пруфы, конечно очень интересны и познавательны. Много нового для себя узнал.
Только вот мне не важно будет ли работник убегать или что-то еще. Мне важно будет ли он стоять афк без работы.
И как без переодичности и выборки на него набросить эффект анимации.
Желательно простым способом.
Я думал над способностью "выбрать воина" или "продать предмет/общие магазины"(магазин). Давать ее глобально по карте если приказ работника =0 (афк). Но она не выбирает работников, только героев или воинов с рюкзаком.
Так же думал про способность "спрятаться", типа приказ стоп набрасывает невидимость, а вместо этого вешать анимку (восклицательного знака), но опять же, как тогда убрать невидимость с воина (без проверки и переодичности)...
Вообщем решение как обозначить незанятого раба простое пока не пришло(
3
28
4 года назад
Отредактирован PT153
3
Вообщем решение как обозначить незанятого раба простое пока не пришло(
Делаем способность А на основе 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
28
4 года назад
0
Автор жив?
0
23
4 года назад
0
PT153, сбежал от вас =)
0
9
4 года назад
0
PT153:
Автор жив?
Жив к сожалению.
По сабжу, твой вариант работает, спасибо!
Но мне он не подходит, я говорил что тригер с переодичностью не пойдет по ряду причин. Например потому, что у меня 2 тригера с переодичностью уже вшиты в карту. Третий даст нагрузку. 12 игроков - три тригера, на них по 20-30 рабочих... Вообщем, такое.
МОжет кто предложит что попроще, или сам придумаю решение.
0
23
4 года назад
0
а зачем тут таймер если вы ловите события приказ цели а дейсвия паузить стоп снять паузу и как будето ничего не происходит
0
9
4 года назад
0
его
как бы каждые 0.25 сек. подсчет новой группы рабочих или ты о чем?
если есть вариант предложи\покажи
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.