Ich schätze mal, game_gravity() wird einmal pro frame ausgeführt?
c_setminmax(player); ist dort leider total fehl am Platze, schreibe das an den Anfang deiner player-action außerhalb der while-Schleife.

result = c_trace(vector(my.x,my.y,my.z - my.z_offset),vector(my.x,my.y,my.z - 4000),ignore_me|ignore_passable);
Du schreibst gar nicht, wie result verarbeitet wird. Wie berechnet sich my.force_z ?

Und deine movement-Passage sieht nun wie aus?


"Falls das Resultat nicht einfach nur dermassen gut aussieht, sollten Sie nochmal von vorn anfangen..." - Manual

Check out my new game: Pogostuck: Rage With Your Friends