I still have that problem. It still says Mem access violation. In the blitz debugger it says that thisEnemy.EnemyType (Null)
The error occurs on this line:
Graphics3D 1024,768,32 AppTitle "Gun Shooter" Collisions 1,2,2,2 Collisions 3,4,2,1 SetBuffer BackBuffer() Type BulletType Field mesh End Type Type EnemyType Field mesh End Type Global player = CreatePivot() PositionEntity player,0,1,1 EntityRadius player,.6 EntityType player,1 camera = CreateCamera( player ) CameraRange camera,.1,200 light = CreateLight() LightColor light,32,32,32 TurnEntity light,45,45,0 Global Sight = LoadImage("Sight.bmp") Global GunFire = LoadSound("gunfire.wav") Global Gun = LoadMesh("Weapons\SWATRifle.3ds",player) Global EnemyMesh = CreateCube() Global BulletMesh = LoadMesh("Weapons\Bullet.3ds") If Sight = 0 Then RuntimeError "File: 'Sight.bmp' not found" If GunFire = 0 Then RuntimeError "File: 'gunfire.wav' not found" If Gun = 0 Then RuntimeError "File: 'SwatRifle.3ds' not found" If BulletMesh = 0 Then RuntimeError "File: 'Bullet.3ds' not found" Dim Trees(5) ;Trees(0) = CreateTree("Levels\Leyland Cypress.jpg",130,317) ;RotateEntity Trees(0),90,90,90 ;PositionEntity(Trees(0),10,1,10) EntityType BulletMesh,3 HideEntity BulletMesh Levels = OpenFile("Levels.dat") ReadLine(Levels) leveloc$ = ReadLine$(Levels) Levelfile = OpenFile("Levels" + leveloc) LevelType$ = ReadLine$(Levelfile) If LevelType$ = "Terrain" Then Pos = FilePos(Levelfile) Level = LoadTerrain("Levels" + ReadLine(Levelfile)) SeekFile(Levelfile,pos) terrain = LoadImage("Levels" + ReadLine(Levelfile)) tex = LoadTexture("Levels" + ReadLine(LevelFile)) EntityTexture Level,tex ElseIf LevelType$ = "Maplet" Then Level = LoadMesh("Levels" + ReadLine(LevelFile)) Else RuntimeError "Invalid Level Type Code: L295" EndIf For i = 1 To 10 EnemyType.EnemyType = New EnemyType EnemyType\mesh = CopyMesh(EnemyMesh) EntityType EnemyType\mesh,4 Next ;CameraFogMode camera,1 ;CameraFogColor camera,255,255,255 ;CameraFogRange camera,1,10 If Level = 0 RuntimeError "File: 'L1Field.jpg' not found" If GunFire = 0 Then RuntimeError "File: '9mm.wav' not found" EndIf ScaleEntity Gun,0.9999,0.9999,0.9999 MaskImage Sight,255,255,255 MidHandle Sight For EnemyType.EnemyType = Each EnemyType If LevelType$ = "Terrain" Then PositionEntity EnemyType\mesh,Rand(0,ImageWidth(terrain)),0,Rand(0,ImageHeight(terrain)) ElseIf LevelType$ = "Maplet PositionEntity EnemyType\mesh,Rand(0,MeshWidth(Level)),0,Rand(0,MeshHeight(Level)) EndIf EntityType EnemyType\mesh,4 Next FreeImage terrain LoadSkyBox("World") MoveEntity Gun,.1,-.1,0 EntityFX Level,1 EntityType Level,2 sp# = .05 ey# = EntityY(player) PositionEntity Gun,EntityX(player) + .3,EntityY(player) - 1,EntityZ(player) - 1 ;WireFrame True While Not KeyHit(1) yv# = EntityY(player) - ey ey = EntityY(player) If KeyHit(57) yv=.1 If KeyDown(54) Then sp# = 2 ElseIf KeyDown(42) Then sp# = .2 Else sp# = .05 EndIf MoveEntity player,0,yv-.005,0 If KeyDown(30) TurnEntity camera,-2,0,0 TurnEntity Gun,-2,0,0 EndIf If KeyDown(44) TurnEntity camera,+2,0,0 TurnEntity Gun,+2,0,0 EndIf If KeyDown(203) TurnEntity player,0,2,0 If KeyDown(205) TurnEntity player,0,-2,0 If KeyDown(200) MoveEntity player,0,0,sp If KeyDown(208) MoveEntity player,0,0,-sp RotateEntity Gun,EntityPitch(player),0,0 If KeyHit(156) PointEntity player,Gun EndIf If MouseDown(1) thisbullet.BulletType = New BulletType thisbullet\mesh = CopyMesh(bulletMesh) RotateEntity thisBullet\mesh,EntityPitch(player,1),EntityYaw(player,1),EntityRoll(player,1) ;PlaySound GunFire PositionEntity thisBullet\Mesh,EntityX(player) - .1,EntityY(player) - .134,EntityZ(player) - .8 EntityType thisbullet\Mesh,3 EndIf TurnEntity player,0,-MouseXSpeed(),0 ;TurnEntity player,MouseYSpeed(),0,0 UpdateWorld RenderWorld Locate 0,0 ;Print TrisRendered() DrawImage Sight,GraphicsWidth() / 2,GraphicsHeight() / 2 For biter.BulletType = Each BulletType MoveEntity biter\mesh,0,0,1 If Abs(EntityX(biter\mesh,1)) > 1000 FreeEntity biter\mesh Delete biter ElseIf Abs(EntityY(biter\mesh,1)) > 1000 FreeEntity biter\mesh Delete biter ElseIf Abs(EntityZ(biter\mesh,1)) > 1000 FreeEntity biter\mesh Delete biter EndIf Next For thisEnemy.EnemyType = Each EnemyType For thisBullet.BulletType = Each BulletType If EntityCollided(thisBullet\mesh,3) = thisEnemy\mesh Then FreeEntity thisEnemy\mesh FreeEntity thisBullet\mesh Delete thisEnemy Delete thisBullet EndIf Next Next Color 0,0,0 Locate 0,0 Print EntityDistance(player,Gun) Flip Wend FreeEntity Level FreeEntity Gun FreeEntity Camera FreeEntity Bullet FreeEntity player FreeEntity light FreeImage Sight FreeSound GunFire FreeTexture tex CloseFile Levels CloseFile Levelfile For bulletType.BulletType = Each BulletType FreeEntity bulletType\mesh Delete bulletType Next For EnemyType.EnemyType = Each EnemyType FreeEntity EnemyType\mesh Delete EnemyType Next End Function CreateTree(file$,width#,Height) tree = CreateMesh() surf1 = CreateSurface(tree) v0 = AddVertex(surf1,0,-1.0,1.0,0,0) v1 = AddVertex(surf1,0,-1.0,-1.0,1,0) v2 = AddVertex(surf1,0,1.0,-1.0,1,0) v3 = AddVertex(surf1,0,1.0,1.0,0,1) tri0 = AddTriangle(surf1,v0,v1,v2) tri1 = AddTriangle(surf1,v0,v2,v3) v4 = AddVertex(surf1,-1.0,0,-1.0,0,0) v5 = AddVertex(surf1,1.0,0,-1.0,1,0) v6 = AddVertex(surf1,1.0,0,1.0,1,1) v7 = AddVertex(surf1,-1.0,0,1.0,0,1) tri2 = AddTriangle(surf1,v4,v5,v6) tri3 = AddTriangle(surf1,v4,v6,v7) UpdateNormals tree tex = LoadBrush(file$,4) ; using masked flag (4) RotateTexture tex,180 PaintMesh tree,tex EntityFX tree,16 ; make visible from both sides Return tree End Function Function LoadSkyBox( file$ ) m=CreateMesh() ;front face b=CreateBrush(0,0,0) s=CreateSurface( m,b ) AddVertex s,-1,+1,-1,0,0:AddVertex s,+1,+1,-1,1,0 AddVertex s,+1,-1,-1,1,1:AddVertex s,-1,-1,-1,0,1 AddTriangle s,0,1,2:AddTriangle s,0,2,3 FreeBrush b ;right face b=CreateBrush(0,0,0) s=CreateSurface( m,b ) AddVertex s,+1,+1,-1,0,0:AddVertex s,+1,+1,+1,1,0 AddVertex s,+1,-1,+1,1,1:AddVertex s,+1,-1,-1,0,1 AddTriangle s,0,1,2:AddTriangle s,0,2,3 FreeBrush b ;back face b=CreateBrush(0,0,0) s=CreateSurface( m,b ) AddVertex s,+1,+1,+1,0,0:AddVertex s,-1,+1,+1,1,0 AddVertex s,-1,-1,+1,1,1:AddVertex s,+1,-1,+1,0,1 AddTriangle s,0,1,2:AddTriangle s,0,2,3 FreeBrush b ;left face b=CreateBrush(0,0,0) s=CreateSurface( m,b ) AddVertex s,-1,+1,+1,0,0:AddVertex s,-1,+1,-1,1,0 AddVertex s,-1,-1,-1,1,1:AddVertex s,-1,-1,+1,0,1 AddTriangle s,0,1,2:AddTriangle s,0,2,3 FreeBrush b ;top face b=CreateBrush(0,0,0) s=CreateSurface( m,b ) AddVertex s,-1,+1,+1,0,1:AddVertex s,+1,+1,+1,0,0 AddVertex s,+1,+1,-1,1,0:AddVertex s,-1,+1,-1,1,1 AddTriangle s,0,1,2:AddTriangle s,0,2,3 FreeBrush b ;bottom face b=CreateBrush(0,0,0) s=CreateSurface( m,b ) AddVertex s,-1,-1,-1,1,0:AddVertex s,+1,-1,-1,1,1 AddVertex s,+1,-1,+1,0,1:AddVertex s,-1,-1,+1,0,0 AddTriangle s,0,1,2:AddTriangle s,0,2,3 FreeBrush b ScaleMesh m,100,100,100 FlipMesh m EntityFX m,1 Return m End Function Function Mid3dHandle(mesh) ux#=-100000 uy#=-100000 uz#=-100000 lx#=100000 ly#=100000 lz#=100000 cs=CountSurfaces(mesh) For s=1 To cs surf=GetSurface(mesh,s) cv=CountVertices(surf)-1 For v=0 To cv vx#=VertexX#(surf,v) vy#=VertexY#(surf,v) vz#=VertexZ#(surf,v) If vx#<lx# Then lx#=vx# If vx#>ux# Then ux#=vx# If vy#<ly# Then ly#=vy# If vy#>uy# Then uy#=vy# If vz#<lz# Then lz#=vz# If vz#>uz# Then uz#=vz# Next Next ax#=(ux#+lx#)/2 ay#=(uy#+ly#)/2 az#=(uz#+lz#)/2 PositionMesh mesh,-ax#,-ay#,-az# End Function
The error occurs on this line:
If EntityCollided(thisBullet\mesh,3) = thisEnemy\mesh Then