-------- PORADNIK POCHODZI Z
http://unknown.yoyo.pl/ --------
W tym poradniku opiszę, jak zrobić prościutkiego questa na przyniesienie czegoś (w tym przypadku będzie to kompas). Dodam, że robiłem tego tutka ze skryptów GerranHeart. Zacznijmy od zrobienia dialogu (załóżmy, że mamy już NPC). A i jeszcze jedno: nie będę wstawiał komentarzy, co zmienić w samym dialogu. No to zaczynamy:
///////////////////////////////////////////////////////////////////////
// Info EXIT
///////////////////////////////////////////////////////////////////////
INSTANCE DIA_Zeikko_EXIT (C_INFO)
{
npc = PIR_1000004_Zeikko;
nr = 999;
condition = DIA_Zeikko_EXIT_Condition;
information = DIA_Zeikko_EXIT_Info;
permanent = TRUE;
description = DIALOG_ENDE;
};
FUNC INT DIA_Zeikko_EXIT_Condition()
{
return TRUE;
};
FUNC VOID DIA_Zeikko_EXIT_Info()
{
AI_StopProcessInfos (self);
};
// *********************************************************
// Hallo
// *********************************************************
instance DIA_Zeikko_QUEST (C_INFO)
{
npc = PIR_1000004_Zeikko;
nr = 3;
condition = DIA_Zeikko_QUEST_Condition;
information = DIA_Zeikko_QUEST_Info;
permanent = FALSE;
description = "Chce Questa!";
};
func int DIA_Zeikko_QUEST_Condition ()
{
return TRUE;};
func void DIA_Zeikko_QUEST_Info ()
{
AI_Output (other, self, "DIA_Zeikko_QUEST_15_00"); //Chcę questa!
AI_Output (self, other, "DIA_Zeikko_QUEST_15_01"); //Mam coś dla ciebie.
AI_Output (self, other, "DIA_Zeikko_QUEST_15_02"); //Przynieś mi kompas.
AI_Output (other, self, "DIA_Zeikko_QUEST_15_03"); //OK.
Log_CreateTopic (TOPIC_QUESTTUT,LOG_MISSION);
Log_SetTopicStatus (TOPIC_QUESTTUT,LOG_RUNNING);
B_LogEntry (TOPIC_QUESTTUT,"Mam przynieść kompas dla zeika.");
};
Teraz wchodzimy w folder _Work\data\scripts\Content\Story\Log_Entries i odpalamy plik LOG_Constants_Mattes.d. Jedziemy na sam koniec i dopisujemy coś takiego:
const string TOPIC_QUESTTUT = "Tutorial na questa.";
Zapisujemy plik i wracamy do naszego dialogu. Dopisujemy takie coś:
// *********************************************************
// Hallo
// *********************************************************
instance DIA_Zeikko_MAMKOMPAS (C_INFO)
{
npc = PIR_1000004_Zeikko;
nr = 5;
condition = DIA_Zeikko_MAMKOMPAS_Condition;
information = DIA_Zeikko_MAMKOMPAS_Info;
permanent = FALSE;
description = "Mam kompas";
};
func int DIA_Zeikko_MAMKOMPAS_Condition ()
{
if Npc_KnowsInfo (other, DIA_Zeikko_QUEST)
&& (Npc_HasItems(other, ItMi_kompasmarvina) > 0)
{
return TRUE;
};
};
func void DIA_Zeikko_MAMKOMPAS_Info ()
{
AI_Output (other, self, "DIA_Zeikko_MAMKOMPAS_15_00"); //Mam kompas.
B_GiveInvItems (other, self, itmi_kompasmarvina, 1);
AI_Output (self, other, "DIA_Zeikko_MAMKOMPAS_15_01"); //Świetnie! Dzięki!
CreateInvItems (self, ItMi_Gold, 500);
B_GiveInvItems (self, other, ItMi_Gold, 500);
Log_SetTopicStatus(TOPIC_QUESTTUT, LOG_SUCCESS);
B_GivePlayerXP (XP_Zeikkokompas);
};
Teraz troszkę objaśnień:
if Npc_KnowsInfo (other, DIA_Zeikko_QUEST)
To określa, że musimy pogadać z jakimś NPC właśnie o czymś, co ma taką instancję (dialog).
&& (Npc_HasItems(other, ItMi_kompasmarvina) > 0)
Tutaj akurat określamy, że bohater musi mieć przedmiot o tej instancji (musi mieć go więcej, niż 0 w tym przypadku)
B_GiveInvItems (other, self, itmi_kompasmarvina, 1);
To, że dajemy jedną sztukę tego przedmiotu dla NPC.
CreateInvItems (self, ItMi_Gold, 500);
U NPC tworzy się 500 sztuk złota.
B_GiveInvItems (self, other, ItMi_Gold, 500);
NPC daje dla nas 500 sztuk złota.
Log_SetTopicStatus(TOPIC_QUESTTUT, LOG_SUCCESS);
TOPIC_QUESTTUT jest wykonany (przenosi się do rubryki wykonane zadania w dzienniku)
B_GivePlayerXP (XP_Zeikkokompas);
Dostajemy tyle doświadczenia (xp_zeikkokompas). To akurat można określić w pliku _Work\data\scripts\Content\Story\XP_Constants.d
Chcecie, to kopiujcie sobie to, ale zaznaczajcie, że to ja jestem autorem.autor: Dekster17
-------- PORADNIK POCHODZI Z
http://unknown.yoyo.pl/ --------