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

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

Закрытая тема
 
TIS_Elektronik

offline
Опыт: 521
Активность:
вопрос об обнулении групп
что-то я затупил.. даже стыдно спрашивать
я использую одну локальную переменную в функции, но несколько разных групп. То есть указываю сначала одну группу, делаю что надо, потом другую и третью
так вот. Что мне надо ставить между этим
call GroupAddGroup( ..тут группа.. , LOCAL_Group )

//и этим:

call GroupAddGroup( ..тут другая группа.. , LOCAL_Group )
нужно просто обнулять или и ещё ставить call DestroyGroup(LOCAL_Group)?
возможно код работает неккоректно из-за того что у меня стоит и то и то
я мог бы конечно убрать и проверить будет ли работать, но я не уверен что это избавит от утечек
Старый 26.08.2011, 10:26
alexprey
познающий Unity
offline
Опыт: 68,501
Активность:
TIS_Elektronik, если работаешь над одной и той же группой смысл обнулять? Или поясни норм свою задачу
Старый 26.08.2011, 10:48
TIS_Elektronik

offline
Опыт: 521
Активность:
alexprey, не, не над одной и той же. одна только переменная, но в ней разные юниты.
то есть сначала одних запихнул, сделал что надо, потом других и третьих
вот кароче код
    local group LOCAL_Group = CreateGroup()
    set bj_wantDestroyGroup = true
    call GroupAddGroup( GetUnitsOfPlayerAndTypeId(......), (LOCAL_Group) )
    if ( CountUnitsInGroup( LOCAL_Group ) < 1 )  then
	call IssueImmediateOrderById( GroupPickRandomUnit(udg_Humman_Barracs), 'hkni' )
    endif
    call DestroyGroup(LOCAL_Group)
    set LOCAL_Group = null

    set bj_wantDestroyGroup = true
    call GroupAddGroup( GetUnitsOfPlayerAndTypeId(.....), (LOCAL_Group) )
    if ( CountUnitsInGroup( LOCAL_Group ) < 6 )  then
	    call IssueImmediateOrderById( GroupPickRandomUnit(udg_Humman_Barracs), 'hhes' )
	    call IssueImmediateOrderById( GroupPickRandomUnit(udg_Humman_Barracs), 'hhes' )
    endif
    call DestroyGroup(LOCAL_Group)
    set LOCAL_Group = null
ну вот так примерно. только там ещё третий раз повторяется
Старый 26.08.2011, 11:23
alexprey
познающий Unity
offline
Опыт: 68,501
Активность:
TIS_Elektronik, Мда код жутко страшный.
Во первых ты видел из чего состоит GetUnitsOfPlayerAndTypeId?
Код:
function GetUnitsOfPlayerAndTypeId takes player whichPlayer, integer unitid returns group
    local group g = CreateGroup()
    set bj_groupEnumTypeId = unitid
    call GroupEnumUnitsOfPlayer(g, whichPlayer, filterGetUnitsOfPlayerAndTypeId)
    return g
endfunction

Помойму намного лучше сделать так
Код:
set bj_groupEnumTypeId = ...
call GroupEnumUnitsOfPlayer(LOCAL_Group, whichPlayer, filterGetUnitsOfPlayerAndTypeId)

Что касается самого очищения, то делается не так как ты показал, а вот так
Код:
native GroupClear takes group whichGroup returns nothing
Старый 26.08.2011, 11:44
TIS_Elektronik

offline
Опыт: 521
Активность:
alexprey, спс щас буду разбираться. но наверное уже не скоро к вару вернусь.. учиться надо
тему можно закрывать
Старый 26.08.2011, 11:53
Закрытая тема

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

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

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

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



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