Faion
Noblesse Oblige
offline
Опыт:
30,395Активность: |
Эвенты
Достаточно стандартная конструкция для отлова события применения способности:
Код:
Конечно лучше Бж, но все же, если мы имеем сотни способностей, и для каждой существует подобная конструкция, то выйдет, что TriggerRegisterPlayerUnitEvent сработает столько раз, сколько существует конструкция. В прочем подобная вещь не особо ощутимо сказывается на производительности, но все же. Как то давно я видел через 1 эвент обрабатывать все имеющиеся способности. Людей которые шарят в этом вопросе прошу показать свой пример решения данной проблемы, или линк на тему в которой обсуждался данный вопрос. |
26.02.2011, 14:47 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Feronetick
offline
Опыт:
86Активность: |
TriggerRegisterPlayerUnitEvent(trig,Player(i),EVENT_PLAYER_UNIT_SPELL_EFFECT,fun ction func_condition) поправь :)
|
26.02.2011, 14:51 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
reALien
offline
Опыт:
29,211Активность: |
делаю точно так же) |
26.02.2011, 14:53 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Faion
Noblesse Oblige
offline
Опыт:
30,395Активность: |
Цитата:
это просто форум так отображает, там то все норм. Цитата:
Да в том то и дело, что все так делают. Но вроде тк где то светил метод делать тоже самое, но через 1 эвент, типо по умному=) |
||
26.02.2011, 14:55 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
reALien
offline
Опыт:
29,211Активность: |
Через гетлокал плеер предлагали, не юзаю по религиозным причинам |
26.02.2011, 14:59 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Faion
Noblesse Oblige
offline
Опыт:
30,395Активность: |
Там просто в чем фича, мало того что эвент сработает 100500 раз, так еще и цикл прокрутится кол-во эвентов*12. Дикое расточительство ресурса машины=)
Faion добавил: Цитата:
Это лишь сократит кол-во срабатываний в 12 раз, но обращений будет по прежнему куча, но идея дельная оч даже. |
|
26.02.2011, 15:02 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hanabishi
COOL STATUS
offline
Опыт: отключен
|
Faion, разницы с бж здесь немного, но я делаю сам как участник сообщества антибж=)
ты это имел ввиду? сделать разные функции с подачей нужных аргументов
|
26.02.2011, 15:08 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Faion
Noblesse Oblige
offline
Опыт:
30,395Активность: |
У меня собсно есть некоторые идеи, но не думаю что идея рациональна.
Код:
Мне кажется есть способ круче=) |
26.02.2011, 15:12 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hanabishi
COOL STATUS
offline
Опыт: отключен
|
за такое как минимум тебя пошлёт компилятор
а ещё можно сделать несколько TriggerAddAction через цикл Hanabishi добавил: тогда триггер запустит все аттаченые на него функции разом |
26.02.2011, 15:24 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Faion
Noblesse Oblige
offline
Опыт:
30,395Активность: |
Цитата:
И правда посылает. Но если сделать так: Код:
То не пошлет, а смысл вроде тот же будет. |
|
26.02.2011, 15:28 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hanabishi
COOL STATUS
offline
Опыт: отключен
|
Faion, тоже пошлёт, т.к. в AddAction можно толкать только функции без аргументов
Hanabishi добавил: и если ещё учесть невозможность code array то всё равно придётся писать вручную |
26.02.2011, 15:33 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Faion
Noblesse Oblige
offline
Опыт:
30,395Активность: |
Hanabishi, так я вынес предложение вместо аддэкшн, использовать ExecuteFunc. Поидее должно работать.
TriggerRegisterPlayerUnitEvent работает вроде так, что если там false, то код ниже не срабатывает, а если сработал, то в нашем случае должен запустить нужную нам функци. Да и аддэкшн не рулит, по той причине, что способности разместить в 1 триггере... это анриал. Тут суть темы в создании\нахождении самого лучшего способа обрабатывать события. Далее если такой вариант использовать, то просто создается бд где сейвятся func_name нужные. Возможно даже можно обойтись без хт, типо использовать массив. GetSpellAbilityId() это же int, и как я понимаю можно сделать вот что: 'A000' == 40960 ж, юзать абилити ид - 40960, как индекс в массиве. И хранить это все в массиве, таким образом сделаем тоже самое и без ХТ. Типо как то так: Код:
Я подобное не пробовал, так что вполне может быть что я предложил полный бред=) |
26.02.2011, 15:41 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hanabishi
COOL STATUS
offline
Опыт: отключен
|
Faion, всё равно придётся в массив вручную забивать точнее не массив а хэш, т.к. массив имеет индекс [0..8191] |
26.02.2011, 15:46 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Faion
Noblesse Oblige
offline
Опыт:
30,395Активность: |
Цитата:
Да, но зато нам не нужно будет писать в каждом спеле конструкцию. Код:
Это будет заменено 1-й строчкой. Кстати, это компилится нормально: Код:
|
|
26.02.2011, 15:48 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hanabishi
COOL STATUS
offline
Опыт: отключен
|
Faion, я не пойму что ты имел ввиду, ведь экзекут вызовется 1 раз при ините карты причём неправильно |
26.02.2011, 16:15 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Faion
Noblesse Oblige
offline
Опыт:
30,395Активность: |
Цитата:
На сколько я знаю, ExecuteFunc просто запускает функцию в отдельном потоке. Конкретно эту функцию не тестировал, но к примеру TriggerExecute() работает на ура |
|
26.02.2011, 16:19 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hanabishi
COOL STATUS
offline
Опыт: отключен
|
тогда так
но в любом случае при экзекуте теряются аргуметы
Hanabishi добавил: поэтому во избежание изврата над глобалками рекомендую вариант из 7 поста |
26.02.2011, 16:30 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Faion
Noblesse Oblige
offline
Опыт:
30,395Активность: |
Над будет затестить, а про то что при экзекуте аргументы не передаются, не слышал, и вероятно даж будет лучше 1 раз поизвращатся, чем потом как нить в будущем переписывать все=)
|
26.02.2011, 16:37 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hanabishi
COOL STATUS
offline
Опыт: отключен
|
и ещё если в экзекут послать имя несуществующей функции, будет фатал |
26.02.2011, 16:42 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Faion
Noblesse Oblige
offline
Опыт:
30,395Активность: |
Цитата:
Эт проблема решается проверкой if var != null {} =) Faion добавил: Тему можно на свалку=) |
|
26.02.2011, 16:56 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|