sure...but I'm talking about the sort of gravity that makes one slow down when climbing slopes (exhaustment-gravity

)...now it does this, but the side effect is the drifting when the player walkes sideways to the slope...it just doesent feel good

Here's the script so far...made by Slin (he's off right now...testing gravity on a horseback):
Code:
action explorer_code()
{
//set the skills to defaults if not changed
if(!my.PlayerSpeed_Move){my.PlayerSpeed_Move = 1.5;}
if(!my.PlayerSpeed_Turn){my.PlayerSpeed_Turn = 6;}
if(!my.PlayerSpeed_Run){my.PlayerSpeed_Run = 1;}
if(!my.PlayerClimbExperience){my.PlayerClimbExperience = 0.5;}
if(!my.PlayerClimbSteepness){my.PlayerClimbSteepness = 0.8;}
if(!my.PlayerJumpHeight){my.PlayerJumpHeight = 2;}
player_type = 3;
player = my;
shadow_stencil = on;
mat_shadow.alpha = 30;
my.shadow = on;
// my.scale_x = 0.5;
// my.scale_y = 0.5;
// my.scale_z = 0.5;
c_setminmax(me);
//Place the entity on the ground
my.z -= c_trace(my.x,vector(my.x,my.y,my.z-10000),use_box|ignore_me|ignore_passable|ignore_passents);
//get the height of the entitys origin
my.PlayerFootDist = 1;
while(1)
{
//Get the keyinput for the movement
my.PlayerInput_x = key_pressed(key_forward)-key_pressed(key_backward);
my.PlayerInput_x *= 1+key_pressed(key_run)*my.PlayerSpeed_Run;
my.PlayerInput_y = key_pressed(key_strafe_left)-key_pressed(key_strafe_right);
vec_set(my.PlayerMove_x,my.PlayerInput_x);
vec_scale(my.PlayerMove_x,time_step*my.PlayerSpeed_Move);
//Get the mousemovement for turning and rotate the entity
c_rotate(me,vector(mouse_force.x*time_step*-my.PlayerSpeed_Turn,0,0),glide|ignore_me|ignore_passable|ignore_passents);
//Gravity
my.PlayerMove_z = my.PlayerInput_z;
my.PlayerFloorDist = c_trace(my.x,vector(my.x,my.y,my.z-10000),use_box|ignore_me|ignore_passable|ignore_passents);
if(my.PlayerFloorDist > my.PlayerFootDist || my.PlayerMove_z > 0)
{
my.PlayerMove_z -= time_step*0.6;
}else
{
my.PlayerMove_z = 0;
}
//Jumping
if(my.PlayerFloorDist <= my.PlayerFootDist && key_pressed(key_jump))
{
my.PlayerMove_z = my.PlayerJumpHeight;
}
my.PlayerInput_z = my.PlayerMove_z;
//
if(((my.PlayerInput_x != 0 || my.PlayerInput_y != 0) && !my.PlayerMove_z) || normal.z < my.PlayerClimbSteepness)
{
my.PlayerGravity = -my.PlayerClimbExperience*1.5;
}else
{
my.PlayerGravity = 0;
}
//Move the player
c_move(me,my.PlayerMove_x,vector(0,0,my.PlayerGravity), glide + ignore_me|ignore_passable|ignore_passents);
player_camera();//calls the player camera function;
animate_states();
wait(1);
}
}