just hold the previous height and compare them each loop, if you suddeny jump up too far then you know your player is trying to stand on the roof or spring to the top ofa cliff, when that happens then position him back at the old position before the sync, something like....
if NewHi-OldHi>0.1
position camera OldX,OldHi,OldZ
endif
sync
in the loop should do the trick, just move your current position into a temporary store before the next change, change the values, and if the difference is too great then reset the values to the old position, this in effect just "takes back" any moves that would be silly, notice that in this code you can`t go UP by more than 0.1 per loop, but you can still go DOWN, if you want the player to fall then you can write a simular code but position the player at the old height minus a set amount, then just check for hitting the floor, if the player falls for too many game loops (use a counter) then kill him, or hurt him according to the counter value.
Mentor.
PC1: P4 3ghz, 1gig mem, 2x160gig hd`s, Radeon 9800pro w cooler (3rd gfx card), 6 way speakers.
PC2: AMD 2ghz, 512mb ram, FX5200 ultra, 16 bit SB.
Mini ATX cases suck.