icefrost
offline
Опыт:
259Активность: |
Как разделить скиллы на категории и отлавливать из какой категории скилл
Мне нужно создать несколько заклинаний, каждая из которых будет защищать от определенных способностей(под защитой имеется ввиду - снимать дебаффы, восстанавливать наносящийся урон итп...), и вообщем-то создать защищающее заклинание я могу, но не знаю как распределить существующие скиллы по категориям и отлавливать принадлежность способности к той или иной категории. Просьба предлагать решения на уровне обычного jass, gui, редактора обьектов итд... но не на vjass cjass итп... Важно: в карте присутствуют наносящие аое урон способности, но, во всяком случае пока что, все скиллы сделаны на триггерах, на основе "канала", и урон наносится триггерно. |
19.10.2013, 18:44 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Карточка
Kicked by SSrunX
offline
Опыт:
2,017Активность: |
бд заводишь и прописываешь любые типы куда угодно как угодно |
19.10.2013, 18:51 | #2
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
icefrost
offline
Опыт:
259Активность: |
Карточка:
допустим так я разделю скиллы на категории, но как я буду отслеживать категорию скилла при нанесении урона, если скилл не имеет конкретной цели, а бьет по области ? Ксатати, я вот что подумал, учитывая что категорий будет не очень много(от 3 до 5), можно ли при нанесении урона функцией
в DAMAGE_TYPE для скиллов например первой категории ставить normal, для скиллов второй категории - fire, для третьей - cold итд... а потом какой-то функцией улавливать тип нанесенного урона ? и будет ли влиять изменение типа урона на сам урон ? если да, то можно это как-то обойти ? |
19.10.2013, 20:38 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Карточка
Kicked by SSrunX
offline
Опыт:
2,017Активность: |
ну так если ты прописываешь код спеллов, значит те цели что были продамажены - ты уже знаешь какой конкретный скилл это был. далее пробегаешь по базе данных с этим скиллом и получаешь свою категорию |
19.10.2013, 21:28 | #4
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
icefrost
offline
Опыт:
259Активность: |
Карточка:
например кто-то кастует скилл, который создает дамми и направляет в точку каста нанося урон всем по пути, каждые 0.05 секунд, и допустим спустя 5 сек дамми доходит до юнита с спеллом-защитой и последнему наносится урон, как я смогу узнать из за какого скилла был нанесен урон ? кстати, а что насчет этого ? возможно или нет ? icefrost: если да, то какой функцией отслеживается тип урона. Отредактировано icefrost, 19.10.2013 в 22:47. |
19.10.2013, 22:41 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hate
конь вакуумный
offline
Опыт:
43,117Активность: |
никак он не отслеживается.
вам правильно сказали - делаете дб, указываете абилки и типы
т.к. вы наносите урон триггерно, то вы знаете какие абилки вы юзаете -> знаете откуда плясать |
20.10.2013, 03:29 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
icefrost
offline
Опыт:
259Активность: |
Отредактировано icefrost, 21.10.2013 в 12:51. |
20.10.2013, 12:21 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
107,539Активность: |
Насколько я помню, ее лучше не использовать, а наносить урон каждому юниту отдельно.
И да, была фишка с равкодами, где можно сразу зашифровать тип урона. Например 'A100' и 'A101' наносят тип урона 1, 'A204' - тип 2. Второй чар, который очень легко достать сдвигами.
Но БД через хеш - универсальнее. |
20.10.2013, 12:39 | #8
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
UnitDamagePointLoc не работает на мак ос)
ScorpioT1000 добавил:
у меня что-то было столетней давности ... требует IFDEBUG
|
20.10.2013, 14:52 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
icefrost
offline
Опыт:
259Активность: |
ADOLF:
Хмм... ты предлагаешь изменить равкоды спеллов на начинающиеся с "1" для заклинаний первой категории, "2" для второй и "3" для третьей, и потом математически узнавать какой цифрой начинается равкод ? Я правильно тебя понял ? Если да, то ...эмм... как можно равкод изменить ?) ScorpioT1000:
О_О что ?)) ADOLF:
учту, спс) ADOLF:
да, но ведь через бд я потрачу гораздо больше времени настраивая все, поэтому и искал другой способ ScorpioT1000:
Я так понимаю это код для нанесения урона каждому юниту по-отдельности, да ? |
21.10.2013, 13:10 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
Смотри, у спеллов есть эффекты, они представляют собой массив строк, разделенный запятыми (в РО), а функция GetAbilityEffectById возвращает строку по ключу от 0 до ... Для любого спелла! это можно юзать.
ScorpioT1000 добавил:
нет, для области. Ну, короче то о чем адольф говорил (хотя там не лучший код). Убери директивы ifdebug и не будет ничего требовать... cJass если что |
21.10.2013, 13:24 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
icefrost
offline
Опыт:
259Активность: |
ScorpioT1000, Я создаю событие на получение юнитом урона потом проверку на юнита(если ли у него способность защиты) дальше мне нужно узнать источник-способность нанесенного урона, как я это сделаю через спец-эффект ? если не сложно, приведи небольшой пример. |
21.10.2013, 14:27 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
у тебя вопрос был в категоризации способностей, я предложил решение, причем тут узнать источник-способность? это надо в поиске искать как узнать спелл по дамагу |
21.10.2013, 14:43 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,598Активность: |
icefrost, если тебе известна способность то можно получить с помощью функции GetAbilityEffectById строку с путем к спецэффекту, впрочем в поле спецэффекта можно написать любой текст и получить его с помощью этой функции.... |
21.10.2013, 14:43 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
icefrost
offline
Опыт:
259Активность: |
ScorpioT1000:
А, ну тогда все понятно) |
21.10.2013, 14:55 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Карточка
Kicked by SSrunX
offline
Опыт:
2,017Активность: |
тебе надо не событие "юнит получил урон", а "кастуется спелл" в разных вариациях
по юниту цепляй данные - что где как блокирует. соответственно в коде спелла вводить проверки - если есть защита - резать урон и т.п. ты лучше объясни что ты хочешь толком, ибо походу тема крутится вовсе не возле того, что тебе нужно |
21.10.2013, 15:11 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
icefrost
offline
Опыт:
259Активность: |
остается только понять как по урону определять способность... Может так ?
В РО создаю 3 юнита-пустышек, т.е. по одному для каждой категории и даю им способность москиты, чтобы по умолчанию они не получали урона, потом тригерно для юнитов получающих защиту от той или иной категории скиллов создаю соотв. юнита-дамми и каждые 0.05 сек передвигаю к месту юнита с защитой. Потом во всех AOE способностях при нанесении урона добавляю проверку есть ли в радиусе урона юнит-пустышка соответствующий категории способности, если есть то во время нанесения урон способность москиты убирается, а потом заного возврощается юниту. А в триггере способности-защиты создаю событие получения урона, проверку на то что юнит является этой самой пустышкой следящей за героем и(предварительно при создании юнита сохранив хп юнита в переменную) сравниваю текущее значение хп со старым и добавляю юниту со спеллом-защитой хп равное потерянному пустышкой. Карточка, вот описание спелла. Если юнит получает урон от одного из ........... спеллов, тогда например на 5 секунд включается защита и юнит в течении этих секунд восстанавливает хп, потерянное из за способности(если за это время его ударят или кто-то другой применит способность не из списка, то урон от удара или способности не из списка не восстанавливается) очищается от баффов и у способности защиты от спеллов начинается кд, по окончанию которого снова при первом же получении урона от способностей из того же списка все повторяется снова Отредактировано icefrost, 21.10.2013 в 15:40. |
21.10.2013, 15:21 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
надо событие spell effect нет ?
ScorpioT1000 добавил: EVENT_PLAYER_UNIT_SPELL_EFFECT |
21.10.2013, 15:33 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
icefrost
offline
Опыт:
259Активность: |
Карточка:
я бы так и сделал, но способность защиты не всегда должна срабатывать, например если у способности не прошел кд, или если игрок выключил использование защиты(у юнита будет предмет при помощи которого можно будет откл. использование способности, даже если кд прошел), и если первое еще можно отследить, то второе я не знаю как. |
21.10.2013, 15:36 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hate
конь вакуумный
offline
Опыт:
43,117Активность: |
пишите свою функцию нанесения урона |
21.10.2013, 18:24 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|