Ich finde es aber auf jeden Fall erstmal "nett", obwohl die Knilche
ab und zu im Boden stecken bleiben
Code: Alles auswählen
;
;
; ------------------------------------------------------------
;
;   PureBasic - RagDoll
;
;    (c) 2002 - Fantaisie Software , bobobo
; OpenGL scheitert bei mir, das mag am Treiber liegen (Laptop)
; das Programm sollte im Verzeichnis  \Examples\3D liegen
; weil es auf den Screenrequester und andere Daten dort zugreift
; alles ohne Gewähr
; ------------------------------------------------------------
;
#CameraSpeed = 0.5
IncludeFile "Screen3DRequester.pb"
Define.f KeyX, KeyY, MouseX, MouseY ,rott, moveit
If InitEngine3D()
  
  Add3DArchive(#PB_Compiler_Home + "/Examples/3D/" +"Data/Textures", #PB_3DArchive_FileSystem)
  
  Add3DArchive(#PB_Compiler_Home + "/Examples/3D/" +"Data/Packs/desert.zip", #PB_3DArchive_Zip)
  Parse3DScripts()
  
  InitSprite()
  InitKeyboard()
  InitMouse()
  
  If Screen3DRequester()
    
    WorldShadows(#PB_Shadow_Additive  )
    
    SkyBox("desert07.jpg")
    
    camera=CreateCamera(#PB_Any,0,0,100,100)
    MoveCamera(camera,0, 260 ,15, #PB_Absolute)
    
    texture1t=CreateTexture(#PB_Any,256,256)
    StartDrawing(TextureOutput(texture1t))
    
    Box(0, 0, 256, 256, RGBA(222,222,255, 200))
    For l=0 To 128 
      Circle(Random(256),Random(256),Random(4)+1,RGBA(0,0,255,255))
    Next l
    StopDrawing()
    
    texture1=CreateMaterial(#PB_Any, TextureID(texture1t))
    ScaleMaterial(texture1,100,100)
    
    texture2= CreateTexture(#PB_Any,256,256)
    StartDrawing(TextureOutput(texture2))
    Box(0,0,256,256,RGBA(80,80,80,180))
    
    For l=0 To 400
      Circle(Random(256),Random(256),Random(3)+1,RGBA(Random(5)+100,Random(5)+100,Random(5)+100,180))
    Next l
    
    DrawText(0,0,"ragdoll ®",RGBA(255,0,0,255),RGBA(80,80,80,222))
    StopDrawing()
    texture2=CreateMaterial(#PB_Any, TextureID(texture2))
    
    Structure components
      ball.i
      limb.i
      texture.i
      Bodymesh.i
      Body.i
      HeadMesh.i
      Head.i
      arml.i
      armlu.i
      armr.i
      armru.i
      legl.i
      leglu.i
      legr.i
      legru.i
      ct_bodyhead.i
      ct_arml.i
      hinge_arml.i
      ct_armr.i
      hinge_armr.i
      hinge_legl.i
      hinge_leglu.i
      hinge_legr.i
      hinge_legru.i
      posx.i
      posy.i
      posz.i
    EndStructure
    
    Define ragdoll.components
    
    NewList ragdolls.components()
    
    For r=1 To 3 ;3 Dinger
      
      AddElement(ragdolls())
      ragdolls()\posx=r*2-2
      ragdolls()\posy=260
      ragdolls()\posz=0
      
      ragdolls()\texture=texture2;CreateMaterial(#PB_Any, TextureID(texture2))
      
      ;bodyparts
      ragdolls()\Bodymesh=CreateCube(#PB_Any,1)
      ragdolls()\Body=CreateEntity(#PB_Any,MeshID(ragdolls()\Bodymesh),MaterialID(ragdolls()\texture),ragdolls()\posx,ragdolls()\posy,ragdolls()\posz)
      ScaleEntity(ragdolls()\Body,1.0,1,0.25)
      
      ragdolls()\HeadMesh = CreateSphere(#PB_Any,0.5)
      ragdolls()\limb   = CreateCylinder(#PB_Any,0.1,0.80)
      ragdolls()\Head = CreateEntity(#PB_Any,MeshID(ragdolls()\HeadMesh),MaterialID(ragdolls()\texture),  ragdolls()\posx,ragdolls()\posy+1,ragdolls()\posz)
      
      ragdolls()\arml  = CreateEntity(#PB_Any,MeshID(ragdolls()\limb),MaterialID(ragdolls()\texture)  ,ragdolls()\posx-0.6,ragdolls()\posy,ragdolls()\posz)
      ragdolls()\armlu = CreateEntity(#PB_Any,MeshID(ragdolls()\limb),MaterialID(ragdolls()\texture) ,ragdolls()\posx-0.6,ragdolls()\posy-1,ragdolls()\posz)
      
      ragdolls()\armr  = CreateEntity(#PB_Any,MeshID(ragdolls()\limb),MaterialID(ragdolls()\texture)  ,ragdolls()\posx+0.6,ragdolls()\posy,ragdolls()\posz)
      ragdolls()\armru = CreateEntity(#PB_Any,MeshID(ragdolls()\limb),MaterialID(ragdolls()\texture) ,ragdolls()\posx+ 0.6,ragdolls()\posy-1,ragdolls()\posz)
      
      ragdolls()\legl = CreateEntity(#PB_Any,MeshID(ragdolls()\limb),MaterialID(ragdolls()\texture) ,ragdolls()\posx-0.3,ragdolls()\posy-1,ragdolls()\posz)
      ragdolls()\legr = CreateEntity(#PB_Any,MeshID(ragdolls()\limb),MaterialID(ragdolls()\texture) ,ragdolls()\posx+ 0.3,ragdolls()\posy-1,ragdolls()\posz)
      
      ragdolls()\leglu = CreateEntity(#PB_Any,MeshID(ragdolls()\limb),MaterialID(ragdolls()\texture),ragdolls()\posx-0.3,ragdolls()\posy-2,ragdolls()\posz)
      ragdolls()\legru = CreateEntity(#PB_Any,MeshID(ragdolls()\limb),MaterialID(ragdolls()\texture),ragdolls()\posx+ 0.3,ragdolls()\posy-2,ragdolls()\posz)
      ;bodyPhysics
      EntityPhysicBody(ragdolls()\Body,#PB_Entity_BoxBody  ,10, 0,1)
      EntityRenderMode(ragdolls()\Body, #PB_Entity_CastShadow)
      
      EntityRenderMode(ragdolls()\Head, #PB_Entity_CastShadow)
      EntityPhysicBody(ragdolls()\Head, #PB_Entity_SphereBody, 5, 0.25, 1)
      
      EntityRenderMode(ragdolls()\arml, #PB_Entity_CastShadow) 
      EntityPhysicBody(ragdolls()\arml, #PB_Entity_CylinderBody,  1, 0 ,1)
      EntityRenderMode(ragdolls()\armlu, #PB_Entity_CastShadow) 
      EntityPhysicBody(ragdolls()\armlu, #PB_Entity_CylinderBody, 1, 0, 1)
      
      EntityRenderMode(ragdolls()\armr, #PB_Entity_CastShadow) 
      EntityPhysicBody(ragdolls()\armr, #PB_Entity_CylinderBody,  1, 0, 1)
      EntityRenderMode(ragdolls()\armru, #PB_Entity_CastShadow) 
      EntityPhysicBody(ragdolls()\armru, #PB_Entity_CylinderBody, 1, 0,1)
      
      EntityRenderMode(ragdolls()\legl, #PB_Entity_CastShadow) 
      EntityPhysicBody(ragdolls()\legl, #PB_Entity_CylinderBody, 1, 0,1)
      EntityRenderMode(ragdolls()\leglu, #PB_Entity_CastShadow) 
      EntityPhysicBody(ragdolls()\leglu, #PB_Entity_CylinderBody,1, 0,1)
      
      EntityRenderMode(ragdolls()\legr, #PB_Entity_CastShadow) 
      EntityPhysicBody(ragdolls()\legr, #PB_Entity_SphereBody, 1, 0,1)
      EntityRenderMode(ragdolls()\legru, #PB_Entity_CastShadow) 
      EntityPhysicBody(ragdolls()\legru, #PB_Entity_SphereBody,1, 0,1)
      
      ;joints
      ragdolls()\ct_bodyhead=ConeTwistJoint(#PB_Any,EntityID(ragdolls()\Body)  , 0, 0.7,0,EntityID(ragdolls()\Head) ,0,-0.4,0)
      
      ragdolls()\ct_arml     = ConeTwistJoint(#PB_Any,EntityID(ragdolls()\Body),-0.6,  0.5 ,0,EntityID(ragdolls()\arml)       , 0, 0.4,0)
      ragdolls()\hinge_arml  = HingeJoint(#PB_Any,EntityID(ragdolls()\arml)    ,   0, -0.45,0,1,0,0,EntityID(ragdolls()\armlu), 0,0.45,0,1,0,0)
      
      ragdolls()\ct_armr     = ConeTwistJoint(#PB_Any,EntityID(ragdolls()\Body), 0.6, 0.5,0,EntityID(ragdolls()\armr),        0, 0.4,0)
      ragdolls()\hinge_armr  = HingeJoint(#PB_Any,EntityID(ragdolls()\armr)    , 0  ,-0.45,0,1,0,0,EntityID(ragdolls()\armru), 0,0.45,0,1,0,0)
      
      ragdolls()\hinge_legl  = HingeJoint(#PB_Any,EntityID(ragdolls()\Body)    ,-0.3,-0.60,0,1,0,0,EntityID(ragdolls()\legl) , 0,0.40,0,1,0,0)
      ragdolls()\hinge_legr  = HingeJoint(#PB_Any,EntityID(ragdolls()\Body)    , 0.3,-0.60,0,1,0,0,EntityID(ragdolls()\legr) , 0,0.40,0,1,0,0)
      ragdolls()\hinge_leglu = HingeJoint(#PB_Any,EntityID(ragdolls()\legl)    ,   0,-0.45,0,1,0,0,EntityID(ragdolls()\leglu), 0,0.45,0,1,0,0)
      ragdolls()\hinge_legru = HingeJoint(#PB_Any,EntityID(ragdolls()\legr)    ,   0,-0.45,0,1,0,0,EntityID(ragdolls()\legru), 0,0.45,0,1,0,0)
      
      ;joints attributes       
      SetJointAttribute(ragdolls()\ct_bodyhead,#PB_ConeTwistJoint_SwingSpan,0.25)
      SetJointAttribute(ragdolls()\ct_bodyhead,#PB_ConeTwistJoint_SwingSpan2,0)
      SetJointAttribute(ragdolls()\ct_bodyhead,#PB_ConeTwistJoint_TwistSpan,0.25)
      ;       ;          
      SetJointAttribute(ragdolls()\ct_arml,#PB_ConeTwistJoint_SwingSpan ,0.2);seitl
      SetJointAttribute(ragdolls()\ct_arml,#PB_ConeTwistJoint_SwingSpan2,1);dreh
      SetJointAttribute(ragdolls()\ct_arml,#PB_ConeTwistJoint_TwistSpan ,2);vorzurück
      ;       ;          
      SetJointAttribute(ragdolls()\hinge_arml,#PB_HingeJoint_LowerLimit,0)
      SetJointAttribute(ragdolls()\hinge_arml,#PB_HingeJoint_UpperLimit,120)
      SetJointAttribute(ragdolls()\hinge_armr,#PB_HingeJoint_LowerLimit,0)
      SetJointAttribute(ragdolls()\hinge_armr,#PB_HingeJoint_UpperLimit,120)
      
      SetJointAttribute(ragdolls()\ct_armr,#PB_ConeTwistJoint_SwingSpan,0.2);seitlich
      SetJointAttribute(ragdolls()\ct_armr,#PB_ConeTwistJoint_SwingSpan2,1);dreh
      SetJointAttribute(ragdolls()\ct_armr,#PB_ConeTwistJoint_TwistSpan,2);vorzurück
      
      SetJointAttribute(ragdolls()\hinge_legl,#PB_HingeJoint_LowerLimit,-1)
      SetJointAttribute(ragdolls()\hinge_legl,#PB_HingeJoint_UpperLimit,120)
      SetJointAttribute(ragdolls()\hinge_legr,#PB_HingeJoint_LowerLimit,-1)
      SetJointAttribute(ragdolls()\hinge_legr,#PB_HingeJoint_UpperLimit,120)
      
      SetJointAttribute(ragdolls()\hinge_leglu,#PB_HingeJoint_LowerLimit,-120)
      SetJointAttribute(ragdolls()\hinge_leglu,#PB_HingeJoint_UpperLimit,1)
      SetJointAttribute(ragdolls()\hinge_legru,#PB_HingeJoint_LowerLimit,-120)
      SetJointAttribute(ragdolls()\hinge_legru,#PB_HingeJoint_UpperLimit,1)
    Next 
    ;
    
    
    
    plate=CreateCube(#PB_Any,1)
    ScaleMaterial(texture1,0.5,0.5)
    ;Kartons (50kg)
;     NewList plates()
;     For xp=0 To 10
;       For yp=0 To 10
;         AddElement(plates())
;         plates()=CreateEntity(#PB_Any,MeshID(plate),MaterialID(texture1),35+0.25*Random(100)-50,290,35+0.25*Random(100)-50)
;         ScaleEntity(plates(),1,0.5+Random(1)/4,1)
;         EntityRenderMode(plates(), #PB_Entity_CastShadow)
;         EntityPhysicBody(plates(),#PB_Entity_BoxBody,50,0.3,0.5)
;       Next yp
;     Next xp
    
    platte=CreateEntity(#PB_Any,MeshID(plate),MaterialID(texture1),0,0,0)
    ScaleEntity(platte,50,0.01,50)
    MoveEntity(platte,0,256,0)
    EntityRenderMode(platte, #PB_Entity_CastShadow)
    EntityPhysicBody(platte,#PB_Entity_StaticBody,1000,1,0.5)
    
    sun=CreateLight(#PB_Any,RGB(238, 173, 148),17830,12860,10930,#PB_Light_Point)
    
    CameraLookAt(camera,EntityX(ragdolls()\Head),EntityY(ragdolls()\Head),EntityZ(ragdolls()\Head))
    dance=1
    hands=1
    Repeat
      Screen3DEvents()
      If ExamineMouse()
        MouseX = -MouseDeltaX() * #CameraSpeed * 0.05
        MouseY = -MouseDeltaY() * #CameraSpeed * 0.05
      EndIf
      
      If hands=1
        hands=2
        Debug hands  
        ;Händchenhalten    
        sp=-0.5
        tau.f=0
        damp.f=0.5
        SelectElement(ragdolls(),0)
        jx=EntityX(ragdolls()\armru)
        
        jy=EntityY(ragdolls()\armru)
        jz=EntityZ(ragdolls()\armru)
        id=EntityID(ragdolls()\armru)
        SelectElement(ragdolls(),1)
        jx1=EntityX(ragdolls()\armlu)
        jy1=EntityY(ragdolls()\armlu)
        jz1=EntityZ(ragdolls()\armlu)
        id1=EntityID(ragdolls()\armlu)
        knupf1=PointJoint(#PB_Any,id,0,sp,0,id1,0,sp,0)
        SetJointAttribute(knupf1,#PB_PointJoint_Damping,damp)
        SetJointAttribute(knupf1,#PB_PointJoint_Tau,tau)
        
        jx=EntityX(ragdolls()\armru)
        jy=EntityY(ragdolls()\armru)
        jz=EntityZ(ragdolls()\armru)
        id=EntityID(ragdolls()\armru)
        SelectElement(ragdolls(),2)
        jx1=EntityX(ragdolls()\armlu)
        jy1=EntityY(ragdolls()\armlu)
        jz1=EntityZ(ragdolls()\armlu)
        id1=EntityID(ragdolls()\armlu)
        knupf2=PointJoint(#PB_Any,id,0,sp,0,id1,0,sp,0)
        SetJointAttribute(knupf2,#PB_PointJoint_Damping,damp)
        SetJointAttribute(knupf2,#PB_PointJoint_Tau,tau)
        
        
      EndIf
      If hands=3
        Debug hands  
        hands=0
        If knupf1
          FreeJoint(knupf1)
          knupf1=0
        EndIf
        If knupf2
          FreeJoint(knupf2)
          knupf2=0
        EndIf
        If knupf3
          FreeJoint(knupf3)
          knupf3=0
        EndIf
        
      EndIf
      
      If dance=1
        ForEach ragdolls()
          If EntityY(ragdolls()\Head)<259.5
            ApplyEntityImpulse(ragdolls()\Head  ,0, 9,0,0,1,0)
            ApplyEntityImpulse(ragdolls()\legru  ,0, -5,0,0,-1,0)
            ApplyEntityImpulse(ragdolls()\leglu  ,0, -5,0,0,-1,0)
            If EntityY(ragdolls()\leglu)<256.8
              ApplyEntityImpulse(ragdolls()\leglu,Random(2)-1,Random(8),Random(2)-1)
            EndIf
            If EntityY(ragdolls()\legru)<256.8
              ApplyEntityImpulse(ragdolls()\legru,Random(2)-1,Random(8),Random(2)-1)
            EndIf
            ApplyEntityImpulse(ragdolls()\armlu,Random(2)-1,Random(2)-1,Random(2)-1)
            ApplyEntityImpulse(ragdolls()\armru,Random(2)-1,Random(2)-1,Random(2)-1)
          EndIf
        Next          
      EndIf
      
      If ExamineKeyboard()
        
        If KeyboardPushed(#PB_Key_P) Or KeyboardReleased(#PB_Key_R)
          px.f=0
          py.f=0
          pz.f=0
          ForEach ragdolls()
            px+EntityX(ragdolls()\Body)
            py+EntityY(ragdolls()\Body)
            pz+EntityZ(ragdolls()\Body)
          Next
          px=px/ListSize(ragdolls())
          py=py/ListSize(ragdolls())
          pz=pz/ListSize(ragdolls())
          
          CameraLookAt(camera,px,py,pz)
        EndIf
        
        If KeyboardPushed(#PB_Key_S) And shoot=0
          ForEach ragdolls()
            ApplyEntityImpulse(ragdolls()\Body,0,0,-100,Random(8)-4,Random(8)-4,Random(8)-4)
            shoot=1
          Next
        EndIf
        
        If KeyboardReleased(#PB_Key_S)
          shoot=0
        EndIf
        
        If KeyboardPushed(#PB_Key_R)
          ForEach ragdolls()
            MoveEntity(ragdolls()\Head,ragdolls()\posx,ragdolls()\posy,ragdolls()\posz,#PB_Absolute)
            MoveEntity(ragdolls()\Body,ragdolls()\posx,ragdolls()\posy-1,ragdolls()\posz,#PB_Absolute)
            RotateEntity(ragdolls()\Body,0,0,0,#PB_Absolute)
            MoveEntity(ragdolls()\legr,ragdolls()\posx+0.3,ragdolls()\posy-2,ragdolls()\posz,#PB_Absolute)
            MoveEntity(ragdolls()\legl,ragdolls()\posx-0.3,ragdolls()\posy-2,ragdolls()\posz,#PB_Absolute)
            MoveEntity(ragdolls()\legru,ragdolls()\posx+0.3,ragdolls()\posy-2.9,ragdolls()\posz,#PB_Absolute)
            MoveEntity(ragdolls()\leglu,ragdolls()\posx-0.3,ragdolls()\posy-2.9,ragdolls()\posz,#PB_Absolute)
            MoveEntity(ragdolls()\armr,ragdolls()\posx+0.6,ragdolls()\posy-1,ragdolls()\posz,#PB_Absolute)
            MoveEntity(ragdolls()\arml,ragdolls()\posx-0.6,ragdolls()\posy-1,ragdolls()\posz,#PB_Absolute)
            MoveEntity(ragdolls()\armru,ragdolls()\posx+0.6,ragdolls()\posy-2,ragdolls()\posz,#PB_Absolute)
            MoveEntity(ragdolls()\armlu,ragdolls()\posx-0.6,ragdolls()\posy-2,ragdolls()\posz,#PB_Absolute)
          Next
        EndIf
        If KeyboardReleased(#PB_Key_V) 
          Select hands
            Case 0
              hands=1
              
            Case 2
              hands=3
              
          EndSelect
          
        EndIf
        
        
        If KeyboardPushed(#PB_Key_T)
          ForEach ragdolls()
            ApplyEntityImpulse(ragdolls()\armlu ,0,-1,0,0,-1,0)
            ApplyEntityImpulse(ragdolls()\armru ,0,-1,0,0,-1,0)
            ApplyEntityImpulse(ragdolls()\leglu,0,-3,0,0,-1,0)
            ApplyEntityImpulse(ragdolls()\legru,0,-3,0,0,-1,0)
            ApplyEntityImpulse(ragdolls()\Head  ,0, 10,0,0,1,0)
          Next
        EndIf
        
        If KeyboardPushed(#PB_Key_J)
          ForEach ragdolls()
            ApplyEntityImpulse(ragdolls()\Body,0,10,0)
          Next
        EndIf
        
        If KeyboardPushed(#PB_Key_U) And dance=0
          dance=1
        EndIf
        
        If KeyboardPushed(#PB_Key_I)
          dance=0
        EndIf
        
        
        If KeyboardPushed(#PB_Key_F)
          ForEach ragdolls()
            If EntityY(ragdolls()\Body)<259
              ApplyEntityImpulse(ragdolls()\Body,0, 3,0,0,-10,0)
              ApplyEntityImpulse(ragdolls()\armlu  ,0, 3,0,0,-10,0)
              ApplyEntityImpulse(ragdolls()\armru  ,0, 3,0,0,-10,0)
              ApplyEntityImpulse(ragdolls()\leglu ,0, 3,0,0,-10,0)
              ApplyEntityImpulse(ragdolls()\legru ,0, 3,0,0,-10,0)
              ApplyEntityImpulse(ragdolls()\Head   ,0,6,0,0,0  ,0)
            EndIf
          Next
        EndIf
        
        If KeyboardPushed(#PB_Key_H)
          ForEach ragdolls()
            ApplyEntityImpulse(ragdolls()\armlu,0,1,0,0,-2,0)
            ApplyEntityImpulse(ragdolls()\armru,0,1,0,0,-2,0)
            ApplyEntityImpulse(ragdolls()\legl,0,-4,0,0,-20,0)
            ApplyEntityImpulse(ragdolls()\legr,0,-4,0,0,-20,0)
            ApplyEntityImpulse(ragdolls()\Head,0,5,0,0,0,0)
            ApplyEntityImpulse(ragdolls()\Body,0,4,0,0,10,0)
          Next
        EndIf
        
        If KeyboardPushed(#PB_Key_Add)
          wg+1
          WorldGravity(wg)
        EndIf
        
        If KeyboardPushed(#PB_Key_Subtract)
          wg-1
          WorldGravity(wg)
        EndIf
        
        If KeyboardPushed(#PB_Key_G)
          ;CameraLookAt(camera,EntityX(ragdolls()\Body),EntityY(ragdolls()\Body),EntityZ(ragdolls()\Body))
          ForEach ragdolls()
            ApplyEntityImpulse(ragdolls()\Head   ,0, 2,0)
            ApplyEntityImpulse(ragdolls()\legl , 0, Random(4),0,0,-6,0)
            ApplyEntityImpulse(ragdolls()\legr , 0, Random(4),0,0,-6,0)
            ApplyEntityImpulse(ragdolls()\armlu , 0, Random(1),0,0,6,0)
            ApplyEntityImpulse(ragdolls()\armru , 0, Random(1),0,0,6,0)
            
            ApplyEntityImpulse(ragdolls()\Body,0,-6,0,0,0,0)
          Next
        EndIf
        
;         If KeyboardPushed(#PB_Key_N)
;           ForEach plates()
;             ApplyEntityImpulse(plates(),0,8.5,0)
;           Next
;         EndIf
        
        If KeyboardPushed(#PB_Key_Left)
          KeyX = -#CameraSpeed
        ElseIf KeyboardPushed(#PB_Key_Right)
          KeyX = #CameraSpeed
        Else
          KeyX = 0
        EndIf
        
        If KeyboardPushed(#PB_Key_Up)
          KeyY = -#CameraSpeed
        ElseIf KeyboardPushed(#PB_Key_Down)
          KeyY = #CameraSpeed
        Else
          KeyY = 0
        EndIf
      EndIf
      
      RotateCamera(camera, MouseY, MouseX, 0, #PB_Relative)
      MoveCamera  (camera, KeyX, 0, KeyY)
      
      RenderWorld()
      
      If IsSprite(out) ;freesprite if exists
        FreeSprite(out)
      EndIf
      
      out=CreateSprite(#PB_Any,ScreenWidth(),20)
      
      StartDrawing(SpriteOutput(out))
      If hands
        hao.s=" V:Hands Off,"
      Else
        hao.s=" V:Hands On,"
      EndIf
      
      If dance
        ho.s=" I:IdiotDance OFF,"
        ;DrawText(0,0,"R:reset, "+ho+" P:LookatAll,")
      Else
        ho.s=" U:IdiotDance ON, "
        
      EndIf
      DrawText(0,0,"R:reset, T:upright, H:hail ,G:strange ,T: upright, F:forceup (near plate),"+ho+" J:Up,"+hao+"P:LookatAll")
      StopDrawing()
      DisplayTransparentSprite(out,0,0)
      FlipBuffers()
    Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
    
  EndIf
  
Else
  MessageRequester("Error", "The 3D Engine can't be initialized", 0)
EndIf
End
