Как отловить цель приказа?
Скажем, у меня есть массив юнитов, каждый отдаёт случайный приказ со случайной целью.
При этом я хочу проверять каждые N секунд тип приказа (это легко, нужно сравнить GetUnitCurrentOrder() с тем, что я хочу. Но как отследить цель этого CurrentOrder? В нативках, насколько я прошарил, есть только GetOrderTarget{Unit/Item/Point}(), но эти функции откликаются на IssuedOrder, то есть на событие отдания приказа.
Но не на текущий приказ.

Записываешь в хеш за хендлом юнита отдавшего приказ стрингайди или интеджерайди этого приказа. Нужно настроить систему чтобы 100% записывала любой приказ любого юнита. Когда нужно узнать приказ - выгружаешь стрингайди или интержерайди за хендлом этого юнита. Это ответ на вопрос в шапке.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
16
DemonoiD, вот то-то и оно.
Там не только предметы. Там точки и юниты. А писать столько кода... Нет уж. Должно быть простое решение.
16
Raised, ну так. На уровне продвинутого новичка, но зашарить смогу, думаю. Есть дельная мысль?
21
Записываешь в хеш за хендлом юнита отдавшего приказ стрингайди или интеджерайди этого приказа. Нужно настроить систему чтобы 100% записывала любой приказ любого юнита. Когда нужно узнать приказ - выгружаешь стрингайди или интержерайди за хендлом этого юнита. Это ответ на вопрос в шапке.
Принятый ответ
16
Raised, хе, вот и DemonoiD настаивает на таком подходе. Я его понимаю, но вот написать -- нужно время.
Я попробую разобраться с БД и хэш-таблицами.
Но уже, видимо, не сегодня.
Когда получится -- отпишусь.
27
заметил, что не всегда ловит приказы IssuedOrder. Например, что вот отдал приказ продать в магазин, мне приказ IssuedOrder не выдаст.
А вот GetUnitCurrentOrder() выдает order_dropitem = 852001, когда юнит бежит к магазину, чтобы продать. Это как пример. Не надежный, надо еще проверять и координаты. Это что, таймером перебирать собрались группу?
21
Самое забавное что расписывать шаги бессмысленно. Потому что проще уже написать сам алгоритм.

Это что, таймером перебирать собрались группу?
Похоже на то. Есть подозрения что что-то он не так написал, но лень переспрашивать. Ятп., в массив предмет добавляется для того чтоб пока за этим предметом следуют на него не переключались другие юниты?
27
-> в массив предмет добавляется для того чтоб пока за этим предметом следуют на него не переключались другие юниты?
  • ну пометку boolean добавляют по handle item (когда перебираешь ближайшим итем, надо проверять и метки). когда на карте 10 артефактов, а все стадо идет за одним ^_^
  • еще можно ссылку в виде item по handle unit, если юнит сдохнет получит или другой приказ, метку с итема можно смело удалять.
  • периодически проверяем, что мобы не стоят
  • если триггером добавляется на карте итем, в группе циклом перебираем и ищем ближайших итемов. заново ищем. это если вдруг бежит раб, и внезапно перед носом появляется, а он бежит дальше
16
Steal nerves, я не использую ишшед ордер.
Raised, ща, короче. Если получится -- напишу...
22
а не проше каждый юнит иметь структура массива таргетов, если его таргет предмет тыкаеш и получаеш id стуктура а потом узнаем чей его владелец таргета в хеше что позволяет многомерные цепочки предметов
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.