Vampirrr
O_o
offline
Опыт:
19,286Активность: |
Как проверить, пуста ли группа?
Собственно не могу найти замены функции IsUnitGpoupEmptyBJ, а очень хотелось бы.. |
08.02.2009, 21:49 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
alexkill
offline
Опыт:
19,072Активность: |
|
08.02.2009, 22:07 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Toadcop
offline
Опыт:
54,313Активность: |
кстати как бы там небыло... FirstOfGroup() для большай части случие лутчый способ НО есть група полностью "произваолная" и "висела" то может быть что в ней остлись "призраки" (удалёный юниты) и тем сама FirstOfGroup() вернёт null НО после этого юнита напр есть еще другие юниты. тем самым получитса фейл. (это кстати серьёзней чам многие могут думать)
а вот ForGroup() коректно обрабатывает всю группу. ну как я писал если у вас не произвольные юниты в группе (напр те которые не удаляютса) то проблем нету. или эта группа было тока что составлена. |
09.02.2009, 00:50 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
Toadcop чет я сильно сомневаюсь в наличии описанного спецэффекта - в этом случае концепция групп, внедренная в движок сама по себе является фейлом а ForGroup мало чем будет отличаться от указателя на первый элемент по наличию ошибок
откуда столько ошибок в посте? |
09.02.2009, 01:44 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Toadcop
offline
Опыт:
54,313Активность: |
NETRAT ну дык сомневайся я пишу то что я и не тока видел сам =) я помню как вексориан парилса с этим 2 недели xD у него цыкл обратоки на FirstOfGroup() обрывалса. когда были чумные тучи в ней...
всё очень просто кстати... когда унит удаляетса... его хендл (или чё либо) остаётса в группе ибо это не рацыонально всё что возможно чистить от него (напр есть 100 груп где есть этот юнит и т.п) ну и тем самым он остатса в ней как мусор. ForGroup() фильтрует таких юнитов и делает действия тока с нормальными в то время как FirstOfGroup() возращает первого юнита из группы. (каким бы он небыл) наверно близы просто не подумали об этом и всё... если интересует на wc3camp есть несока топегов посвещёны этой теме. Toadcop добавил: ах да... а особеносте кодинга близзов.... я так и досихпор не понял в чём была проблема сделать пометку на хендл что он активный. и тока в этом случие помещять его в стек (там он и метитса как не активный) тем самым было бы просто невозможно помещять несколько одинаковых хендлв в стек. (из за чего сильно страдал вар3 мапмейкинг в 2006 году...) да и досих пор в доте они есть/появляютса. кстати в этой всей истории есть "зло" я не помню на 100% коректность но. если присвоить переменой несуществующий хендл т.е. напр запись в кеш... юнит здох, удалилса (напр) типо хендл мертвый но всё же он типо висит мы потом это присваеваем переменой и вот здесь... я не помню или при обнулени или даже просто этот хендл снова помещаетса в стек. вроде даже просто. т.е. что либо "делать" с несуществующими объектами зло. это как бы всё логично и круто НО на практике такие ситуацыи могут очень не предсказуемо происходить особено когда есть неистественый обрыв процесов (удаление/взрыв юнитов) тоже самое впринцыпе любих объектов касаетса просто на юнитах больше всего делаетса таких косяков (я уверен). и снова кусов из "Закона Пустоты" кстати как оказываетса я тогда был таки достаточно прав =) для потверждения этого я наверно сделаю мапу... позже. |
09.02.2009, 03:53 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ShadoW DaemoN
offline
Опыт:
37,078Активность: |
Советую втыкнуть: GroupUtils by Rising_Dusk. Наработка была сделана с применением наработки, написанной Captain Griffen. Привожу перевод основной сути проблемы:
Цитата:
Также привожу вышеупомянутую библиотеку: Код:
|
|
09.02.2009, 06:59 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|