Всем доброго времени суток! Собственно, сам вопрос, в заголовке темы. Бьюсь с тем, чтобы заставить компьютера использовать ополченцев для защиты лагеря при условии, что рудник истощился. Пробовал
call CampaignDefender(1, goldMiners + (lumberjacks - 2), MILITIA)
и
call StartUnit(goldMiners + (lumberjacks - 2), MILITIA, 0)
Никакого эффекта. Уже думал попробовать покопать в сторону механизма с сфинксами и лучницами на гиппогрифах, помнил, что там специальная функция была, но когда нашел код функции, увидел, что она исключительно для этих двух юнитов и все. Возможно, механика с ополченцем подобна превращению послушника в тень? Но перерыл скрипты кампаний, нигде не могу найти, чтобы ИИ строил тень. В общем, буду благодарен за советы по теме.
Принятый ответ
В общем порядком намучившись, все же пришел к выводу, что ребята писавшие АМАИ неспроста не юзали экспрешены, по всей видимости они по какой то причине(кривизна варкрафта привет) не работают в скриптах ИИ. Пришлось написать свой велосипед, очень похожий на то, что есть у них в принципе. Функция выборки рабочих игрока:
globals
constant player thisPlayer = Player(1) // В моем случае синий игрок
...
endglobals
...
//============================================================================
// Выбираем работников нашего игрока
//============================================================================
function GetPlayerWorkers takes nothing returns group
local group playerWorkers = null
local group allWorkers = null
local unit regularWorker = null
set playerWorkers = CreateGroup()
set allWorkers = CreateGroup()
call GroupEnumUnitsOfType(allWorkers, "Peasant", null)
loop
set regularWorker = FirstOfGroup(allWorkers)
exitwhen regularWorker == null
if GetOwningPlayer(regularWorker) == thisPlayer then
call GroupAddUnit(playerWorkers, regularWorker)
endif
call GroupRemoveUnit(allWorkers, regularWorker)
endloop
return playerWorkers
endfunction
И юзаем нашу функцию:
//============================================================================
// Отряды защиты лагеря
//============================================================================
function Defenders takes nothing returns nothing
local group playerWorkers = null
...
set playerWorkers = GetPlayerWorkers()
call GroupImmediateOrder(playerWorkers, "militia")
call GroupClear(playerWorkers)
call CampaignDefender(1, goldMiners + lumberjacks, MILITIA)
...
endfunction
Возможно кому то будет полезно.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Или это на случай, когда на карте совсем рудники иссякнут, а работники будут лимит занимать?
Отредактирован Ev3nt
Отредактирован Meddin
Отредактирован Meddin