AI not attacking enemy AI's

Badhaas

New Member
Reaction score
1
I'm making a map where I need an AI similar to a Hero Arena AI. Though the AI has to be from 1 player; neutral hostile (because all players slots are used by players).

This is my script:

Trigger:
  • AI noob FFA
    • Events
      • Time - Every 2.00 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in AIheroes and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Life of (Picked unit)) Equal to 0.00
            • Then - Actions
            • Else - Actions
              • Set AItargetgroup = (Units within 800.00 of (Position of (Picked unit)) matching (((Owner of (Picked unit)) is an enemy of (Owner of (Matching unit))) Equal to True))
              • Unit Group - Add all units of (Units within 800.00 of (Position of (Picked unit)) matching (((Matching unit) is in AIheroes) Equal to True)) to AItargetgroup
              • Unit Group - Remove (Picked unit) from AItargetgroup
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Number of units in AItargetgroup) Greater than 0
                  • (Current order of (Picked unit)) Not equal to (Order(attack))
                • Then - Actions
                  • Unit - Order (Picked unit) to Attack (Random unit from AItargetgroup)
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Current order of (Picked unit)) Not equal to (Order(attack-move))
                      • (Current order of (Picked unit)) Not equal to (Order(move))
                    • Then - Actions
                      • Set AIpoint = (Random point in (Entire map))
                      • Unit - Order (Picked unit) to Attack-Move To AIpoint
                    • Else - Actions

I've got the AI heroes placed in 1 unitgroup, and they attack player units (which are enemies) and they have to attack each other.

The problem I've got with the script is that the heroes wont attack each other. When they walk near a players units they attack the players units, but when they walk near each other they don't attack each other.

Couldn't anyone please help me here?
 

niceone

New Member
Reaction score
3
When you spawn them you can set a custom value of the unit.

Why not have 1 team have a custom value of 1 and one team a custom value of 0. Then just check the custom values and then have them to attack the opposite.

Trigger:
  • (Custom value of (Picked unit)) Equal to 0
 

Badhaas

New Member
Reaction score
1
Their is a maximum of 11 bots, which are AI controlled heroes. Those bots are all FFA, so every other bot they encounter is concidered an enemy however this script doesn't make a bot attack other bots (even though they are in the AItargetgroup).

The wierd thing is, that after some testing and analysing I discoverd thet when they get spawned the first time they attack other bots for a short period of time, my guesse is 2 seconds.
Which could mean that when the script runs for the second time something goes wrong.
 

Badhaas

New Member
Reaction score
1
And what do you do with those custom values?

What the bots have to do is attack players and each other.
It curruntly has a loop which runs for each hero;
it checks if the hero is alive
then it puts all units in range in a unit group.
if there are more than 0 units in the unit group
attack a random unit from the unitgroup
else attack-move to a random point on the map

Edit: I just found the solution, thanx for trying to help.
it didn't work because all the script made the unit do was attack move.
I removed the
Trigger:
  • (Current order of (Picked unit)) Not equal to (Order(attack))

condition for attacking a random unit
 

niceone

New Member
Reaction score
3
And what do you do with those custom values?

What the bots have to do is attack players and each other.
It curruntly has a loop which runs for each hero;
it checks if the hero is alive
then it puts all units in range in a unit group.
if there are more than 0 units in the unit group
AND custom value is not equal to the custom value of hero
attack a random unit from the unitgroup
else attack-move to a random point on the map

................................
 

Badhaas

New Member
Reaction score
1
Then your making sure the unit won't attack itself, though before that I removed the unit already from the unitgroup.

I could solve the problem by removing the condition of:
- current order not equal to attack.

But now I have a new problem, he doesn't keep attack a unit untill the unit is dead instead he selects a new target every 2 seconds.
 

niceone

New Member
Reaction score
3
Use move instead of attack-move because you check the surroundings anyway every 2 seconds.

and then readd the attack check

OR you can check if the order is move :) and if the order is move then let him scan for enemys and attack them.
 

Badhaas

New Member
Reaction score
1
Thanx that solved it :D
+rep
I also changed it so that it let's the bots only move when they have no current order, else they would change walking direction every 2 seconds.
 
General chit-chat
Help Users

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top