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

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

Ответ
 
Vadik29
Choice Battle 1.6а
offline
Опыт: 15,245
Активность:
Проверка
Как осуществить проверку на то все юниты мертвы без бж, я пробовал но у меня не получается, пробовал перерабатывать бж, тоже не пашит. Мне сказали, что надо делать цикл по группе, но я не понимаю как.
Старый 08.07.2012, 11:24
16GB
GhostOne User
offline
Опыт: 59,317
Активность:
local integer i = 0
local integer j = 1
local group g // твоя группа
udg_G // глобальная группа

set bj_groupAddGroupDest = udg_G
call ForGroup(g,function GroupAddGroupEnum)
loop
set u = FirstOfGroup(udg_G)
set i = i+1
if GetUnitTypeId(u) == 0 or IsUnitType(u, UNIT_TYPE_DEAD) then
set j = j+1
endif
call GroupRemoveUnit(udg_G,u)
exitwhen u == null
endloop
if i == j then
//все мертвы
endif
как-то так, но можно использовать бж подсчёт юнитов в группе
local group g // твоя группа
local integer i = 0
local integer j = 0
set bj_groupCountUnits = 0
call ForGroup(g, function CountUnitsInGroupEnum)
set i = bj_groupCountUnits
set bj_groupAddGroupDest = udg_G
call ForGroup(g,function GroupAddGroupEnum)
loop
set u = FirstOfGroup(udg_G)
if GetUnitTypeId(u) == 0 or IsUnitType(u, UNIT_TYPE_DEAD) then
set j = j+1
endif
call GroupRemoveUnit(udg_G,u)
exitwhen u == null
endloop
if i == j then
//все мертвы
endif
Старый 08.07.2012, 11:39
alexprey
познающий Unity
offline
Опыт: 68,501
Активность:
((код
local group g = ...
local unit u = null
local boolean isAllDead = false
loop
set u = FirstOfGroup(g)
exitwhen u == null
call GroupRemoveUnit(u)
set isAllDead = isAllDead and GetUnitState(u, UNIT_STATE_LIFE) < 0.075
exitwhen not isAllDead
endloop
...
))
Ну как то так
Старый 08.07.2012, 22:01
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
bool IsAllUnitDeadInGroup(group g)
{
	unit u = null;
        loop
        {
		u = FirstOfGroup(g)
                exitwhen u == null
                GroupRemoveUnit(g,u)
                if (GetUnitState(u, UNIT_STATE_LIFE) > 0.075)
                {
			u = null;
                        return false;
		}
	}
        u = null;
        return true;
}
Старый 08.07.2012, 22:09
Ответ

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

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

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

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



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