Use ent_status and ent_get/setvertex to manipulate terrain vertices.
Snapping can be done as follows (c is a CONTACT* pointer) (if I'm not mistaken):
c.z = integer(c.z*2)/2; // or simply cast as (int)


"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