На Гуи использую переменные "группа юнитов" типа массив. Чтобы их обнулять нужно прописать custom script. Возможно ли обнулить их все одной командой или необходимо прописывать для каждой callDestroy udg_***[1] и так далее до конца массива?

Да, по идее тебе не нужен массив групп, достаточно будет одной группы и массива целочисленных переменных. Делаешь ГРУППУ ИГРОКОВ (не Отряд юнитов), которые у тебя играют, там выбираешь у игрока в Отряд всех живых юнитов со способностью Налогоплательщик, записываешь в переменную их количество, потом очищаешь Отряд.

Пример:
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
28
Нужно не обнулять, а удалять группы для каждой ячейки массива, которые содержат существующую группу.
20
PT153, то есть, нужно удалить группу тех же юнитов, которых добавлял ранее, из основной группы?
28
Yury13, лучше покажи на примере, а то так ничего не понятно. Чтобы группа была, её нужно создать. Как правило, в GUI при создании туда сразу же добавляются юниты.
Также покажи, как ты создал массив групп, это важно.
20
PT153, условие не вошло. Там стандартная проверка уровня способности.
Загруженные файлы
26
Просто циклом от 0 до 12 удаляешь группы в массиве.
28
Просто циклом от 0 до 12 удаляешь группы в массиве.
От 0 до 12, включая 0 и 12.
20
PT153, вот так?
А зачем включать 0, ведь используется номер игрока?~PT153:
От 0 до 12, включая 0 и 12.
Загруженные файлы
28
Yury13, не так. Ты не используешь свой массив.
Если используешь номер игрока то тогда уничтожить группу в индексе 0 можно при инициализации.
В GUI нет функции по уничтожению группы.
26
Тебе точно надо удалять группу, а не очистить просто, как ты и делаешь? Всё-таки налоги, наверное, периодически пересчитываются, а не один раз за игру.
20
8gabriel8, да, именно. Мне нужно каждый ход подсчитать число юнитов со способностью "налогоплательщик".
Я сначала загоняю их в группу, а потом считаю число юнитов в этой группе.
Может быть, можно сразу устанавливать целочисленную (сумма денег) = число юнитов в группе, при этом не создавая группу отдельным действием и не очищая ее?
26
Да, по идее тебе не нужен массив групп, достаточно будет одной группы и массива целочисленных переменных. Делаешь ГРУППУ ИГРОКОВ (не Отряд юнитов), которые у тебя играют, там выбираешь у игрока в Отряд всех живых юнитов со способностью Налогоплательщик, записываешь в переменную их количество, потом очищаешь Отряд.

Пример:
Загруженные файлы
Принятый ответ
20
8gabriel8, спасибо за наглядный пример! А вот если, скажем, я решил сразу, не используя переменную, установить (дословно по карте)
Tax=Число юнитов в группе юнитов (юниты игрока Х при условии Налогоплательщик>0)
То есть, не создаю группу отдельным действием.
В данном случае необходимо удалять юнитов не из переменной, а вот так?
Загруженные файлы
26
Да, но у тебя всё равно остаётся сама группа, хоть и пустая. Причём так ты плодишь утечки. Грубо говоря, в таких случаях игра создаёт в памяти переменные групп с именами типа g0000, g0001, g0002 и так далее. Когда ты сразу создаёшь группу через переменную, то множество таких групп не создаётся и не утекает.
НО! Ещё раз обращаю внимание, что конкретно эта утечка будет незначительной.
Объект Вес утечки
Точка 0.361 кб
Группа 0.620 кб + 0.040 кб за каждого юнита в группе
Эффект 11.631 кб
То есть, если у тебя группа твоим способом за всю игру будет создана 1000 раз, то к концу игры на этом утечёт всего лишь 620 кб памяти. Которая после завершения карты освободится.
20
8gabriel8, еще такой вопрос: функция "отряд-удалить всех юнитов" равносильна команде кастом скрипта call DestroyGroup(udg_X)?
26
Нет. Убирая всех юнитов из группы ты не удаляешь её саму.
20
8gabriel8, то есть, если я буду еще и удалять группу после исключения из нее всех юнитов, то потом игра будет выполнять лишнюю работу, создавая ее заново?
8gabriel8, в таком случае, если я захочу переменной "Отряд" присвоить другую группу (юниты с другим условием), то старую нужно дополнительно удалять уже через кастом скрипт, чтобы не было наслоения? Если же я просто добавляю раз в промежуток времени разных юнитов в одну и ту же группу, достаточно удалять их из нее без скрипта? Сори, если запутанно излагаю идею.
26
Очень запутано объяснил)
Представь, что у тебя есть пакет, в который ты закидываешь игрушечные фигурки - юнитов. Этот пакет и есть группа. Если все фигурки из пакета уберёшь, то он сам останется, выкинуть сам пакет можешь лишь через кастом скрипт. Когда пакет задан переменной, то это подписанный пакет, а когда делаешь так:
то каждый раз в новый пакет складываешь фигурки, после пересчёта убираешь их и получаешь со временем в итоге кучу пустых пакетов.

Вообще можно не заниматься приодическим пересчётом, а сделать два триггера на подсчёт налогоплательщиков. Первый будет реагировать на событие Юнит Входит в (Игровая область), условие Тип юнита (Юнит триггера/Переключающий юнит/Входящий юнит) равно Налогоплательщик или имеет способность Налогоплательщик, если у тебя много типов таких юнитов, действие Tax(Номер игрока(Игрок триггера/Переключающий игрок))=Tax(Номер игрока(Игрок триггера/Переключающий игрок)) + 1. Во втором триггере событие Юнит Умирает, условие Налогоплательщик, действие Tax(Номер игрока(Игрок триггера/Переключающий игрок))=Tax(Номер игрока(Игрок триггера/Переключающий игрок)) - 1. Но это если у тебя нет возможности захватить под свой контроль Налогоплательщиков, либо лишить их статуса налогоплательщиков через морф в другого юнита, всё это надо учесть, добавив событий. Такой системе не нужны группы игроков или отряды юнитов, только массив целочисленных переменных.
20
8gabriel8, спасибо, теперь понятно. Я остановлюсь на первом варианте, так как он подсчитывается лишь раз в 90 секунд. А второй будет нагружать процесс постоянно, пусть и меньше.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.