In the while loop of the action 'character_walking', there was a 'wait(1);' missing, look at the following corrected code, please have a close look to place the 'wait(1);' within the curly brackets of the while loop, but not within the curly brackets of the if instruction.


Code:
action character_walking()
{ 
  camera_follow(me);
 
  VECTOR vFeet;
  vec_for_min(vFeet,me); // vFeet.z = distance from player origin to lowest vertex
  
  my.STATE = 1; 
  while (1)
  {
// state 1: walking ////////////////////////////////////////////
    if (my.STATE == 1)
    {
// rotate the entity with the arrow keys     
      my.pan += (key_cul-key_cur)*5*time_step;   

// move the entity forward/backward with the arrow keys
      var distance = (key_cuu-key_cud)*5*time_step;
      c_move(me, vector(distance,0,0), NULL, GLIDE);

// animate the entity    
      my.ANIMATION += 2*distance;
      ent_animate(me,"walk",my.ANIMATION,ANM_CYCLE);

// adjust entity to the ground height, using a downwards trace
      c_trace(my.x,vector(my.x,my.y,my.z-1000),IGNORE_ME | IGNORE_PASSABLE);
      my.z = hit.z - vFeet.z; // always place player's feet on the ground
    }

wait(1);

  }
}