Добавлен Darknessay
Как должен выглядеть фильтр?
Я пробовал написать типа
Я пробовал написать типа
функция берет юнита возвращает болен
ретурн (если его хп) == тру
сет юнит = нул
эндфунк
ретурн (если его хп) == тру
сет юнит = нул
эндфунк
Но оно выбивает ошибку типа "миссинг ретурнс", если в конце стоит "сет юнит = нулл", а обнулять как то надо. Как правильно это написать?
Принятый ответ
Darknessay:
Функция Condition() просит тип "code" и примет только "code".
Ну ты jass API то хоть смотрел?quq_CCCP:Я знаю, я об этом и спрашивал, а в скобки условие я вставил уже отчаявшись)Что за хрень? Фильтр всегда оформляется отдельной функцией, без вашего Г
Функции нужны не ваша строчка а code.
Тип code может быть только function ссылка на кастом функцию объявленную выше в коде.
Функция Condition() просит тип "code" и примет только "code".
цитата
globals
unit bj_lastFilterUnit = null
boolexpr OnlyEnemyOrgAlive = null
endglobals
function OnlyEnemyOrganicAlive_Filter takes nothing returns boolean
set bj_lastFilterUnit = GetFilterUnit()
return GetUnitState( bj_lastFilterUnit, UNIT_STATE_LIFE ) > 0.405 and IsUnitEnemy( bj_lastFilterUnit, bj_groupEnumOwningPlayer ) and not IsUnitType( bj_lastFilterUnit, UNIT_TYPE_STRUCTURE )
endfunction
// При инициализации
***
set OnlyEnemyOrgAlive = Condition( function OnlyEnemyOrganicAlive_Filter )
***
// При переборе
set bj_groupEnumOwningPlayer = GetOwningPlayer( GetSpellAbilityUnit() ) // любой нужный тебе игрок, чтобы определи кто ему враг.
call GroupEnumUnitsInRange(g,X,Y,100, OnlyEnemyOrgAlive) //х и у - координаты
call ForGroup( g, function A ) // фунция A твоя функция где ты будешь совершать действия с юнитами в группе, передавать туда значения можно глобалками.
Москиты ни поподают в группу, GroupEnumUnitsInRange и прочее не пикает москитов, вообще никак... Москиты не взаимодействуют со скиллами и прочим, на них реагируют только события входа\выхода в зону или к юниту, а так же при переборе всех юнитов игрока GroupEnumUnitsOfPlayer, все остальное что ищет юнитов на москитов не реагирует...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован ledoed
и поподробней что ты хочешь найти юнитов вокруг когото или просто проверить жив ли он
А про скобочки() я конечно забыл нормально
ledoed: Эта функция и не должна ничего делать, я ее просто написал чтоб вставить туда группу. Я про фильтр спрашивал, который в кондишенах строки группы должен быть вместо строчки с условием
Отредактирован ledoed
Функции нужны не ваша строчка а code.
Тип code может быть только function ссылка на кастом функцию объявленную выше в коде.
Отредактирован Raised
Функция Condition() просит тип "code" и примет только "code".
GroupEnumUnitsInRange(group, x, y, range, function f)
Если хочется написать прям тута - используй вот так
GroupEnumUnitsInRange(group, x, y, range, \
lambda bool (){
return тута твои условия
})