Rvn
Skillful level designer
offline
Опыт:
15,907Активность: |
Дополнительный урон от магии
Возможно ли сделать так, что бы при использовании определенных способностей урон, наносимый ими, увеличивался триггерно и, что важнее, процентно?
Пример. Есть способность "Fireball", которая наносит выбранной цели 300 урона. Если у героя-кастера есть предмет с бонусом "+10% magic damage", то "Fireball" будет наносит не 300, а 330 урона. |
05.03.2009, 13:18 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ExArt
offline
Опыт:
13,634Активность: |
Rvn Сделай изначально триггерный урон. Либо надо использовать систему детекта урона в которой всем юнитам а карте надо будет давать орб эффекты. И уже по наличию бафа от орба на юните определять магический урон или физический.
|
05.03.2009, 13:25 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
alexkill
offline
Опыт:
18,872Активность: |
Для данной способности можно вычислить урон, используя функцию GetEventDamage() (предварительно создав динам. триггер с событием получения урона), и наносить доп. процентный урон триггерно с учетом проверки на наличие предмета.
В крайнем случае можно урон хранить в базе. |
05.03.2009, 13:28 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
agentex
offline
Опыт:
34,834Активность: |
Цитата:
способ через орб полный отстой, потому что блокирует остальные орбы у героя. я решил это так: при атаке в БД заношу что атакующий юнит атакует, т.е. true. потом в спец. тригер добавляю событие что атакованный юнит получает повреждения. в этом триггере запускаю таймер с 0 таймаутом, по таймеру выставляется булина что наносящий урон юнит уже не атакует. ну и естесно понадобится еще 1 функция, принимающего DamageSource, и возращающая булину, дамаг ли это от атаки. если возвратит false - это дамаг от спелла.. вот примерно так. А еще, если есть юниты с медленным полетом снаряда, такая система может сбоить, но других вариантов увы нет |
|
05.03.2009, 13:57 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Captain Kuro
offline
Опыт:
430Активность: |
Имо лучший способ - наносить урон триггерно. Чтобы добавить 10% достаточно умножить урон на 1.1. Этот 1.1 занести в переменную с начальной цифрой 1 при изучении абилки, которая даст +10% к маг. урону. |
05.03.2009, 14:00 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Igores
НИИ 4А-Во! Кафедра Джасс.
offline
Опыт:
5,325Активность: |
Способ с базой данных отстой:-) только память лишнюю занимает. Не заморачивайте голову парню, если сами не шарите. Автор, делай просто проверку на уровень второй абилки и в зависимости от её уровня увеличивай урон как тебе надо. Функция GetUnitAbilityLevel. Для предметов этот способ тоже работает. |
05.03.2009, 14:11 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
alexkill
offline
Опыт:
18,872Активность: |
Цитата:
Читай посты выше. Поясню мой вариант конкретнее: в действиях триггера с событием "Юнит приводит способность в действие" создается еще один. agentex, не понял, зачем в базе хранить буль, когда можно к хэндлу динам. триггера аттачить атакующего воина и проверять в действии этого триггера: Код:
? Цитата:
не всегда |
||
05.03.2009, 15:36 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
Есть способности резиста от магии, подозреваю что они же работают и в обратную сторону - увеличивают урон от магии, тогда задача сводится к определению каста спелла и получению дамага целью. |
05.03.2009, 15:44 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
agentex
offline
Опыт:
34,834Активность: |
Цитата:
омг шарящий ты наш, может ты не будеш никому морочить голову своим бредом? если ты не заметил мы говорим о универсальном способе отследить урон Цитата:
умник, 2 массива почти ничего не занимают, если учесть что в моей системе занятых индексов будет столько, сколько юнитов одновремененно живут и атакуют, т.е. на средней карте гдето штук 30, это вообще занимает 1\100 всей остальной памяти юзающейся в тригерах ну может побольше, смотря как распределятся хендлы alexkill буль привел для примера, на самом деле у мну двойная проверка |
||
05.03.2009, 15:47 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Rvn
Skillful level designer
offline
Опыт:
15,907Активность: |
NETRAT это наиболее оптимально было бы, остается проверить и решить проблему, что бы иконка добавляемой цели каста спелла не была видна ( вроде где то была наработка по добавлению неограниченного кол-ва "неведимых" предметов )...
|
05.03.2009, 16:04 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Igores
НИИ 4А-Во! Кафедра Джасс.
offline
Опыт:
5,325Активность: |
agentex, умник, автор спрашивал не про отслеживание урона, а про его увеличение, если у героя есть предмет, я отвечал по существу, а у тебя оффтоп. Тем более мой способ лучше надо всего лишь одно условие добавить. К тому же урон можно и без бд отследить.
Igores добавил: Rvn, попробуй через буки. |
05.03.2009, 16:16 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
agentex
offline
Опыт:
34,834Активность: |
В твоем случае при атаке тоже урон увеличится, а автору нужно увеличить только дамаг от спеллов
agentex добавил: Цитата:
кстати да NT прав, они работают в обратную сторону, в АоНе несколько артов и спелов на этом основано. Так что остается вычислить скорость полета снаряда, за небольшое время до столкновения давать антирезист, потом через секунду к примеру забирать его у цели. |
|
05.03.2009, 16:19 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
Rvn в спеллбук абилку запихни и дизебли спеллбук... старо как мир - отследить попадание спелла в цель куда сложнее
ссылка на говносайт у тебя в подписи запрещена |
05.03.2009, 16:22 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
No-D
Ноуди
offline
Опыт:
5,611Активность: |
А может дать предмету способность "Техника"? Заменяя свой спелл на более сильный? Или я не тру T_T |
05.03.2009, 17:31 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hanabishi
COOL STATUS
offline
Опыт: отключен
|
я тут подумал...
можно добавлять юниту (на которого нацелено заклинание), способность на основе "Благословления элуны", с количеством "Снижение магического урона", например, 1.5 т.е. юнит получит 150% повреждений |
05.03.2009, 18:03 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
Цитата:
|
|
05.03.2009, 18:14 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ExArt
offline
Опыт:
13,634Активность: |
Rvn Тебе всё равно придётся отслеживать момент попадания болта во врага. Способ agentex'а баговый, он об этом написал. Тока вот ещё если замахнуться и прекратить атаку булинь станет true, а атаки не произойдёт и каст после этого задетектится как удар, тоже самое с промахами. Хотя если ты делаешь сингл плеер карту, то конечно можно тупо при поднятии предмета дать всем юнитам на карте благословение Элуны) Лучший вариант предложил Void Walker, имхо. Во-первых никаких багов, во-вторых то что заклинание усилилось будет видно в его описаниии, но надо создавать дубликаты для всех дамажащих спелов.
|
05.03.2009, 18:20 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Rvn
Skillful level designer
offline
Опыт:
15,907Активность: |
ExArt способность "Техника" я уже использовал для системы улучшение спеллов рунами аля как в Diablo 3. Так что этот способ не катит (
Rvn добавил: Есть идея... если можно отслеживать кол-во ХП на данный момент, то... При касте спелла сохраняет ХП у цели каста и создаем динам. триггер с событием "юнит получил урон", после чего из сохраненного ХП вычитаем то, что осталось и процент ( если бонус, к примеру, 10%, то вычитаем 90% ) и получившиеся число демажим цели каста. Выходит универсально, так как можно использовать и для демажащих скиллов и для лечащих ( было хп 100, стало 200, бонус 10%... 100-200=-100-90%=-10 в итоге наносим МИНУС 10 урона, т.е. хилл на 10 ХП ) |
05.03.2009, 19:34 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
MegaPhoenix
offline
Опыт:
2,932Активность: |
А почему нельзя делать так: Событие: Юнит начал применять способность Условие: У юнита есть предмет (+10 к урону от спеллов) Действие: (сasting unit) наносит урон (target spell unit) равный (10%) ??? Тут только нужно будет узнать сколько именно урона было нанесено и всё. |
05.03.2009, 19:50 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ExArt
offline
Опыт:
13,634Активность: |
Rvn Ну дык а если юнита бьют пока летит нюк. С орб эффектами лучше, тока стандартные орбы придётся переделывать триггерно, зато без багов.
|
05.03.2009, 19:56 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|