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

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

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

offline
Опыт: 3,341
Активность:
Отряд Group, максимальное количество
Код:
call GroupAddUnit(udg_AttackersQ[d],cu)


Есть какие-нибудь ограничения/утечки/ошибки связаные с этой функцией?
у меня больше 12 юнитов в udg_AttackersQ[0] не помещается, тоесть есть цикл в нем 8 проходов, в каждом проходе еще цикл в котором два прохода в котором создаются 12 юнитов и добавляются в группу udg_AttackersQ[номер прохода для первого цикла]

я пытаюсь этими группами управлять, так вот реагируют только первые 12 юнитов из каждой группы...

Я в чем то ошибся?
Старый 24.04.2011, 14:22
AiDSeller
За здоровый образ жизни
offline
Опыт: 6,094
Активность:
ARHUI:
я пытаюсь этими группами управлять, так вот реагируют только первые 12 юнитов из каждой группы...
Я в чем то ошибся?
В редакторе GUI сказано, что только первые 12 юнитов получают приказы. Так что ответ: нет, не ошибся.
Старый 24.04.2011, 14:23
ARHUI

offline
Опыт: 3,341
Активность:
И как быть в этом случае?

ARHUI добавил:
дело в том что у меня на карте может быть много крипов, раньше я тупо перебирал всех крипов и давал каждому нужный приказ, однако если крипов >50 заметен маленький лаг, >100 лаг около секунды если > 200 играть невозможно...

ARHUI добавил:
Мне вот интересно очень как на некоторых картах крипы по не самым простым алгоритмам движутся в количестве 700 штук и ничего не лагает?
Старый 24.04.2011, 14:29
AiDSeller
За здоровый образ жизни
offline
Опыт: 6,094
Активность:
ARHUI, объект входит в регион -> ведутся проверки на владельца и тип -> даём приказ вошедшему юниту
Старый 24.04.2011, 14:31
FEARSTARTER
desert eagle
offline
Опыт: 19,364
Активность:
ARHUI, Я решал эту проблему так: выбирал всех юнитов и расфасовывал на группы по 12 в каждую, типа g[1] g[2] g[3] и так дальше... потом приказ двигаться каждой группе отдавал.
Старый 24.04.2011, 14:48
ARHUI

offline
Опыт: 3,341
Активность:
Код:
function AntiStuck takes nothing returns nothing
    local group g = CreateGroup()
    local group array tmp_group
    local integer array tmp
    local unit u
    local integer a = 0
    loop
        exitwhen a == 40
        set tmp_group[a]=CreateGroup()
        set tmp[a]=0
        set a = a+1
    endloop
    set a = 0
    local location loc
    call GroupEnumUnitsOfPlayer(g, Player(11), null)
    loop
        set u = FirstOfGroup(g)
        exitwhen u == null
        set a = GetUnitUserData(u)
        call GroupAddUnit(tmp_group[a],u)
        set tmp[a] = tmp[a] + 1
        if(tmp[a]==12)then
            if GetDestructableLife(udg_gates[a]) > 0.00 then
                call GroupTargetOrder( tmp_group[a], "attack", udg_gates[a] )
            else
                set loc = Location(GetRectCenterX(gg_rct_the_house_region), GetRectCenterY(gg_rct_the_house_region))
                call GroupPointOrderLoc(tmp_group[a], "attack", loc)
            endif
            set tmp[a] = 0
            call GroupClear(tmp_group[a])
        endif
        call GroupRemoveUnit(g, u)
    endloop
    set loc = null
    call RemoveLocation(loc)
    set g = null
    set u = null
    call DestroyGroup(g)
endfunction



вот это похоже?
Старый 24.04.2011, 15:46
FEARSTARTER
desert eagle
offline
Опыт: 19,364
Активность:
ARHUI, да, именно так. Только 40 както много, это на 500 юнитов хватит. Можно для оптимизации создавать не по 40 всевремя а сразу считать сколько юнитов, и сколько групп надо.
Старый 24.04.2011, 15:54
ARHUI

offline
Опыт: 3,341
Активность:
только что протестировал, AntiStuck каждые 5 секунд, 1800 зомби без лагов)))
Старый 24.04.2011, 16:05
Закрытая тема

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

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

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

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



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