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

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

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

Пример:
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...

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

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