Базовые и временные деревья.

20 Дек 2016
892
170
Допустим, я хочу сделать Quelling Blade, чтобы тот мог ломать деревья. Тут возникает проблема: существует два типа деревьев.
1)Объекты класса CDOTA_MapTree - деревья, которые есть с самого начала игры и вырастают через некоторое время после их ломки. Буду называть их базовыми (хз как их называют нормальные люди)
2)Временные деревья, которые создаются методом CreateTempTree, например Iron Branch.

Так вот временные не являются представителями CDOTA_MapTree, а потому не имеют метода CutDown. Единственный способ убрать такое дерево раньше срока (помимо DestroyTreesAroundPoint), который я нашел - через Kill. Но если прописать килл для базового дерева, тоже ничего хорошего не получится. Значит мне нужно уметь отличать базовое дерево от временного.
Собственно, вопрос: Как отличить базовое дерево от временного? Или может быть есть метод, нормально срезающий как базовое, так и временное дерево?
 
Последнее редактирование модератором:
Я уже всё подзабыл но можно банально if tree.CutDown then tree:CutDown() else tree:Kill() end
 
Если не поможет, то можешь через GridNav попробовать: например брать координаты местоположения цели (target, ну или курсора, в зависимости от твоей абилки) и через IsNearbyTree() проверять на принадлежность дереву.
 
[quote author=Илья link=topic=1429.msg9164#msg9164 date=1492932532]
Если не поможет, то можешь через GridNav попробовать: например брать координаты местоположения цели (target, ну или курсора, в зависимости от твоей абилки) и через IsNearbyTree() проверять на принадлежность дереву.
[/quote]
Разве IsNearbyTree() возвращает тру не для любого дерева? (Первый способ сработал, за что спасибо MahouShoujo, но просто интересно, как еще это можно сделать.)
 
Так тебе же нужно просто дерево срезать, вот и заюзаешь на него DestroyTreesAroundPoint, о котором сам и говорил.
 
Так тебе же нужно просто дерево срезать, вот и заюзаешь на него DestroyTreesAroundPoint, о котором сам и говорил.
Я хотел так делать в самом начале, но Iron Branch можно всадить куда угодно, например прям в другое дерево. Тогда если сломать его с помощью DestroyTreesAroundPoint, то сломается еще и дерево, которое находится рядом. А мне хочется ломать по одному за каст.
 
Последнее редактирование модератором:
Да там по любому какими-нибудь огородами можно вычислить конкретное дерево. Над ток сидеть и экспериментировать с API.
 
Реклама: