Startdialog

(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_Hark_HelloReject_Condition()
{
// 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.


EDIT by G1P:
Wenn mich nicht alles täuscht ist dort ein Fehler:
es muss nicht
FUNC int DIA_Hark_HelloReject_Condition()
{
// Dialog
DIA_Hans_Einleitung_Abgespielt = TRUE;
};

sondern

FUNC int DIA_Hans_Hello_Info()
{
// Dialog
DIA_Hans_Einleitung_Abgespielt = TRUE;
};

heißen...