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

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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
16
DemonoiD
А что если проверять углы? Углы и приказы. По идее, если на карте нет препятствий, юниты будут идти напрямую к точке приказа.
19
Naadir, да. Но если юниты выстроены в линию? То что ты называешь костылем - более точную инфу даёт, чем твоя идея.
16
DemonoiD, я пытаюсь писать умных крестьян, подбирающих предметы. Но при смене приказа в такой матрице предмет всё равно останется. Если же удалять их динамично, то будут возникать баги.
19
Naadir, нет, если обнулять при подборе, выставляя в матрицу null значения. Или только для неперемещаемых объектов использовать координаты х,у предмета-приказа. Тогда ты поймешь, что он бежит к предмету.
И чтобы посчитать кол-во крестьян на куст, нужно перебрать весь массив крестьян с х,у = х,у предмета. При смерти крестьянина обнуляя естественно переменную.
16
DemonoiD, если миньон меняет цель, т.е. бежал сначала к одному объекту, а затем к другому, то они оба запишутся в матрицу. А подтереть первый нельзя, т.к. не отлавливается смена приказа.
21
Записывай в хеш/массив текущий приказ юнита. Потом выгружай.
16

Вот ты, блин, тему прикольную поднял, а знания алгоритмики мне не хватает.
Raised, смотри. Ситуацию максимально подробно обясняю:
Есть юнит1 и юнит2.
Есть предмет1 и предмет2.
Юниты бегут к ближайшему для каждого предмету.
Пусть юнит1 бежит к предмету1, соответственно, предмет1 загружается в массив "затаргеченных". Но тут внезапно на его пути возникает предмет2, и юнит1 перетаргечивается на него, загружая предмет2 в массив "затаргеченных". Я хочу при этом удалить предмет1 из этого массива. Но не понимаю, как. Вероятно, ты подсказываешь мне пути, но я этого не понимаю. Пожалуйста, сформулируй ещё раз твоё решение.
19
Naadir, матрица это id юнита, цель. Одна строка на 1 юнита. Перезапишется с помощью БД, которую я скидывал тебе в вопросе с картой (id юнита это value unit). Будет проблема лишь в том, если приказ будет не на предмет, а куда-то ещё.
16
DemonoiD, вот то-то и оно.
Там не только предметы. Там точки и юниты. А писать столько кода... Нет уж. Должно быть простое решение.
16
Raised, ну так. На уровне продвинутого новичка, но зашарить смогу, думаю. Есть дельная мысль?
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.