Возможно ли проверить завершенное ли какое-то здани ли еще строится? У меня триггерная пассивка работает на недостроенном здании.
Заранее спасибо!

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

Ну есть же события:
  1. юнит начинает стройку, как только строитель поставит фундамент и начнется стройка. Можно в этот момент сохранить какую нибудь информацию о состояний.
  2. юнит завершает стройку - при завершении строительства. После этого будем знать, что здание достроено.

Bergi_Bear, интересное утверждение, что абилки не активны у недостроенного здания, их не видно. можно ли проверить есть ли они в наличии? например проверить уровень (Lv>0), приказ кастануть и пр
по хп нельзя проверять % стройки. что если кто-то из вражин ударит, и хп уже не будет считаться полным. % стройки идет на время строительства раздел_строительство
влияющие_на_здание

что эта за пассивка?

можно еще проверять текущий приказ у здания. Обычно у строящего здания текущий приказ равен id здания, что означает, что оно еще строится. к сожалению точно отследить % стройки у хуманов сложнее.

мнение о строителях хуманов
сложность вот в чем, с одним строителем не сложно определить % стройки. Даже когда он перестает временно строить, и возвращается. Все это отслеживается приказами. Нужно точно настроить и предусмотреть все. Но когда подключаются несколько рабочих, то стройка ускоряется. Нужно вводить некий счетчик строителей, которые одновременно строят одно здание. Если один строитель уходит во время стройки, счетчик убывает на единичку. Если счетчик равен = 0, значит стройка приостановлена. Теперь насколько ускоряется? щас затестил:
один хуман строит ратушу: 60 сек, 100%
два хумана строят ратушу: 30 сек, 50% Получается в 2 раза
три хумана строят ратушу: 20 сек, 33,3% Получается в 3 раза
но реально отследить, если коэффициент добавить. Проблема еще в том, что доп ускорение жрет ресурсы. Чтоб будет, если ресурсов не хватать будет? доп рабы перестанут строить? можно ли это отследить то? наверное приказами как-то отслеживается
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
28
4 года назад
0
Lord_Teo, зачем лепить костыли, если достаточно просто сделать 1 триггер на конец постройки, проверять там тип и вручить способность?
0
26
4 года назад
0
PT153:
Lord_Teo, зачем лепить костыли, если достаточно просто сделать 1 триггер на конец постройки, проверять там тип и вручить способность?
Хмм. Т.е. добавить способность - это намного проще, чем добавить юнит в группу? Ну, ок. А как ты своим способом будешь проверять недострой? Все в этом одном триггере? У меня, по сути, 3 триггера с одной строкой внутри (2 остальных - это уже непосредственно способности героя). Если такое считается слишком костыльным, то ок. Это был всего лишь один из вариантов.
0
27
4 года назад
Отредактирован MpW
0
как определить процент стройки (с учетом хуманских рабов и обычная для остальных рас)
Можно использовать таймер. Создаешь и запускаешь таймер в начале стройки, и при завершении удаляешь. процент = текущее время таймера / заданное время *100%

А со случаем с хуманскими рабами такое сделать сложно. Они могут дропнуть, или ускорить. Ладно дроп, там таймер можно было бы запаузить. но как быть с ускорением, когда несколько рабов подключаются к строительству? Не знаю как это надо было сделать. Придумал такую схему: нужен счетчик рабов и счетчик процентов. Периодически каждую секунду таймером прибавляешь проценты в сек
100% / (заданное время стройки/ число рабов) - начисляемый процент за 1 сек

короче с хманскими рабами есть какие-то не точности и погрешности. Обычно большинство случаев норм в 100% укладывается. А бывает и больше 100, но такое редко происходит. Мне кажется период таймер не успевает запаузиться, и начисляет лишние проценты. Что*то ломается, ай, лень уже.
Загруженные файлы
0
29
4 года назад
0
Ледяное дыхание дракона нежити, насколько помню, паузит строительство. В таймере это тоже учесть надо)
0
28
4 года назад
0
У меня триггерная пассивка работает на недостроенном здании.
Перечитал вопрос, нужна конкретика о пассивке. Способ Lord_Teo абсолютно правильный, но, думаю, нужно добавить событие для отмены строительства.
0
26
4 года назад
0
PT153:
У меня триггерная пассивка работает на недостроенном здании.
Перечитал вопрос, нужна конкретика о пассивке. Способ Lord_Teo абсолютно правильный, но, думаю, нужно добавить событие для отмены строительства.
Не нужно, т.к. отмена стройки равносильна смерти здания.
0
32
4 года назад
0
Lord_Teo, в целом да.... но за отмену возвращают деньги, а за реальную смерть - нет. Хотя это здесь роли не играет
0
27
4 года назад
Отредактирован MpW
0
Первая версия с таймерами - мучная идея. Надо очень многое учитывать (много кода). Зато там осталось идея "как отследить начавшую работу раба?". Здесь конечно отслеживается начала работы строительства. Но меня натолкнула еще одна идея. Например рубка леса. Вот хотел сделать нестандартный ресурс из декорации: камень, сбор фруктов с деревьев, набор воды. Обычно при отдаче приказа, юниту нужно добежать до цели. И потом останавливается, и проигрывается анима рубки. Есть приказ, но юнит стоит на месте. Мб сделать такое че-то

Нашел идеальный вариант (версия 2) нахождения % стройки (короче маленькая система):
проверять по хп. проценты = тек здоровье / макс здоровье
Но работает с одним условием, надо завести счетчик дамага. Надо написать небольшую систему отлова урона, и в счетчик прибавлять. Даже, если хп убывает от дамага, мы все равно можем узнать %
проценты = (тек здоровье+countDamage) / макс здоровье

короче я поставил цель сделать наработку с нестандартным ресурсом из декора
Загруженные файлы
0
17
4 года назад
0
Еще можно один раз написать свою систему постройки и не мучаться
1
32
4 года назад
1
Жаль не завезли нативку UnitGetConstructionProgress....
0
27
4 года назад
0
Vlod, ну это еще легче =)) проще написать свою систему. Например, меня так реализован рост растений. днем быстрее растут, ночью медленее. +всякие бонусы ускорения (удобрения) /замедления (червячки, пожары, неподходящие условия местности )
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.