here's the simplest way to do it. This script can't be triggered again until after the last SpeakString runs. You could adjust the final delay to make it longer if wanted. But to get more complicated you'd prob. need an onExit script from the trigger-area as well. Or you can do things like not let it repeat until PC has left the area, etc. But try this for now,
void main()
{
object oPC = GetEnteringObject();
if (!GetIsPC(oPC)) return;
if (GetHitDice(oPC) > 10)
return;
if (GetLocalInt(oPC, "NW_JOURNAL_ENTRYxenq_ud_uuthli") >= 861260)
return;
if (GetLocalInt(OBJECT_SELF, "bLocked") == TRUE)
return;
SetLocalInt(OBJECT_SELF, "bLocked", TRUE);
DelayCommand(3.0, AssignCommand(GetObjectByTag("gac_xen_ud_uuthli_quest"), ActionSpeakString("Text")));
DelayCommand(10.0, AssignCommand(GetObjectByTag("gac_xen_ud_khaliizi_quest"), ActionSpeakString("Text")));
DelayCommand(20.0, AssignCommand(GetObjectByTag("gac_xen_ud_uuthli_quest"), ActionSpeakString("Text")));
DelayCommand(30.0, AssignCommand(GetObjectByTag("gac_xen_ud_khaliizi_quest"), ActionSpeakString("Text")));
DelayCommand(35.0, AssignCommand(GetObjectByTag("gac_xen_ud_uuthli_quest"), ActionSpeakString("Text")));
DelayCommand(35.1, SetLocalInt(OBJECT_SELF, "bLocked", FALSE));
}