Hm bin mir jetzt nicht ganz sicher aber du könntest mal folgendes machen.
Du machst nen Marker und nennst den zb DistanceRef
dann das Script (wo man das hinmacht weis ich allerdings nicht du könntest es an den Quest hängen)
if ( player.getDistance DistanceRef <= XXX )
Zur erklärung: das player davor müsste bewirken, dass die Entfernung vom player aus und nicht vom scriptausführenden Objekt aus gemessen wird.
Alternativ könnte man es warscheinlich auch umdrehen, was vielleicht sogar besser is, da sich der marker nich bewegt.
if ( DistanceRef.getDistance player <= XXX )
Zu 2
Ich würde es result script anhängen. Hab aber noch nie selbst quests gemacht.
Also an die stufe mit der nachricht ich muss warten dann dein script in das resultscriptfeld. Ich weiß aber nicht ob das dann nur einmal aufgerufen wird oder so. D.h ob man da zeitmessungsscripte reibekommt, was assiert wenn man zwischendrin speichert und läd usw. müsste man mal in der cs wiki nachschaun
EDIT: Hm scheint ungeeignet, da stehen nur so sachen drin wie additem usw.
dann lieber als bedingung an den quest mit if getstage...
EDIT2 zu1: Also der player... weg scheint der richtige zu sein. hier mal ein script aus oblivion, das sowas ähnliches macht.