Общая идея проста. Есть к примеру юнит, Рыцарь, но для его обучения нужно построить алтарь (к примеру). Как скрыть его иконку до того момента, пока не появится возможность нанимать этих рыцарей?

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

В функции main по умолчанию есть вызов стандартной функции InitBlizzard, в которой есть вызов функции InitSummonableCaps.
function InitSummonableCaps takes nothing returns nothing
    local integer index

    set index = 0
    loop
        // upgraded units
        // Note: Only do this if the corresponding upgrade is not yet researched
        // Barrage - Siege Engines
        if (not GetPlayerTechResearched(Player(index), 'Rhrt', true)) then
            call SetPlayerTechMaxAllowed(Player(index), 'hrtt', 0)
        endif

        // Berserker Upgrade - Troll Berserkers
        if (not GetPlayerTechResearched(Player(index), 'Robk', true)) then
            call SetPlayerTechMaxAllowed(Player(index), 'otbk', 0)
        endif

        // max skeletons per player
        call SetPlayerTechMaxAllowed(Player(index), 'uske', bj_MAX_SKELETONS)

        set index = index + 1
        exitwhen index == bj_MAX_PLAYERS
    endloop
endfunction
Тут выставляется лимит на обычных скелетов, убираются иконки парового танка и берсерка.
Перед выполнением InitBlizzard выполняются все функции, что генерируются в настройках игроков, для этого в InitSummonableCaps стоят проверки.

8gabriel8:
А вот интересно, когда делаешь грейд на берсерков, то в бараке нанимаешь троллей или берсерков?
Достаточно взглянуть на грейд и становится ясно, что нанимаешь сразу берсерков.

Решение вопроса такое.
1. Во время инициализации ставим для всех игроков (как в функции InitSummonableCaps) разрешаемое кол-во рыцарей на 0.
2. Один триггер регистрирует появление алтаря на карте.
С: Юнит входит в область Вся карта
У: Тип Triggering unit равно Алтарь
Д: Поставить лимит на производство Рыцарь в -1 для Игрока-владельца Triggering Unit
3. Другой триггер регистрирует смерть алтаря.
С: Юнит умирает
У: Тип Умирающий юнит равно Алтарь
Д: Выбрать всех юнитов в группе (Юниты Игрока-владельца Умирающего юнита с условием (Тип Matching unit равно Алтарь))
   Если первый юнит в последней созданной группе равно Нет юнита то (Поставить лимит на производство Рыцарь в 0 для Игрока-владельца 
   Умирающего юнита)
   Уничтожить последнюю созданную группу.
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
23
5 лет назад
0
тригерно указываеш на юнит 0 количество что позволяет скрыть иконку.. При завершение постройки проверяеш если тот здания да то ставим -1 это неограничено вызвать не помню вот и все!
0
26
5 лет назад
Отредактирован 8gabriel8
0
А вот интересно, когда делаешь грейд на берсерков, то в бараке нанимаешь троллей или берсерков? Если меняется тип юнита для найма, то, наверное, интересно будет там рассмотреть, как это делается.
1
28
5 лет назад
Отредактирован PT153
1
В функции main по умолчанию есть вызов стандартной функции InitBlizzard, в которой есть вызов функции InitSummonableCaps.
function InitSummonableCaps takes nothing returns nothing
    local integer index

    set index = 0
    loop
        // upgraded units
        // Note: Only do this if the corresponding upgrade is not yet researched
        // Barrage - Siege Engines
        if (not GetPlayerTechResearched(Player(index), 'Rhrt', true)) then
            call SetPlayerTechMaxAllowed(Player(index), 'hrtt', 0)
        endif

        // Berserker Upgrade - Troll Berserkers
        if (not GetPlayerTechResearched(Player(index), 'Robk', true)) then
            call SetPlayerTechMaxAllowed(Player(index), 'otbk', 0)
        endif

        // max skeletons per player
        call SetPlayerTechMaxAllowed(Player(index), 'uske', bj_MAX_SKELETONS)

        set index = index + 1
        exitwhen index == bj_MAX_PLAYERS
    endloop
endfunction
Тут выставляется лимит на обычных скелетов, убираются иконки парового танка и берсерка.
Перед выполнением InitBlizzard выполняются все функции, что генерируются в настройках игроков, для этого в InitSummonableCaps стоят проверки.

8gabriel8:
А вот интересно, когда делаешь грейд на берсерков, то в бараке нанимаешь троллей или берсерков?
Достаточно взглянуть на грейд и становится ясно, что нанимаешь сразу берсерков.

Решение вопроса такое.
1. Во время инициализации ставим для всех игроков (как в функции InitSummonableCaps) разрешаемое кол-во рыцарей на 0.
2. Один триггер регистрирует появление алтаря на карте.
С: Юнит входит в область Вся карта
У: Тип Triggering unit равно Алтарь
Д: Поставить лимит на производство Рыцарь в -1 для Игрока-владельца Triggering Unit
3. Другой триггер регистрирует смерть алтаря.
С: Юнит умирает
У: Тип Умирающий юнит равно Алтарь
Д: Выбрать всех юнитов в группе (Юниты Игрока-владельца Умирающего юнита с условием (Тип Matching unit равно Алтарь))
   Если первый юнит в последней созданной группе равно Нет юнита то (Поставить лимит на производство Рыцарь в 0 для Игрока-владельца 
   Умирающего юнита)
   Уничтожить последнюю созданную группу.
Принятый ответ
0
26
5 лет назад
0
Вот оно как, спасибо!
1
26
5 лет назад
Отредактирован Extremator
1
8gabriel8:
А вот интересно, когда делаешь грейд на берсерков, то в бараке нанимаешь троллей или берсерков? Если меняется тип юнита для найма, то, наверное, интересно будет там рассмотреть, как это делается.
В казармах орды (в бараках) нанимаются сразу ДВА юнита - Охотники за головами и Берсерки. Просто Берсерки изначально заблокированы, и их не видно в списке доступных юнитов. Как только проводится улучшение - блокируются охотники и разблокируются берсерки.
При этом, если у тебя в очереди уже стояли охотники, они не будут заменены на берсерков. Замена (а точнее - превращение) произойдёт сразу же, как только юнит появится на карте (будет сделан), это легко определить по специфической анимации/звуку. А все остальные берсерки будут появляться без неё (т.к. это сразу уже готовый юнит в таком виде).
Все охотники уже имеющиеся на карте - так же будут превращены в берсерков, автоматически. Это всё работает благодаря одной лишь способности, известной как "тёмный". Любой юнит, получая её, мгновенно превращается в другого (есть специфика). Но превращению препятствуют условия: - требования улучшений
0
28
5 лет назад
Отредактирован PT153
0
Это всё работает благодаря одной лишь способности, известной как "тёмный".
Тёмный (Chaos) у паровых танков, у охотников за головами своя аналогичная способность.
Имя Chaos пошло от таких же способностей для орков, которые превращаются в одержимых в одной миссии, потому что паровые танки и берсеркеры были добавлены в TFT.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.