Sphere collision, is something I used in my PPGame before I decided to go for NuclearGlory (which I don't actually have yet, but I know i'll be using it once I get back to work on it...)
Instead of checking collisions with the player, you have a sphere that is hidden (make object sphere, hide object) you position it wherever you need to check collisions.
So... position object col_sphere,herox,heroy-20,heroz
would position the sphere a little below the hero (though the numbers of course have to be changed, depends on how tall he is... and just use the variables you're using already for the heros position)
The sphere will check for collision just like checking for collision with the hero, but it gives you more freedom because you don't need to actually have the hero in the place to check the collision... so you can check if something is under him, over him, in front, behind, without him moving.
Just create a sphere, set it's collision to spheres, hide it (though actually, for testing purposes it's best to have it visible at first, hide it when you know it's working and you don't need to see it anymore), and position it where you want to check the collision (in this case, under the hero)
Then do a collision check, like I assume is already being done for the hero... but do it with the collision sphere
Not sure how good I am at explaining this... anyway the reason for this is to make sure that the hero doesn't actually collide with the floor, but stays a little above it (not flying above it, just so his feet aren't embedded within the ground) because that would cause conflicts with your movement collision, resulting in the problem you be having D: