Trialog 7185 7

O temacie

Autor EdekSumo

Zaczęty 14.04.2012 roku

Wyświetleń 7185

Odpowiedzi 7

EdekSumo

EdekSumo

Wyspa Khorinis
posty1739
Propsy925
ProfesjaLvl designer
  • Wyspa Khorinis

EdekSumo
Wyspa Khorinis

Trialog
2012-04-14, 16:21(Ostatnia zmiana: 2012-04-14, 16:44)
Przejdę od razu do rzeczy bez zbędnego pierdolenia. Część zapewne z was widziała rozmowę trzech osób w MT jedyny komentarz do tego to: :lol2:  . Dlatego aby nie było tego podobnych kaszan w pakiecie skryptowym LeGo dodano funkcje pozwalające na rozmowę ze sobą nawet 256 osób :D . Działanie części funkcji wytłumaczę na przykładzie. Zaczynamy od napisania typowego dialogu tylko z paroma dodatkowymi funkcjami (tych podstawowych rzeczy nie będę tłumaczył od tego są inne tutki):

INSTANCE DIA_NONE_20243_urstonak_witaj   (C_INFO)
{
npc         = NONE_20243_urstonak;//npc główny
nr          = 1;
condition   = DIA_NONE_20243_urstonak_witaj_Condition;
information = DIA_NONE_20243_urstonak_witaj_Info;
important = true;
permanent = FALSE;
};
FUNC INT DIA_NONE_20243_urstonak_witaj_Condition()
{
return TRUE;
};
FUNC VOID DIA_NONE_20243_urstonak_witaj_Info()
{
var C_NPC UrsTonak; UrsTonak = Hlp_GetNpc (NONE_20243_urstonak);//Deklarujemy zmienne npców którzy wezmą udział w rozmowie wraz z npc głównym
var C_NPC Dionis; Dionis = Hlp_GetNpc (none_20246_dionis);//
TRIA_Invite(Dionis);//ta funkcja "zaprasza" npce do dialogu musimy zaprosić wszystkich który mają rozmawiać prócz npca głównego
    TRIA_Start();//ta funkcja rozpoczyna dialog wszystkich npców musimy zaprosić przed tą funkcją bo inaczej chujnia
    TRIA_Next(UrsTonak);// w tej funkcji wybieramy jaki npc ma mówić
AI_Output (self, other, "DIA_NONE_20243_urstonak_witaj_15_00");//Stój morra gdzie zmierzasz?
AI_DrawWeapon(hero);
AI_Output (other, self, "DIA_NONE_20243_urstonak_witaj_15_01");//Nie twoja sprawa zawszony orku.
TRIA_Next (Dionis);// za każdym razem jak chcemy zmienić npc trzeba użyć tej funkcji.
AI_GotoNpc(self, other);
    AI_TurnToNpc(other, self);
AI_Output (self, other, "DIA_NONE_20243_urstonak_witaj_15_02");//Spokojnie wędrowcze ten ork nic Ci nie zrobi.
AI_Output (self, other, "DIA_NONE_20243_urstonak_witaj_15_03");//W Ignis Order nie musisz się obawiać orków.
AI_RemoveWeapon (hero);
TRIA_Next (UrsTonak);
AI_Output (self, other, "DIA_NONE_20243_urstonak_witaj_15_04");//Tak morra nie wszyscy orkowie pragną Cie zabić.
Log_CreateTopic (TOPIC_IgnisOrder, LOG_MISSION);
Log_SetTopicStatus (TOPIC_IgnisOrder, LOG_RUNNING);
B_LogEntry(TOPIC_IgnisOrder, "Spotkałem przyjaznego orka i niejakiego Dionisa mówił coś o jakimś Ignis Order.");
MIS_IgnisOrder = LOG_RUNNING;
        TRIA_Finish();// ta funkcja kończy cały dialog

};

http://gottfried.milgo.de/LeGo/?Trialoge
Tu jest opis wszystkich funkcji dodanych wraz z Trialogami i przydatne przy ich pisaniu.
http://gottfried.milgo.de/LeGo/?Beispiele_Trialoge
A tu oryginalny przykład trialogu.
PS dla mniej rozgarniętych.
Oczywiście mój skrypt nie będzie u was działał to jest tylko przykład działania funkcji pozwalających na działanie trialogów.
Zakazuje kopiowania tutka.
 

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Bardzo przydatne. Na pewno komuś się przyda, a szczególnie tym, którzy robią moda. :)
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.

Alexik

Alexik

Użytkownicy
posty396
Propsy150
ProfesjaNierób
  • Użytkownicy

Alexik

Trialog
#2 2012-05-21, 06:42(Ostatnia zmiana: 2012-05-21, 13:11)
Jest opcja ,żeby to w gothicu 1 działało ?
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
Nie, pakiet LeGo jest kompatybilny tylko z g2nk. Przeniesienie go nie jest prostą sprawą, chociaż ktoś dobrze znający jego, Ikarusa i ogarniający działanie silnika/reverse engineering mógłby spróbować.
Następnym razem zadając pytanie o jakiś tutorial, nie cytuj go w całości (już wykasowałem).

Sawik

Sawik

Moderator działu
Rebel
posty4772
Propsy3197
ProfesjaNierób
  • Moderator działu
  • Rebel
Nie, pakiet LeGo jest kompatybilny tylko z g2nk. Przeniesienie go nie jest prostą sprawą, chociaż ktoś dobrze znający jego, Ikarusa i ogarniający działanie silnika/reverse engineering mógłby spróbować.
Mylisz się, takie super trudne to nie jest, kiedyś chyba nawet ja to osiągnąłem (przenosiłem kiedyś LeGo do jedynki), fakt, nie podejrzewam by Alexik temu podołał, ale nie jest to też tak trudne jak to opisujesz. Całego LeGo nie da rady przenieść np. FocusNames (które właśnie spowodowało że nie wypuściłem swojej wersji LeGo) przeniesienie tego wymagało by więcej pracy niż jest to warte, byłoby to prawie niemożliwe, z aktywnych modderów nie podejrzewam by ktoś dał radę.
 
Życzę wam seksu analnego po stronie biernej.
Dropbox +500 mb na start
LowPoly
Wykonanie modelu niskopoligonowego to sztuka kompromisu. Nie jest to jedynie uproszczenie modelu wysokopoligonowego, ale głęboka modyfikacja oraz podejmowanie decyzji często zmieniających wygląd pierwotny obiektu, tak by przy najmniejszej ilości trójkątów uzyskać jak najwierniej odwzorowany kształt oryginału. Nie można też zapomnieć o tym iż musi nadal wyglądać przekonywająco i tak balansować by uzyskać efekt optymalny.

Podstawowym założeniem jest, że model nie powinien mieć zbędnych, niewidocznych dla gracza detali włączonych w geometrie. Większość obiektów jakie znajdują się w grze powinna prezentować się najlepiej z odległości około 3-5 metrów. Wszelkie detale, które zanikają, wydają się płaskie lub zlewają się z bryłą modelu należy uznać za zbędne i pozostawić je na normal mapie.

Fakt, iż gracz będzie w stanie podejść bliżej do obiektu i zobaczyć go z mniejszej niż 3m odległości nie powinno stanowić większego problemu, gdyż większą rolę odgrywają wtedy tekstury oraz dodatkowy detal zależny od materiału obiektu. To właśnie kompromis między wydajnością, a szczegółowością otoczenia.

Detal, którego nie widać z 3-5 metrów nie powinnien istnieć w geometrii modelu.
Krawędzie znajdujące się blisko siebie, które zlewają się z większej odległości należy uprościć do wspólnej płaszczyzny

kaczka

kaczka

RaveN Studio
Definitely not kaczka!
posty2280
Propsy2392
NagrodyV
ProfesjaLvl designer
  • RaveN Studio
  • Definitely not kaczka!

kaczka
RaveN Studio

Trialog
#5 2012-06-03, 22:56(Ostatnia zmiana: 2012-06-03, 22:57)
Monkowi by się znając życie nudziło.
 

Lehona

Lehona

Użytkownicy
posty196
Propsy190
  • Użytkownicy
I'm willing to give as much help as possible if someone is trying to update LeGo to work with Gothic 1. However, I might try to update it during the summer holidays, it depends on how good I'll be getting on with my other projects.
 
Unless specified otherwise, my posts are always about Gothic 2 Night of the Raven.

Kirgo2

Kirgo2

Użytkownicy
posty49
Propsy6
ProfesjaGracz
  • Użytkownicy

Kirgo2

Trialog
#7 2025-06-29, 12:53(Ostatnia zmiana: 2025-06-29, 13:05)
Dla nowicjuszy
(uzupełnienie do poradnika stworzonego przez @EdekSumo a właściwie to już gotowiec)

W tym szablonie od @EdekSumo wszystko ładnie śmiga.


INSTANCE DIA_NONE_20243_urstonak_witaj   (C_INFO)
{
npc         = NONE_20243_urstonak;//npc główny
nr          = 1;
condition   = DIA_NONE_20243_urstonak_witaj_Condition;
information = DIA_NONE_20243_urstonak_witaj_Info;
important = true;
permanent = FALSE;
};
FUNC INT DIA_NONE_20243_urstonak_witaj_Condition()
{
return TRUE;
};
FUNC VOID DIA_NONE_20243_urstonak_witaj_Info()
{
var C_NPC UrsTonak; UrsTonak = Hlp_GetNpc (NONE_20243_urstonak);//Deklarujemy zmienne npców którzy wezmą udział w rozmowie wraz z npc głównym
var C_NPC Dionis; Dionis = Hlp_GetNpc (none_20246_dionis);//
TRIA_Invite(Dionis);//ta funkcja "zaprasza" npce do dialogu musimy zaprosić wszystkich który mają rozmawiać prócz npca głównego
    TRIA_Start();//ta funkcja rozpoczyna dialog wszystkich npców musimy zaprosić przed tą funkcją bo inaczej chujnia
    TRIA_Next(UrsTonak);// w tej funkcji wybieramy jaki npc ma mówić
AI_Output (self, other, "DIA_NONE_20243_urstonak_witaj_15_00");//Stój morra gdzie zmierzasz?
AI_DrawWeapon(hero);
AI_Output (other, self, "DIA_NONE_20243_urstonak_witaj_15_01");//Nie twoja sprawa zawszony orku.
TRIA_Next (Dionis);// za każdym razem jak chcemy zmienić npc trzeba użyć tej funkcji.
AI_GotoNpc(self, other);
    AI_TurnToNpc(other, self);
AI_Output (self, other, "DIA_NONE_20243_urstonak_witaj_15_02");//Spokojnie wędrowcze ten ork nic Ci nie zrobi.
AI_Output (self, other, "DIA_NONE_20243_urstonak_witaj_15_03");//W Ignis Order nie musisz się obawiać orków.
AI_RemoveWeapon (hero);
TRIA_Next (UrsTonak);
AI_Output (self, other, "DIA_NONE_20243_urstonak_witaj_15_04");//Tak morra nie wszyscy orkowie pragną Cie zabić.
Log_CreateTopic (TOPIC_IgnisOrder, LOG_MISSION);
Log_SetTopicStatus (TOPIC_IgnisOrder, LOG_RUNNING);
B_LogEntry(TOPIC_IgnisOrder, "Spotkałem przyjaznego orka i niejakiego Dionisa mówił coś o jakimś Ignis Order.");
MIS_IgnisOrder = LOG_RUNNING;
        TRIA_Finish();// ta funkcja kończy cały dialog

};

Dla nowicjuszy, którzy mogą się obawiać tykać jakiekolwiek rzeczy, gdzie pada nazwa IKARUS - ten skrypt od @EdekSumo to liczyć gotowiec. Musicie zrobić właściwie tylko trzy-cztery rzeczy:
1. Ściągnąć tego IKARUSA i chyba LEGO też. Wbrew pozorom to nie jest takie trudne.
2. Teraz możecie użyć śmiało tego skryptu od @EdekSumo
3. Wklejacie go Gothic\_work\DATA\scripts\Content\Story\MISSIONS tak jakbyście wklejali normalny dialog. Co najfajniejsze, możecie gówno znać się na Ikarusie - trialog po prostu jest obsługiwany przez tego Ikarusa zupełnie tak samo jak zwykły dialog jest obsługiwany przez grę
4. Oczywiście musicie teraz ten trialog od @EdekSumo odpowiednio przerobić. Bo przecież w waszym modzie zamiast rozmowy orka UrStonaka, Dionisa i głównego bohatera będzie sobie "trialogował" ktoś inny. Przerabiasz tak jakbyś przerabiał normalny dialog.

Bardzo fajna i prosta rzecz. DZIAŁA DLA GOTHICA I [słownie: Gothica Jedynki :) ]

Jak ktoś się jeszcze cyka to wrzucam swój dialog zrobiony na podstawie szablonu od EdkaSumo z rzeczami zaznaczonymi kolorkami dla czytelności. Oczywiście wszystko robiłem to guzik znając się na IKARUSIE - tylko przeklejając tę rzecz od Edka i dostosowując na swoje potrzeby.

Spoiler

INSTANCE DIA_Tpl_4025_GorAkunosh_TrialogMissionSuccess   (C_INFO)
{
   npc         = Tpl_4025_Templer;//npc główny
   nr          = 2;
   condition   = DIA_Tpl_4025_GorAkunosh_TrialogMissionSuccess_Condition;
   information = DIA_Tpl_4025_GorAkunosh_TrialogMissionSuccess_Info;
   important   = true;                                    ////////ustawiłem tak sobie ale wy nie musicie
   permanent    = FALSE;                         ////////ustawiłem tak sobie ale wy nie musicie
};
FUNC INT DIA_Tpl_4025_GorAkunosh_TrialogMissionSuccess_Condition()
{
    if (Npc_KnowsInfo (other, DIA_GorNaSan_HELO1))
    {
    return TRUE;
    };
};

FUNC VOID DIA_Tpl_4025_GorAkunosh_TrialogMissionSuccess_Info()
{
   var C_NPC GorAkunosh; GorAkunosh = Hlp_GetNpc (Tpl_4025_Templer);//Deklarujemy zmienne npców którzy wezmą udział w rozmowie wraz z npc głównym
   var C_NPC GorNaSan; GorNaSan = Hlp_GetNpc (Tpl_4029_Templer);//
   TRIA_Invite(GorNaSan);//ta funkcja "zaprasza" npce do dialogu musimy zaprosić wszystkich który mają rozmawiać prócz npca głównego
    TRIA_Start();//ta funkcja rozpoczyna dialog wszystkich npców musimy zaprosić przed tą funkcją bo inaczej chujnia
    TRIA_Next(GorAkunosh);// w tej funkcji wybieramy jaki npc ma mówić
   AI_Output (self, other, "DIA_Tpl_4025_GorAkunosh_TrialogMissionSuccess_15_00");//GorAkunosh coś tam sobie mówi. 

   TRIA_Next (GorNaSan);// za każdym razem jak chcemy zmienić npc trzeba użyć tej funkcji.
   AI_Output (self, other, "DIA_Tpl_4025_GorAkunosh_TrialogMissionSuccess_15_01");//GorNaSan coś sobie mówi.

   TRIA_Next (GorAkunosh);// za każdym razem jak chcemy zmienić npc trzeba użyć tej funkcji.
   AI_Output (self, other, "DIA_Tpl_4025_GorAkunosh_TrialogMissionSuccess_15_02");//GorAkunosh coś tam sobie mówi. 

   TRIA_Next (GorNaSan);// za każdym razem jak chcemy zmienić npc trzeba użyć tej funkcji.
   AI_Output (self, other, "DIA_Tpl_4025_GorAkunosh_TrialogMissionSuccess_15_03");//GorNaSan coś sobie mówi.
   AI_Output (self, other, "DIA_Tpl_4025_GorAkunosh_TrialogMissionSuccess_15_04");//GorNaSan coś sobie mówi.

   TRIA_Next (GorAkunosh);// za każdym razem jak chcemy zmienić npc trzeba użyć tej funkcji.
   AI_Output (self, other, "DIA_Tpl_4025_GorAkunosh_TrialogMissionSuccess_15_05");//GorAkunosh coś tam sobie mówi. 
   B_UseFakeScroll();
   AI_Output (self, other, "DIA_Tpl_4025_GorAkunosh_TrialogMissionSuccess_15_06");//GorAkunosh coś tam sobie mówi. 
   B_UseFakeScroll();
   AI_Output (self, other, "DIA_Tpl_4025_GorAkunosh_TrialogMissionSuccess_15_07");//GorAkunosh coś tam sobie mówi. 
   AI_Output (self, other, "DIA_Tpl_4025_GorAkunosh_TrialogMissionSuccess_15_08");//GorAkunosh coś tam sobie mówi. 
        TRIA_Finish();// ta funkcja kończy cały dialog
};


Nie muszę chyba dodawać, że ten dialog wrzuciłem do pliku DIA_Tpl_4025_Templer.d w folderze Gothic\_work\DATA\scripts\Content\Story\MISSIONS bo taką instancję posiada "npc główny" (nie mylić z głównym bohaterem!). W tym moim trialogu "npc głównym" był akurat GorAkunosh (Tpl_4025_Templer).

Jakby co to to niniejsze uzupełnienie do poradnika EdkaSumo pisane było pod Gothica I. Jeżeli chodzi o modowanie Gothica II to się nie wypowiem, bo się nie znam. Myślę jednak, że już nie nikt nie powinien mieć problemu ze wstawieniem trialogu do Gothica I.

Pozdro
 


0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry