Доброго времени суток!
Я впервые решил написать простенький "ИИ для кампании" на JASS, но столкнулся с проблемой: компьютер продолжает АФКшить.
Вот, собственно, сам скрипт:
globals
    player BloodElves = Player(0)
endglobals
//==================================================
//  CONFIGURE
//==================================================
function ConfigureAI takes nothing returns nothing
    call SetSlowChopping( true )
    call SetPeonsRepair( true )
endfunction
//==================================================
//  MAIN
//==================================================
function main takes nothing returns nothing
    call CampaignAI( ZIGGURAT_1, null )
    call SetCaptainHome( ATTACK_CAPTAIN, 3730, -3450 )
    call ConfigureAI()
    //====================
    //  UNITS
    //====================
    call SetBuildUnit( 1, NECROPOLIS_1 )
    call SetBuildUnit( 1, ACOLYTE )
    call SetBuildUnit( 1, UNDEAD_MINE )
    call SetBuildUnit( 1, UNDEAD_ALTAR )
    call SetBuildUnit( 3, CRYPT )
    call SetBuildUnit( 2, GRAVEYARD ) 
    call SetBuildUnit( 5, ACOLYTE )
    call SetBuildUnit( 1, CRYPT_LORD )  
    call SetBuildUnit( 13, ZIGGURAT_1 )
    call SetBuildUnit( 13, ZIGGURAT_FROST )
    call SetBuildUnit( 1, NECROPOLIS_2 )
    call SetBuildUnit( 1, DAMNED_TEMPLE )
    call SetBuildUnit( 1, NECROPOLIS_3 )
    
    call CampaignDefenderEx( 11, 11, 11, GHOUL ) 
    call CampaignDefenderEx( 3, 3, 3, NECRO )
    call CampaignDefenderEx( 19, 19, 19, CRYPT_FIEND )
    call CampaignDefenderEx( 1, 1, 1, CRYPT_LORD )
    //====================
    //  ATTACK
    //====================
    call WaitForSignal()
    set allow_signal_abort = true
    
    //*** WAVE 1 0min***    
    call InitAssaultGroup()
    call CampaignAttackerEx( 4, 4, 4, GHOUL )
    call CampaignAttackerEx( 2, 2, 2, CRYPT_FIEND )
    call CampaignAttackerEx( 1, 1, 1, NECRO )
    call SuicideOnPlayer(M1, BloodElves )
    //*** WAVE 2 3min***
    call InitAssaultGroup()
    call CampaignAttackerEx( 6, 6, 6, GHOUL )
    call CampaignAttackerEx( 3, 3, 3, CRYPT_FIEND )
    call CampaignAttackerEx( 1, 1, 1, NECRO )
    call SuicideOnPlayer(M3, BloodElves )
    //*** WAVE 3 6min***
    call InitAssaultGroup()
    call CampaignAttackerEx( 7, 7, 7, GHOUL )
    call CampaignAttackerEx( 3, 3, 3, CRYPT_FIEND )
    call CampaignAttackerEx( 2, 2, 2, NECRO )
    call SuicideOnPlayer(M3, BloodElves )
    //*** WAVE 4 9 min***
    call InitAssaultGroup()
    call CampaignAttackerEx( 7, 7, 7, GHOUL )
    call CampaignAttackerEx( 4, 4, 4, CRYPT_FIEND )
    call CampaignAttackerEx( 2, 2, 2, NECRO )
    call SuicideOnPlayer(M3, BloodElves )
    //*** WAVE 5 12min***
    call InitAssaultGroup()
    call CampaignAttackerEx( 7, 7, 7, GHOUL )
    call CampaignAttackerEx( 4, 4, 4, CRYPT_FIEND )
    call CampaignAttackerEx( 2, 2, 2, NECRO )
    call CampaignAttackerEx( 1, 1, 1, CRYPT_LORD )
    call SuicideOnPlayer(M3, BloodElves )
    //*** WAVE 6 15min***
    call InitAssaultGroup()
    call CampaignAttackerEx( 8, 8, 8, GHOUL )
    call CampaignAttackerEx( 4, 4, 4, CRYPT_FIEND )
    call CampaignAttackerEx( 2, 2, 2, NECRO )
    call SuicideOnPlayer(M3, BloodElves )
    //*** WAVE 7 18min***
    call InitAssaultGroup()
    call CampaignAttackerEx( 8, 8, 8, GHOUL )
    call CampaignAttackerEx( 4, 4, 4, CRYPT_FIEND )
    call CampaignAttackerEx( 2, 2, 2, NECRO )
    call CampaignAttackerEx( 1, 1, 1, CRYPT_LORD )
    call SuicideOnPlayer(M3, BloodElves )
    //*** WAVE 8 21min***
    call InitAssaultGroup()
    call CampaignAttackerEx( 8, 8, 8, GHOUL )
    call CampaignAttackerEx( 4, 4, 4, CRYPT_FIEND )
    call CampaignAttackerEx( 3, 3, 3, NECRO )
    call CampaignAttackerEx( 1, 1, 1, CRYPT_LORD )
    call SuicideOnPlayer(M3, BloodElves )
    //*** WAVE 9 24min***
    call InitAssaultGroup()
    call CampaignAttackerEx( 8, 8, 8, GHOUL )
    call CampaignAttackerEx( 4, 4, 4, CRYPT_FIEND )
    call CampaignAttackerEx( 3, 3, 3, NECRO )
    call CampaignAttackerEx( 1, 1, 1, CRYPT_LORD )
    call SuicideOnPlayer(M3, BloodElves )
    //*** WAVE 10 27min***
    call InitAssaultGroup()
    call CampaignAttackerEx( 10, 10, 10, GHOUL )
    call CampaignAttackerEx( 6, 6, 6, CRYPT_FIEND )
    call CampaignAttackerEx( 2, 2, 2, NECRO )
    call SuicideOnPlayer(M3, BloodElves )
    //*** WAVE 11 30min***
    call InitAssaultGroup()
    call CampaignAttackerEx( 10, 10, 10, GHOUL )
    call CampaignAttackerEx( 8, 8, 8, CRYPT_FIEND )
    call CampaignAttackerEx( 2, 2, 2, NECRO )
    call SuicideOnPlayer(M3, BloodElves )
    //*** WAVE 12 33min***
    call InitAssaultGroup()
    call CampaignAttackerEx( 10, 10, 10, GHOUL )
    call CampaignAttackerEx( 10, 10, 10, CRYPT_FIEND )
    call CampaignAttackerEx( 3, 3, 3, NECRO )
    call SuicideOnPlayer(M3, BloodElves )
    //*** WAVE 13 36min***
    call InitAssaultGroup()
    call CampaignAttackerEx( 10, 10, 10, GHOUL )
    call CampaignAttackerEx( 10, 10, 10, CRYPT_FIEND )
    call CampaignAttackerEx( 3, 3, 3, NECRO )
    call CampaignAttackerEx( 1, 1, 1, CRYPT_LORD )
    call SuicideOnPlayer(M3, BloodElves )
    //*** WAVE 14 LETS GO***    
    call ForeverSuicideOnPlayer( M2, BloodElves )
    call SuicideUnits( GHOUL, NECRO, SKEL_WARRIOR, CRYPT_FIEND, CRYPT_LORD, 0, 0, 0, 0 )
    
endfunction
Делал, опираясь на тутор от Moyack, а еще на ИИ Близов из 5-й главы Альянса RoC (оборона Харглена).
Писал ИИ в JassCraft'е, если это принципиально :)
Вот сам триггер:
Триггер запускается, я проверял.
Импортировал вот так:
Игрок 7 (зеленый) есть, что в свойствах игрока, что на карте. В ресурсах проблемы нет, ибо давал триггерно их. Да и будь дело в этом, пеоны хотя бы ресурсы начали добывать. Но они бездействуют.
Помогите разобраться, пожалуйста!
Вот сам файл ИИ, если нужно:

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

Нашел ошибку:
В функции SuicideUnits (в самом низу) должно находиться строго 10 значений. У меня 9. Если приписать еще 0, то все работает.
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
19
6 лет назад
0
Похожие вопросы:

ответ
Maxsavin, берёшь бекап и продолжаешь работать в нём
на будущее будет урок
делай бекап после любого серьёзного изменения
ответ
Я сам разобрался с проблемой. Конечно тут две новые появились, но на них забью уже:
  1. ИИ не нравился герой, из-за него вообще никто не нанимался.
  2. ИИ посчитал, что улучшив главное здание, он лишается главного здания, а значит нужно его снова строить. То есть, например, улучшив ратушу до крепости, он считает, что ратуши больше нет и необходимо построить ещё одну. Потом он крепость улучшит до замка, посчитает, что разрушили крепость, улучшит до крепости ратушу№2, снова потеряет ратушу и построит уже третью.
ответ
Steal nerves:
Art35372, Brutal_bbk, извините, просто информации мало. Откуда можно знать в чем проблема, если не показываете карты, пускай кто-нибудь другой здешний посмотрит и проверит карту. Мб это у вас что-то. Либо скрины триггеров, или код, но лучше карту.
конкретно у парня выше обычный редактор, а пытается запустить карты с cJass. я ему пытался объяснить, видимо не дошло

0
3
6 лет назад
0
Нашел ошибку:
В функции SuicideUnits (в самом низу) должно находиться строго 10 значений. У меня 9. Если приписать еще 0, то все работает.
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.