I think you should slow down, people have been giving you lots of tips, try making some code yourself, then you will progress much faster, besides, if people give you code then you don't understand what it all means unless you read through it 1,000,000,000,000 times, if you make it, you will understand it all.
Here's the AI I made for an fps, it wont work just by placing it into db, (it's dbpro code anyway), but it's just to show you what you could do if you tryed coding yourself, and what you couldn't do by taking code.
_Artificial_Intelligence:
`Enemy AI
for e=1 to enemies
`Animate enemies
loop object inten+e : set object speed inten+e,100
`Get distances between player and enemy
enemy(e).dist=sqrt( (player(1).x-enemy(e).x)^2 + (player(1).y-enemy(e).y)^2 + (player(1).z-enemy(e).z)^2 )
`Get old angle
enemy(e).oldang=enemy(e).ang
`Change states
if enemy(e).dist<300 and shoot=0 and enemy(e).health>20
enemy(e).state=e_attack
endif
if enemy(e).dist>300
if enemy(e).health>20
enemy(e).state=e_wander
else
enemy(e).state=r_run
endif
endif
`Enemy actions
if enemy(e).state=e_attack
enemy(e).ang=atanfull(player(1).x-enemy(e).x,player(1).z-enemy(e).z)
enemy(e).x=newxvalue(enemy(e).x,enemy(e).ang,e_speed#)
enemy(e).z=newzvalue(enemy(e).z,enemy(e).ang,e_speed#)
endif
if enemy(e).state=e_wander
if rnd(2)=1
enemy(e).ang=wrapvalue(enemy(e).oldang+rnd(2.0))
endif
if rnd(2)=2
enemy(e).ang=wrapvalue(enemy(e).oldang-rnd(2.0))
endif
enemy(e).x=newxvalue(enemy(e).x,enemy(e).ang,e_speed#)
enemy(e).z=newzvalue(enemy(e).z,enemy(e).ang,e_speed#)
endif
if enemy(e).state=e_retreat
enemy(e).ang=atanfull(player(1).x-enemy(e).x,player(1).z-enemy(e).z)
enemy(e).x=newxvalue(enemy(e).x,enemy(e).ang,-e_speed#)
enemy(e).z=newzvalue(enemy(e).z,enemy(e).ang,-e_speed#)
endif
if enemy(e).state=e_run
enemy(e).ang=wrapvalue(atanfull(player(1).x-enemy(e).x,player(1).z-enemy(e).z)+(180+atanfull(player(1).x-enemy(e).x,player(1).z-enemy(e).z)/20)+rnd(50))
enemy(e).x=newxvalue(enemy(e).x,enemy(e).ang,e_speed#)
enemy(e).z=newzvalue(enemy(e).z,enemy(e).ang,e_speed#)
endif
`Ensure enemy doesn't walk out of area
enemy(e).oldx = enemy(e).x
enemy(e).oldy = enemy(e).y
enemy(e).oldz = enemy(e).z
if enemy(e).x>10000 or enemy(e).x<0 then enemy(e).x=enemy(e).oldx : enemy(e).ang=wrapvalue(enemy(e).ang+180)
if enemy(e).z>10000 or enemy(e).z<0 then enemy(e).z=enemy(e).oldz : enemy(e).ang=wrapvalue(enemy(e).ang+180)
`if enemy is infront
aimx#=newxvalue(player(1).x,player(1).yang,14000)
aimy#=player(1).y
aimz#=newzvalue(player(1).z,player(1).yang,14000)
infront#=intersect object(inten+e,player(1).x,player(1).y,player(1).z,aimx#,aimy#,aimz#)
if infront#>0
enemy(e).screen=1
else
enemy(e).screen=0
endif
`Selected enemy
if intersect object(inten+e,player(1).x,player(1).y,player(1).z,aimx#,aimy#,aimz#)>0
selected_enemy=e
endif
position object inten+enemies+1,enemy(selected_enemy).x,enemy(selected_enemy).y+10,enemy(selected_enemy).z
yrotate object inten+enemies+1,camera angle y()
`if you shoot
if shoot=1 and enemy(e).screen=1
enemy(e).state=e_retreat
enemy(e).health=enemy(e).health-10
endif
`Respawn
if enemy(e).health<=0
enemy(e).health=100
player(1).kills=player(1).kills+1
enemy(e).x=landx# : enemy(e).z=landz#
endif
`Lose health / lives
if enemy(e).dist<10
player(1).health=player(1).health-1
play sound inten
else
stop sound inten
endif
if player(1).health<=0 then player(1).health=100 :player(1).lives=player(1).lives-1 : player(1).x=rnd(10000) : player(1).z=rnd(10000)
`Keep above ground
enemy(e).y=get ground height(1,enemy(e).x,enemy(e).z)
`Update enemy
position object inten+e,enemy(e).x,enemy(e).y,enemy(e).z
yrotate object inten+e,curveangle(enemy(e).ang,object angle y(inten+e),10.0)
`deselect enemies
next e
Return
