Dzień dobry,
chcę, by wieczorem w karczmie był grany minutowy utwór na gitarze (mniej więcej jak, 'przez mgłę widzę wyspę'). Zrobiłem to w następujący sposób: w rutynie Play_Lute usunąłem grane dźwięki i wstawiłem swój utwór.
// *********************************
// NSC benutzt Item Lute an Stand-FP
// *********************************
func void ZS_Play_Lute ()
{
Perception_Set_Normal();
B_ResetAll (self);
AI_SetWalkmode (self,NPC_WALK);
if (Npc_GetDistToWP (self,self.wp) > TA_DIST_SELFWP_MAX)
{
AI_GotoWP (self, self.wp);
};
if (Npc_HasItems (self,ItMi_Lute) == 0)
{
CreateInvItem (self,ItMi_Lute);
};
self.aivar[AIV_TAPOSITION] = NOTINPOS;
};
func int ZS_Play_Lute_Loop ()
{
if (Npc_IsOnFP (self, "STAND"))
{
AI_AlignToFP (self);
if (self.aivar[AIV_TAPOSITION] == NOTINPOS_WALK)
{
self.aivar[AIV_TAPOSITION] = NOTINPOS;
};
}
else if (Wld_IsFPAvailable(self,"STAND"))
{
AI_GotoFP (self, "STAND");
AI_StandUp (self);
AI_AlignToFP (self);
self.aivar[AIV_TAPOSITION] = NOTINPOS_WALK;
}
else
{
AI_AlignToWP (self);
if (self.aivar[AIV_TAPOSITION] == NOTINPOS_WALK)
{
self.aivar[AIV_TAPOSITION] = NOTINPOS;
};
};
if (self.aivar[AIV_TAPOSITION] == NOTINPOS)
{
AI_UseItemToState (self,ItMi_Lute,1);
Snd_Play ("FREE_MINE_GUITAR");
self.aivar[AIV_TAPOSITION] = ISINPOS;
};
return LOOP_CONTINUE;
};
func void ZS_Play_Lute_End ()
{
AI_UseItemToState (self, ItMi_Lute, -1);
};
Dźwięk działa, ale problemy są inne:
1. Muzyka (która normalnie gra) się nie wycisza.
2. Gdy zagaduję gościa, który gra, on rozmawia ze mną, nie przerywa dźwięku, a gdy przestaję z nim gadać, to ponawia swoją rutynę i nakładają się na siebie dwie melodie niczym kanon.
3. Utwór słychać z za dużej odległości, oraz gdy odejdę na odległość (a utwór już gra) to się nie wycisza - a powinien.
Czy ktoś mógłby mi doradzić, jak pozbyć się dwóch ww. problemów?