ghostintheshell
offline
Опыт:
271Активность: |
Получить цель приказа юнита
Как можно получить цель приказа юнита не из события юнит получил приказ? |
17.06.2014, 17:11 | #1
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,598Активность: |
ghostintheshell, ну проверить на текущий приказ... А чем вас триггер не устравивает, самый простой вариант... |
17.06.2014, 17:27 | #2
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Tobi123
offline
Опыт:
7,826Активность: |
GetUnitCurrentOrder |
17.06.2014, 18:17 | #3
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ghostintheshell
offline
Опыт:
271Активность: |
мне нужно после смерти юнита узнать куда он шёл |
17.06.2014, 21:50 | #4
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Obelick
offline
Опыт:
25,931Активность: |
ghostintheshell, наверное, извращенный вариант. 2 переменных: точка и логическая. Когда приказ отдан - записываешь точку приказа в переменную и ставишь болеан=да. Так же, при каждом новом приказе сначала обнуляешь точку и болеан, а потом заносишь новое значение. И если юнит умирает, а логическая=да, то твои действия. |
17.06.2014, 22:44 | #5
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ghostintheshell
offline
Опыт:
271Активность: |
но у меня армия таких, мне 2 массива делать? |
17.06.2014, 23:01 | #6
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Obelick
offline
Опыт:
25,931Активность: |
ghostintheshell, получается, что да |
18.06.2014, 00:01 | #7
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ghostintheshell
offline
Опыт:
271Активность: |
сплошные разочарования в WE |
18.06.2014, 00:15 | #8
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Obelick
offline
Опыт:
25,931Активность: |
ghostintheshell, это еще не разочарования. |
18.06.2014, 00:19 | #9
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Кет
offline
Опыт:
111,234Активность: |
ghostintheshell, можно через хеш-таблицу сделать. То же самое, только записывать не в переменную, а в хеш-таблицу по ключу — HandleID юнита. Соответственно, и узнать значение при необходимости проще. |
24.06.2014, 04:18 | #10
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,184Активность: |
гугл + ассоциативный массив
вообще печально это всё, навык необходимый для понимания как это сделать вообще со школы идёт, когда дневник заполняете, там каждому слоту соответствует название предмета и задание. |
24.06.2014, 16:27 | #11
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
ну так и есть, если бы было иначе, то это уже система трекинга юнитов, да и то разработчик бы додумался удалить трекер юнита после его смерти, так что мала вероятность, что такая система есть в других редакторах
ScorpioT1000 добавил: по сути решение - это периодически записывать данные о координатах юнитов в циклический стек (например, за последние 32 секунды) тем самым можно будет получить историю передвижения любого юнита за 32 секунды |
24.06.2014, 17:18 | #12
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,184Активность: |
системы более высокого уровня используют фиксированной длины массив который может расти, но никогда не уменьшается, например хештаблицы явы только растут, если все переменные удалить, выделенный массив никуда не девается.
соответственно юниты и данные о них могут висеть в массиве после их смерти до тех пор, пока этот слот массива не будет использован по второму кругу, а время которое слот всё еще занят можно подогнать под свои нужды.
лично у меня система держала чанки по 256 юнитов, если юнит умер, его слот не будет использован до тех пор, пока 256 других юнитов не будет "создано", а это может занять достаточно длительное время, в той же доте 30 юнитов в минуту не считая всяких сумонов, но всё равно 256 в минуту не получится. |
25.06.2014, 10:30 | #13
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
можно еще записывать как хештейбл
таймстамп: координаты тогда можно будет восстановить именно историю со всеми задержками между движениями а воспроизводить - так вообще с помощью сплайна безье или эрмита для пущей красоты (ведь пишется оно дискретно и реже, чем частота рендеринга)
» вот даже гдето я реализовывал
!
кстати вот есть даже интересный таск - нам нужно узнать, где была координата в точке времени, которой нету в исходной таблице допустим у нас есть массив вида
как написать такой алгоритм, который за быстрое время найдет координаты в таймстампе 5, без полного (и без полного в худшем случае) перебора, со сглаживанием (по тому же безье, но это не важно, суть задачи в поиске нужных соседних ключей)
» мой солюшен
мы загоняем таймстампы в бинарное дерево и нужный нам таймстамп вставляем в это дерево, ищем соседние узлы, удаляем искомый таймстамп, считаем, от 0 до 1, в какой доле между ними он лежит (в нашем случае 5 лежит между 3 и 6 = 0.66), вычисляем безье от координат найденных двух записей по доле 0.66 Отредактировано ScorpioT1000, 25.06.2014 в 17:34. |
||||||||||||||||||||
25.06.2014, 17:21 | #14
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|