• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

[AI] [SOLVED!!!] Campaign AI trains only waves but weirdly does not attack. AI is scared?

Status
Not open for further replies.
Level 14
Joined
Nov 13, 2017
Messages
733
So I made a campaign AI just like this
JASS:
//========================================================================
//XXII. Ogres (I) AI Script by Battleborn
//========================================================================
globals
    player USER1 = PlayerEx(0)

    integer Stone_Great_Hall           = 'z0a2'
    integer Stone_Great_Hold           = 'z0a3'
    integer Stone_Empire               = 'z0a4'

    integer Ogre_Laborer               = 'hmil'

    integer Stone_Hovel                = 'ndgt'

    integer Warchiefs_Hut              = 'nef7'
    integer Ogre_Advisor               = 'Hant'
    integer Ogre_Conqueror             = 'Hkal'
    integer Ogre_Geolord               = 'Hhkl'
    integer Ogre_Highmagi              = 'Hmbr'
    integer Ogre_Warlord               = 'Hmgd'

    integer Stone_Coliseum             = 'z999'
    integer Ogre_Warrior               = 'nogr'
    integer Ogre_Gladiator             = 'nfov'
    integer Ogre_Champion              = 'nogm'
    integer Ogre_Commander             = 'nogl'

    integer Stone_Elysium              = 'z0a0'
    integer Ogre_Clanhealer            = 'nsth'
    integer Ogre_Runebreaker           = 'nsog'
    integer Ogre_Magi                  = 'nomg'
    integer Ogre_Totemic               = 'nsoc'
    integer Ogre_Battlemagi            = 'nsts'

    integer Stone_Fort                 = 'z0a1'
    integer Ogre_Rockslinger           = 'hwt3'
    integer Ogre_Gauntlet              = 'hwt2'
    integer Ogre_Mauler                = 'nenp'
    integer Ogre_Juggernaught          = 'nsll'

    integer Monster_Den                = 'z998'
    integer Ogre_Wardrummer            = 'hwat'
    integer Ogre_Beastrider            = 'nsrn'
    integer Deadland_Wind_Serpent      = 'dead'
    integer Deadland_Clefthoove        = 'nsrh'
    integer Stone_Smolders             = 'z0a5'

endglobals

//========================================================================
// This is the training and creation behavior of the player AI.
//========================================================================
function main takes nothing returns nothing
    call CampaignAI(Stone_Hovel,null)
    call SetReplacements(15,15,15)
    call SetSlowChopping(true)
    call SetPeonsRepair(true)
    call DoCampaignFarms(false)
    call SetDefendPlayer( true )
    call SetRandomPaths( false )
    call SetTargetHeroes( true )
    call SetHeroesFlee( false )
    call SetUnitsFlee( false )
    call SetGroupsFlee( false )
    call SetWatchMegaTargets( false )
    call SetIgnoreInjured( false )
    call SetHeroesTakeItems( true )
    call SetSlowChopping( false )
    call SetSmartArtillery( true )
    set campaign_gold_peons = 5
    set campaign_wood_peons = 3
    call SetAmphibious()
  
    call SetBuildUnitEx(0,0,0,Ogre_Laborer)

    call SetBuildUnitEx(0,0,0,Stone_Great_Hall)      
    call SetBuildUnitEx(0,0,0,Stone_Great_Hold)        
    call SetBuildUnitEx(0,0,0,Stone_Empire)      
    call SetBuildUnitEx(0,0,0,Stone_Hovel)
    call SetBuildUnitEx(0,0,0,Warchiefs_Hut)
    call SetBuildUnitEx(0,0,0,Stone_Coliseum)      
    call SetBuildUnitEx(0,0,0,Stone_Elysium)      
    call SetBuildUnitEx(0,0,0,Stone_Fort)      
    call SetBuildUnitEx(0,0,0,Monster_Den)    
    call SetBuildUnitEx(0,0,0,Stone_Smolders)              
  
//========================================================================
//Attack Waves
//========================================================================
    loop

    //=========== WAVE 1 =================//
    call InitAssaultGroup()
    call CampaignAttackerEx(5,5,5,Ogre_Warrior)
    call CampaignAttackerEx(3,3,3,Ogre_Gladiator)
    call CampaignAttackerEx(1,1,1,Ogre_Champion)
    call CampaignAttackerEx(3,3,3,Ogre_Rockslinger)
    call CampaignAttackerEx(3,3,3,Ogre_Magi)        
    call SuicideOnPlayerEx(M3,M3,M3,USER1)

    //=========== WAVE 2 =================//
    call InitAssaultGroup()
    call CampaignAttackerEx(10,10,10,Ogre_Warrior)
    call CampaignAttackerEx(1,1,1,Ogre_Commander)
    call CampaignAttackerEx(5,5,5,Ogre_Magi)
    call CampaignAttackerEx(2,2,2,Ogre_Juggernaught)
    call CampaignAttackerEx(2,2,2,Ogre_Totemic)        
    call SuicideOnPlayerEx(M3,M3,M3,USER1)

    endloop
 endfunction

JASS:
//========================================================================
//The Expeditionists
//========================================================================
globals
        player USER1 = PlayerEx(0)
        player USER2 = PlayerEx(1)

    integer Grand_Keep = 'z4bf'
    integer Grand_Castle = 'z3xv'
    integer Grand_Imperium = 'z3xt'
    integer Adventurer = 'z3yl'

    integer Altar_of_Grand = 'z4ba'
    integer Duke_of_Changrad = 'Z3zv'
    integer Ranger_General_Exp = 'Z3zg'
    integer Ballmaster = 'Z3zb'

    integer Ricemill_Farm = 'z0c3'

    integer Allied_Barracks = 'z3xy'
    integer Footman_Exp = 'z3ye'
    integer Rifleman_Exp = 'z3zp'
    integer Spearman_Exp = 'z3yh'
    integer Borbon_Soldier = 'z3zy'
    integer Captain_Exp = 'z3yi'
    integer Crossbowman_Exp = 'z3zn'
    integer Foreman_Exp = 'z3yd'

    integer Rangers_Guild = 'z3yc'
    integer Scout_Exp = 'z3zl'
    integer Tracker_Exp = 'z3zk'
    integer Huntsman_Exp = 'z3zi'
    integer Borbon_Archer = 'z3zz'
    integer Spy_Exp = 'z4ae'
    integer Bronzium_Raider = 'z3zj'
    integer Sniper_Exp = 'z3zm'
    integer Pathfinder_Exp = 'z3ze'

    integer Parish = 'z3xz'
    integer Unduril_Wizard = 'z3yr'
    integer Mysterica = 'z3yk'
    integer Half_ElfCenturion = 'z3yj'
    integer Empowerer = 'z3xs'
    integer Buster_Blader = 'z3yu'
    integer Royal_Drake = 'z3ym'
    integer Umbra_Flayer = 'z3yo'
    integer Typhoon_Lizard = 'z3yv'
    integer Spectrum_Crow = 'z3yq'

    integer Allied_Stable = 'z3yb'
    integer Knight_Exp = 'z3zf'
    integer Lancer_Knight = 'z3zc'
    integer Renaissance_Knight = 'z3yy'
    integer Rechtgerr = 'z3zd'
    integer Borbon_Horseman = 'z3yx'
    integer Pyromancer_Exp = 'z3yz'

    integer Tower_Camp = 'z3xw'
    integer Tower_Revolutionary = 'z3ya'

    integer Workshop_Exp = 'z3rt'
    integer Ironclad_Cannon = 'z3ys'
    integer Sitemen = 'z3zw'
    integer Crafted_Golem = 'z3zu'
    integer Craft_Statue = 'z4ad'
    integer Docker = 'z3yn'
    integer Bolt_Trooper = 'z3zs'
    integer Ballista = 'z084'
    integer Battering_Ram = 'z104'
    integer Catapult_Sling = 'z083'
    integer Mantlet = 'z056'

    integer Merchant_Ship = 'z3yt'
    integer Subnautic_Barge = 'z3zt'
    integer Lieutenant_Exp = 'z3za'
    integer Rottring_Rifleman = 'z3yg'
    integer Rottring_Swordsman = 'z4iy'
    integer Magic_Ray = 'z4xy'

endglobals

//========================================================================
// This is the training and creation behavior of the player AI.
//========================================================================
function main takes nothing returns nothing
    call CampaignAI(Ricemill_Farm,null)
    call SetReplacements(10,10,10)
    call SetSlowChopping(true)
    call SetPeonsRepair(true)
    call DoCampaignFarms(false)
    call SetDefendPlayer( true )
    call SetRandomPaths( false )
    call SetTargetHeroes( true )
    call SetHeroesFlee( false )
    call SetUnitsFlee( false )
    call SetGroupsFlee( false )
    call SetWatchMegaTargets( false )
    call SetIgnoreInjured( false )
    call SetHeroesTakeItems( true )
    call SetSlowChopping( false )
    call SetSmartArtillery( true )
    set campaign_gold_peons = 5
    set campaign_wood_peons = 0
    call SetAmphibious()
  

    call SetBuildUnitEx(5,5,5,Adventurer)
call SetBuildUnitEx(0,0,0,Ricemill_Farm)

//========================================================================
//Attack Waves
//========================================================================
    loop  

    //=========== WAVE 1 =================//
    call InitAssaultGroup()
    call CampaignAttackerEx(8,8,8,Footman_Exp)
    call CampaignAttackerEx(7,7,7,Rifleman_Exp)
    call CampaignAttackerEx(5,5,5,Spearman_Exp)
    call CampaignAttackerEx(2,2,2,Unduril_Wizard)
    call CampaignAttackerEx(2,2,2,Pyromancer_Exp)
    call CampaignAttackerEx(4,4,4,Knight_Exp)
    call CampaignAttackerEx(1,1,1,Catapult_Sling)            
    call SuicideOnPlayerEx(M3,M3,M3,USER1)

    call InitAssaultGroup()
    call CampaignAttackerEx(8,8,8,Footman_Exp)
    call CampaignAttackerEx(7,7,7,Rifleman_Exp)
    call CampaignAttackerEx(5,5,5,Spearman_Exp)
    call CampaignAttackerEx(2,2,2,Unduril_Wizard)
    call CampaignAttackerEx(2,2,2,Pyromancer_Exp)
    call CampaignAttackerEx(4,4,4,Knight_Exp)
    call CampaignAttackerEx(1,1,1,Catapult_Sling)            
    call SuicideOnPlayerEx(M3,M3,M3,USER2)


    //=========== WAVE 2 =================//
    call InitAssaultGroup()
    call CampaignAttackerEx(1,1,1,Crafted_Golem)
    call CampaignAttackerEx(1,1,1,Battering_Ram)
    call CampaignAttackerEx(5,5,5,Borbon_Horseman)
    call CampaignAttackerEx(10,10,10,Borbon_Archer)
    call CampaignAttackerEx(8,8,8,Borbon_Soldier)        
    call SuicideOnPlayerEx(M3,M3,M3,USER1)

    call InitAssaultGroup()
    call CampaignAttackerEx(1,1,1,Crafted_Golem)
    call CampaignAttackerEx(1,1,1,Battering_Ram)
    call CampaignAttackerEx(5,5,5,Borbon_Horseman)
    call CampaignAttackerEx(10,10,10,Borbon_Archer)
    call CampaignAttackerEx(8,8,8,Borbon_Soldier)        
    call SuicideOnPlayerEx(M3,M3,M3,USER2)

    endloop
endfunction

They just harvet gold and lumber, train the units for attacking but the weird thing is, they never attack.

NOTES:
  1. The Fixed Player Settings and Use Custom Forces are ticked on.
  2. These 2 AI's are enemies and USER1 is the player.
  3. I tried to use Campaign AI and Melee AI and doesn't work.
  4. The map is booty bay which will have easy path.
  5. I used Syntax Checker on both the .ai files and no errors.
  6. Red and Blue base are player teams so there is no problem with USER1 to be PlayerEx(0) and its ally to be PlayerEx(1) as USER2.
Please help me with this been stuck for an hour.

Here are some images of stuck training AI but does not ever attack.
bug1-png.356860


bug2-png.356861
 

Attachments

  • BUG1.PNG
    BUG1.PNG
    2 MB · Views: 198
  • BUG2.PNG
    BUG2.PNG
    1.9 MB · Views: 156
Status
Not open for further replies.
Top