respect_gg
offline
Опыт:
3,650Активность: |
Произвести действие функции
Всем здрасьте.
Передо мной встала такая проблема, точнее не совсем проблема, но суть не в этом. Приведу пример и станет все ясно, я надеюсь. У меня есть множество заклинаний, а так же готовых идей, в которых эффект практически похож - вешается бафф/дебафф на союзника и на противника соответственно, эффекты разные - нанесение увс, увеличение макс. запаса здоровья, здоровья/сек. и т.д. Так вот, мне уже порядком поднадоело каждый раз писать одно и тоже, а точнее все эти функции по добавлению/удалению баффов и т.д. И я подумал, можно сделать одну общую функцию, которая будет добавлять бафф и удалять его через то время, которое необходимо. Но тут встала вот такая проблема - ведь по сути в большинстве случаях мне еще нужно проводить некоторые действия с этим баффом/дэбаффом например каждую секунду. Вот тут и главный вопрос - как реализовать вот такое действие (примерное)
Например юнит кастует на противника магию, вешается дэбафф на нанесение увс, через функцию я вешаю тот самый дэбафф, но как мне еще наносить ему ежесекундный урон? Не писать же мне действие по нанесению урона в универсальной функции (напомню это та, которая вешает дэбафф), получится слишком громоздко и чрезвычайно неудобно.
Я не прошу написать за меня это все, я прошу, чтобы вы мне подсказали в каком направлении мне двигаться, ну и если кто может поделитесь чем то связанным с этим.
Буду крайне благодарен. |
10.11.2012, 15:44 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,544Активность: |
respect_gg, ну наносить урон можно таймером, а так же кастовать на юнита другой дебафф (Ярость Проклятых) наносящий урон цели каждую секунду... Можно вопрос, ты пишеш на GUI или на Jass (vjas,cjass) |
10.11.2012, 16:11 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hate
конь вакуумный
offline
Опыт:
43,117Активность: |
писать собственный движок скиллов на jass. И да, универсальная функция с ветвлением ифов, идеяльно на мой взгляд. |
10.11.2012, 16:21 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
respect_gg
offline
Опыт:
3,650Активность: |
Скорее vJass.
Стандартные способы нанесения урона сразу "НЕТ", ибо использую буржуйскую наработку (Intuitive Damage Detection System) - то есть весь урон должен наноситься триггерно, точнее любой урон от стандартной магии будет отслеживаться как "урон от обычной атака". Но суть не в этом.
Так вот в том то и проблема, как же мне запустить таймер уже из другой функции.... Блин я не знаю как донести это до Вас так, чтобы вы поняли на все 100%.
Попробую так -
Например есть функцию
function blablabla takes nothing returns nothing
local unit u = CastingUnit local unit t = Target ..... call AddBuff(u,t,10.00,......) (например это функцию по добавлению бафа, который будет висеть на противнике 10 секунд и т.д.) endfunction Но кроме этого мне еще нужно наносить ему ежесекундный урон. Как я сказал выше, в функции (AddBuff пр.) дописывать это для каждого спелла как минимум будет слишком не удобно. Вот мне и нужно как то обратиться к уже новой функции, причем из AddBuff :) Думаю опять я написал чушь, которую способен понять только я сам :)
Мне нужно, например, из функции AddBuff каждые 1 секунду обращаться к новой функции, которая будет наносить урон. Блин я надеюсь, что хоть как то это будет понятно :) Просто я не знаю, каким еще способом объяснить :)
respect_gg добавил:
Hate:
Поверь, слишком много If'ов будет, невероятно много :) По-этому я и отбросил этот вариант сразу |
10.11.2012, 16:23 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hate
конь вакуумный
offline
Опыт:
43,117Активность: |
» кусок моей наработки, вот о чем я говорю.
|
10.11.2012, 16:35 | #5
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
respect_gg
offline
Опыт:
3,650Активность: |
cJass , абсолютно ничего не понял... |
10.11.2012, 16:50 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hate
конь вакуумный
offline
Опыт:
43,117Активность: |
прочтите мануал по сЖассу, ничего замудренного там нет. |
10.11.2012, 16:59 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
respect_gg
offline
Опыт:
3,650Активность: |
Извини конечно, но я создавал этот тред не с целью выучить cJass. Я прекрасно знаю, что на vJass Такое реализовать реально, так как уже видел такое, но найти этого я никак не могу, уже не помню где я качал эту наработку, так как прошло уже более года, а на компе ничего не сохранилось с тех времен. |
10.11.2012, 17:03 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hate
конь вакуумный
offline
Опыт:
43,117Активность: |
зачем прямо изучать сЖасс? я имел ввиду прочитать мануал что бы стало понятно что в коде. |
10.11.2012, 17:05 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,184Активность: |
или реализовывать goto через систему методов или карусель на основе цикла или серию ифов, последнее самое быстрое и понятное
так чтобы кинуть руки на клавиатуру и всё готово - не будет. |
10.11.2012, 17:06 | #10
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
DioD, no.
respect_gg, потрудитесь хотя-бы прочитать мануал по вжассу, там это есть. |
11.11.2012, 13:01 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|