Нужно что бы через способность можно было продавать уже обученного юнита, как на разных TD картах, по принципу (построил здание, потом когда уже оно не нужно продать за 70% от её стоимости)

Принятый ответ

Это просто гуглится. А ещё можно открыть близовскте карты и скопипастить оттуда.
Самый банальный способ.
В Редакторе Объектов ставишь своей башни Point Value равное стоимости башни. Даёшь башне способность Х на основе Channel (Канал).
А теперь триггер.
События:
	Юнит начинает применять способность.
Условия:
	Тип юнита равно Здание
	Применяемая способность равно Х
Действие:
	Add Integer(0.70 x (Real(Point Value of Casting Unit))) to (Owner of Casting Unit) Current Gold
	Удалить Casting Unit
Кто-нибудь, переведите части на английском на русский, я не пользуюсь русской версией редактора.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
28
6 лет назад
Отредактирован PT153
0
Это просто гуглится. А ещё можно открыть близовскте карты и скопипастить оттуда.
Самый банальный способ.
В Редакторе Объектов ставишь своей башни Point Value равное стоимости башни. Даёшь башне способность Х на основе Channel (Канал).
А теперь триггер.
События:
	Юнит начинает применять способность.
Условия:
	Тип юнита равно Здание
	Применяемая способность равно Х
Действие:
	Add Integer(0.70 x (Real(Point Value of Casting Unit))) to (Owner of Casting Unit) Current Gold
	Удалить Casting Unit
Кто-нибудь, переведите части на английском на русский, я не пользуюсь русской версией редактора.
Принятый ответ
2
27
6 лет назад
Отредактирован MpW
2
можно использовать в вашей карте в качестве базы данных какие-то неиспользуемые поля (например уровень юнита GetUnitLevel, опыт за убийство GetUnitPointValue/GetUnitPointValueByType). Используем канал. При продаже можешь проверять уровень, и давать точно такое же значение.

Еще есть Custom Value of Unit (GetUnitUserData) - но это значение нам не поможет, дело в том, что когда юнит создается в игре, у него это значение изначально равно 0. Вы не узнаете сколько. Ибо в ро кажется нельзя задать, только триггерах можно менять

Придется использовать бд - на каждый тип юнита забиваете значение.
На хэш-таблице легко делается, ибо достается по ключам.
Ключ = это целое число. Тип юнита = rawcode = целое число.
parentKey - родительский ключ
childKey - младший ключ
Действие - Сохранить в Хэше по старшему ключу (parentKey=тип юнита) по младшему ключу (childKey=0) целое число (указываем золото)
Действие - Сохранить в Хэше по старшему ключу (parentKey=тип юнита) по младшему ключу (childKey=1) целое число (указываем дерево)

Достаем точно также:
Загрузить из Хэша целое по старшему ключу (parentKey=тип юнита) по младшему ключу (childKey=0)
можно также
<переменная> = Загрузить из Хэша целое число по старшему ключу (parentKey=тип юнита) по младшему ключу (childKey=0)
можно проделать так с каждым типом юнита, при инициализации все это подсохраняется в хэш.

левым игроком попробовать через даймика построить здание где-нибудь в невидимом уголке, и проверять разницу между "было золота" и "стало золота". И удалить здание с дамми.

попробовать нейтральным игроком купить этого юнита. И проверять разницу.

рассеять здание 'Auns' - это типа продать здание. При рассеиваний наносится урон зданию (ловится дебагом это в качестве урона от лица кастера). Урон относится к типу атаки "Заклинание", не понижается защитой. Поле "шаг накопления" - здесь указывают урон. В поле "коэффициент стоимости спасения" - указывают процент от стоимости здания (дерево и золото, указанных в ро здания), типа возвращает какой-то процент затраченных ресурсов на создание здания. Время действия заклинания не указано, это значит, оно действует до сих пор, пока здание не уничтожится. Урон наносится каждую секунду.
Формула вычисления прибавленного ресурса за 1 секунду: Ресурс=Cost/(hp/damage)*p

использовать трансмутацию. За уничтожение юнита дает деньги за стоимость. Правда, целевая. но.. не точное. можно на сайте поискать про трансмутацию.
PT153,
Действие - Add Integer(0.70 x (Real(Point Value of Casting Unit))) to (Owner of Casting Unit) Current Gold
Добавить игроку к текущему значению золото
0
28
6 лет назад
0
Еще есть Custom Value of Unit (GetUnitUserData) - но это значение нам не поможет, дело в том, что когда юнит создается в игре, у него это значение изначально равно 0. Вы не узнаете сколько. Ибо в ро кажется нельзя задать, только триггерах можно менять
Когда здание построится, можно записать в Custom Value Point Value (где записана стоимость), а при улучшении добавлять к Custom Value стоимость улучшения. Так сделано в близовских тдшках.
По поводу бд. Бд лучше сделать на структурах, это описано тут.
0
21
6 лет назад
Отредактирован scopterectus
0
Есть же функции:
native GetUnitGoldCost        takes integer unitid                    returns integer
native GetUnitWoodCost        takes integer unitid                    returns integer
Правда нелbзя использовать на воинов, у которых равкод начинается с прописной буквы (на героев).
0
28
6 лет назад
0
ScopteRectuS:
Есть же функции:
native GetUnitGoldCost        takes integer unitid                    returns integer
native GetUnitWoodCost        takes integer unitid                    returns integer
Правда нелbзя использовать на воинов, у которых равкод начинается с прописной буквы (на героев).
Это функции из какого патча? Я говорил про 1.26.
2
21
6 лет назад
2
не знаю когда добавили, но в 1.26 есть. только для начала их нужно объявить, так как они из common.ai.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.