I think what you want to use is quest::moveto(x,y,z) combined with $npc->SaveGuardSpot(0);
Not sure of the syntax for the latter; it's found in Striat's quest code
here. His note saye the code prevents the npc from running back to his original spot.