happy_horror
2 + 2 = 22 :-D
offline
Опыт:
7,818Активность: |
GetEnumUnit - не верное определение владельца юнита
Не будет ли так любезен, волшебный XGM объяснить, как обойти такую проблему:
Есть функция ForGroup, использующая функция GetEnumUnit (Picked Unit в триггерах), так вот вопрос - почему GetEnumUnit не улавливает владельца (т.е. игрока, владеющего юнитом) можно ли это как нибудь обойти? Предвижу вопрос на счёт код, вот он пожалуйте: Код:
работает так: юнит кастует спелл во врага и на экране выводятся числа - соответствующие номеру игрока владеющим юнитом для которого совершается ForGroup Для теста я поставил 5 юнитов принадлежащих разным игрокам в кучку, но на экране всега выводится 1 (т.е. номер игрока которым я кастую спелл) |
26.03.2008, 20:21 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Лось
offline
Опыт:
7,223Активность: |
Всё улавливается, у тебя изза вот этой ф-ии может выдаваться не тот ID:
Код:
Если вообше не выдаётся никакой значит на группу действие не производится (и не надо GUI2Jass использовать). |
26.03.2008, 20:39 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
потомуфто ты используеш действия в ФИЛЬТЕР функции, а не в АКШЕН функции
и там используется НЕ пикед юнит - GetEnumUnit() А матчинг юнит (или как там) - GetFilterUnit() Jon добавил: И вообще что за говнокодинг, делай так: Код:
|
26.03.2008, 20:53 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
happy_horror
2 + 2 = 22 :-D
offline
Опыт:
7,818Активность: |
Мда...спс Jon - а как определить какие функции что улавливают? Чем отличаются ForGroup и GroupEnumUnitsInRange и как узнать какие функции к ним применимы?
Может поделишся секретом как узнавать это?) P.S. ну а, говно кодинг - извеняй, я ещё нуп |
27.03.2008, 00:00 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
GroupEnumUnitsInRange (gr, X, Y, R, expr)
gr - уже созданая группа, в нее заносятся все юнитыв радиусе R от точки (X, Y), Но при том заносятся те юниты которые удовлетворяют условию фильтр функции expr. Она обьявляется так: Condition(function Function123) ну или конкретнее так: Filter(function Function123_Filter) Эта функция срабатывает для КаЖдОгО юнита в требуемой радиусной области, и расматриваемый юнит равен GetFilterUnit() ForGroup (gr, func) Совершено ничего не делает с самой группой, просто перебирает всех юнитов в ней и для каждого использует функию func Она обьявляется просто так: function Function123_Action Эта функция срабатывает для КаЖдОгО юнита в группе, условие никакого в большенстве случаев не труебуется потомучто мы уже использовали условие когда заносили в эту группу юнитов функцией GroupEnumUnitsInRange (gr, X, Y, R, expr), и расматриваемый юнит равен GetEnumUnit() |
27.03.2008, 00:30 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
Цитата:
ахахаха) у тя кста тоже) Код:
TT когда вы научитесь норм кодить что бы пришел Тс или я и сказали "да, вот это тру, маладец" это просто ужос=/ |
|
27.03.2008, 12:32 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|