Look up the North(), South(), East(), West() and all for points in between. By overriding those procedures and using step(), you can remote controle something.
I tryed that before, but it caused problemes when the mob was moved by other procedures. I find it safer to make a new remote controling procedure with a direction parameter and call that procedure from each direction. It adds 1 line to each directions, not much.
world mob=/mob/player mob player icon='player.dmi' car icon='car.dmi' verb Enter_Car() set src in oview(1) usr.client.mob=src del(usr) Exit_Car() var/mob/player/p=new(locate(usr.x,usr.y-1,usr.z)) usr.client.mob=p turf icon='map.dmi'
In the move proc your going to check to see if they are driving the car or not. If they are, move the car. If not, move the mob.