В случае если разом нужно будет подписать пачку триггеров, твоя "система" повесит карту.
У меня ~50 способностей, завязанных на получении урона, штук 20 из них создают динамичные триггеры для работы способности, т.к. овертайм. Все действия по инициализации вынесены в отдельные функции, ну, ты знаешь, пикнули героя - вызвали функцию. Все они у меня после старта игры одновременно вызываются. На моей слабенькой одноядерной машине даже лагов нету. Ты облажался. Faion:
для динамичного использования
Его каждому триггеру всего 1 раз вызывают, какое нахер динамичное использование, мастер в макасинах ручной работы?
Событие
| | | |
Триггеры на это событие реагирующие
| | | |
Условия, действия
ты предлагаешь:
Событие
|
Триггер на это событие реагирующий
| | | |
Действия без условий
Разница только в количестве триггеров и наличии условий, а мне удобно, когда 1 способность - 1 триггер, а условия - отдельные функции.
Faion, количество эвентов = количеству юнитов, хоть обподписывайся триггерами. Просто на каждый эвент эдакий списочек подписавшихся триггеров есть, он их и вызывает, а один триггер, или 20 - ему чихать. Он как один был, так один и остался.
Все вместе, и все фильтры в экшнены впихать, от красота-то!
Событие оно и есть событие, оно не дублируется никаким образом. Просто вместо прямого вызова действий оно включает указанные триггеры, вся разница.
Ты предлагаешь хранить юнитов на карте в группе и регать событие просто по группе?
Регистрация события основного проходит только один раз, пик юнитов в группу если и медленнее, то на такие такты процессора, что всем глубоко чихать.
TriggerRegisterUnitEvent(GetTriggeringTrigger(),GetEnteringUnit(),EVENT_UNIT_DAMAGED)
По-секрету. Оно регистрирует событие только одному триггеру.
И именно поэтому это действие повторяется для каждого триггера.
1 юнит - 1 эвент урона на него каждому триггеру
пикаю всех и по очереди каждого регистрирую
Без танцев с бубном и создания триггера лишнего
вообще можно было создать 1 триггер на все события, но там надо было бы вводить базу действий с условиями, нафиг оно не надо, весь прикол сверхпростой архитектуры теряется.
указанному триггеру регистрируется событие "юнит входит на игровую территорию".
при реакции на добавленное событие для юнита сразу добавляется событие получения урона.
В теории, две строчки текста прочитать проще, чем 20 строчек кода, но ты даже здесь облажался.
ScorpioT1000, ты про эту формулу?
return integral(GetUnitArmorEx(u) + ArmorPenAgility + GetHeroAgi(u,false)*ArmorPerAgility) + am + (GetHeroAgi(u,true)-GetHeroAgi(u,false))*ArmorPerAgility + byabil
Объясняю почему так. Когда герой не имеет бонусов к защите, его показатель брони просто-напросто округляется. Не знаю, как на самом деле, но "damage reduction" пишется именно от этого округленного значения, причем сам он тоже округляется до целых процентов, хотя это округление чисто косметическое.
От ловкости защита пляшет уже от десятых долей.
Единственное что, в реально получаемом уроне никакие округления не ставятся, это исключительно косметический момент. Но, если в карте это реально заметно (уменьшение 100%, урон проходит), то карта идиотична, ибо это овер99999 брони.
Моей целью было получить реально отображаемое значение брони в общем, всё работает =)
Очевидно, что математическое округление дает целое на выходе, ведь оно округляет -.-
Зато я могу использовать эту функцию и в функциях, возвращающих целые.
Базовая броня героев от основной ловкости всегда целое, а от дополнительной она уже меняется по десятым долям.
Абилка на основе талисмана здоровья, 3 уровня. Первый уровень даёт +0 максимального хп, второй - + сколько тебе надо (если необходимо разным юнитам разное хп давать, то используй +-1/2/4/8/16/32/64/128), третий сколько тебе надо, но с минусом.
Даём абилку юниту, устанавливаем уровень 2, удаляем абилку. Эффект максимальных хп сохранится.
» Tiodor's Art / Иконки!
» Блог Aws / Всё о Бэтмене. Часть 2. Комиксы.
» WarCraft 3 / Система отлова нанесённого урона
» WarCraft 3 / Система отлова нанесённого урона
Faion:
Ред. Clamp
» WarCraft 3 / Система отлова нанесённого урона
Ред. Clamp
» WarCraft 3 / Система отлова нанесённого урона
» WarCraft 3 / Система отлова нанесённого урона
» WarCraft 3 / Система отлова нанесённого урона
Событие оно и есть событие, оно не дублируется никаким образом. Просто вместо прямого вызова действий оно включает указанные триггеры, вся разница.
Ред. Clamp
» WarCraft 3 / Система отлова нанесённого урона
Регистрация события основного проходит только один раз, пик юнитов в группу если и медленнее, то на такие такты процессора, что всем глубоко чихать.
TriggerRegisterUnitEvent(GetTriggeringTrigger(),GetEnteringUnit(),EVENT_UNIT_DAMAGED)
По-секрету. Оно регистрирует событие только одному триггеру.
И именно поэтому это действие повторяется для каждого триггера.
Ред. Clamp
» WarCraft 3 / Система отлова нанесённого урона
пикаю всех и по очереди каждого регистрирую
Без танцев с бубном и создания триггера лишнего
» WarCraft 3 / Система отлова нанесённого урона
Ред. Clamp
» WarCraft 3 / Система отлова нанесённого урона
Зато может про макасины ручной работы за 15к поговорить вот какой крутой кодер :3
ScorpioT1000:
Ред. Clamp
» WarCraft 3 / Пример базы данных по броне юнитов
return integral(GetUnitArmorEx(u) + ArmorPenAgility + GetHeroAgi(u,false)*ArmorPerAgility) + am + (GetHeroAgi(u,true)-GetHeroAgi(u,false))*ArmorPerAgility + byabil
Объясняю почему так. Когда герой не имеет бонусов к защите, его показатель брони просто-напросто округляется. Не знаю, как на самом деле, но "damage reduction" пишется именно от этого округленного значения, причем сам он тоже округляется до целых процентов, хотя это округление чисто косметическое.
От ловкости защита пляшет уже от десятых долей.
Единственное что, в реально получаемом уроне никакие округления не ставятся, это исключительно косметический момент. Но, если в карте это реально заметно (уменьшение 100%, урон проходит), то карта идиотична, ибо это овер99999 брони.
» WarCraft 3 / Пример базы данных по броне юнитов
Зато я могу использовать эту функцию и в функциях, возвращающих целые.
Базовая броня героев от основной ловкости всегда целое, а от дополнительной она уже меняется по десятым долям.
» WarCraft 3 / Пример базы данных по броне юнитов
Броня - реальное, в чем проблема?
Ред. Clamp
» WarCraft 3 / Пример базы данных по броне юнитов
Ожидаемый_урон * (0.06*GetUnitArmor(Target)/(1+(0.06*GetUnitArmor(Target))))
» WarCraft 3 / Уменьшение кд спела
» WarCraft 3 / Уменьшение кд спела
Teret, никак.
Ред. Clamp
» WarCraft 3 / Увеличение здоровья/маны
Даём абилку юниту, устанавливаем уровень 2, удаляем абилку. Эффект максимальных хп сохранится.
» StarCraft 2 / Heart of Swarm: Вступительный ролик
» StarCraft 2 / Heart of Swarm: Вступительный ролик
» StarCraft 2 / Heart of Swarm: Вступительный ролик
» Clamp'ова кухня / Пример базы данных по броне юнитов