В архиве mpq варика есть только по 1 ai на каждую расу. Отсюда вопрос а чем вообще отличаются тогда компьютерные ии в карте сражения для разных уровней сложности.
Принятый ответ
Сильный ии при отсутствии расходов получает по 20 единиц золота за раз. Это можно увидеть просматривая реплеи сражений, проведенных против сильного компьютера. К тому же, если посмотреть код ии, да и просто понаблюдать за поведением слабого компьютера и сильного/среднего, то можно заметить, что слабый бот начинает крипиться с задержкой, по сравнению со своими средней и сильной версиями. Сильный бот начинает апргейдить главное здание раньше, чем средний и слабый, следовательно, и исследования некоторые у него проходят раньше, второй/третий герой появляются раньше и здания соответствующие. Так же слабый не строит оборонительные сооружения на дополнительных рудниках. Как то так. К тому же, насколько я помню, слабый вроде бы вообще исследований не проводит. Ну и естественно, не всегда все работает в строгости с тем, как я описал и это верно не для всех ии, мое описание больше по ии Орды. Остальных помню плохо. Поведение ии зависит и от карты и от типов точек на ней и от того, как складывается сражение. Слабый ии вполне может обогнать по развитию среднего в некоторых случаях и так далее.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
*
* Melee Template Starting AI Scripts
*
***************************************************************************
function PickMeleeAI takes player num, string s1, string s2, string s3 returns nothing
local integer pick
that are designed to be a bit more challenging
if GetAIDifficulty(num) == AI_DIFFICULTY_NEWBIE then
call StartMeleeAI(num,s1)
return
endif
set pick = 1
elseif s3 == null then
set pick = GetRandomInt(1,2)
else
set pick = GetRandomInt(1,3)
endif
call StartMeleeAI(num,s1)
elseif pick == 2 then
call StartMeleeAI(num,s2)
else
call StartMeleeAI(num,s3)
endif
endfunction
function MeleeStartingAI takes nothing returns nothing
local integer index
local player indexPlayer
local race indexRace
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
exitwhen index == bj_MAX_PLAYERS
endloop
endfunction
call SetUnitCreepGuard(targ,true)
endfunction