Zrobiłem questa z odzyskaniem łuku jednego myśliwego, jest to pierwszy quest jaki dostaje się w modzie i ma on pełnić rolę podexpienia odrobinę naszej postaci, npc zgubił łuk i prowadzi nas do miejsca w którym ten łuk zgubił. Problem polega na tym, że po doprowadzeniu nas na miejsce, stoi i gapi się na nasza postać, a mam wpisane w skrypcie żeby postać zagadała do nas gdy będziemy w promieniu 60 jednostek długości od WP do którego ma nas zaprowadzić, party się zamknęło quest został zaliczony i żeby dało expa ale nic z tego się nie dzieje. NPC nawet się nie odzywa tylko stoi i się gapi na Bezia. Nie ważne z jakiej strony się stanie, NPC zawsze jest zwrócony w stronę bezia i gapi się nie wiedząc co zrobić. Nawet gdy podniesie się ten łuk z ziemi to i tak nic nie zmienia.
Zamieszczam fragment skryptu odpowiadający za ten quest
//========================================
//-----------------> HELLO5
//========================================
INSTANCE DIA_Boromir_HELLO5 (C_INFO)
{
npc = GLA_1_Boromir;
nr = 5;
condition = DIA_Boromir_HELLO5_Condition;
information = DIA_Boromir_HELLO5_Info;
permanent = FALSE;
description = "Może mógłbym ci pomóc?";
};
FUNC INT DIA_Boromir_HELLO5_Condition()
{
if (Npc_KnowsInfo (other, DIA_Boromir_HELLO4))
{
return TRUE;
};
};
FUNC VOID DIA_Boromir_HELLO5_Info()
{
AI_Output (other, self ,"DIA_Boromir_HELLO5_15_01"); //Może pomogę ci odzyskać twój łuk?
AI_Output (self, other ,"DIA_Boromir_HELLO5_03_02"); //Hmm... Wiesz co? To nie jest głupi pomysł.
AI_Output (self, other ,"DIA_Boromir_HELLO5_03_03"); //Sam nie mogę się tam wybrać, bez łuku. Ale z twoją pomocą...
AI_Output (self, other ,"DIA_Boromir_HELLO5_03_04"); //I możemy przy okazji sobie zapolować...
AI_Output (self, other ,"DIA_Boromir_HELLO5_03_05"); //No dobrze, niech będzie. Przyjdz do mnie jak będziesz gotowy do drogi.
MIS_Polowanie = LOG_RUNNING;
Log_CreateTopic (TOPIC_Polowanie, LOG_MISSION);
Log_SetTopicStatus (TOPIC_Polowanie, LOG_RUNNING);
B_LogEntry (TOPIC_Polowanie,"Boromir stracił swój łuk, postanowiłem, że pomogę mu go odzyskać.");
};
//========================================
//-----------------> HELLO6
//========================================
INSTANCE DIA_Boromir_HELLO6 (C_INFO)
{
npc = GLA_1_Boromir;
nr = 6;
condition = DIA_Boromir_HELLO6_Condition;
information = DIA_Boromir_HELLO6_Info;
permanent = FALSE;
description = "Chodźmy zapolować!";
};
FUNC INT DIA_Boromir_HELLO6_Condition()
{
if (Npc_KnowsInfo (other, DIA_Boromir_HELLO5))
{
return TRUE;
};
};
FUNC VOID DIA_Boromir_HELLO6_Info()
{
AI_Output (other, self ,"DIA_Boromir_HELLO6_15_01"); //Chodźmy zapolować!
AI_Output (self, other ,"DIA_Boromir_HELLO6_03_02"); //Dobrze, chodź za mną.
AI_Output (self, other ,"DIA_Boromir_HELLO6_03_03"); //I weź tę broń, przyda ci się.
CreateInvItems (self, ItMw_1H_Mace_L_03, 1);
B_GiveInvItems (self, other, ItMw_1H_Mace_L_03, 1);
self.aivar[AIV_PARTYMEMBER] = TRUE;
Npc_ExchangeRoutine (self, "Polowanie");
AI_StopProcessInfos (self);
};
//========================================
//-----------------> HELLO7
//========================================
INSTANCE DIA_Boromir_HELLO7 (C_INFO)
{
npc = GLA_1_Boromir;
nr = 7;
condition = DIA_Boromir_HELLO7_Condition;
information = DIA_Boromir_HELLO7_Info;
permanent = FALSE;
Important = TRUE;
};
FUNC INT DIA_Boromir_HELLO7_Condition()
{
if (Npc_KnowsInfo (other, DIA_Boromir_HELLO6))
&& (Npc_GetDistToWP (other, "SCIERWA") < 500)
{
return TRUE;
};
};
FUNC VOID DIA_Boromir_HELLO7_Info()
{
AI_Output (self, other ,"DIA_Boromir_HELLO7_03_01"); //No i po wszystkim. Teraz poszukaj tego łuku. Będę czekał gdzieś w okolicy.
self.aivar[AIV_PARTYMEMBER] = FALSE;
Npc_ExchangeRoutine (self, "Koniec");
AI_StopProcessInfos (self);
};
//========================================
//-----------------> HELLO8
//========================================
INSTANCE DIA_Boromir_HELLO8 (C_INFO)
{
npc = GLA_1_Boromir;
nr = 8;
condition = DIA_Boromir_HELLO8_Condition;
information = DIA_Boromir_HELLO8_Info;
permanent = FALSE;
description = "Znalazłem twój łuk.";
};
FUNC INT DIA_Boromir_HELLO8_Condition()
{
if (Npc_KnowsInfo (other, DIA_Boromir_HELLO7))
&& (Npc_HasItems (other, ItRw_Bow_M_03) >=1)
{
return TRUE;
};
};
FUNC VOID DIA_Boromir_HELLO8_Info()
{
AI_Output (other, self ,"DIA_Boromir_HELLO8_15_01"); //Znalazłem twój łuk.
AI_Output (other, self ,"DIA_Boromir_HELLO8_15_02"); //Prosze, weź go.
AI_Output (self, other ,"DIA_Boromir_HELLO8_03_03"); //Dziękuję, równy z ciebie chłop. Powinieneś stawić się w naszym obozie. Z pewnością znalazłoby się u nas miejsce dla kogoś takiego.
AI_Output (other, self ,"DIA_Boromir_HELLO8_15_04"); //Może kiedyś.
AI_Output (self, other ,"DIA_Boromir_HELLO8_03_05"); //Jak byś czegoś potrzebował, będę polował w okolicy.
AI_Output (other, self ,"DIA_Boromir_HELLO8_15_06"); //Dzięki.
AI_Output (self, other ,"DIA_Boromir_HELLO8_03_07"); //Trzymaj się.
B_GiveInvItems (other, self, ItRw_Bow_M_03, 1);
B_UseItem (self, ItRw_Bow_M_03);
CreateInvItems (self, ItRw_Arrow, 30);
B_LogEntry (TOPIC_Polowanie,"Oddałem łuk do rąk własnych.");
Log_SetTopicStatus (TOPIC_Polowanie, LOG_SUCCESS);
MIS_Polowanie = LOG_SUCCESS;
B_GivePlayerXP (100);
};
Zaktualizowałem skrypt. Teraz postać normalnie do nas zagaduje po dojściu do WP ale po tym jak mówi "No i po wszystkim. Teraz poszukaj tego łuku. Będę czekał gdzieś w okolicy." Powien zmienić rutyne, a zamiast tego stoi i gapi się tak, jak pisałem wcześniej. Coś napisałem nie tak? Dodam jeszcze, że w grze kiedy wpisałem na tym NPC w konsoli "edit focus" i zmieniłem WP na inny to npc zaczął biec do tego WP i stał przy nim gapiąc się tak samo jak wcześniej