Библиотека "All.j" вполне неплохо работает, результат потрясающий! Но есть проблема, когда происходит "Pick every units in range ... matching ..." то делается всё наоборот, либо вообще пропускает, словно условие истинно, но это не так! На некоторых заклинаниях приспособился, сначала заношу группу в переменную "set CurrentGroup = Units in Range 500.00 of matching <бла-бла-бла...>", а затем эту переменную указываю в "Pick every unit in CurrentGroup and do...", и многие ошибки так удалось обойти. Но встретил ошибку в группе, когда может правильно определить группу, а может и нет, и это происходит случайно, во время игры. Предыдущий метод, заносить сначала в переменную, уже не помогает. Я не программист на jass, поэтому прошу посмотреть файл тех кто разбирается. Он не такой уж и большой. Покрутил там таймер в функции удаления групп, изменил ".0" на "2.0". Перезагрузил со скриптом. Стал удалять с задержкой в две секунды. Причём за эти две секунды набирается 2000~ Хендлов, видимо уже не от моей карты, но сбрасывается снова. Думал что дело в таймере удаления утечек, но нет, это всего лишь задержка удаления... Как бы всё намекает на "boolexpr b", что условие приходится выносить отдельно за функцию, решать его там своими силами, а потом заносить в функцию обратно. Стал смотреть в интернете про эту функцию, но ничего толкового не нашёл. Вроде бы всё верно. Того автора уже лет 5 на сайте нет похоже.
Использую All.j тот который весом побольше, значит лучше, да и в игре он хоть как-то работает, в отличие от более старого, который поставляется вместе с NewGen WE. Выложу его здесь. Оригинал!

Принятый ответ

ALL_Remove = false
чтотооченьважное
ALL_Remove = true
как сложно то было

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
17
6 лет назад
0
а можно конкретне какая ошибка у вас из того что вы написали я непонел
0
7
6 лет назад
0
ledoed, можно. Хотя Я пишу так чтобы потом вопросов не вызывало.
Вчера пол ночи провозился, пытаясь пробить путь... Ошибка - в переменную групп закладываю значение, не доходит триггер ещё до конца как это значение, которое ещё нужно, очищается. Как Я ругался на того автора скрипта который очищает переменную в середине триггера, но которая может, даже чисто теоретически, ещё понадобится! Причём нет wait-функций, он её просто очищает, когда ему вздумается. В другом триггере видимо работает, но "на-разок". Нельзя ещё и много раз перезаписывать переменную групп в одном триггере, так же случается неконтролируемое очищение. Я понимаю что борьба с утечками должна вестись жёстко, но это перегиб против правил программирования на Warcraft-е! Сделал бы очищение в конце триггера, или при перезаписи переменной групп, оставляя пространство для её использования.
0
26
6 лет назад
0
ALL_Remove = false
чтотооченьважное
ALL_Remove = true
как сложно то было
Принятый ответ
0
7
6 лет назад
0
Hate, проверял, не работает. Сделал это обрамление в цикле, там где в переменную групп добавляется один юнит, всё равно очищает после цикла, когда мне нужны те набранные юниты в ней. Но эту переменную групп не объявлял в начале триггера, так как она у меня всегда создана как глобальная для всех триггеров, однако Я её очистил перед тем как использовать, и без этого скрипта работало.
Сейчас вообще удалил из файла все очищения групп и спецэффектов, ибо с этим и сам справлюсь. Но мне всё равно не нравится то что эта библиотека сама создаёт Хендлы - не могу добиться полной тишины (Хендлов), хотя отключил всё!
0
26
6 лет назад
0
вы никак сами не обойдете утечки с группами если работаете с гуи
показывайте как использовали мой пример выше
0
7
6 лет назад
0
Hate, Я проверял другой вариант сейчас, отключал все процессы, все триггеры, которые могли вызывать какие-либо события на карте. Даже события "отдал приказ 'отставить'" отключены. Триггеры со спеллами сами не активируются... Один Хендл прибавляется, и один отнимается сам по себе. Всё полностью заморозил, почти полная тишина. И тут читаю ваш комментарий... Ну вернул те теги назад как было, а перед тем как делать скрин решил проверить, и оказалось что теперь работает. Запустил без тегов, тоже работает. И получается теперь смысла нет делать скрин. Видимо когда процессов много то они накладываются друг на друга, и эта библиотека, очищает же по таймеру, и с очищением очищает не те группы которые следовало бы очищать, мне лично так кажется. Ну что теперь, обратно всё запустить и проверить с большим потоком событий?
0
17
6 лет назад
0
Ну как бы это нормально что переменные очищаються прямо в функциях этой библы,такчто не давайте вашим гл переменным обрабатываться в них
0
7
6 лет назад
0
Не стал дожидаться, поработаю вашим тестером. Ещё раз всё повключал, ровно ничего более не трогая. Запустилась вся моя карусель... Заклинание не работает! Хотя иногда работает, а иногда нет, но это точно не пойдёт для заклинаний на которых стоит вся игра! Сделал обрамление тегами, вообще не работает. Четыре заклинания подобного типа то работают то не работают когда им вздумается.
Теперь суть заклианния! Рядом с героями стоят его войны, в радиусе 500, и с условием что они не такие же герои, живые и ... бла-бла-бла ... добавляются в группу CurrentGroup2. Потом идёт цикл, который заканчивается до того, до которого уровень этого заклинания у героя. И по одному начинает добавлять этих юнитов, рядом стоящих, в группу CurrentGroup, а из группы CurrentGroup2 вычитается он же, чтобы потом, при новом обращении цикла, его снова не добавить, а добавить нового. Потом Я проверяю их количество, делаю эффект (который кстати тоже то работает то нет), и в зависимости от того, сколько рядом юнитов с героем было, такой силы эффект к нему и применяю. И когда нужно уже делать спецэффект, поставил дебаггер, чтобы посмотреть сколько набралось юнитов - показывал 0 в группе, хотя рядом стояли юниты плотно. Прошу заметить что если бы был wait то разрыв был бы справедлив! Так как в это время могло бы вклиниться очищение, а тут идёт сплошной код, без разрывов, и очищается в однопоточности, как так? Иногда впрочем работает, что ещё больше путает.
ledoed, что ты предлагаешь? Объявить эти переменные при инициализации и поставить эти теги? Такой вариант меня устроил бы, так как эти переменные работают и в других триггерах, они у меня постоянны. Но всё равно, придётся их очищать вручную, так как при присвоении значения переменной старая группа оставляет утечки. Да и не стоит забывать про другие переменные, другого типа, и спецэффекты так же работают коряво - слишком рано удаляются. Придётся всё обрамлять, но тогда теряется смысл (сам и очищай).
Ну как бы это нормально
Не согласен. Сам же автор написал:
"
  1. Скачать, собственно, саму библиотеку и закинуть ее в папку ...\jassnewgenpack5d\AdicHelper\lib\
  2. В своей карте написать в нестандартном коде: include "ALL.j"
  3. Забыть об утечках.
"
Вот последнее написанное это действительно нормально! Пользователь не должен думать как там устроено! Сам так стараюсь делать программы, это хороший стиль.

Вот скриншот триггера -
Загруженные файлы
0
26
6 лет назад
0
бездарность, неправильно используете то что я дал
0
7
6 лет назад
0
Hate, мне больше нечего там обрамлять. Переменная создана изначально в окне переменных.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.