Forum jest aktualnie zamknięte.

Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
[Gothic 2] Pisanie Dialogów + wstęp do warunków
#1
Witam,
W tym poradniku pokarzę wam, jak tworzyć dialogi.
Omówię ten temat na podstawie gotowych skryptów.
Tak wygląda przykładowy skrypt:
Kod:
// ************************************************************
//                                  EXIT  <--- Temat dialogu zapisany w komentarzu (Nie będzie kompilowany przez grę)
// ************************************************************

INSTANCE DIA_Fester_EXIT(C_INFO)  <-- INSTANCE + nazwa funkcji
{
    npc            = Sld_816_Fester;                                  <-- NPC, którego dotyczy dialog
    nr            = 999;                                          <-- Miejsce w którym znajduje się opcja dialogowa
    condition    = DIA_Fester_EXIT_Condition;       <-- Nazwa funkcji warunkowej (Ta funkcja znajduje się niżej)
    information    = DIA_Fester_EXIT_Info;         <-- Nazwa funkcji, w której dzieje się akcja (Rozmowa itd..)
    permanent    = TRUE;                                               <-- Jeśli TRUE, to zawsze będzie można o tym porozmawiać, jeśli FALSE to tylko raz
       important     = TRUE;                                   <-- Jeśli TRUE, to zaczynasz rozmawiać o tym od razu po zagadaniu do NPC'a
       trade = TRUE;                                             <-- Jeśli jest TRUE, to dialog rozpoczyna handel
    description = DIALOG_ENDE;         <-- Nazwa opcji dialogowej (W tym przypadku zmienna DIALOG_ENDE, czyli "Koniec"          
};                                                            

FUNC INT DIA_Fester_EXIT_Condition()    <-- Funkcja zwracająca wartość w postaci liczby całkowitej (TRUE=1/FALSE=0) nazwa funkcji powinna być taka sama, jak w condition
{
    return TRUE;   <-- return TRUE; zwraca wartość integer dla funkcji. (Warunkiem jest aby była TRUE (1)).
};

FUNC VOID DIA_Fester_EXIT_Info()  <-- Funkcja nie zwracająca żadnej wartości. Musi nazywać się tak samo, jak w information
{    
    AI_StopProcessInfos    (self);  <-- Instrukcja kończąca dialog
};
Przykład prostego dialogu
Kod:
FUNC VOID DIA_Fester_Hello_Info()
{    
    AI_Output (other, self, "DIA_Fester_Hello_15_00"); //Co tu porabiasz?                      <-- Tekst mówiony przez bohatera
    AI_Output (self, other, "DIA_Fester_Hello_08_01"); //Przygotowuję się do bitwy...      <-- Tekst mówiony przez NPC'a
};
AI_Output - Instrukcja wywołująca rozmowę
other, self - od bohatera (other) do NPC'a (self)
self, other - od NPC'a (self) do bohatera (other)

Logicznie rzecz biorąc bohater powinien być self ale tak samo jak w tworzeniu postaci self tyczy się danego npc'a a my jesteśmy tylko osobą rozmawiającą z npc'em

W cudzysłowie zapisujemy nazwę funkcji dialogowej dopisując do niej _IdPostaci_NumerKwestii
Tutaj znajdziecie wszystkie numery id głosów http://goblinfactory.pl/thread-Gothic-2-...tor%C3%B3w
Numery kwestii są zapisywane po kolei czyli _00, _01, _02. Jeśli to pomieszacie, to dialogi mogą być w nieodpowiedniej kolejności.

Po średniku rozpoczynamy komentarz (dwa ukośniki //) A następnie piszemy kwestie, która będzie wypowiedziana.

Teraz omówimy instrukcje warunkowe i kilka najczęściej używanych warunków.
Tutaj znajdziecie opis, jak korzystać z instrukcji warunkowej if/then/else http://goblinfactory.pl/thread-Gothic-2-...runkowe-If

Kod:
 

FUNC INT DIA_Fester_Auftrag_Condition()
{
    if (Npc_KnowsInfo (other, DIA_Fester_Hello))  <-- instrukcja warunkowa if
    {
        return TRUE;   <-- Jeśli warunek zostanie spełniony, to funkcja zwróci TRUE czyli rozmowa będzie możliwa
    };    <-- Jeśli warunek nie będzie spełniony, to nic się nie zwróci, czyli zostanie domyślna wartość FALSE.
};
Npc_KnowsInfo - Sprawdza, czy npc rozmawiał już o tym
(other, nazwa funkcji dialogu) - gracz, nazwa funkcji dialogowej

Są również takie instrukcje warunkowe:
(hero.guild != GIL_KDF) - Sprawdza gildie bohatera (w tym przypadku sprawdza czy nie ma gildii KDF (Mag Ognia))
Npc_IsInState (self, ZS_Talk) - Sprawdza  czy bohater wykonuje pewną czynność. W tym przypadku rozmawia.
(Kapitel < 2) - Sprawdza wartość zmiennej (Można również korzystać z własnych tutaj znajdziecie poradnik jak tworzyć własne zmienne http://goblinfactory.pl/thread-Gothic-2-Zmienne)
(MIS_Thorben_GetBlessings == LOG_RUNNING) - Sprawdza status misji (LOG_RUNNING, to misja w trakcie, LOG_SUCCESS, to misja wykonana)
(Npc_HasItems (other, ItMi_Gold) < 100) - Sprawdza czy postać posiada dany przedmiot
Odpowiedz
#2
Dorzucę od siebie swoje 5 groszy. Aby dialogi były widoczne to trzeba naprawić za pomocą spacera skrypty, potem usunąć plik Qn czy jakoś tak. Za pomocą spacera przeładowujemy dialogi i je zapisujemy oraz robimy paczkę modu z Vdfs i wtedy dialogi są widoczne Bezi?
A człowiek pokonał bestię, która wróciła do Królestwa Beliara...
Odpowiedz
#3
Bo z tego co czytałem międzyinnymi na the modders to właśnie ten problem tak się rozwiązuje bo takto na Windowsie 7 64bit są niewidoczne
A człowiek pokonał bestię, która wróciła do Królestwa Beliara...
Odpowiedz
  


Skocz do:


Użytkownicy przeglądający ten wątek:
1 gości