(von Fizzban)
Um ein paar Zeilen einzufügen, die gesagt werden, direkt nachdem du einen NSC angesprochen hast (also bevor der Multiple-Choice-Kasten aufgeht), einfach ein wichtiges Info-Objekt einfügen und in die Bedingung hero.aivar[AIV_INVINCIBLE] einbauen:
var int DIA_Hans_Einleitung_Abgespielt; ... FUNC VOID DIA_Hans_Exit_Info() { DIA_Hans_Einleitung_Abgespielt = FALSE; AI_StopProcessInfos (self); }; instance DIA_Hans_Hello (C_INFO) { npc = Pers_666_Hans; condition = DIA_Hans_Hello_Condition; information = DIA_Hans_Hello_Info; important = TRUE; permanent = TRUE; }; FUNC int DIA_Hans_Hello_Condition() { if (hero.aivar[AIV_INVINCIBLE] && !DIA_Hans_Einleitung_Abgespielt && !hero.aivar[AIV_IMPORTANT]) { return TRUE; }; }; FUNC int DIA_Hans_Hello_Info() { // Dialog DIA_Hans_Einleitung_Abgespielt = TRUE; };
Da hero.aivar[AIV_INVINCIBLE] nur dann wahr ist, wenn der SC mit jemanden spricht, wird dich der NSC niemals von sich aus ansprechen, obwohl das Objekt als wichtig markiert ist. Die Variable DIA_Hans_Einleitung_Abgespielt stellt sicher, dass wir uns nicht in einer Endlosschleife verfangen. Das ist allerdings unnötig, wenn das Info-Objekt nicht permanent ist.