Можно ли отключить триггер инициализации для какого-то игрока/игроков не удаляя его?

pavloradko20, не делай этого игрока. Просто поставь юнитов этого игрока на карту, тогда не будут возвращаться на исходную.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
26
Триггер инициализации содержит кучу действий для каждого игрока в объединённом для всех виде. Если хочешь отключить что-то для кого-то из игроков, то надо всю эту большую систему заново создать. Что конкретно хочешь отключить, может быть там можно как-то попроще сделать?
6
8gabriel8:
Триггер инициализации содержит кучу действий для каждого игрока в объединённом для всех виде. Если хочешь отключить что-то для кого-то из игроков, то надо всю эту большую систему заново создать. Что конкретно хочешь отключить, может быть там можно как-то попроще сделать?
Чтобы для этого игрока не запускался ии
30
native PauseCompAI takes player p, boolean pause returns nothing
Так можно его вручную отключить.
26
pavloradko20, вот что скрывается за действием раздачи ИИ игрокам в инициализации:
function MeleeStartingAI takes nothing returns nothing
    local integer index
    local player  indexPlayer
    local race    indexRace

    set index = 0
    loop
        set indexPlayer = Player(index)
        if (GetPlayerSlotState(indexPlayer) == PLAYER_SLOT_STATE_PLAYING) then
            set indexRace = GetPlayerRace(indexPlayer)
            if (GetPlayerController(indexPlayer) == MAP_CONTROL_COMPUTER) then
                // Run a race-specific melee AI script.
                if (indexRace == RACE_HUMAN) then
                    call PickMeleeAI(indexPlayer, "human.ai", null, null)
                elseif (indexRace == RACE_ORC) then
                    call PickMeleeAI(indexPlayer, "orc.ai", null, null)
                elseif (indexRace == RACE_UNDEAD) then
                    call PickMeleeAI(indexPlayer, "undead.ai", null, null)
                    call RecycleGuardPosition(bj_ghoul[index])
                elseif (indexRace == RACE_NIGHTELF) then
                    call PickMeleeAI(indexPlayer, "elf.ai", null, null)
                else
                    // Unrecognized race.
                endif
                call ShareEverythingWithTeamAI(indexPlayer)
            endif
        endif

        set index = index + 1
        exitwhen index == bj_MAX_PLAYERS
    endloop
endfunction
Это установка ИИ каждому играющему компьютерному игроку в соответствии с расой. По идее тебе надо будет каждому игроку вручную установить ИИ, а нужному игроку не устанавливать.
НО!
Попробуй просто указать этому игроку пустой файл ИИ (map.ai) - в категории ИИ первый пункт. По идее он может перебить нормальный ИИ, таким образом его не будет.

Проверил и указание пустого файла, и нативку на паузу ИИ - ничего не сработало, компьютер чётко следует указаниям ИИ.
Может пользуюсь не так? Вот как прописал в CS для карты на троих игроков:
call PauseCompAI(Player(2), true)
Типа за красного наблюдаю, синий действует по стандарту, а третий игрок с запаузенным ИИ.

Чего-то вообще не работают триггеры, какие бы изменения не вносил. Поэтому указанное выше прошу считать результатом другой проблемы.

Сейчас ещё раз затестил, нативка NazarPunk'а работает.
6
NazarPunk:
native PauseCompAI takes player p, boolean pause returns nothing
Так можно его вручную отключить.
Я использую только обычные триггеры, а такое не умею(
26
pavloradko20, одно из первых в списке есть действие custom script, там нужно ввести эту строку:
call PauseCompAI(Player(0), true)
где вместо ноля в скобках указываешь цифру на единичку меньше номера игрока, например, Player(0)-красный, Player(1)-синий.
30
указываешь цифру на единичку меньше номера игрока
Загруженные файлы
6
8gabriel8:
pavloradko20, одно из первых в списке есть действие custom script, там нужно ввести эту строку:
call PauseCompAI(Player(0), true)
где вместо ноля в скобках указываешь цифру на единичку меньше номера игрока, например, Player(0)-красный, Player(1)-синий.
Со строительством это работает, но с юнитама к сожалению нет. Я создаю юнитов и по триггеру они должны патрулировать область, но вместо этого они идут к исходной позиции. Если знаете, то подскажите как это исправить
30
Со строительством это работает, но с юнитама к сожалению нет. Я создаю юнитов и по триггеру они должны патрулировать область, но вместо этого они идут к исходной позиции.
Это не в ИИ дело. Юниты всегда идут к исходной позиции, если не отдавать им нужных приказов. Чтоб ответить более точно, подробней опишите что вам нужно, желательно с картой.
26
pavloradko20, не делай этого игрока. Просто поставь юнитов этого игрока на карту, тогда не будут возвращаться на исходную.
Принятый ответ
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.