Добавлен Темак
Попробовал написать функцию в cJass. Первый блин получился комом. Использовал это, возможно неправильно.
Функция должна считать количество живых юнитов определенного типа (или двух, нужно если юнит подменяется другим) принадлежащих игроку и возвращать их количество. Собственно код:
Функция должна считать количество живых юнитов определенного типа (или двух, нужно если юнит подменяется другим) принадлежащих игроку и возвращать их количество. Собственно код:
library CountLivingUnitsOfPlayerL {
#include "cj_types.j"
private integer CLUOP = 0
int CountLivingUnitsOfPlayer(player p, int uid, int uid2) {
local int i
local group g = CreateGroup()
local unit u
CLUOP = i
if uid2 != 0 {
GroupEnumUnitsOfPlayer(g, p, Condition(lambda boolean () {
u = GetFilterUnit()
if (!IsUnitType(u, UNIT_TYPE_DEATH) && (GetUnitTypeId(u) == uid || GetUnitTypeId(u) == uid2)){
CLUOP++
}}))
}
else {
GroupEnumUnitsOfPlayer(g, p, Condition(lambda boolean () {
u = GetFilterUnit()
if (!IsUnitType(u, UNIT_TYPE_DEATH)) && GetUnitTypeId(u) == uid {
CLUOP++
}}))
}
i = CLUOP
DestroyGroup(g)
g = null
u = null
CLUOP = 0
return i
}
}
Принятый ответ
Написать return false
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован Hares
В лямбде нельзя использовать локалки это два.
кстати, получается:
>u = GetFilterUnit();
невозможно обнулить?