Как правильно добавить группу ТИПА юнитов в переменную? Все что я могу найти это указать конкретный типа юнита для конкретной переменной. Это как то через группу делать? Но я не могу найти группу типов юнитов...

в массив хапихаеш и счетчик растет и если такой тип есть пропускаем пока все юниты не подобран и выполняем свой задачу
`
ОЖИДАНИЕ РЕКЛАМЫ...
23
Похожие вопросы:

ответ
тебе для начала надо научится пользоваться группами
прочти статьи ибо ты написал бред в вопросе
ответ
решил проблему костылём - дал возможность рабочему строить только башню - шаблонку, которая в свою очередь может улучшаться в две указанные башни. Взаимосвязь поставить только от башни - шаблонки. Лимит поставил на башню шаблонки.
Но тема не закрыта. Хотелось бы узнать можно ли решить проблему без костылей.
ответ
magistor8, получится цензура цензура
да и всеравно придётся перебирать всех юнитов в группе чтобы узнать их количество
только вместо одной строки с ифом у тебя будет вложенный цикл с проверкой юнитов
так что делай как сказали ssbbssc и l_Avenger_l (они походу не въехали что предлагают один и тот же вариант)
если надо знать сколько юнитов каждого (а не 1 конкретного) типа в группе то их вариант можно немного улучшить
вместо обычной целой переменной юзай массив целых
и в цикле делай проверку что если юнит принадлежит первому типу то массив[1]++ (увеличить значение на единицу)
если второму то массив[2]++
и т.д.
в результате за 1 пробег цикла ты получишь массив который будет содержать количество юнитов каждого типа
а если ты хочешь ещё оптимальнее то вместо проверки "если юнит принадлежит n-ному типу" юзай бд на основе хеш таблицы которая по равкоду юнита будет хранить его индекс в массиве
либо любой другой способ преобразовать равкод юнита в целое число которое >=0 и <8192
ответ
darkowlom, нужен 1 массив и 1 функция
примерно так будет выглядеть
int types[];

bool myBoolExp(){
	return GetUnitTypeId(GetFilterUnit())==types[GetPlayerId(GetOwningPlayer(GetFilterUnit()))];
}

...
types[GetPlayerId(myPlayer)]=myType;
GroupEnumUnitsOfPlayer(myGroup, myPlayer, function myBoolExp);
либо перебирать группу вручную
unit Picked
group myGroup
...
GroupEnumUnitsOfPlayer(myGroup, myPlayer, null);
loop{
	Picked = FirstOfGroup(myGroup)
exitwhen Picked == null
	GroupRemoveUnit(myGroup,Picked)
}
в данной ситуации лучше использовать первый вариант
ответ
Ну только триггерные системы отрядов, была такая...
Вот пример ссылочка
Были и другие, поиск в помощь.
Вот еще ссылка

22
в массив хапихаеш и счетчик растет и если такой тип есть пропускаем пока все юниты не подобран и выполняем свой задачу
Принятый ответ
28
Зависит от цели.
Если нужно выбрать юнитов в радиусе или в области с конкретным типом, то нужно сделать так.
Загруженные файлы
8
PT153:
Зависит от цели.
Если нужно выбрать юнитов в радиусе или в области с конкретным типом, то нужно сделать так.
Не, мне нужно инициализировать эти группы, что бы потом спавнить случайного юнита из группы юнитов
13
VVelikolepniy, для этого существуют юнитпулы, которые можно заполнять типом юнитов, после чего доставать юнитов оттуда с определенной вероятностью (в обычном GUI такого нет).
24
VVelikolepniy, проще всего - массив типов юнитов плюс случайное число. Есть и более красивые решения (те же юнитпулы, например), но массив все-же проще если в гуях работать.
А группа это совсем другое - группа это список конкретных юнитов.
8
prog:
VVelikolepniy, проще всего - массив типов юнитов плюс случайное число. Есть и более красивые решения (те же юнитпулы, например), но массив все-же проще если в гуях работать.
А группа это совсем другое - группа это список конкретных юнитов.
Ну я так и сделал в итоге, при инициализации добавил всех юнитов по очереди в массив типа юнитов и вызываю номер юнита через рандомное число
Чтобы оставить комментарий, пожалуйста, войдите на сайт.