To nie będzie tutek jak napisać od podstaw dialog, ale raczej wyjaśnienie, ale można go używać jako tutka jak zrobić dialog. Będę wyjaśniał wszystko na podstawie dialogu kolesia o imieniu Gorr. Niektóre wypowiedzi mogą być dość dziwne, ale to tylko przykład.
Cały dialog wygląda tak:
// ************************************************************
// EXIT
// ************************************************************
INSTANCE DIA_GORR_EXIT(C_INFO)
{
npc = Kdf_9002_Gorr;
nr = 999;
condition = DIA_GORR_EXIT_Condition;
information = DIA_GORR_EXIT_Info;
permanent = 1;
description = DIALOG_ENDE;
};
FUNC INT DIA_GORR_EXIT_Condition()
{
return 1;
};
FUNC VOID DIA_GORR_EXIT_Info()
{
AI_StopProcessInfos (self);
};
// ************************************************************
// Hallo
// ************************************************************
INSTANCE DIA_GORR_Hello (C_INFO)
{
npc = Kdf_9002_Gorr;
nr = 1;
condition = DIA_GORR_Hello_Condition;
information = DIA_GORR_Hello_Info;
permanent = 0;
description = "Witaj. Kim jesteś?";
};
FUNC INT DIA_GORR_Hello_Condition()
{
return 1;
};
FUNC VOID DIA_GORR_Hello_Info()
{
AI_Output (other, self,"DIA_GORR_Hello_15_00"); //Witaj. Kim jesteś?
AI_Output (self, other,"DIA_GORR_Hello_13_01"); //Mam na imię Gorr. Jestem strażnikiem tego obozu.
AI_Output (other, self,"DIA_GORR_Hello_15_02"); //A cóż to za obóz?
AI_Output (self, other,"DIA_GORR_Hello_13_03"); //To obóz Magów Czarnego Ognia.
};
// ************************************************************
// What
// ************************************************************
INSTANCE DIA_GORR_What (C_INFO)
{
npc = Kdf_9002_Gorr;
nr = 2;
condition = DIA_GORR_What_Condition;
information = DIA_GORR_What_Info;
permanent = 1;
description = "Mogę wejść do obozu?";
};
FUNC INT DIA_GORR_What_Condition()
{
if (Npc_KnowsInfo (hero,DIA_GORR_Hello))
{
return 1;
};
};
FUNC VOID DIA_GORR_What_Info()
{
AI_Output (other, self,"DIA_GORR_What_15_00"); //Mogę wejść do obozu?
AI_Output (self, other,"DIA_GORR_What_13_01"); //Oczywiście.
};
// ************************************************************
// PERM
// ************************************************************
INSTANCE DIA_GORR_PERM (C_INFO)
{
npc = Kdf_9002_Gorr;
nr = 3;
condition = DIA_GORR_PERM_Condition;
information = DIA_GORR_PERM_Info;
permanent = 0;
description = "Jak się tutaj znaleźliście?";
};
FUNC INT DIA_GORR_PERM_Condition()
{
if (Npc_KnowsInfo (hero,DIA_GORR_Hello))
{
return 1;
};
};
FUNC VOID DIA_GORR_PERM_Info()
{
AI_Output (other, self,"DIA_GORR_PERM_15_00"); //Jak się tutaj znaleźliście?
AI_Output (self, other,"DIA_GORR_PERM_13_01"); //Zostaliśmy niesłusznie oskarżeni o zdradę ojczyzny. Oskarżono nas o współpracę z Beliarem.
AI_Output (self, other,"DIA_GORR_PERM_13_02"); //Kiedyś byliśmy potężnymi Magami Ognia i wierzyliśmy w Innosa. Teraz jednak na prawdę sprzymierzyliśmy się z Beliarem.
AI_Output (self, other,"DIA_GORR_PERM_13_03"); //Posiadamy moc ognia, ale również moc ciemności. Beliar pomoże się nam zemścić!
};
Teraz wyjaśnienia:
// ************************************************************
// EXIT
// ************************************************************
Jest to tytuł wypowiedzi (chyba) (nie ten, co jest pokazany w wyborze opcji dialogowych podczas rozmowy).
[code]
INSTANCE DIA_GORR_EXIT(C_INFO)
To jest instance tej opcji dialogowej. Każde instance powinno nazywać się DIA_nazwa NPC_o czym jest dialog (np. EXIT).
npc = Kdf_9002_Gorr;
Zamiast Kdf_9002_Gorr należy wpisać instance Twojego NPC’a (znak ; musi zostać!)
nr = 999;
Numer opcji dialogowej (każda opcja musi mieć inny numer).
condition = DIA_GORR_EXIT_Condition;
Powinno być InstanceOpcji_Condition.
information = DIA_GORR_EXIT_Info;
Powinno być tak: InstanceOpcji_Info.
permanent = 1;
To określa, czy po porozmawianiu o tym można jeszcze raz o tym porozmawiać. Jeżeli jest ustawione na 1, to będzie można o tym gadać do woli, ale jeżeli będzie wpisane 0, to będzie można tylko raz o tym porozmawiać.
description = DIALOG_ENDE;
Opis opcji. To, co tu wpiszesz będzie się pokazywało przy wyborze opcji dialogowych (wyjątkiem jest KONIEC, który zależy od wersji językowej).
FUNC INT DIA_GORR_EXIT_Condition()
{
return 1;
};
Tutaj można określić czy po wybraniu tej opcji dialogowej wraca się do wyboru, czy kończy rozmowę lub co jest wymagane, aby o tym porozmawiać, itp.
FUNC VOID DIA_GORR_EXIT_Info()
{
AI_StopProcessInfos (self);
};
Tutaj można określić, co ma się dziać po wybraniu tej opcji dialogowej.
To by było tyle opcji dialogowej KONIEC. Przejdźmy teraz do opcji, która wywołuje rozmowę.
// ************************************************************
// Hallo
// ************************************************************
Nazwa dialogu.
INSTANCE DIA_GORR_Hello (C_INFO)
Instance dialogu.
{
npc = Kdf_9002_Gorr;
nr = 1;
condition = DIA_GORR_Hello_Condition;
information = DIA_GORR_Hello_Info;
permanent = 0;
description = "Witaj. Kim jesteś?";
};
Tutaj nie będę wszystkiego od początku tłumaczył. Powiem tylko, że w description należy wpisać to, co ma się pojawić w tym dolnym okienku, gdzie się wybiera opcje dialogowe.
FUNC VOID DIA_GORR_Hello_Info()
{
AI_Output (other, self,"DIA_GORR_Hello_15_00"); //Witaj. Kim jesteś?
AI_Output (self, other,"DIA_GORR_Hello_13_01"); //Mam na imię Gorr. Jestem strażnikiem tego obozu.
AI_Output (other, self,"DIA_GORR_Hello_15_02"); //A cóż to za obóz?
AI_Output (self, other,"DIA_GORR_Hello_13_03"); //To obóz Magów Czarnego Ognia.
};
[/code]
To jest to, co oni będą mówić. To, co ktoś ma mówić należy wpisać po //. Każda wypowiedź musi się zaczynać AI_Output (other, self,"DIA_GORR_Hello_15_00");. „Other, self,” oznacza, że mówi to bohater, a „self, other,” oznacza, że mówi to NPC. „DIA_GORR_Hello” – tutaj wpisujesz instance opcji dialogowej. „_15” – jeżeli mówi bohater gry, to wpisz „_15”, ale jeżeli mówi NPC, to wpisz „_13”. „_00”, „_01”, „_02”, „_03” – to jest kolejność wypowiedzi. Najlepiej wpisywać 00, 01, 02, 03 itp.
NIE zabraniam kopiowania całości, lub części tutoriala.
Autor: Dekster17