So it seems that there's no collision implemented. Logan's right. You could try c_move for the player (make sure that elev PASSABLE is reset) or as alternatives handle the player z yourself:
1. use c_trace, determine if the underlying object is the elev.
Got it from the manual
c_trace(my.x,vector(my.x,my.y,my.z-1000),IGNORE_ME|IGNORE_SPRITES|IGNORE_CONTENT);
my.z = hit.z - my.min_z;
or
2. find a way to define if the player is in the elev xy range and has z > elev.z.
In either case, all you have to do is use
player.z = elev.z + elevToPlayer //elevToPlayer is your adjustable var.
Don't forget to modify elevToPlayer in the jump code, if any.
Note that (1.) or (2.) should be handled by an event so as not to use c_trace or "if" respectively, all the time even when you're far away from the elev. If you're using c_trace anyway to handle player z in general, the better.
I'm a beginner myself and idk if you can define custom events.
You can also put the code in elev action:
A. make operate 0 for idle state.
B. if operate != 0
B. if c_trace (use USE_BOX to cover the whole elev area) hits an entity, set its z or check (2.) now, from here.
In either case note that you have to write the code for every entity that can be lifted by elev.
In my previously used SDK you could use inheritance and could make a parent class that contained the common entities coding.
No idea if you can with 3DGS but most chances are that you can
There may be easier ways and faster ones (not the same!) but I'm a 3DGS beginner and that's what I could come up with now.