Не работает функция

Добавлен
Попробовал написать функцию в 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
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
14
всё равно выдает кучу ошибок, например: undeclared variable UNIT_TYPE_DEATH, uid, uid2
29
Потому что UNIT_TYPE_DEAD это раз.
В лямбде нельзя использовать локалки это два.
14
Doc, есть статья по использованию лямбды?
кстати, получается:
>u = GetFilterUnit();
невозможно обнулить?
29
Эээ я не о том. Статьи нет, они слишком простые для отдельной статьи. Я о том, что в лямбде нельзя использовать локалки из других функций (конкретно из той, которая лямбду вызывает)
14
library UnitsOfPlayerL:
function cj_anonym__1 takes nothing returns boolean
# optional
local unit u=GetFilterUnit()
if ( not IsUnitType(u, UNIT_TYPE_DEAD) and GetUnitTypeId(u) == UnitsOfPlayerL__uid2 ) then
set UnitsOfPlayerLi2=UnitsOfPlayerLi2 + 1
endif
endfunction
function UnitsOfPlayer takes player p,integer uid returns integer
local integer i=0
local group g=CreateGroup()
set UnitsOfPlayerL__uid2=uid
call GroupEnumUnitsOfPlayer(g, p, Condition(function cj_anonym__1))
call DestroyGroup(g)
set g=null
set i=UnitsOfPlayerL__i2
set UnitsOfPlayerL__i2=0
return i
endfunction
library UnitsOfPlayerL ends
на выделенное красным пишет: missing return. Как исправить?
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.