Witam!
Chciałem stworzyć mini-moda na podstawie poradnika wideo Czipa17,
Tworzenie modów od A do Z, dostępnego na otwartym serwisie
Youtube.com pod
tym linkiem, a więc robiłem wszystko tak:
1. Wgranie
G2MDK i spolszczenia do niego.
2. Stworzenie skryptu broni, postaci oraz dialogu z prostym questem.
3. Usunięcie plików
ou.bin i
ou.csl.
4. Zreparsowanie (naprawienie) skryptów w
Spacerze 2.6.1 PL.
5. Zaktualizowanie i zapisanie dialogów.
6. Zrobienie w programie
GothicVDFS paczki z modem, która zawiera plik
gothic.dat i plik
ou.bin.
7. Stworzenie pliku, dzięki któremu mod będzie mógł być włączany z poziomu
GothicStartera.
Czip17 pisał na swoim profilu, że tworząc moda w ten sposób, nie będzie można zobaczyć dialogów stworzonych przez siebie postaci, a dialogi innych postaci będą po niemiecku. Zniwelowałem problem z niemieckimi dialogami przez wgranie plików, do których linki są zamieszczone
w tym temacie, stworzonym przez Adanosa. Nadal jednak męczę się z pierwszym problemem, a polega on na tym, że widać same opcje dialogowe, a samych dialogów - już nie. Po wybraniu jakiejś opcji dialogowej program przewija od razu do następnej opcji, lecz żadnych okienek z kwestiami postaci nie pokazuje. Natomiast poprawnie dodaje i modyfikuje wszystkie wpisy w dzienniku związane z questem, który działa w całości poprawnie.
Szukając rozwiązania tego problemu, przewertowałem wszystkie tutoriale oraz tematy w dziale
Problematyka, które są związane z tą sprawą, lecz niczego pomocnego nie znalazłem.
Spotkałem się z sugestią, że należy dodać postać do pliku
Startup.d, lecz dodanie tam postaci nic nie rozwiązało.
To skrypt postaci:
instance SLD_888_Wiechu (Npc_Default) //
{
// ------ NSC ------
name = "Wiechu";
guild = GIL_SLD;
id = 888;
voice = 5;
flags = 0; //NPC_FLAG_IMMORTAL oder 0
npctype = NPCTYPE_FRIEND;
// ------ Attribute ------
B_SetAttributesToChapter (self, 5); //setzt Attribute und LEVEL entsprechend dem angegebenen Kapitel (1-6)
// ------ Kampf-Taktik ------
fight_tactic = FAI_HUMAN_MASTER; // MASTER / STRONG / NORMAL / COWARD
// ------ Equippte Waffen ------ //Munition wird automatisch generiert, darf aber angegeben werden
EquipItem (self, ItMw_addon_naszakosa);
EquipItem (self, ItRw_Sld_Bow);
CreateInvItems (self, ItRw_Arrow, 10);
CreateInvItems (self, ItRi_prot_fire_01, 1);
// ------ Inventory ------
B_CreateAmbientInv (self);
// ------ visuals ------ //Muss NACH Attributen kommen, weil in B_SetNpcVisual die Breite abh. v. STR skaliert wird
B_SetNpcVisual (self, MALE, "Hum_Head_Pony", Face_N_Lee, BodyTex_N, ITAR_DJG_Crawler);
Mdl_SetModelFatness (self, 0);
Mdl_ApplyOverlayMds (self, "Humans_Relaxed.mds"); // Tired / Militia / Mage / Arrogance / Relaxed
// ------ NSC-relevante Talente vergeben ------
B_GiveNpcTalents (self);
// ------ Kampf-Talente ------ //Der enthaltene B_AddFightSkill setzt Talent-Ani abhängig von TrefferChance% - alle Kampftalente werden gleichhoch gesetzt
B_SetFightSkills (self, 70); //Grenzen für Talent-Level liegen bei 30 und 60
// ------ TA anmelden ------
daily_routine = Rtn_Start_888;
};
FUNC VOID Rtn_Start_888 ()
{
TA_Stand_Eating (07,00,21,00,"NW_TAVERNE_04");
TA_Stand_ArmsCrossed (21,00,07,00,"NW_TAVERNE_04");
};
To skrypt dialogu:
//*********************************************************************
// Info EXIT
//*********************************************************************
INSTANCE DIA_SLD_888_Wiechu_EXIT (C_INFO)
{
npc = SLD_888_Wiechu;
nr = 999;
condition = DIA_SLD_888_Wiechu_EXIT_Condition;
information = DIA_SLD_888_Wiechu_EXIT_Info;
permanent = TRUE;
description = DIALOG_ENDE;
};
FUNC INT DIA_SLD_888_Wiechu_EXIT_Condition()
{
return TRUE;
};
FUNC VOID DIA_SLD_888_Wiechu_EXIT_Info()
{
AI_StopProcessInfos (self);
};
//*********************************************************************
// Info Hello
//*********************************************************************
INSTANCE DIA_SLD_888_Wiechu_siema (C_INFO)
{
npc = SLD_888_Wiechu;
nr = 1;
condition = DIA_SLD_888_Wiechu_siema_Condition;
information = DIA_SLD_888_Wiechu_siema_Info;
permanent = FALSE;
description = "Co słychać?";
};
FUNC INT DIA_SLD_888_Wiechu_siema_Condition()
{
return TRUE;
};
FUNC VOID DIA_SLD_888_Wiechu_siema_Info()
{
AI_Output (other,self,"DIA_SLD_888_Wiechu_siema_15_00"); //Co słychać?
AI_Output (self,other,"DIA_SLD_888_Wiechu_siema_55_01"); //Umieram...
};
//*********************************************************************
// Zadanie
//*********************************************************************
INSTANCE DIA_SLD_888_Wiechu_zadanie (C_INFO)
{
npc = SLD_888_Wiechu;
nr = 1;
condition = DIA_SLD_888_Wiechu_zadanie_Condition;
information = DIA_SLD_888_Wiechu_zadanie_Info;
permanent = FALSE;
description = "Umierasz?";
};
FUNC INT DIA_SLD_888_Wiechu_zadanie_Condition()
{
if (Npc_KnowsInfo (other, DIA_SLD_888_Wiechu_siema))
{
return TRUE;
};
};
FUNC VOID DIA_SLD_888_Wiechu_zadanie_Info()
{
AI_Output (other,self,"DIA_SLD_888_Wiechu_zadanie_15_02"); //Jak to umierasz?
AI_Output (self,other,"DIA_SLD_888_Wiechu_zadanie_55_03"); //Umieram, bo od jakichś 10 minut nie piłem żadnego browara i nie mam wystarczająco dużo sił, by dojść do tawerny, a w okolicy nie ma żadnego teszczaka czy stonki, gdzie mógłbym kupić jakiegoś browca.
AI_Output (self,other,"DIA_SLD_888_Wiechu_zadanie_55_04"); //Jeżeli mógłbyś mi przynieść jakieś piwo, byłbym ci dozgonnie wdzięczny.
Log_CreateTopic (TOPIC_piwko, LOG_MISSION);
Log_SetTopicStatus (TOPIC_piwko, LOG_RUNNING);
B_LogEntry (TOPIC_piwko,"Wiesław potrzebuje piwa.");
};
//*********************************************************************
// Koniec zadania
//*********************************************************************
INSTANCE DIA_SLD_888_Wiechu_browar (C_INFO)
{
npc = SLD_888_Wiechu;
nr = 1;
condition = DIA_SLD_888_Wiechu_browar_Condition;
information = DIA_SLD_888_Wiechu_browar_Info;
permanent = FALSE;
description = "Mam browara";
};
FUNC INT DIA_SLD_888_Wiechu_browar_Condition()
{
if (Npc_KnowsInfo (other, DIA_SLD_888_Wiechu_zadanie))
&& (npc_hasitems (other, itfo_beer) >= 1)
{
return TRUE;
};
};
FUNC VOID DIA_SLD_888_Wiechu_browar_Info()
{
AI_Output (other,self,"DIA_SLD_888_Wiechu_browar_15_05"); //Proszę, oto twój browar.
AI_Output (self,other,"DIA_SLD_888_Wiechu_browar_55_06"); //Wielkie dzięki, stary.
AI_Output (self,other,"DIA_SLD_888_Wiechu_browar_55_07"); //Masz tu parę złociszy w nagrodę.
B_giveinvitems (other, self, itfo_beer, 1);
Createinvitems (self, itmi_gold, 50);
B_giveinvitems (self, other, itmi_gold, 50);
B_LogEntry (TOPIC_piwko,"Dałem wiechowi piwo.");
Log_SetTopicStatus (TOPIC_piwko, LOG_SUCCESS);
};
A to kod, który dodałem do pliku
Startup.d:
Wld_InsertNpc (SLD_888_Wiechu, "NW_TAVERNE_04");
Z góry dziękuję za wszelką pomoc.