Siema, po roku przerwy naszło mnie, żeby coś ponamieszać w Goticzku i postanowiłem sobie stworzyć zadanie polegające na przyprowadzeniu owcy do Maletha(ten gościu na farmie Lobarta). No i o ile gra nie wywala żadnego błędu, a dialog zaczynający zadanie wyświetla się poprawnie(tak samo jak "dialog" owcy), to zadanie kończące się nie wyświetla(jest animacja gestykulacji, zadanie w dzienniku jest zakończone, a exp jest dodawany do postaci). Aczkolwiek nie mam akwamarynu po queście(a ustawiłem go jako nagrodę). Po prostu po wyborze dialogu jest chwilowa zwiecha i zaczyna się gestykulacja. Tutaj dialogi z Malethem:
instance DIA_Maleth_Sheep (C_INFO) //E1
{
npc = BAU_954_Maleth;
nr = 1;
condition = DIA_Maleth_Sheep_Condition;
information = DIA_Maleth_Sheep_Info;
permanent = FALSE;
description = "Widziałem jakąś owcę błąkającą się w pobliżu jeziorka w górach.";
};
func int DIA_Maleth_Sheep_Condition ()
{
if (Npc_KnowsInfo (other, DIA_Maleth_BANDITS))
&& (!Npc_IsDead (Follow_Sheep_Maleth))
{
return TRUE;
};
};
func void DIA_Maleth_Sheep_Info ()
{
AI_Output (other, self, "DIA_Maleth_Sheep_15_00"); //Widziałem jakąś owcę błąkającą się w pobliżu jeziorka w górach.
AI_Output (self, other, "DIA_Maleth_Sheep_08_01"); //To pewnie owca, którą nam ukradli! Musiała im jakimś cudem uciec.
AI_Output (self, other, "DIA_Maleth_Sheep_08_02"); //Postaraj się ją do nas przyprowadzić, a dostaniesz jakąś nagrodę.
Log_CreateTopic (TOPIC_MalethSheep,LOG_MISSION);
Log_SetTopicStatus (TOPIC_MalethSheep,LOG_RUNNING);
B_LogEntry (TOPIC_MalethSheep,"Czas pobawić się w pasterza. Maleth polecił mi przyprowadzić owcę, którą widziałem w pobliżu wieży Xardasa.");
};
Zakończenie(tego dialogu dotyczy problem):
instance DIA_Maleth_Safe (C_INFO) //E1
{
npc = BAU_954_Maleth;
nr = 1;
condition = DIA_Maleth_Safe_Condition;
information = DIA_Maleth_Safe_Info;
permanent = FALSE;
description = "Przyprowadziłem twoją owcę.";
};
func int DIA_Maleth_Safe_Condition ()
{
if (Npc_KnowsInfo (other, DIA_Maleth_Sheep))
&& Wld_DetectNpc (self,Follow_Sheep_Maleth,NOFUNC,-1)
&& (Npc_GetDistToNpc(self, other) < 800)
{
return TRUE;
};
};
func void DIA_Maleth_Safe_Info ()
{
AI_Output (other, self, "DIA_Maleth_Safe_15_00"); //Przyprowadziłem twoją owcę.
AI_Output (self, other, "DIA_Maleth_Safe_08_01"); //Wielkie dzięki przyjacielu. Proszę, weź ten akwamaryn w nagrodę. Obstawiam, że jest wart parę sztuk złota.
B_LogEntry(TOPIC_MalethSheep,"Za przyprowadzenie owcy otrzymałem akwamaryn. Trochę mierna nagroda, ale może uda mi się ją sprzedać za rozsądne pieniądze.");
Log_SetTopicStatus(TOPIC_MalethSheep, LOG_SUCCESS);
B_GivePlayerXP (25);
Follow_Sheep_Maleth.aivar[AIV_PARTYMEMBER] = FALSE;
Follow_Sheep_Maleth.aivar[AIV_TAPOSITION] = TRUE;
Follow_Sheep_Maleth.wp = "FP_ROAM_FARM1_SHEEP_07";
Follow_Sheep_Maleth.start_aistate = ZS_MM_AllScheduler;
AI_StopProcessInfos (self);
DIA_MalethSheep_KommMit.permanent = FALSE;
DIA_MalethSheep_WarteHier.permanent = FALSE;
B_GiveInvItems(self, other, itmi_aquamarine, 1);
};
Skrypt rozmowy z owcą:
Spoiler
// ************************************************************
// EXIT
// ************************************************************
INSTANCE DIA_MalethSheep_EXIT(C_INFO)
{
npc = Follow_Sheep_Maleth;
nr = 999;
condition = DIA_MalethSheep_EXIT_Condition;
information = DIA_MalethSheep_EXIT_Info;
permanent = TRUE;
description = DIALOG_ENDE;
};
FUNC INT DIA_MalethSheep_EXIT_Condition()
{
return TRUE;
};
FUNC VOID DIA_MalethSheep_EXIT_Info()
{
AI_StopProcessInfos (self);
};
// ************************************************************
// Hallo (Durchsuchen)
// ************************************************************
INSTANCE DIA_MalethSheep_Hallo (C_INFO)
{
npc = Follow_Sheep_Maleth;
nr = 1;
condition = DIA_MalethSheep_Hallo_Condition;
information = DIA_MalethSheep_Hallo_Info;
permanent = FALSE;
description = "Cześć...";
};
FUNC INT DIA_MalethSheep_Hallo_Condition()
{
return TRUE;
};
FUNC VOID DIA_MalethSheep_Hallo_Info()
{
AI_Output (other, self,"DIA_Liesel_Hallo_15_00"); //Cześć... khm... owco.
B_LieselMaeh ();
};
// ************************************************************
// Podążanie
// ************************************************************
INSTANCE DIA_MalethSheep_KommMit (C_INFO)
{
npc = Follow_Sheep_Maleth;
nr = 1;
condition = DIA_MalethSheep_KommMit_Condition;
information = DIA_MalethSheep_KommMit_Info;
permanent = TRUE;
description = "Chodź ze mną.";
};
FUNC INT DIA_MalethSheep_KommMit_Condition()
{
if (self.aivar[AIV_PARTYMEMBER] == FALSE)
&& (Npc_KnowsInfo(other, DIA_MalethSheep_Hallo))
&& (self.aivar[AIV_TAPOSITION] == FALSE)
&& (Npc_KnowsInfo(other, DIA_Maleth_Sheep))
{
return TRUE;
};
};
FUNC VOID DIA_MalethSheep_KommMit_Info()
{
AI_Output (other, self,"DIA_Liesel_KommMit_15_00"); //Chodź ze mną.
B_LieselMaeh ();
self.aivar[AIV_PARTYMEMBER] = TRUE;
AI_StopProcessInfos (self);
};
// ************************************************************
// Warte hier
// ************************************************************
INSTANCE DIA_MalethSheep_WarteHier (C_INFO)
{
npc = Follow_Sheep_Maleth;
nr = 1;
condition = DIA_MalethSheep_WarteHier_Condition;
information = DIA_MalethSheep_WarteHier_Info;
permanent = TRUE;
description = "Zaczekaj tutaj!";
};
FUNC INT DIA_MalethSheep_WarteHier_Condition()
{
if (self.aivar[AIV_PARTYMEMBER] == TRUE)
&& (Npc_KnowsInfo(other, DIA_MalethSheep_Hallo))
&& (self.aivar[AIV_TAPOSITION] == FALSE)
{
return TRUE;
};
};
FUNC VOID DIA_MalethSheep_WarteHier_Info()
{
AI_Output (other, self,"DIA_Liesel_WarteHier_15_00"); //Zaczekaj tutaj!
B_LieselMaeh ();
self.aivar[AIV_PARTYMEMBER] = FALSE;
AI_StopProcessInfos (self);
};
Widzi ktoś tu jakiś błąd? Skrypty reparsowane przez GothicStarter_mod, aktualizowane przez Redefixa. I czy przy dialogu z oddaniem questa można dać jakiś inny warunek, żeby od razu był dostępny, jeśli owca jest naszym towarzyszem i jest blisko Maletha? Bo na chwilę obecną to trzeba trochę pokombinować, żeby opcja dialogowa się pokazała(trzeba trochę się poprzemieszczać).