Uncolo
offline
Опыт:
580Активность: |
FirstOfGroup()
после удаления из группы "первого юнита", то сл. запрос на "первого юнита" вернет NULL
каким способом можно присваивать FirstOfGroup юниту, который шел по счету, сразу же за 1ым? вот пример: есть 3 юнита в группе (1, 2, 3), после удаления из группы первого, нужно присвоить 2ому юниту FirstOfGroup |
25.04.2012, 16:33 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Nerevar
I'll be back!
offline
Опыт:
18,352Активность: |
|
25.04.2012, 16:36 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DaeDR
offline
Опыт:
8,074Активность: |
Uncolo, можно ForGroup() сделать. Устанавливаем две переменные. Первая равна нужному номеру юниту, вторая равна нулю. При Пике каждого юнита прибавляем ко второй +1 и проверяем, если равна первой, то заносим юнита в переменную. |
25.04.2012, 16:38 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Msey
????
offline
Опыт:
67,346Активность: |
Nerevar, а не проще циклом вышвыривать юнитов из группы? |
25.04.2012, 16:39 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Uncolo
offline
Опыт:
580Активность: |
Nerevar, совсем не то... а если юнитов 1000+? переменную на кждого юнита (или массив)? Оо да ну нет.
DaeDR, группа занесена в глобалку, фор груп то незачем. Нужно просто удалять первого из группы и ставить первым, сл. по списку Msey, дело в том, что цикл тут не нужен, т.к. вышвыривается юнит после опр. действия и добавляется новый. вообщем на действии это так: каждый созданный юнит заносится в группу, если число юнитов привысит число лимита (к примеру 5), то первый юнит удаляется из игры и из группы, а его место занимает второй по счету и так далее, до бесконечности |
25.04.2012, 16:43 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Nerevar
I'll be back!
offline
Опыт:
18,352Активность: |
Msey, ну автор сказал для 3 юнитов - для этих целей использовать цикл нецелесообразно
DaeDR, ты вообще извращенец?автор просит FirstOfGroup() - ты ему объясняешь про ForGroup().Вопрос - Зачем? ну вообще способ с лупом ниже
где Secret_Pirouette_Filter - функция,которая проверяет юнита на то что он подходит под "цели" как бы,возвращает boolean |
25.04.2012, 16:44 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Uncolo
offline
Опыт:
580Активность: |
Nerevar, я говорил "к примеру", а не конекретно 3х =))) на самом деле юнитов в десятки раз больше будет по факту
Это не то, что нужно. Поидее это ж только "разовая" группа, цикл заменил лишнее действие с группой и всего то. Вот к примеру. В группе содержатся уже 10 юнитов. При добавлении 11го юнита - удаляется первый, а второй занимает местого первого. Суть этой фигни всей - не превышать число вызванных юнитов, а самого "старого" убирать, при переполнении группы. Действие не по таймеру, не разовое, ЕнумГруп не нужно. На протяжении всей игры идет отлов. Чем то схоже с системой Суммон Лимит |
25.04.2012, 17:00 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Nerevar
I'll be back!
offline
Опыт:
18,352Активность: |
Uncolo:
ну дак его место и займет другой,если ты первого удалишь из группы действием FirstOfGroup |
25.04.2012, 17:02 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
это делается автоматически, для этого и есть эта функция. Она всегда возвращает актуально первого в данной группе. |
25.04.2012, 17:03 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Uncolo
offline
Опыт:
580Активность: |
ScorpioT1000, тоесть если удалить юнита этой функцией, то сл. за ним юнит станет первым в группе? если так, то у меня не работает =)
или я что то не то делаю. Раз автоматом присваиается FirstOfGroup, то каждый запрос по этой функции должен убирать юнита из группы, так? но дебаг возвращает Null, а с юнитом ничего не происходит Код:
|
25.04.2012, 17:15 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Nerevar
I'll be back!
offline
Опыт:
18,352Активность: |
Предоставь полный код функции,ибо дебага здесь как бы нету |
25.04.2012, 17:19 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Uncolo
offline
Опыт:
580Активность: |
Код:
|
25.04.2012, 17:25 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
prog
offline
Опыт:
32,865Активность: |
Uncolo, если у тебя фиксированное число юнитов, то можно немного извратиться и использовать массив, а чтобы не дергать его туда-сюда хранить индексы первого и последнего юнита и изменять их вместо копирования всего массива. Все усложняется ели юниты могут пропадать в порядке, отличном от того в котором их положили в массив - тогда необходимо предусмотреть счетчик таких "выпавших" из середины очереди юнитов и "сжатие" массива для заполнения пустот когда их становится слишком много.
|
25.04.2012, 17:32 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Nerevar
I'll be back!
offline
Опыт:
18,352Активность: |
Попробуй так |
25.04.2012, 17:34 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
prog
offline
Опыт:
32,865Активность: |
call GroupRemoveUnit(GROUP, FirstOfGroup(GROUP))
call RemoveUnit(FirstOfGroup(GROUP)) это вообще шедеврально
ты удаляешь из группы юнита, а потом удаляешь из игры следующего за ним, не удалив из группы. |
25.04.2012, 17:34 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Uncolo
offline
Опыт:
580Активность: |
всем спасибо, зделал как нужно =))
нид клоуз |
25.04.2012, 22:25 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|