Witam.
Mam problem ze skryptem NPC'a; jest on psem (wilkiem), i jest (ma być) przyjazny wobec gracza, biegać za nim, pomogać mu w walce itp, itd.
Napisałem taki skrypt:
Spoiler
instance PC_Lolo (Npc_Default)
{
//-------- primary data --------
name = "Lolo";
npctype = NPCTYPE_FRIEND;
guild = GIL_WOLF;
level = 50;
flags = NPC_FLAG_IMMORTAL;
voice = 7;
id = 10001;
//-------- abilities --------
attribute[ATR_STRENGTH] = 30;
attribute[ATR_DEXTERITY] = 15;
attribute[ATR_MANA_MAX] = 0;
attribute[ATR_MANA] = 0;
attribute[ATR_HITPOINTS_MAX] = 200;
attribute[ATR_HITPOINTS] = 200;
//-------- visuals --------
// animations
Mdl_SetVisual (self,"Wolf.mds");
// Body-Mesh Body-Tex Skin-Color Head-MMS Head-Tex Teeth-Tex ARMOR
Mdl_SetVisualBody (self, "Wol_Body", DEFAULT, DEFAULT, "", DEFAULT, DEFAULT, -1);
Mdl_SetModelScale(self, 0.8, 0.8, 0.8);
B_Scale (self);
self.aivar[AIV_IMPORTANT] = TRUE;
aivar[AIV_MM_Behaviour] = PACKHUNTER;
aivar[AIV_MM_PercRange] = 1500;
aivar[AIV_MM_DrohRange] = 1200;
aivar[AIV_MM_AttackRange] = 520;
aivar[AIV_MM_DrohTime] = 3;
aivar[AIV_MM_FollowTime] = 15;
aivar[AIV_MM_FollowInWater] = TRUE;
fight_tactic = FAI_WOLF;
//-------- Senses --------
senses = SENSE_SEE|SENSE_HEAR|SENSE_SMELL;// für DIREKTES ansprechen
senses_range = 3000;
//-------- inventory --------
CreateInvItems (self, ItMiNugget,1);
//-------------Daily Routine-------------
daily_routine = Rtn_start_10001;
};
FUNC VOID Rtn_start_10001 ()
{
TA_Stay (23,00,06,00,"OW_PATH_1_5_B");
TA_Stay (23,00,06,00,"OW_PATH_1_5_B");
};
func void Rtn_asist_10001 ()
{
TA_FollowPC (23,00,16,00,"OW_PATH_1_5_B");
TA_FollowPC (16,00,23,00,"OW_PATH_1_5_B");
};
Oraz skrypt na rozmowę:
Spoiler
// **************************************************
// EXIT
// **************************************************
INSTANCE DIA_PC_Lolo_Exit (C_INFO)
{
npc = PC_Lolo;
nr = 999;
condition = DIA_PC_Lolo_Exit_Condition;
information = DIA_PC_Lolo_Exit_Info;
permanent = 1;
description = DIALOG_ENDE;
};
FUNC INT DIA_PC_Lolo_Exit_Condition()
{
//if (Npc_KnowsInfo(hero, DIA_PC_Lolo_meal))
//{
return 1;
//};
};
FUNC VOID DIA_PC_Lolo_Exit_Info()
{
AI_StopProcessInfos ( self );
};
// **************************************************
// First + EXIT
// **************************************************
INSTANCE DIA_PC_Lolo_meal (C_INFO)
{
npc = PC_Lolo;
nr = 1;
condition = DIA_PC_Lolo_meal_Condition;
information = DIA_PC_Lolo_meal_Info;
permanent = 1;
important = 1;
description = "(DAJ JEDZENIE)";
};
FUNC INT DIA_PC_Lolo_meal_Condition()
{
if ( (Npc_HasItems(other,ItFoMutton)>0) || (Npc_HasItems(other,ItFoMuttonRaw)>0) )
{
return 1;
};
};
FUNC VOID DIA_PC_Lolo_meal_Info()
{
if (Npc_HasItems(other,ItFoMutton))
{
B_GiveInvItems (other,self,ItFoMutton,1);
}
else if (Npc_HasItems(other,ItFoMuttonRaw))
{
B_GiveInvItems (other,self,ItFoMuttonRaw,1);
}
};
INSTANCE DIA_PC_Lolo_stay (C_INFO)
{
npc = PC_Lolo;
nr = 997;
condition = DIA_PC_Lolo_stay_Condition;
information = DIA_PC_Lolo_stay_Info;
permanent = 1;
important = 1;
description = "(ZOSTAŃ)";
};
FUNC INT DIA_PC_Lolo_stay_Condition()
{
return 1;
};
FUNC VOID DIA_PC_Lolo_stay_Info()
{
Npc_ExchangeRoutine (self,"start");
};
INSTANCE DIA_PC_Lolo_asist (C_INFO)
{
npc = PC_Lolo;
nr = 998;
condition = DIA_PC_Lolo_asist_Condition;
information = DIA_PC_Lolo_asist_Info;
permanent = 1;
important = 1;
description = "(ZA MNĄ)";
};
FUNC INT DIA_PC_Lolo_asist_Condition()
{
return 1;
};
FUNC VOID DIA_PC_Lolo_asist_Info()
{
Npc_ExchangeRoutine (self,"asist");
};
Problem w tym, że kiedy próbuje z nim rozmawać (aby dać mu jedzenia, zawołać aby szedł za mną itd.) przechodzę w "tryb" rozmowy ustawia się kamera tak jak podczas rozmowy, ale nic się nie wyświetla, nie da się zakończyć, pies też nie podąża za graczem, tylko stoi w miejscu gdzie go zrespiłem, nie atakuje, nic i nikogo, jak go uderzę, to przechodzi w tryb bojowy (fist mode), ale zaraz potem wraca do trybu zwykłego, to jedynie działa, reszta nic nie działa, nic się nie dzieje, a spacer nie wywala błędów.
Z góry dziękuje za pomoc.