I just realized 2 wouldn't be general-use unless you use MWSE, so forget that.
But as for 1: It should be based on the cell/world coordinates, so you can take that info (the dX and dY variables) and just use "player"->GetAngle Z to figure out what's "forward". Way, way back when I had a working demo of the Oblivion hit-the-bucket scene using some simple trig and the player's angle to figure out if they faced the bucket while swinging. MWSfD has an example trig script you can grab.
Well I know how to detect if the player is facing an object... but what I need is the actual direction the player is moving when they step. The only way I can figure it out is this (in theory - I wish I had a better formula, I'm sure there's something out there)...
If player is facing within -45 and 45 degrees (forward), then:
Left= Subtractions in X axis.
Right=Additions in X axis.
Forward=Additions in Y axis
Back=Subtractions in Y axis
If player is facing within -45 and -135 degrees (left), then:
Left= Subtractions in Y axis.
Right=Additions in Y axis.
Forward=Subtractions in X axis
Back=Additions in X axis
If player is facing within 135 and -135 degrees (down), then:
Left= Subtractions in Y axis.
Right=Additions in Y axis.
Forward=Subtractions in X axis
Back=Additions in X axis
If player is facing within 45 and 135 degrees (down), then:
Left= Additions in Y axis.
Right=Subtractions in Y axis.
Forward=Additions in X axis
Back=Subtractions in X axis
If I can avoid actually scripting all that, I will.