This is actually quite simple to do. I modified attack function to resemble what you say (if you want to look more naturally random factor can be added to coord as well)
sample code:
[code=autoit]
Local $numBarbPerWave = Ceiling($atkTroops[$Barb][1] / 2)
Local $numArchPerWave = Ceiling($atkTroops[$Arch][1] / 2)
Switch $deploySettings
Case 0 ;Two sides ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SetLog("~Attacking in two sides...")
If _Sleep(1000) Or $RunState = False Then ExitLoop
;Local $numBarbPerSpot = Ceiling((($atkTroops[$Barb][1] / 2) / 5) / 2)
;Local $numArchPerSpot = Ceiling((($atkTroops[$Arch][1] / 2) / 5) / 2)
SetLog("Dropping first wave of Barbarians")
;Drop first round of Barbarians
Click(68 + (72 * $Barb), 595) ;Select Troop
If _Sleep(100) Or $RunState = False Then ExitLoop (2)
$i = 0
While 1
For $a = 0 To 4
If $i = $numBarbPerWave Or Not $RunState Then ExitLoop(2)
Click($TopLeft[$a][0], $TopLeft[$a][1])
Sleep(Random(150, 200))
$i += 1
Next
For $a = 0 To 4
If $i = $numBarbPerWave Or Not $RunState Then ExitLoop(2)
Click($TopRight[$a][0], $TopRight[$a][1])
Sleep(Random(150, 200))
$i += 1
Next
For $a = 3 To 0 Step -1
If $i = $numBarbPerWave Or Not $RunState Then ExitLoop(2)
Click($TopRight[$a][0], $TopRight[$a][1])
Sleep(Random(150, 200))
$i += 1
Next
For $a = 4 To 1 Step -1
If $i = $numBarbPerWave Or Not $RunState Then ExitLoop(2)
Click($TopLeft[$a][0], $TopLeft[$a][1])
Sleep(Random(150, 200))
$i += 1
Next
[/code]