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

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

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

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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
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)?
0
26
5 лет назад
0
Нет. Убирая всех юнитов из группы ты не удаляешь её саму.
0
20
5 лет назад
Отредактирован Yury13
0
8gabriel8, то есть, если я буду еще и удалять группу после исключения из нее всех юнитов, то потом игра будет выполнять лишнюю работу, создавая ее заново?
8gabriel8, в таком случае, если я захочу переменной "Отряд" присвоить другую группу (юниты с другим условием), то старую нужно дополнительно удалять уже через кастом скрипт, чтобы не было наслоения? Если же я просто добавляю раз в промежуток времени разных юнитов в одну и ту же группу, достаточно удалять их из нее без скрипта? Сори, если запутанно излагаю идею.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.