XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
bee
vjass.optimizer
offline
Опыт: 16,615
Активность:
чистим группу
loop
    set b = FirstOfGroup(ENUM_GROUP)
    exitwhen b==null
    call GroupRemoveUnit(ENUM_GROUP,b)
// ...
endloop
после этого кода некторые люди ставят
call GroupClear(ENUM_GROUP)
собственно зачем?
она же итак честая ведь b == null а b - первый член группы
Старый 20.05.2010, 02:48
Doc

offline
Опыт: 63,163
Активность:
Людям просто заняться нечем вот и ставят.
Старый 20.05.2010, 08:45
ScorpioT1000
Работаем
offline
Опыт: отключен
омг, это че за ахтунг ?) зачем циклом обнулять одну и ту же локалку O_O
Старый 20.05.2010, 09:23
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
ScorpioT1001, так первый из группы будет всегда меняться
Старый 20.05.2010, 09:26
adic3x

offline
Опыт: 108,439
Активность:
Не используйте циклы для перебора юнитов в группе, уже много раз говорили как делать это правильно.
Старый 20.05.2010, 09:47
Doc

offline
Опыт: 63,163
Активность:
ADOLF, можешь объяснить как? Я понимаю что нужно использовать ForGroup но как передать в него нужные данные? Через хеш? К чему цеплять эти данные?
Старый 20.05.2010, 09:50
adic3x

offline
Опыт: 108,439
Активность:
Почему сразу хешь? Вы о переменных когда то слышали?
int a

nothing fx () {
    a = GetRandomInt (0x01, 0x02);
    ForGroup (SOME_GROUP, lambda nothing () {
        SetUnitUserData (GetEnumUnit(), a);
    });
}
Старый 20.05.2010, 09:54
Doc

offline
Опыт: 63,163
Активность:
Да все понял, спасибо. Впринципе можно и глобалки использовать =/
Старый 20.05.2010, 10:26
bee
vjass.optimizer
offline
Опыт: 16,615
Активность:
сабж исчерпан а теперь немного пофлудим :)
я просто делаю так иногда:
set tempU=blablabla
call GroupEnum(...) // ссылаясь на функцию фильтра, чтобы найти например врага tempU'та.
loop
    set b = FirstOfGroup(ENUM_GROUP)
    exitwhen b==null
    call GroupRemoveUnit(ENUM_GROUP,b)
// ...
endloop
я оч. редко делаю прогон by ForGroup.
просто для этого опять надо записывать в tempU того юнита, для которого надо проводить некоторые действия
например надо нанести урон...
UnitDamageTarget(tempU,GetEnumUnit()...)
то есть это для меня не очень удобно.
мб есть альтернатива?
bee добавил:
ADOLF:
Почему сразу хешь? Вы о переменных когда то слышали?
int a

nothing fx () {
    a = GetRandomInt (0x01, 0x02);
    ForGroup (SOME_GROUP, lambda nothing () {
        SetUnitUserData (GetEnumUnit(), a);
    });
}
я не очень шарю в cJass'e. можешь написать код, в который это будет скомпилированно?
тоесть будет создана новая функция?
если написанно
lambda
Старый 20.05.2010, 12:14
adic3x

offline
Опыт: 108,439
Активность:
globals
    int a
endglobals

function cj_anonym__1 takes nothing returns nothing
    call SetUnitUserData (GetEnumUnit(), a)
endfunction

function fx takes nothing returns nothing
    set a = GetRandomInt (0x01, 0x02)
    call ForGroup (SOME_GROUP, function cj_anonym__1)
endfunction
ADOLF добавил:
set tempU=blablabla
call GroupEnum(...) ссылаясь на функцию фильтра, чтобы найти например врага tempU'та.
loop
set b = FirstOfGroup(ENUM_GROUP)
exitwhen b==null
call GroupRemoveUnit(ENUM_GROUP,b)
...
endloop
Вообще бредятина, Вы не шарите. Сразу в фильтре и делайте свои дела, и возращайте ложь.
Старый 20.05.2010, 12:21
bee
vjass.optimizer
offline
Опыт: 16,615
Активность:
куль, удобно
...но честно говоря я не юзаю cJass
из-за того, что меня бесят '}'
... спасибо
Вообще бредятина, Вы не шарите. Сразу в фильтре и делайте свои дела, и возращайте ложь.
балин, точнак!
Старый 20.05.2010, 12:22
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 17:49.