What you really want to do is add gravity to the absolute dist of c_move() and make sure the move_mode has GLIDE flag in it.
So here is C_Move parameters.
c_move(ENTITY* entity,VECTOR* reldist,VECTOR* absdist,var mode);
as simple example of a entity without any relative forces applied to it (key or mouse controls) that will slide down a slope, just do something like this.
// place an entity on a slope with this code on a slope and it should slide down slope (depending on how steep, gravity, and move_friction),
// adjust gravity and maybe change the engine variable move_friction
// if this doesn't work for you, things get more complicated
action WhateverAction()
{
VECTOR vGravity;
vec_set(vGravity,vector(0,0,-2.5*time_step)); // change -2.5 to more or less to get right gravity for your level scale
move_mode = IGNORE_SPRITES | IGNORE_PASSABLE | IGNORE_PASSENTS | GLIDE; // must have GLIDE to slip down slopes
while(1)
{
c_move(my,nullvector,vGravity,move_mode); // the nullvector would usually be your relative movement with mouse or key input
wait(1);
}
}
Hope it helps,
Loco