Функция "Группа игроков - Выбрать каждого игрока в (Все противники Player) и произвести (Действия)" или
call ForForce( GetPlayersEnemies(Player(0)), function Trig_D_Func001A )
в любом случае не работает, даже если выбрать всех игроков и задать условие "враг игрока", при этом "союзники игрока" отлично работает. Нужно чтобы в триггере все время выбирались противники определенного игрока (который до этого использовал скил и был занесен в переменную), затем если выбранному игроку виден определенный юнит выполнялись действия. В чем прикол и можно ли такое сделать хотя бы на джасс?

Принятый ответ

quq_CCCP:
Спасибо, понял что надо создавать форс единожды, чтобы утечек не было
Мдаа уж, оказывается все дело в том, что забыл поставить исходные позиции другим игрокам, хорошо хоть проверить догадался, засиделся за редактором
2
32
7 лет назад
2
Зачем нам форсы? У вас каждую игру уникальные враги? Нет? Создаем 2 форса (или сколько их у вас) и все, мы знаем кто враги а кто союзники.
Ну а если очень хочется то перебираем всех игроков в форсе bj_forceAllPlayers и ищем тех кто враг, попутно делая для них нужные действия.
вот пример кода
function MyFunc takes nothing returns nothing
    local player pl = GetEnumPlayer( )
    
    if GetPlayerSlotState( pl ) == PLAYER_SLOT_STATE_PLAYING and IsPlayerEnemy( pl, bj_groupEnumOwningPlayer ) then
    call BJDebugMsg(GetPlayerName(pl)+" - враг для - "+GetPlayerName(bj_groupEnumOwningPlayer))
    // ваши действия
    endif
    
endfunction
...
set bj_groupEnumOwningPlayer = Player(0)
call ForForce( bj_FORCE_ALL_PLAYERS, function MyFunc )
...
0
10
7 лет назад
0
quq_CCCP:
Спасибо, понял что надо создавать форс единожды, чтобы утечек не было
Мдаа уж, оказывается все дело в том, что забыл поставить исходные позиции другим игрокам, хорошо хоть проверить догадался, засиделся за редактором
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.