Чтобы раздел не захламлять, напишу сюда. Возникла ещё проблема: я создал команду dpPositionArea, аналогичную Blitz-евской PositionEntity, если её использовать не более, чем дважды, вне цикла, то всё работает, если больше, то Blitz зависает на чёрном экране(помогает задержка, но чем чаще команду используешь, тем продолжительней она нужна(например, для 3-й - 400мс)). Интересно, что в цикле никаких проблем не возникает. С чем это может быть связано?
P.S. Дебаггер Барсика ошибок не выявил.
ProcedureDLL.f dpPositionArea(*area,xPos.f,yPos.f,zPos.f)
If FindMapElement(Objects(),Str(PeekI(*area)))
Objects()\xPos = xPos
Objects()\yPos = yPos
Objects()\zPos = zPos
Else
error = 1
EndIf
EndProcedure
Graphics3D 800,600,32,2
SetBuffer BackBuffer()
arial = LoadFont("arial",20,True)
SetFont arial
cam = CreateCamera()
PositionEntity cam,0,0,-10
plane = CreatePlane()
EntityColor plane,0,100,100
PositionEntity plane,0,-1,0
sphere1 = CreateSphere()
EntityColor sphere1,150,0,0
sphere2 = CreateSphere()
EntityColor sphere2,0,0,150
sphere3 = CreateSphere()
EntityColor sphere3,0,150,0
sphere4 = CreateSphere()
EntityColor sphere4,150,0,0
r1 = dpCreateArea(0,10)
r2 = dpCreateArea(0,2)
r3 = dpCreateArea(0,3)
dpPositionArea(r1,0,0,0)
dpPositionArea(r2,0,0,0)
dpPositionArea(r3,0,0,0)
While Not dpControlErrors() <> 0 Or KeyHit(1)
If KeyDown(17)
dpPropelArea(r1,1,0,0)
EndIf
dpAttachEntity(sphere1,r1)
dpAttachEntity(sphere2,r2)
dpAttachEntity(sphere3,r3)
dpUpdateAreas()
UpdateWorld()
RenderWorld()
Flip
Wend
If dpControlErrors() <> 0
Print dpControlErrors()
EndIf
WaitKey()
End
UPD. Решается с помощью задержки в Blitz-е, а не в Барсике: для 9 команд подходит Delay(40)