funny the way my life works - i read your first message !hi! and didn't the read the next (i use mail back) - so, i ended up writing this nice script (below) that i hated to waste so... here it is

(at the end of the post is something about shooting i need you to see !hi! - it's not code, i just need some information about what you want exactly)
INSTRUCTIONS FOR SWAT AI AND ANIMATION:
---------------------------------------
1. Copy and paste the code below into your db editor
2. Save this file INSIDE the folder containing the swat guy animations (namely, with the files; "H-SWAT-Idle.x", "H-SWAT-Move.x" and "H-SWAT-Attack1.x"
3. Now, run the program!
rem ** MADE BY DEHONCHA **
`init all
gosub HandleInit
REM MAIN PROGRAM LOOP
sync on : sync rate 0 : do
`if guard wait is over
if stillcounter<0
`move to next point and loop walking animation
move object 1,2.5
point object 1,posx(counter+1),0,posz(counter+1)
xrotate object 1,0 : zrotate object 1,0
if animstate(1)=0
animstate(1)=1
stop object 1
set object frame 1,animframe(3)
endif
else
`if guard is still waiting, dec the counter and play idling
dec stillcounter
if animstate(1)=1
animstate(1)=0
stop object 1
set object frame 1,animframe(1)
endif
endif
`if guard is within the next point radius then change the next point coordinates
if object position x(1)<posx(counter+1)+5 and object position x(1)>posx(counter+1)-5
if object position z(1)<posz(counter+1)+5 and object position z(1)>posz(counter+1)-5
inc counter : stillcounter=maxstill
endif
endif
`if counter is at its end, then reset
if counter>5 then counter=1
`update cam and object
position camera object position x(1),object position y(1)+40,object position z(1)-60
point camera object position x(1),object position y(1),object position z(1)
`handling animation (see the db examples)
if animpause(1)=0
animpause(1)=4
else
animpause(1)=animpause(1)-1
if animpause(1)=0
if animstate(1)=0 then loop object 1,animframe(1),animframe(2)
if animstate(1)=1 then loop object 1,animframe(3),animframe(4)
endif
endif
sync : loop
HandleInit:
load object "H-SWAT-Idle.x",1
append object "H-SWAT-Move.x",1,total object frames(1)+1
append object "H-SWAT-Attack1.x",1,total object frames(1)+1
scale object 1,1500,1500,1500
yrotate object 1,180 : fix object pivot 1
anim=1
set object speed 1,30
set object interpolation 1,25
dim posx(6) : dim posz(6)
make matrix 1,2500,2500,15,15
posx(1)=0 : posz(1)=0
posx(2)=50 : posz(2)=25
posx(3)=100 : posz(3)=300
posx(4)=200 : posz(4)=150
posx(5)=50 : posz(5)=25
counter=1
stillcounter=0
dim animpause(1) : dim animstate(1)
dim animframe(10)
animframe(1)=1
animframe(2)=25
animframe(3)=31
animframe(4)=51
animframe(5)=52
animframe(6)=62
animframe(7)=63
animframe(8)=72
animframe(9)=73
animframe(10)=77
maxstill=30
return
INSTRUCTIONS FOR MISSLE DEMO:
-----------------------------
1. Just copy and paste into your editor and run
rem ** MADE BY DEHONCHA **
`handle camera
autocam off
move camera -300
`make array; init all variables
dim misslefireflag(10)
mfirecount=1
misslenum=1004
misslefiredelay=10
`making objects
make object cube 1002,25
make object plain 1,500,500
yrotate object 1,90
move object 1,200
color object 1002,rgb(0,230,0)
`making bullets
for i = 1004 to 1013 : make object sphere i,10 : color object i,rgb(230,0,0) : yrotate object i,90 : next i
REM MAIN PROGRAM LOOP
sync on : sync rate 0 : do
`handling missle fire input
if spacekey()=1 and mfirecount<10 then misslefireflag(mfirecount)=1
`handling missle counter and delay between firing missles
if misslefireflag(mfirecount)=1
inc misslefiretimer
if misslefiretimer>misslefiredelay
inc mfirecount : misslefiretimer=0
endif
endif
`handling actual movement of missle
for i = 1 to 10
if misslefireflag(i)=1
show object i+1003 : move object i+1003,1
if object collision(i+1003,0)>0 and object collision(i+1003,0)<>1002 then position object i+1003,x,y,z : misslefireflag(i)=0
endif
next i
rem Simple output (you dont need to go thru this - but you can :-) )
set text font "Arial"
set text size 30
ink rgb(230,230,0),0
center text 320,0,"PRESS SPACE TO FIRE MISSILE"
if mfirecount-1>=1
set cursor object screen x(1003+mfirecount-1)-35,object screen y(1003+mfirecount-1)+15 : print "MISSLE AWAY!"
endif
set cursor object screen x(1002)-35,object screen y(1002)+25 : print "HELICOPTER"
sync : loop
*please work now, please work now, pleeeeaaseee!!

*
***********************************************************************
[ TOP SECRET: FOR !HI!'S EYES ONLY!! ]

just kiddin'

***********************************************************************
anyway, !hi! i need to know what it is you need exactly.
Q1) Is your guard LOOKING for the player or is you just patroling the area?
Q2) Will your guard shoot on sight or will he ring off an alarm or something first?
Q3) Are there any obstacles (big or small) between the guard and the player?
Q4) Are these obstacles breakable or solid?
The way I see things, the shooting is going to be quite complicated.
In my head it goes like this: the guard is patrolling the area, and sees the player. He then engages the player and begins shooting while running towards him. If the player hides behind something (i.e. guard can't get a shot) he moves alot closer to the player and then tries again. If the guard can't get a lock on for about 10 seconds, then the guard stops his search and starts looking around. if he spots the player again, he pursues him again ELSE he resumes his patrolling.
Am i missing anything?
PS What do you think of this face i painted? Guess who he is?
For when they said I couldn't, I did...