Добрый день. Можно ли сделать скорость изучения улучшения(не здания) в зависимости от кол-ва построек определенного типа например?
Наподобие скорости постройки с помощью UnitSetConstructionProgress

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

Есть костыльный вариант с установкой прогресса вручную. Берёшь улучшение и ставишь ему длительность на 999999... При старте улучшения записываешь того кто его начал (юнит), и стартовый процент прогресса на 0.00 , ну и таймер периодический (можно раз в секунду, можно чаще).
По таймеру делаешь подсчёт нужных зданий и получаешь некое число (например их 5).
Далее множишь его на некий бонус ускорения (за каждое здание, например 0.02).
В итоге получаешь число равное текущей суммарной скорости (5 * 0.02 = 0.1).
И добавляешь это число в текущему значению прогресса. После рассчётов приравнивай текущий прогресс улучшения к этому значению.
В конце проверяешь достиг ли прогресс числа 1.00 (если там НЕ реальные, или в другом объёме, то просто подгоняйте по смыслу). И если достигло - то прекращаешь подсчёты и убираешь работу таймера. Исследование по достижению своих 100% прогресса должно завершиться.
Я так с постройкой юнитов делал. Всё работало.
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
26
5 лет назад
0
Есть костыльный вариант с установкой прогресса вручную. Берёшь улучшение и ставишь ему длительность на 999999... При старте улучшения записываешь того кто его начал (юнит), и стартовый процент прогресса на 0.00 , ну и таймер периодический (можно раз в секунду, можно чаще).
По таймеру делаешь подсчёт нужных зданий и получаешь некое число (например их 5).
Далее множишь его на некий бонус ускорения (за каждое здание, например 0.02).
В итоге получаешь число равное текущей суммарной скорости (5 * 0.02 = 0.1).
И добавляешь это число в текущему значению прогресса. После рассчётов приравнивай текущий прогресс улучшения к этому значению.
В конце проверяешь достиг ли прогресс числа 1.00 (если там НЕ реальные, или в другом объёме, то просто подгоняйте по смыслу). И если достигло - то прекращаешь подсчёты и убираешь работу таймера. Исследование по достижению своих 100% прогресса должно завершиться.
Я так с постройкой юнитов делал. Всё работало.
Принятый ответ
0
9
5 лет назад
0
Extremator:
Почему он костыльный? И будет ли это нормально работать при большом кол-ве игроков?
0
26
5 лет назад
0
DarKRs, ну по идеи должно, если всё правильно сделаешь.
0
28
5 лет назад
0
И если достигло - то прекращаешь подсчёты и убираешь работу таймера. Исследование по достижению своих 100% прогресса должно завершиться.
А как заставить строение завершить исследование? Чтобы сообщение соответствующее было.
0
26
5 лет назад
0
PT153, ну при 100% оно должно же само об этом известить, верно?
Оно же продолжает само по себе стремиться к завершению, т.к. его реальное время мы не морозим (но ему понадобится ~1,(6) минуты на продвижение на 0,01%).
0
26
5 лет назад
0
Там уже нет такого удобного инструмента работы с прогрессом.
В голову кроме указанного выше сразу приходят два тоже муторных варианта:
  • Сделать базу данных со значениями времени исследований, при запуске исследования таймер будет отсчитывать время за минусом количества построек, по истечению таймера будет триггерно повышаться уровень исследования. Но не знаю, как будет на это реагировать игра, если будет возвращать ресурсы за исследование, то их нужно будет забрать, если не будет сообщения об исследовании появляться, то нужно будет его сымитировать, если во время исследования были утеряны постройки, то может быть надо будет это учесть, самое главное, что таймер прогресса больше не будет отображать время до конца;
  • Сделать кучу исследований-пустышек с разным временем, доступность которых менять игроку по мере появления или уничтожения построек, а по завершении пустышки поднимать уровень её реального исследования. Тут всё будет работать чётко и красиво, лишь бы автоматизировать как-то создание пустышек, чтобы не потерять много вечеров;
  • Ну и минусами описанного выше способа будут неправильное сообщении о завершении исследования - будет сообщение о завершении постройки, проигрывание анимации строительства Birth, вроде бы во время улучшения здание теряет защиту надо проверить, ну и создание в РО построек по числу исследований.

Ах да, минус второго способа, что не сможешь скорректировать скорость исследования, когда оно уже идёт, а у тебя ещё постройки появились/пропали.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.