blitz array error

Blitz3D Forums/Blitz3D Beginners Area/blitz array error

I've been away from B3D for a bit (trying to reacquaint myself) and need some help with the following code (Loki's homing missile code). The error is "Variable must be a Blitz array".

;Demo simple homing avec trails 
;By LoKi(c)2007 

;Screen 
Graphics3D 800,600,32,2 
SetBuffer BackBuffer() 

AppTitle "Trails Single Surface 0.3b - By LoKi(c)2007 / http://blitzklan.free.fr" 

SeedRnd MilliSecs() 
HidePointer 

;camera 
camera = CreateCamera() 
CameraZoom camera,.7 
PositionEntity camera,0,0,-150 

;lumiere 
AmbientLight 100,100,130 
lum = CreateLight(2) 
LightColor lum,50,50,20 
PositionEntity lum,100,-100,100 
lum = CreateLight(2) 
LightColor lum,80,80,90 
PositionEntity lum,100,100,-100 

;Cible 
cible = CreateSphere() 
EntityAlpha cible,.5 
EntityColor cible,100,100,255 
ScaleEntity cible,5,5,5 

TSS_Init() 

;Demo 
NB_MISSILES = Input("Nombre de missiles à tester ? ") 
PREC_TRAIL = Input("Précision des trainées (0-100) ? ") 
TIME_DISSIP = Input("Fréquence Update (0-10) ? ") 

;Missiles 
Type missile 
   Field mesh 
   Field cible% 
   Field speed# 
   Field soupl# 
	Field trail% 
End Type 

Global missile_modele = CreateSphere(2) 
HideEntity missile_modele 
For i=1 To NB_MISSILES 
   m.missile = New missile 
   mmesh = CopyEntity(missile_modele) 
   PositionEntity mmesh, Rand(-1,1)*100, Rand(-1,1)*100, Rand(-1,1)*100 
   TurnEntity mmesh, Rand(360), Rand(360), Rand(360) 
   ScaleEntity mmesh,.5,.5,3 
   mspeed = Rnd(1,2) 
   mcible = cible 
   msoupl = Rnd(.5,2) 
	mtrail = TSS_CreateTrail%(mmesh, 1, $88DD22, PREC_TRAIL) 
Next 

;Framerate 
gameFPS = 60.0 
framePeriod = 1000 / gameFPS 
frameTime = MilliSecs () - framePeriod 

;Boucle principale 
While Not KeyHit(1) 
   ;Framerate 
   Repeat 
       frameElapsed = MilliSecs () - frameTime 
   Until frameElapsed 
   frameTicks = frameElapsed / framePeriod 
   frameTween# = Float(frameElapsed Mod framePeriod) / Float(framePeriod) 
    
   For frameLimit = 1 To frameTicks 
       If frameLimit = frameTicks Then CaptureWorld 
       frameTime = frameTime + framePeriod 
		
		;F9 Passer en Wireframe 
		If KeyHit(67)=1 Then 
	   	wire=1-wire 
	   	Wireframe wire 
	 	EndIf 
		
		;F10 pour un screenshot 
		If KeyHit(68)=1 Then 
			ok = False 
			While (Not ok) 
				If FileType(CurrentDir$ + "Screenshot" + ext + ".bmp") = 0 Then 
					SaveBuffer FrontBuffer(), "Screenshot" + ext + ".bmp" 
					ok = True 
				End If 
				ext = ext + 1 
			Wend 
		End If 

       ;Mise à jour des missiles 
		trail_up = (trail_up + 1) Mod 10 
       For m.missile = Each missile 
           Homing(mmesh, mcible, msoupl) 
           MoveEntity mmesh,0,0,mspeed 
			
			If trail_up=0 Then TSS_AddPointEnt%(mtrail) 
       Next 
        
       ;Modification de la cible 
       MoveEntity cible, MouseXSpeed()/10, -MouseYSpeed()/10, 0 
       MoveMouse 400,300 

		If TIME_DISSIP<2 Then 
			TSS_UpdateMesh() 
		Else 
			TSS_UpdateMesh((trail_up Mod TIME_DISSIP)=0) 
		EndIf 
   Next 
    
   ;Rendu synchro 
   RenderWorld frameTween# 
    
   ;FPS counter 
   fr = fr + 1 
   If MilliSecs() - frTime >= 1000 
       fps = fr 
       fr = 0 
       frTime = MilliSecs() 
   EndIf 
    
   ;infos 
   Color 255,255,255 
   Text  10,10,fps + " FPS" 
   Text  10,20,TrisRendered() + " polys" 
    
   Flip False 
Wend 

End 





;Homing : 'Et ze homing bidouille, sans maths' 
;@param ent : l'entité à orienter 
;@param targ : l'entité servant de cible à atteindre 
;@param sens : le degrés de 'turn' qu'on est près à appliquer à l'angle le plus approprié 

Function Homing(ent%, targ%, sens#=1) 
   ;Horizontale 
   MoveEntity ent,-.01,0,0 
   Local dist1#=EntityDistance#(ent,targ) 
   MoveEntity ent,.02,0,0 
   Local dist2#=EntityDistance#(ent,targ) 
   If dist1#<dist2# Then 
       TurnEntity ent,0,sens#,0 
   Else TurnEntity ent,0,-sens#,0 
   EndIf 
    
   ;Verticale 
   MoveEntity ent,-.01,.01,0 
   dist1#=EntityDistance#(ent,targ) 
   MoveEntity ent,0,-.02,0 
   dist2#=EntityDistance#(ent,targ) 
   If dist1#<dist2# Then 
       TurnEntity ent,-sens#,0,0 
   Else TurnEntity ent,sens#,0,0 
   EndIf 

   MoveEntity ent,0,.01,0 
End Function

;:::::::::::::::::::::::::::::: 
;	Trails Single Surface 
; 
;		by LoKi(c)2007 
;	 blitzklan.free.fr 
;:::::::::::::::::::::::::::::: 

Global TSS_SSmesh 
Global TSS_SSsurf 
Global TSS_Pivot 

Type TSS_TrailType 
	Field index% 
	Field ent% 
	Field col% 
	Field width# 
	Field limit% 
	Field x#[100] 
	Field y#[100] 
	Field z#[100] 
	Field pitch%[100] 
	Field yaw%[100] 
	Field roll%[100] 
	Field v1% 
	Field v2% 
End Type 

Function TSS_Init() 
	TSS_SSmesh = CreateMesh() 
	TSS_SSsurf = CreateSurface(TSS_SSmesh) 
	TSS_Pivot = CreatePivot() 
	
	EntityFX TSS_SSmesh,1+2 
	EntityBlend TSS_SSmesh,3 
End Function 

Function TSS_CreateTrail%(ent%, width#=1, col%=$FFFFFF, limit%=100) 

	If ent=0 Then Return 0 
	
	Local trail.TSS_TrailType = New TSS_TrailType 
	trailent = ent 
	trailindex = 0 
	trailwidth = width 
	trailcol = col 
	
	If limit>100 Then limit=100 
	If limit<=0 Then Return 0 
	traillimit = limit 
	
	Local x# = EntityX(trailent,1)
	Local y# = EntityY(trailent,1) 
	Local z# = EntityZ(trailent,1) 
	Local pitch% = EntityPitch(trailent,1) 
	Local yaw% = EntityYaw(trailent,1) 
	Local roll% = EntityRoll(trailent,1) 
	For i=0 To traillimit-1 
		trailx[i] = x 
		traily[i] = y 
		trailz[i] = z 
		trailpitch[i] = pitch 
		trailyaw[i] = yaw 
		trailroll[i] = roll 
	Next 
	
	Return Handle(trail) 
End Function 

Function TSS_AddPointEnt%(hdl_trail) 
	Local trail.TSS_TrailType = Object.TSS_TrailType(hdl_trail) 
	If trail=Null Then Return 1 
	
	Return TSS_AddPointXYZ(hdl_trail, EntityX(trailent,1), EntityY(trailent,1), EntityZ(trailent,1), EntityPitch(trailent), EntityYaw(trailent), EntityRoll(trailent)) 
End Function 

Function TSS_AddPointXYZ%(hdl_trail, x#, y#, z#, pitch%=0, yaw%=0, roll%=0) 
	Local trail.TSS_TrailType = Object.TSS_TrailType(hdl_trail) 
	If trail=Null Then Return 1 
	
	trailx[trailindex] = x 
	traily[trailindex] = y 
	trailz[trailindex] = z 
	trailpitch[trailindex] = pitch 
	trailyaw[trailindex] = yaw 
	trailroll[trailindex] = roll 
	trailindex = (trailindex + 1) Mod traillimit 
	
	Return 0 
End Function 

Function TSS_UpdateMesh%(update%=True) 
	If update Then 
		ClearSurface TSS_SSsurf 
		
		Local tr%, v1%, v2%, i%,j% 
		Local red%, green%, blue% 
		For trail.TSS_TrailType = Each TSS_TrailType 
			
			trailx[trailindex] = EntityX(trailent,1) 
			traily[trailindex] = EntityY(trailent,1) 
			trailz[trailindex] = EntityZ(trailent,1) 
			trailpitch[trailindex] = EntityPitch(trailent,1) 
			trailyaw[trailindex] = EntityYaw(trailent,1) 
			trailroll[trailindex] = EntityRoll(trailent,1) 
		
			red = ( trailcol And $FF0000 ) Shr 16 
			green = ( trailcol And $00FF00 ) Shr 8 
			blue = ( trailcol And $0000FF ) Shr 0 
			For j=0 To traillimit-1 
				i = (trailindex+1 + j) Mod traillimit 
				
				PositionEntity TSS_Pivot, trailx[i], traily[i], trailz[i] 
				RotateEntity TSS_Pivot, trailpitch[i], trailyaw[i], trailroll[i] 
				
				MoveEntity TSS_Pivot, 0,(trailwidth/2),0 
				v1 = AddVertex (TSS_SSsurf, EntityX(TSS_Pivot,1), EntityY(TSS_Pivot,1), EntityZ(TSS_Pivot,1)) 
				VertexColor TSS_SSsurf, v1, red, green, blue, Float(j)/traillimit 
				
				MoveEntity TSS_Pivot, 0,-(trailwidth),0 
				v2 = AddVertex (TSS_SSsurf, EntityX(TSS_Pivot,1), EntityY(TSS_Pivot,1), EntityZ(TSS_Pivot,1)) 
				VertexColor TSS_SSsurf, v2, red, green, blue, Float(j)/traillimit 
				
				If v>65500 Then Return 1 
				
				If j>0 Then 
					AddTriangle (TSS_SSsurf, tr+(j*2)-2, tr+(j*2)-1, tr+(j*2)) 
					AddTriangle (TSS_SSsurf, tr+(j*2)-1, tr+(j*2)+1, tr+(j*2)) 
	
					AddTriangle (TSS_SSsurf, tr+(j*2)-1, tr+(j*2)-2, tr+(j*2)) 
					AddTriangle (TSS_SSsurf, tr+(j*2)+1, tr+(j*2)-1, tr+(j*2)) 
				EndIf 
			Next 
			trailv1 = v1 
			trailv2 = v2 
			tr = tr + traillimit*2 
		Next 
	Else 
		For trail.TSS_TrailType = Each TSS_TrailType 
			If trailv1=0 Then TSS_UpdateMesh(True) 

			PositionEntity TSS_Pivot, EntityX(trailent,1), EntityY(trailent,1), EntityZ(trailent,1) 
			RotateEntity TSS_Pivot, EntityPitch(trailent), EntityYaw(trailent), EntityRoll(trailent) 
			
			MoveEntity TSS_Pivot, 0,(trailwidth/2),0 
			VertexCoords TSS_SSsurf,trailv1,EntityX(TSS_Pivot,1), EntityY(TSS_Pivot,1), EntityZ(TSS_Pivot,1) 
			
			MoveEntity TSS_Pivot, 0,-(trailwidth),0 
			VertexCoords TSS_SSsurf,trailv2,EntityX(TSS_Pivot,1), EntityY(TSS_Pivot,1), EntityZ(TSS_Pivot,1) 
		Next 
	EndIf 
End Function


I don't see where the arrays are defined?

(trailx[], traily[], trailz[], trailpitch[], trailyaw[], trailroll[]).

Aha... looks as if all the backslashes got stripped out of the html when the code was pasted. Boy oh boy...