Pracuję nad modem no i... problem jest.
Próbowałem zrobić skrypt towarzysz po swojemu (niby tu jest gdzieś tutorial ale zanadto nie patrzyłem.
No i... w grze dialogi są, ale nie następuje zmiana rutyny NPCa. Jakieś pomysły co spieprzyłem?
NPC:
instance SLD_5008_Mysliwy (NPC_Default)
{
// ----- NPC -----
name = "Myśliwy";
guild = 7;
id = 5008;
voice = 2;
flags = 0;
npctype = NPCTYPE_FRIEND;
level = 15;
// ----- Attributes -----
B_SetAttributesToChapter (self, 2);
// ----- Hitchance -----
HitChance [NPC_TALENT_1H] = 10;
HitChance [NPC_TALENT_2H] = 10;
HitChance [NPC_TALENT_BOW] = 10;
HitChance [NPC_TALENT_CROSSBOW] = 10;
B_SetNpcVisual (self, MALE, "HUM_HEAD_FATBALD", Face_P_NormalBart_Nefarius, BodyTex_N, ITAR_SLD_L);
Mdl_SetModelFatness (self, 2);
Mdl_ApplyOverlayMds (self, "Humans_Relaxed.mds");
// ----- Give NPC his Talents -----
B_GiveNpcTalents (self);
// ----- Inventory -----
EquipItem (self, ItMw_1h_Sld_Sword);
EquipItem (self, ItRw_Sld_Bow);
// ------ TA anmelden ------
daily_routine = Rtn_KHORARIN_5008;
};
FUNC VOID Rtn_KHORARIN_5008 ()
{
TA_Smalltalk(15,00,20,00,"HUT_2_09");
TA_Cook_Stove(20,00,23,50,"HUT_2_STOVE");
TA_Sleep(23,50,12,00,"HUT_2_BED_2");
TA_Stand_Guarding(12,00,15,00,"VILLAGE_ENTRANCE_02");
};
func VOID Rtn_Wait_5008 ()
{
var c_npc Mysliwy; Mysliwy = Hlp_GetNpc(SLD_5008_Mysliwy);
TA_Guard (08,00,20,30,Npc_GetNearestWP(Mysliwy));
TA_Guard (20,30,08,00,Npc_GetNearestWP(Mysliwy));
};
FUNC VOID Rtn_FRIEND_5008 ()
{
TA_Follow_Player (06,55,21,00,"VILLAGE_ENTRANCE_03");
TA_Follow_Player (21,00,06,55,"VILLAGE_ENTRANCE_03");
};
FUNC VOID Rtn_NOFRIEND_5008 ()
{
TA_Smalltalk(15,00,20,00,"HUT_2_09");
TA_Cook_Stove(20,00,23,50,"HUT_2_STOVE");
TA_Sleep(23,50,12,00,"HUT_2_BED_2");
TA_Stand_Guarding(12,00,15,00,"VILLAGE_ENTRANCE_02");
};
I dialog :
//========================================
//-----------------> OPCJA *KONIEC*
//========================================
INSTANCE DIA_Mysliwy_EXIT(C_INFO)
{
npc = SLD_5008_Mysliwy;
nr = 999;
condition = DIA_Mysliwy_EXIT_Condition;
information = DIA_Mysliwy_EXIT_Info;
permanent = TRUE;
description = "KONIEC";
};
FUNC INT DIA_Mysliwy_EXIT_Condition()
{
return TRUE;
};
FUNC VOID DIA_Mysliwy_EXIT_Info()
{
AI_StopProcessInfos (self);
};
//========================================
//-----------------> OPCJA KRADZIEŻY
//========================================
INSTANCE DIA_Mysliwy_PICKPOCKET(C_INFO)
{
npc = SLD_5008_Mysliwy;
nr = 900;
condition = DIA_Mysliwy_PICKPOCKET_Condition;
information = DIA_Mysliwy_PICKPOCKET_Info;
permanent = TRUE;
description = Pickpocket_20;
};
FUNC INT DIA_Mysliwy_PICKPOCKET_Condition()
{
C_Beklauen (20, 43);
};
FUNC VOID DIA_Mysliwy_PICKPOCKET_Info()
{
Info_ClearChoices (DIA_Mysliwy_PICKPOCKET);
Info_AddChoice (DIA_Mysliwy_PICKPOCKET, DIALOG_BACK ,DIA_Mysliwy_PICKPOCKET_BACK);
Info_AddChoice (DIA_Mysliwy_PICKPOCKET, DIALOG_PICKPOCKET ,DIA_Mysliwy_PICKPOCKET_DoIt);
};
FUNC VOID DIA_Mysliwy_PICKPOCKET_DoIt()
{
B_Beklauen ();
Info_ClearChoices (DIA_Mysliwy_PICKPOCKET);
};
FUNC VOID DIA_Mysliwy_PICKPOCKET_BACK()
{
Info_ClearChoices (DIA_Mysliwy_PICKPOCKET);
};
//========================================
//-----------------> HELLO1
//========================================
INSTANCE DIA_Mysliwy_HELLO1 (C_INFO)
{
npc = SLD_5008_Mysliwy;
nr = 1;
condition = DIA_Mysliwy_HELLO1_Condition;
information = DIA_Mysliwy_HELLO1_Info;
permanent = FALSE;
description = "Kim jesteś?";
};
FUNC INT DIA_Mysliwy_HELLO1_Condition()
{
if (PROTECTION == 1)
{
return TRUE;
};
};
FUNC VOID DIA_Mysliwy_HELLO1_Info()
{
AI_Output (other, self ,"DIA_SLD_5008_HELLO1_15_01"); //Kim jesteś?
AI_Output (self, other ,"DIA_SLD_5008_HELLO1_03_02"); //Pechowym myśliwym. Byłem w odwiedzinach u urodziny, gdy wybuchła epidemia.
AI_Output (other, self ,"DIA_SLD_5008_HELLO1_15_03"); //Współczuję. Wiesz coś o ich losie?
AI_Output (self, other ,"DIA_SLD_5008_HELLO1_03_04"); //Nie bardzo.
};
//========================================
//-----------------> HELLO2
//========================================
INSTANCE DIA_Mysliwy_HELLO2 (C_INFO)
{
npc = SLD_5008_Mysliwy;
nr = 2;
condition = DIA_Mysliwy_HELLO2_Condition;
information = DIA_Mysliwy_HELLO2_Info;
permanent = TRUE;
description = "Próbuję znaleźć lekarstwo na chorobę i przydałaby mi się pomoc. (Towarzysz)";
};
FUNC INT DIA_Mysliwy_HELLO2_Condition()
{
if (PROTECTION == 1)
&& (HUNTERWITHME == 0)
&& (HUNTERGOODBYE == 0)
{
return TRUE;
};
};
FUNC VOID DIA_Mysliwy_HELLO2_Info()
{
AI_Output (other, self ,"DIA_Mysliwy_HELLO2_15_01"); //Mam pytanie - próbuję znaleźć lekarstwo na chorobę i przydałaby mi się pomoc. (Towarzysz)
AI_Output (self, other ,"DIA_Mysliwy_HELLO2_03_02"); //Czego ode mnie oczekujesz?
AI_Output (other, self ,"DIA_Mysliwy_HELLO2_15_03"); //Pomocy. Na wypadek gdybym na coś wpadł poza wioską.
AI_Output (self, other ,"DIA_Mysliwy_HELLO2_03_04"); //Na Khorarinie raczej nie ma groźnych zwierząt. Poza jaskiniami.
AI_Output (other, self ,"DIA_Mysliwy_HELLO2_15_05"); //Mimo to...
AI_Output (self, other ,"DIA_Mysliwy_HELLO2_03_06"); //Niech będzie. I tak nie mam tutaj nic do roboty.
HUNTERWITHME = HUNTERWITHME + 1;
AI_Output (self, other ,"DIA_Mysliwy_HELLO2_03_07"); //Jeśli się rozdzielimy, będe czekał przy bramie.
Npc_ExchangeRoutine (self, "FRIEND");
};
//========================================
//-----------------> HELLO3
//========================================
INSTANCE DIA_Mysliwy_HELLO3 (C_INFO)
{
npc = SLD_5008_Mysliwy;
nr = 3;
condition = DIA_Mysliwy_HELLO3_Condition;
information = DIA_Mysliwy_HELLO3_Info;
permanent = TRUE;
description = "Poczekaj tutaj na mnie, ";
};
FUNC INT DIA_Mysliwy_HELLO3_Condition()
{
if (HUNTERWITHME == 1)
{
return TRUE;
};
};
FUNC VOID DIA_Mysliwy_HELLO3_Info()
{
AI_Output (other, self ,"DIA_Mysliwy_HELLO3_15_01"); //Poczekaj tutaj na mnie,
AI_Output (self, other ,"DIA_Mysliwy_HELLO3_03_02"); //Jasne.
Npc_ExchangeRoutine (self, "WAIT");
HUNTERWAIT = HUNTERWAIT + 1;
HUNTERWITHME = 0;
};
//========================================
//-----------------> HELLO4
//========================================
INSTANCE DIA_Mysliwy_HELLO4 (C_INFO)
{
npc = SLD_5008_Mysliwy;
nr = 4;
condition = DIA_Mysliwy_HELLO4_Condition;
information = DIA_Mysliwy_HELLO4_Info;
permanent = TRUE;
description = "Chodź za mną.";
};
FUNC INT DIA_Mysliwy_HELLO4_Condition()
{
if (HUNTERWAIT == 1)
&& (HUNTERWITHME == 0)
{
return TRUE;
};
};
FUNC VOID DIA_Mysliwy_HELLO4_Info()
{
AI_Output (other, self ,"DIA_Mysliwy_HELLO4_15_01"); //Chodź za mną.
AI_Output (self, other ,"DIA_Mysliwy_HELLO4_03_02"); //Jasne.
Npc_ExchangeRoutine (self, "FRIEND");
HUNTERWAIT = 0;
HUNTERWITHME = HUNTERWITHME +1;
AI_StopProcessInfos (self);
};
//========================================
//-----------------> HELLO5
//========================================
INSTANCE DIA_Mysliwy_HELLO5 (C_INFO)
{
npc = SLD_5008_Mysliwy;
nr = 5;
condition = DIA_Mysliwy_HELLO5_Condition;
information = DIA_Mysliwy_HELLO5_Info;
permanent = FALSE;
description = "Przepraszam, ale już nie będe potrzebował twojej pomocy.";
};
FUNC INT DIA_Mysliwy_HELLO5_Condition()
{
if (HUNTERWITHME == 1)
{
return TRUE;
};
};
FUNC VOID DIA_Mysliwy_HELLO5_Info()
{
AI_Output (other, self ,"DIA_Mysliwy_HELLO5_15_01"); //Przepraszam, ale już nie będe potrzebował twojej pomocy.
AI_Output (self, other ,"DIA_Mysliwy_HELLO5_03_02"); //Rozumiem. Do zobaczenia.
Npc_ExchangeRoutine (self, "NOFRIEND");
HUNTERGOODBYE = HUNTERGOODBYE +1;
HUNTERWITHME = 0;
AI_StopProcessInfos (self);
};