Igores
НИИ 4А-Во! Кафедра Джасс.
offline
Опыт:
5,325Активность: |
Проблемка со стомп спеллом.
На сайте есть статья, в которой описывается как создать обычный стомп спелл используя кеш. Я создал такой же стомп спелл, но только не через кеш, а через атачи хэндлов, всё получилось нормально. Потом я решил усовершенствовать этот спелл, сделать так чтобы спелл работал в течение 10 секунд, то есть, чтобы всех кто подойдет к герою в течение 10 секунд откидывало назад, даже когда герой просто ходит, для этого просто добавил в код еще один таймер, где каждые пол секунды создается новый таймер для новой группы юнитов, то есть создается еще 20 таймеров, которые конечно каждую секунду самоуничтожаются. Но после добавления начались глюки. В начале спелл вообще перестал работать, но когда я в функции фильтра заменил условия на тру, спелл заработал, но при этом сам герой тоже начал отлетать. Я думаю, что ошибка изза функции copygroup. Есть какие нибудь предположения как исправить эту ошибку? |
19.02.2009, 01:42 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
agentex
offline
Опыт:
34,834Активность: |
Скорее всего 20 таймеров это лишнее, в 80% случаев для 1 спела хватает 1 таймера. И группы атачить нет смысла, легче каждый раз набирать юнитов в одну. Вообще нужно видеть код и нормальное описание работы спела чтобы как то помочь |
19.02.2009, 01:49 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Igores
НИИ 4А-Во! Кафедра Джасс.
offline
Опыт:
5,325Активность: |
Насчет одного таймера согласен, просто для начала решил упростить задачу:) но в чем же косяк? А есть способ как достать приатаченные хэндлы в другой функции?
Igores добавил: А как мне добавлять в группу новых юнитов? они ведь перепутаются. |
19.02.2009, 01:59 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Vampirrr
O_o
offline
Опыт:
19,286Активность: |
Igores, мб герой тоже отлетает потому что он занесен в группу? А добавляй нужных юнитов через
Код:
это мой вариант..может есть че получше, но я хз.. |
19.02.2009, 03:16 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
agentex
offline
Опыт:
34,834Активность: |
Цитата:
есть функция GroupClear() |
|
19.02.2009, 09:28 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
Vampirrr, советую ознакомиться с нативками для работы с группами, сейчас ты написал потенциальный бред
собж, нужно создать что то вроде поля вокруг кастера? дык, пикайте всех, и через имба цикл с группами просто двигайте их (т.е. в функции передаваемой в качестве аргумента функции пика юнитов в радиусе перемещайте пикнутого, и возращайте фалсе, группа будет чиста всегда тогда полностью, это более чем удобно и качественно) |
19.02.2009, 12:25 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
alexkill
offline
Опыт:
18,872Активность: |
Цитата:
эта функция там не нужна вообще. герой отлетает, потому как в фильтре наверняка не указал: Код:
Цитата:
что ж вас тянет на всякого рода извращения? =) а как же универсальность? |
||
19.02.2009, 12:37 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Igores
НИИ 4А-Во! Кафедра Джасс.
offline
Опыт:
5,325Активность: |
agentex, если буду постоянно чистить группу, то у меня предыдущие юниты не будут успевать отлетать до конца, просто остановятся на полпути.
ADOLF, не совсем понял тебя, так ты предлагаешь делать действия не с группой, а каждый раз с одним юнитом? alexkill, а как мне без copygroup делать? Ну вообщето у меня в фильтре делалась проверка на врага, просто он потом с фильтром перестал работать, поэтому я его отключил. |
19.02.2009, 14:46 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
agentex
offline
Опыт:
34,834Активность: |
Igores ну тогда не чисть а проверяй расстояние от кастера до всех юнитов в группе, если меньше какогото, двигай, если больше, плавно тормози
|
19.02.2009, 14:48 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
alexkill
offline
Опыт:
18,872Активность: |
Обрабатывай GetEnumUnit()'a. То есть аттач на хэндл таймера каждого пикнутого юнита и производи с ним действие (передвигай и т.п.).
Цитата:
будут |
|
19.02.2009, 14:59 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Igores
НИИ 4А-Во! Кафедра Джасс.
offline
Опыт:
5,325Активность: |
alexkill, как мне тогда этих юнитов останавливать? Таймер ведь не затормозишь.
|
19.02.2009, 15:21 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
alexkill
offline
Опыт:
18,872Активность: |
Igores
Аттач также воина, применившего способность. И в условии проверяй расстояние между кастером и GetEnumUnit()'ом. |
19.02.2009, 15:45 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Igores
НИИ 4А-Во! Кафедра Джасс.
offline
Опыт:
5,325Активность: |
Ты предлагаешь мне использовать функцию forgroup, тогда я не совсем понял как использовать в ней хэндлы. |
19.02.2009, 15:57 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Vampirrr
O_o
offline
Опыт:
19,286Активность: |
ADOLF, хм, а что не так? Этот потенциальны бред (по крайней мере у меня) успешно работает и проблем не вызывает..
|
19.02.2009, 17:22 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
alexkill
offline
Опыт:
18,872Активность: |
Vampirrr
1. Представь ситуацию: 100 героев обладают этой способностью. Мне надо в фильтре проверять все их айдишники? Для этого достаточно в фильтр-функции проверить, не является ли он GetTriggerUnit()'ом. 2. call GroupAddUnit(group, GetEnumUnit()) - бред, причем даже не потенциальный (я тебе не раз исправлял это в кодах). Ты уже объединил воинов в группу в предыдущей строке. Теперь достаточно лишь обратиться к ним через ForGroup() (в каллбек-функции они уже и будут обрабатываться как GetEnumUnit()). Отредактировано alexkill, 19.02.2009 в 17:52. |
19.02.2009, 17:32 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Vampirrr
O_o
offline
Опыт:
19,286Активность: |
alexkill, понял, спасибо)
|
19.02.2009, 23:01 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Igores
НИИ 4А-Во! Кафедра Джасс.
offline
Опыт:
5,325Активность: |
alexkill, переделал спелл, сделал без групп, добавил динамический триггер, убрал лишние таймеры, всё работает превосходно:) но я так и не понял как в callback функциях forgroupа вызывать нужные хэндлы объектов?:) скоро выложу этот спелл в своей теме.
|
20.02.2009, 00:02 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
alexkill
offline
Опыт:
18,872Активность: |
Igores, я не знаю всех твоих требований к спеллу, вот что сделал я. Каждую секунду в течении 10 секунд враги отбрасыватся. Триггер на отмену способности добавил. Основа - Канал со значением 10 поля "Следовать в течении времени"
» code Код:
Код:
|
20.02.2009, 13:09 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Igores
НИИ 4А-Во! Кафедра Джасс.
offline
Опыт:
5,325Активность: |
Спасиб:) не знал, что в других функциях можно узнавать истекший таймер:) |
20.02.2009, 14:15 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|