Отследить добычу ресурсов
Собсно, - как? Пробовал через проверку каста самой способности добычи, всячески через айди приказов и т.д., но всё без толку.

Лучший ответ:
Урон по дереву можно отследить с помощью хеша и дерева с 1 хп. Каждому дереву на карте поставить в соответствие n единиц жизней. При смерти дерева проигрывать анимацию получения урона и немедленно возрождать, загружать их хеша значение хп, перезаписывать его и сохранять.
Чтоб проверить что урон нанёс именно рабочий - нужно проверять наличие юнитов определённого типа вокруг дерева с соответствующим приказом, цель которого - это дерево. Для отлова цели приказа также юзается система на всё том же хеше. Нужна бд всем абилкам лесорубов.
Насчёт золота сказать трудно. Нужно посмотреть какие есть состояния юнита и какие из них связаны с пребыванием в руднике, приказы и прочее. Подозреваю что юниты вроде рабочих альянса покидают карту когда заходят в рудник. Но это нужно тестить и костылить. Чистого способа нету.


Views: 1 270

Themis #1 - 5 years ago 0
Голосов: +0 / -0
У разных способов добычи разные наборы возможных приказов. Ставь сниффер на добытчика.
autoharvestgold = 852021 autoharvestlumber = 852022 (не ловятся, но мало ли)
harvest = 852018 resumeharvesting=852017 returnresources=852020
smart = 851971 move=851986(пока у пеона такой приказ, невозможно определить, что он делает)
AImove=851988(бывает, когда пеон в числе атакующих, как вурдалак)
Если у пеона бывает 851971 и 851986, то придется потратиться на массив юнитов и событие с периодом. 852018, 852017, 852020 - занести в массив. Не 852018, 852017, 852020, 852021, 852022, 851971, 851986, 851988, - вычеркнуть.
Ancient #2 - 5 years ago 2
Голосов: +2 / -0
Давай начнем с начала. Для чего тебе это отслеживать? Чего ты хочешь этим добиться?
Sozidar #3 - 5 years ago 0
Голосов: +0 / -0
Themis, Айди приказов пробовал.
Ancient, Надо это для того, чтобы остановить добычу. Вообще как бы я уже разобрался и сделал костыль небольшой, но хотелось бы узнать на будущее как же все же отследить это.
Есть 2 вида дерева > каждый рабочий может добывать соответственное. Весь смысл.
Ancient #4 - 5 years ago 0
Голосов: +0 / -0
С деревом все просто, отслеживай урон по нему. Если рабочий - значит добыча и делаем что нам надо с этим рабом.
С золотом еще проще. Есть событие на выход рабочего из золотой шахты.
Sozidar #5 - 5 years ago 0
Голосов: +0 / -0
Ancient, желательно всё-таки отследить момент ДО того, как рабочий ударит по дереву или зайдет в рудник.
naxim #6 - 5 years ago 0
Голосов: +0 / -0
Ancient:
С деревом все просто, отслеживай урон по нему. Если рабочий - значит добыча и делаем что нам надо с этим рабом.
С золотом еще проще. Есть событие на выход рабочего из золотой шахты.
Как отследить урон по дереву? Как определить, что нанёс урон именно рабочий? Какое событие на выход рабочего на золотой шахты?
Raised #7 - 5 years ago 0
Голосов: +0 / -0

Урон по дереву можно отследить с помощью хеша и дерева с 1 хп. Каждому дереву на карте поставить в соответствие n единиц жизней. При смерти дерева проигрывать анимацию получения урона и немедленно возрождать, загружать их хеша значение хп, перезаписывать его и сохранять.
Чтоб проверить что урон нанёс именно рабочий - нужно проверять наличие юнитов определённого типа вокруг дерева с соответствующим приказом, цель которого - это дерево. Для отлова цели приказа также юзается система на всё том же хеше. Нужна бд всем абилкам лесорубов.
Насчёт золота сказать трудно. Нужно посмотреть какие есть состояния юнита и какие из них связаны с пребыванием в руднике, приказы и прочее. Подозреваю что юниты вроде рабочих альянса покидают карту когда заходят в рудник. Но это нужно тестить и костылить. Чистого способа нету.