You should define all variables at the top of your level.wdl(define scan_mode,skill1;)

Then put your Function first
 Code:
function push_me() 
{ 
   if(!you) {return;} 
   if(you.z > my.z+my.max_z){return;} 
   if(you.scan_mode == scan_pushable) 
   { 
      my.speed_x = you.speed_x; 
      my.speed_y = you.speed_y; 
   } 
   else 
   { 
      my.speed_x = fcos(you.pan,5*0.9*time); 
      my.speed_y = fsin(you.pan,5*0.9*time); 
   } 
   move_mode = ignore_passable+glide; 
   ent_move(nullvector,vector(my.speed_x,my.speed_y,0)); 
}
}


Then Your Action
 Code:
action push_able 
{ 
   my.scan_mode = scan_pushable; 
   my.enable_impact = on; 
   my.event = push_me; 
} 


this worked for me, but I put the code in a separate wdl(pushable.wdl) and included in my level.wdl(include <pushable.wdl>;)

Hopes this help!

also if you paste the code as is put another } at the end of

function push_me()


Life is what you make it just like Games!