ich habs mir angeguckt , und versucht einzubinden ...
egal irgentwie war das deck immer am schweben

ich hab es jetzt geschafft wink !!!

-> gravitation
-> rampe hochfahren
-> rampe runterfahren
-> wenn man unten ist, ist das board wieder gerade

-> und das gleiche rückwärts ...

so gehts: skater fährt ...
skater trifft auf rampe, schaltet gravitation ab
solange kollision ist, drehe baord hoch und wird weiter bewegt
ab höhe = 180, schaltet der script um so das man rückwärts fährt
und rückwärts wird das board gedreht
-> um unten über die rampe zu kommen, wird das deck wieder gerade
gestellt , und gravitation wird wieder angeschaltet
dabei wird ramp_switch auf 2 geschaltet und das gleiche
passirt, "rückärts"auf der anderen seite...



Code:
///////////////////////////////
// SKATEBOARD-CODE v.1.0     //
//                           //  
// written by Patrick Ratz   //
///////////////////////////////

#include <acknex.h>
#include <default.c>

///////////////////////////////

var skate_move = 1;
var skate_ramp = 0;
var skate_grav = 1;

var ramp_switch = 1;

var i;


ENTITY* skater;

PANEL* my_info=
{
  digits(35, 10, "move = %0.f", *, 1, skate_move);
  digits(35, 19, "ramp = %0.f", *, 1, skate_ramp);
  digits(35, 28, "grav = %0.f", *, 1, skate_grav);
  digits(35, 37, "scha = %0.f", *, 1, ramp_switch);

  flags = SHOW;
}


function main()
{
  vec_set(screen_size,vector(800,400,0));
  vec_set(screen_color,vector(50,1,1)); // dark blue
  vec_set(sky_color,vector(50,1,1)); // dark blue
  video_window(NULL,NULL,0,"My New Game");
  d3d_antialias = 1;
  shadow_stencil = 3;
  
  level_load("skate.wmb");
  
}

//////////////////////////////////////////////

function skate_event();

action Skater() 
{
  		
  skater = my;
  skater.pan = my.pan;
  skater.roll = my.roll;
  skater.tilt = my.tilt;
  
  my.emask |= (ENABLE_BLOCK | ENABLE_ENTITY); 
  my.event = skate_event;
  
  c_setminmax(my);
  
   VECTOR vFeet;
  vec_for_min(vFeet,me); 	 	
	
	while(1)
	{
		
	

  	 if(skate_grav == 1)
  	 {
  	 c_trace(my.x,vector(my.x,my.y,my.z-1000),USE_POLYGON);
    my.z = hit.z - vFeet.z;
    }
      
  	 if(my.z > 180 && skate_ramp == 0) 
    {
  	  skate_ramp = 1; // move back !!
    }
    
    
    if(my.z > 180 && skate_ramp == 1 && ramp_switch == 2) // again , agian ;-)..
    {
  	  skate_ramp = 0; // move front !!
     
    }
   
   
   //vorwärts
   if(skate_move == 1 && skate_ramp == 0 )
   {
    c_move(my,vector(5*time_step,0,0),nullvector,USE_POLYGON);    
   }
   
   //rückwärts//
   if(skate_ramp == 1 && skate_move == 1)
   {
    c_move(my,vector(-5*time_step,0,0),nullvector,USE_POLYGON);    
   }
   
   
   //
      
   wait(1);
  }
}


function skate_event() 
{

 
 // is on the ramp -> drive realistic up
 if(event_type == EVENT_ENTITY && skate_ramp == 0)    
 { 
  my.tilt += 5*time_step; 
  skate_grav = 0;
 } 
 
 // is down the ramp -> drive realistic down    
 if(event_type == EVENT_ENTITY && skate_ramp == 1)    
 { 
  my.tilt -= 5*time_step; 
  skate_grav = 0;
 }
 
 
 // is on the ground -> need for "over the ramp (under)" to the ground 
 if(event_type == EVENT_BLOCK && skate_ramp == 1)    
 { 
  my.tilt = 0;   
  skate_grav = 1;
  ramp_switch = 2;
 } 
 
 if(event_type == EVENT_BLOCK && ramp_switch == 2)    
 { 
  my.tilt = 0;   
  skate_grav = 1;
   } 
}