k, i'll look into that stuff, thanks again darkzombies and LBFN!
quick question though, can somebody run this code? and tell me if they are getting the same problem i am? or if its just something messed up with my computer?(warning, alot of freakin' code!)
Rem * Title : Monster AI
Rem Setup sync
Sync On
Sync Rate 30
Draw to front
Backdrop on
Set camera range 1,3000
Autocam off
Hide mouse
randomize timer()
Fog on
Fog distance 3000
Fog color RGB(128,128,128)
Color Backdrop RGB(128,128,128)
load image "images/snow.png",500
Rem make matrix
Make matrix 1,10000,10000,20,20
Rem texture matrix
make snow particles 1,500,5000,800,235,800,100,100,100
Load image "images/floor.jpg",1
Prepare matrix texture 1,1,1,1
Fill matrix 1,0,1
rem Make Gun
Make object cylinder 1,2
XRotate Object 1,90
Fix object pivot 1
Scale object 1,100,100,500
position object 1,0,-7,15
Lock object on 1
rem make HUD
Make object Plain 200,1,1
position object 200,-2.7,1.9,4
Lock object on 200
ghost object on 200
Make object Plain 201,1,1
position object 201,2.7,1.9,4
Lock object on 201
ghost object on 201
Load image "score.bmp",201
Texture object 201,201
rem Load and create hud bitmaps.
Load Bitmap "Radar.bmp",2
Create Bitmap 1,50,50
rem fire texture
Load Image "fire.bmp",2
rem Make Bullet
Make Object Sphere 2,2
texture object 2,2
Hide Object 2
rem Make MonsterBullet
Make Object Sphere 102,2
texture object 102,2
Hide Object 102
rem Make Explosion
Make Object Sphere 30,20
texture object 30,2
ghost object on 30
Hide Object 30
Make Object Sphere 31,20
texture object 31,2
ghost object on 31
Hide Object 31
rem Make Monster Explosion
Make Object Sphere 130,20
texture object 130,2
ghost object on 130
Hide Object 130
Make Object Sphere 131,20
texture object 131,2
ghost object on 131
Hide Object 131
rem load particles
For x = 0 to 10
Make object plain x+10,5,5
Texture object x+10,2
Set object x+10,1,0,0
Ghost object on x+10
Hide object x+10
Next x
rem load Monsterparticles
Load Image "fire.bmp",2
For x =100 to 110
Make object plain x+10,5,5
Texture object x+10,2
Set object x+10,1,0,0
Ghost object on x+10
Hide object x+10
Next x
rem intialize particle counter
Pn=10
MPn=110
rem load sounds
Load sound "crickets.wav",1
Loop sound 1
Load 3Dsound "fireball2.wav",2
Load 3Dsound "fireball2.wav",102
Load 3Dsound "Explode.wav",3
Load 3Dsound "Explode.wav",103
rem Randomize the matrix
randomize matrix 1,125
rem create decorative objects
load image "images/1.jpg",601
load image "images/2.jpg",602
load image "images/3.jpg",603
load image "images/4.jpg",604
load image "images/5.jpg",605
load image "images/6.jpg",606
load image "images/7.jpg",607
load image "images/8.jpg",608
load image "images/9.jpg",609
load image "images/10.jpg",610
load image "images/11.jpg",611
load image "images/12.jpg",612
load image "images/13.jpg",613
load image "images/14.jpg",614
load image "images/15.jpg",615
load image "images/16.jpg",616
load image "images/17.jpg",617
load image "images/18.jpg",618
load image "images/19.jpg",619
load image "images/20.jpg",620
load image "cottag02.bmp",300
t=300
For x = 1 to 9
For z = 1 to 9
Make object cube t,100
Scale object t,100,600,100
y = get ground height(1,x*1000,z*1000)
position object t,x*1000,y+275,z*1000
texture object t,300
scale object texture t,1,-6
inc t
next z
next x
make object cube 501,300
make object cube 502,300
make object cube 503,300
make object cube 504,300
make object cube 505,300
make object cube 506,300
make object cube 507,300
make object cube 508,300
make object cube 509,300
make object cube 510,300
make object cube 511,300
make object cube 512,300
make object cube 513,300
make object cube 514,300
make object cube 515,300
make object cube 516,300
make object cube 517,300
make object cube 518,300
make object cube 519,300
make object cube 520,300
position object 501, 500,80,500
position object 502, 500,80,400
position object 503, 500,80,300
position object 504, 500,80,200
position object 505, 500,80,100
position object 506, 400,80,500
position object 507, 400,80,400
position object 508, 400,80,300
position object 509, 400,80,200
position object 510, 400,80,100
position object 511, 300,80,500
position object 512, 300,80,400
position object 513, 300,80,300
position object 513, 300,80,200
position object 514, 300,80,100
position object 515, 200,80,500
position object 516, 200,80,400
position object 517, 200,80,300
position object 518, 200,80,200
position object 519, 200,80,100
position object 520, 200,80,0
texture object 501,601
texture object 502,602
texture object 503,603
texture object 504,604
texture object 505,605
texture object 506,606
texture object 507,607
texture object 508,608
texture object 509,609
texture object 510,610
texture object 511,611
texture object 512,612
texture object 513,613
texture object 514,614
texture object 515,615
texture object 516,616
texture object 517,617
texture object 518,618
texture object 519,619
texture object 520,620
rem metalic cube
make object cube 600,500
set effect on 600,"metal/metal.fx",1
position object 600, 700,80,0
Rem Load Target
Load object "idle.x",3
Append Object "Walk.x",3,21
Yrotate object 3,180
Fix Object Pivot 3
Loop Object 3
mX# = 5000
mZ# = 5000
mY# = Get Ground Height(1,5000,5000)
X# = 5500
Y# = Get Ground Height(1,5500,5500)
Z# = 5500
`MonsterScore=0
PlayerScore=0
`Gosub PlaceMonster
Gosub PlacePlayer
Rem Main loop
Do
set cursor 550,20
`print "MScore: ",MonsterScore
set cursor 550,40
print "PScore: ",PlayerScore
print total object frames(3)
oldcAY# = cAY#
oldcAX# = cAX#
oldX#=X#
oldY#=Y#
oldZ#=Z#
cAY# = WrapValue(cAY#+MousemoveX()*0.2)
cAX# = WrapValue(cAX#+MousemoveY()*0.2)
caZ# = Camera angle Z()
Rem Control input for camera
If Upkey()=1
XTest# = Newxvalue(X#,cAY#,7)
ZTest# = Newzvalue(Z#,cAY#,7)
If XTest#>0 and XTest#<10000 and ZTest#>0 and ZTest#<10000
X#=XTest#
Z#=ZTest#
Endif
Endif
If Downkey()=1
XTest# = Newxvalue(X#,Wrapvalue(cAY#-180),7)
ZTest# = Newzvalue(Z#,Wrapvalue(cAY#-180),7)
If XTest#>0 and XTest#<10000 and ZTest#>0 and ZTest#<10000
X#=XTest#
Z#=ZTest#
Endif
Endif
If Leftkey()=1
XTest# = Newxvalue(X#,Wrapvalue(cAY#-90),7)
ZTest# = Newzvalue(Z#,Wrapvalue(cAY#-90),7)
If XTest#>0 and XTest#<10000 and ZTest#>0 and ZTest#<10000
X#=XTest#
Z#=ZTest#
Endif
Endif
If Rightkey()=1
XTest# = Newxvalue(X#,Wrapvalue(cAY#+90),7)
ZTest# = Newzvalue(Z#,Wrapvalue(cAY#+90),7)
If XTest#>0 and XTest#<10000 and ZTest#>0 and ZTest#<10000
X#=XTest#
Z#=ZTest#
Endif
Endif
Rem Rotate camera
cTestX#=WrapValue(cAX#-180)
if cTestX# > 225 then cAX#=45
if cTestX# < 135 then cAX#=315
YRotate camera CurveAngle(cAY#,oldcAY#,24)
XRotate camera CurveAngle(cAX#,oldcAX#,24)
Y# = Get ground height(1,X#,Z#)+35
rem collision detection
if DecoCollide(X#,Y#,Z#) = 1
X#=oldX#
Y#=oldY#
Z#=oldZ#
Endif
Rem Position Camera
Position Camera X#,Y#,Z#
Position particles 1, camera position x(),camera position y(),camera position z()
Rem Position Listener
Position Listener X#,Y#,Z#
Rotate Listener 0,cAY#,0
Rem Shoot bullet
if Mouseclick()=1 and Explode =0
if BulletLife=0 or BulletLife<50
Position object 2,X#,Y#-7,Z#
Set object to camera orientation 2
BulletLife =120
show object 2
Loop sound 2
Endif
Endif
If BulletLife > 0 then Gosub ShootBullet
`If MonsterBulletLife > 0 then Gosub MonsterShootBullet
If Explode > 0 then Gosub ExplodeRocket
`If MonsterExplode > 0
`Gosub MonsterExplodeRocket
`else
`Gosub MonsterAI
`Endif
Rem make radar
Copy Bitmap 2,1
set current bitmap 1
ink rgb(0,0,255),rgb(0,0,0)
PRX#=X#/200
PRZ#=50-(Z#/200)
Circle PRX#,PRZ#,1
ink rgb(255,0,0),rgb(0,0,0)
MRX#=mX#/200
MRZ#=50-(mZ#/200)
Circle MRX#,MRZ#,1
Get image 200,0,0,50,50
set current bitmap 0
texture object 200,200
ink rgb(255,128,128),rgb(0,0,0)
Rem Refresh Screen
Sync
Loop
Rem check for collision with wall decorations
Function DecoCollide(X#,Y#,Z#)
for u = 1 to 9
for v = 1 to 9
if X#>u*1000-60
if X#<u*1000+60
if Z#>v*1000-60
if Z#<v*1000+60
if Y# < Get ground height(1,u*1000,v*1000)+575
Collide=1
Exitfunction Collide
endif
endif
endif
endif
endif
next v
next u
Collide=0
Endfunction Collide
Rem Shoot player bullet
ShootBullet:
Dec BulletLife
Move object 2,12
bX#=Object position X(2)
bY#=Object position Y(2)
bZ#=Object position Z(2)
inc Pn
if Pn=21 then Pn=10
Scale object Pn,100,100,100
Position object Pn,bX#,bY#,bZ#
point object Pn,X#,Y#,Z#
Zrotate object Pn,rnd(180)
Show object Pn
for x = 1 to 10
scale object int((Wrapvalue((Pn-9+x)*36))/36)+10,100+x*25,100+x*25,100+x*25
set cursor 10,10
next x
if bY# < Get Ground height(1,bX#,bZ#) then BulletLife=0
Position sound 2,bX#,bY#,bZ#
set cursor 10,10
if Sqrt((mX# - bX#)^2 + (mY#+25 - bY#)^2 + (mZ# - bZ#)^2) <20
`Gosub PlaceMonster
inc PlayerScore
`MonsterBulletLife = 1
BulletLife=0
endif
if DecoCollide(bX#,bY#,bZ#) = 1 then BulletLife = 0
if BulletLife = 0
Hide object 2
stop sound 2
for x=10 to 20
hide object x
next x
Explode = 20
endif
Return
Rem Explode bullet
ExplodeRocket:
Position object 30,bX#,bY#,bZ#
Show object 30
Position object 31,bX#,bY#,bZ#
Show object 31
EScale=20*(30-Explode)
Scale object 30,EScale,EScale,EScale
Yrotate object 30,WrapValue(Explode*37)
Scale object 31,EScale/1.5,EScale/1.5,EScale/1.5
Yrotate object 31,WrapValue(359-Explode*37)
Dec Explode
If Explode = 0 then hide object 30: Hide object 31
If Explode=18
position sound 3,bX#,bY#,bZ#
play sound 3
endif
If Explode < 15 then position sound 3,X#,Y#,Z#
Return
Rem Explode monster bullet
`MonsterExplodeRocket:
`Position object 130,MbX#,MbY#,MbZ#
`Show object 130
`Position object 131,MbX#,MbY#,MbZ#
`Show object 131
`EScale=20*(30-MonsterExplode)
`Scale object 130,EScale,EScale,EScale
`Yrotate object 130,WrapValue(MonsterExplode*37)
`Scale object 131,EScale/1.5,EScale/1.5,EScale/1.5
`Yrotate object 131,WrapValue(359-MonsterExplode*37)
`Dec MonsterExplode
`If MonsterExplode = 0 then hide object 130: Hide object 131
`If MonsterExplode=18
` position sound 103,X#,Y#,Z#
`play sound 103
` endif
`If MonsterExplode < 15 then position sound 103,X#,Y#,Z#
`Return
Rem Simple AI for guided monster misile
`MonsterAI:
`Point object 3,X#,Y#,Z#
`If AvoidDeco >0
` mA# = Object Angle Y(3)
` Dec AvoidDeco
`Yrotate object 3,WrapValue(mA#+AvoidDeco*60)
`endif
Rem Position Monster at new location
` Position Object 3,mX#,mY#,mZ#
Rem check distance from player
` PDist=Sqrt((mX# - X#)^2 + (mY#+25 - Y#)^2 + (mZ# - Z#)^2)
Rem If the player is within range shoot bullet
` if PDist<1500
` if MonsterBulletLife=0 or MonsterBulletLife < 500-Pdist/10
` Point object 3,X#,Y#-25,Z#
` If BulletAvoidDeco > 0
` CornerAim = Rnd(1)
` mA# = object angle Y(3)
` if CornerAim = 0 then Yrotate Object 3,WrapValue(mA#+BulletAvoidDeco*10)
` if CornerAim = 1 then Yrotate Object 3,WrapValue(mA#+BulletAvoidDeco*-16)
`Dec BulletAvoidDeco
`Endif
` If ShootUp > 0
` mA# = object angle X(3)
` XRotate Object 3,WrapValue(mA#+ShootUp*-8)
` Dec ShootUp
` Position object 102,mX#,mY#+25,mZ#
`Set object to object orientation 102,3
`MonsterBulletLife =500
`show object 102
`Loop sound 102
Rem Play idle animation
` Loop Object 3,0,20
`Endif
`Endif
`if PDist>1000
Rem Store old location
` OldmX# = mX#
`OldmZ# = mZ#
`OldmY# = mY#
Rem Play walking animation
`Loop Object 3,21,46
Rem Move monster
`Move Object 3,7
Rem Get new position
` mX# = Object Position X(3)
`mZ# = Object Position Z(3)
` mY# = Get Ground Height(1,mX#,mZ#)
Rem Check for Decoration collision
If DecoCollide(mX#,mY#,mZ#) = 1 and AvoidDeco = 0
mX# = OldmX#
mZ# = OldmZ#
mY# = OldmY#
AvoidDeco = 3
Endif
`Endif
Return
Rem Shoot Monster bullet
`MonsterShootBullet:
`Dec MonsterBulletLife
`Move object 102,12
`MbX#=Object position X(102)
`MbY#=Object position Y(102)
`MbZ#=Object position Z(102)
`inc MPn
`if MPn=121 then MPn=110
`Scale object MPn,100,100,100
`Position object MPn,MbX#,MbY#,MbZ#
`Position sound 102,MbX#,MbY#,MbZ#
` point object MPn,X#,Y#,Z#
` Zrotate object MPn,rnd(180)
`Show object MPn
`for x = 1 to 10
`scale object int((Wrapvalue((MPn-9+x)*36))/36)+110,100+x*25,100+x*25,100+x*25
`next x
`
`if MbY# < Get Ground height(1,MbX#,MbZ#)
`MonsterBulletLife=0
`ShootUp=3
`endif
`Pdist=Sqrt((X# - MbX#)^2 + (Y#+25 - MbY#)^2 + (Z# - MbZ#)^2)
`if Pdist<50
GoSub PlacePlayer
` MonsterBulletLife = 0
`inc MonsterScore
`endif
Rem guided missile
`if Pdist <500+PlayerScore*100 and Pdist>250 then Point object 102,X#,Y#,Z#
`if Pdist < 100 then point object 102,X#,Y#,Z#
` if DecoCollide(MbX#,MbY#,MbZ#) = 1
`MonsterBulletLife = 0
`BulletAvoidDeco = BulletAvoidDeco + 2
` Endif
` if MonsterBulletLife = 0
`Hide object 102
`stop sound 102
`for x=110 to 120
`hide object x
`next x
` MonsterExplode = 20
` endif
Return
remstart PlaceMonster:
mX#=X#
mY#=Y#
mZ#=Z#
While Sqrt((X# - MX#)^2 + (Y#+25 - MY#)^2 + (Z# - MZ#)^2)<1000
mX#=rnd(10000)
mZ#=rnd(10000)
mY#= get ground height(1,mX#,mZ#)
If DecoCollide(mX#,mY#,mZ#) = 1
mX#=X#
mY#=Y#
mZ#=Z#
endif
EndWhile
Position object 3,mX#,mY#,mZ#
Return
remend
PlacePlayer:
X#=mX#
Y#=mY#
Z#=mZ#
While Sqrt((X# - mX#)^2 + (Y#+25 - mY#)^2 + (Z# - mZ#)^2)<1000
X#=rnd(10000)
Z#=rnd(10000)
Y#= get ground height(1,X#,Z#)
If DecoCollide(X#,Y#,Z#) = 1
X#=mX#
Y#=mY#
Z#=mZ#
endif
EndWhile
Position camera X#,Y#,Z#
Point camera mX#,mY#,mZ#
Return
end
my problem tends to be the fact that i have objects positioned, but when i run the executable, all of the cubes are clustered up into 1 corner, not dispersed around the map as i had placed them. (also please ignore that 90% of the coding is rem'd out right now, i am turning it into an educational game for pre k-k to learn counting so i took out everything related to the monster.) and i do know there is no object collision boxes attached to the numbered cubes yet, i will fix that later.....
p.s. how long does the new member thing last? im kinda tired of having to wait for my comments to be accepted before they are posted.
and again, thanks in advance, and thanks for all your help so far.
http://www.shrinkpictures.com/processed/phprZ6E7O_c2AM.jpg
"I AM YOUR GOD OF DEATH"