Trog discover fire, fire bad.
Blitz3D Forums/Blitz3D Programming/Trog discover fire, fire bad.
| ||
hi, I kept trying to work with fire and now I could get the three subrutines to load and start at least. I changed something and now I can't get the fire to load. It was crashing saying that memory access violation and the debugger pointed at the render world. I am guessing this means I was overloading my cpu and ram. I need to get the erase function correct. I do not know how to read code like flame.piv\fire= a.fire. It is not plain basic. Is it C++ or something? Is it just type code and I don't recognize it? My new subroutine followes. This one loaded all 3 levels but crashed when played, memory access violation: render world. It worked half way through the level. Global flame01=LoadSprite("gameart\base.bmp") .stwof2 flame02=LoadSprite("gameart\base2.bmp"):HideEntity flame02 ;a\piv=CreatePivot() ;Each Flame of the fire Type flame2 Field ent2 Field ang2# Field size2# Field piv2;mine Field alph2# Field dis2# Field dx2#, dy2#, dz2# End Type ;The fire itself Type fire2 Field piv2 ; Direction Field dx2#, dy2#, dz2# End Type ;Add a fire to the scene Function Add_Fire2.fire2(x2#,y2#,z2#,dx2#=0,dy2#=.23,dz2#=0) a2.fire2=New fire2 a2\piv2=CreatePivot() PositionEntity a2\piv2,x2,y2,z2 a2\dx2=dx2:a2\dy2=dy2:a2\dz2=dz2 Return a2 End Function ;Add a flame to the fire Function Add_flame2(x2#,y2#,z2#,size2#=1,dis2#=.016,dx2#=0,dy2#=0.3,dz2#=0) a2.flame2=New flame2 flame02=LoadSprite("gameart\base2.bmp") a2\ent2=CopyEntity(flame02) ;a2\ent2=LoadSprite("gameart\base2.bmp") PositionEntity a2\ent2,x2,y2,z2 a2\alph2=1 a2\size2=size2 a2\dis2=dis2 a2\ang2=Rnd(360) ScaleSprite a2\ent2,a2\size2,a2\size2 EntityColor a2\ent2,Rnd(150,255),Rnd(0,100),0 a2\dx2=dx2 a2\dy2=dy2 a2\dz2=dz2 End Function ;Update flames Function Update_flames2() For a2.flame2=Each flame2 If a2\alph2>0.01 Then a2\alph2=a2\alph2-a2\dis2 EntityAlpha a2\ent2,a2\alph2 RotateSprite a2\ent2,a2\ang2 a2\ang2=a2\ang2+.2 MoveEntity a2\ent2,a2\dx2,a2\dy2,a2\dz2 Else FreeEntity a2\ent2 Delete a2 End If Next End Function ;Erase all flames Function erase_Flames2() For a2.flame2=Each flame2 If a2\ent2<>0 Then FreeEntity a2\ent2 Next Delete Each flame2 End Function ;Update all fires Function Update_Fires2() For a2.fire2=Each fire2 Add_flame2(EntityX(a2\piv2),EntityY(a2\piv2),EntityZ(a2\piv2),Rnd(1,4),.04,a2\dx2,a2\dy2,a2\dz2) ;Add_flame EntityX(x),EntityY(y),EntityZ(z),Rnd(1,4),.04,a\dx,a\dy,a\dz ;Add_flame(x#,y#,z#,size#=1,dis#=.016,dx#=0,dy#=0.3,dz#=0) Next Update_Flames2() End Function ;Erase all fires Function Erase_Fires2() For a2.fire2=Each fire2 If a2\piv2<>0 Then FreeEntity a2\piv2 Next Delete Each fire2 End Function Return .stwof3 flame03=LoadSprite("gameart\base3.bmp"):HideEntity flame03 ;a\piv=CreatePivot() ;Each Flame of the fire Type flame3 Field ent3 Field ang3# Field size3# Field piv3;mine Field alph3# Field dis3# Field dx3#, dy3#, dz3# End Type ;The fire itself Type fire3 Field piv3 ; Direction Field dx3#, dy3#, dz3# End Type ;Add a fire to the scene Function Add_Fire3.fire3(x3#,y3#,z3#,dx3#=0,dy3#=.23,dz3#=0) a3.fire3=New fire3 a3\piv3=CreatePivot() PositionEntity a3\piv3,x3,y3,z3 a3\dx3=dx3:a3\dy3=dy3:a3\dz3=dz3 Return a3 End Function ;Add a flame to the fire Function Add_flame3(x3#,y3#,z3#,size3#=1,dis3#=.016,dx3#=0,dy3#=0.3,dz3#=0) a3.flame3=New flame3 flame03=LoadSprite("gameart\base3.bmp") a3\ent3=CopyEntity(flame03) ;a3\ent3=LoadSprite("gameart\base3.bmp") PositionEntity a3\ent3,x3,y3,z3 a3\alph3=1 a3\size3=size3 a3\dis3=dis3 a3\ang3=Rnd(360) ScaleSprite a3\ent3,a3\size3,a3\size3 EntityColor a3\ent3,Rnd(150,255),Rnd(0,100),0 a3\dx3=dx3 a3\dy3=dy3 a3\dz3=dz3 End Function ;Update flames Function Update_flames3() For a3.flame3=Each flame3 If a3\alph3>0.01 Then a3\alph3=a3\alph3-a3\dis3 EntityAlpha a3\ent3,a3\alph3 RotateSprite a3\ent3,a3\ang3 a3\ang3=a3\ang3+.2 MoveEntity a3\ent3,a3\dx3,a3\dy3,a3\dz3 Else FreeEntity a3\ent3 Delete a3 End If Next End Function ;Erase all flames Function erase_Flames3() For a3.flame3=Each flame3 If a3\ent3<>0 Then FreeEntity a3\ent3 Next Delete Each flame3 End Function ;Update all fires Function Update_Fires3() For a3.fire3=Each fire3 Add_flame3(EntityX(a3\piv3),EntityY(a3\piv3),EntityZ(a3\piv3),Rnd(1,4),.04,a3\dx3,a3\dy3,a3\dz3) ;Add_flame EntityX(x),EntityY(y),EntityZ(z),Rnd(1,4),.04,a\dx,a\dy,a\dz ;Add_flame(x#,y#,z#,size#=1,dis#=.016,dx#=0,dy#=0.3,dz#=0) Next Update_Flames3() End Function ;Erase all fires Function Erase_Fires3() For a3.fire3=Each fire3 If a3\piv3<>0 Then FreeEntity a3\piv3 Next Delete Each fire3 End Function Return .stwof flame04=LoadSprite("gameart\base4.bmp"):HideEntity flame04 ;Each Flame of the fire Type flame Field ent Field ang# Field size# Field alph# Field dis# Field dx#, dy#, dz# End Type ;The fire itself Type fire Field piv ; Direction Field dx#, dy#, dz# End Type ;Add a fire to the scene Function Add_Fire.fire(x#,y#,z#,dx#=0,dy#=.23,dz#=0) a.fire=New fire a\piv=CreatePivot() PositionEntity a\piv,x,y,z a\dx=dx:a\dy=dy:a\dz=dz Return a End Function ;Add a flame to the fire Function Add_flame(x#,y#,z#,size#=1,dis#=.016,dx#=0,dy#=0.3,dz#=0) a.flame=New flame flame04=LoadSprite("gameart\base4.bmp") a\ent=CopyEntity(flame04) ;a\ent=LoadSprite("gameart\base4.bmp") PositionEntity a\ent,x,y,z a\alph=1 a\size=size a\dis=dis a\ang=Rnd(360) ScaleSprite a\ent,a\size,a\size EntityColor a\ent,Rnd(150,255),Rnd(0,100),0 a\dx=dx a\dy=dy a\dz=dz End Function ;Update flames Function Update_flames() For a.flame=Each flame If a\alph>0.01 Then a\alph=a\alph-a\dis EntityAlpha a\ent,a\alph RotateSprite a\ent,a\ang a\ang=a\ang+.2 MoveEntity a\ent,a\dx,a\dy,a\dz Else FreeEntity a\ent Delete a End If Next End Function ;Erase all flames Function erase_Flames() For a.flame=Each flame If a\ent<>0 Then FreeEntity a\ent Next Delete Each flame End Function ;Update all fires Function Update_Fires() For a.fire=Each fire Add_flame(EntityX(a\piv),EntityY(a\piv),EntityZ(a\piv),Rnd(1,4),.04,a\dx,a\dy,a\dz) ;Add_flame EntityX(x),EntityY(y),EntityZ(z),Rnd(1,4),.04,a\dx,a\dy,a\dz ;Add_flame(x#,y#,z#,size#=1,dis#=.016,dx#=0,dy#=0.3,dz#=0) Next Update_Flames() End Function ;Erase all fires Function Erase_Fires() For a.fire=Each fire If a\piv<>0 Then FreeEntity a\piv Next Delete Each fire End Function Return tfire.fire=Add_Fire(0,0,0) ;in main loop Update_Fires() ;remove after 25 iterations se = se + 1 If se >= 25 Then HideEntity flame01 ;erase_Flames HideEntity Exp1 TranslateEntity tfire\piv,0,5000,0 End If ;locate the fire at target collision PositionEntity tfire\piv,CollisionX#(bullet(q),1),CollisionY#(bullet(q),1),CollisionZ#(bullet(q),1) I would appreciate any input. I am about a week into this and it is hard... Trog discover fire, fire bad! Gerald Nelson |
| ||
Memory access violation AKA MAV's are caused by lots of things, even when it expects a file like a sprite, texture etc or so but can't find it. |
| ||
Thanks for mav info. Gerald |