1
Pytania i problemy / Rutyna nie działa
« dnia: 2020-03-18, 15:13 »
OK, postanowiłem przełożyć freepointy w inne miejsca (niedaleko obok) i teraz działają poprawnie. Dziękuję za pomoc w rozwiązaniu problemu.
Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.
instance ACT_5000_Nero (Npc_Default)
{
// ------ NPC ------
name = "Nero";
guild = Gil_Vlk;
id = 5000;
voice = 8;
flags = 0;
npctype = NPCTYPE_MAIN;
// ------ Atrybuty ------
slf.level = 5000;
slf.attribute[ATR_STRENGTH] = 500;
slf.aivar[REAL_STRENGTH] = 500;
slf.attribute[ATR_DEXTERITY] = 500;
slf.aivar[REAL_DEXTERITY] = 500;
slf.attribute[ATR_MANA_MAX] = 10000;
slf.aivar[REAL_MANA_MAX] = 10000;
slf.attribute[ATR_MANA] = 10000;
slf.attribute[ATR_HITPOINTS_MAX] = 5000;
slf.attribute[ATR_HITPOINTS] = 5000;
// ------ Taktyka walki ------
fight_tactic = FAI_Human_Master; // Master / Strong / Normal/ Coward
// ------ Wyposażenie------
EquipItem (self, ItMw_1H_Nero);
EquipItem (self, ItRw_Bow_Nero);
CreateInvItems (self, ItRw_Arrow, 100);
// ------ Ekwipunek ------
B_CreateAmbientInv (self);
CreateInvItems (self, ItMi_Gold, 517);
// ------ Wygląd ------
B_SetNpcVisual (self, MALE, "Hum_Head_Pony", Face_N_Nero, BodyTex_N, ItAr_Nero);
Mdl_SetModelFatness (self, 1);
Mdl_ApplyOverlayMds (self, "Humans_Relaxed.mds"); // Tired / Militia / Mage / Arrogance / Relaxed
// ------ Inne umiejętności ------
B_GiveNpcTalents (self);
// ------ Umiejętność walki ------
B_SetFightSkills (self, 100);
// ------ Rutyna ------
daily_routine = Rtn_Start_5000;
};
Func void Rtn_Start_5000 ()
{
TA_Stand_ArmsCrossed (7,00,21,00,"NW_Taverne_BigFarm_04");
TA_Stand_Guarding (21,00,7,00,"NW_Taverne_BigFarm_04");
};
Func void Rtn_FindRimogard_5000 ()
{
TA_Stand_ArmsCrossed (7,00,21,00,"NW_BigFarm_Chapel_01");
TA_Stand_ArmsCrossed (21,00,7,00,"NW_BigFarm_Chapel_01");
};
Func void Rtn_RimogardIsHere_5000 ()
{
TA_Smalltalk (7,00,21,00,"NW_BigFarm_Chapel_01");
TA_Smalltalk (21,00,7,00,"NW_BigFarm_Chapel_01");
};
func int C_Beklauen (var int TheftDex, var int TheftGold)
{
if (Npc_GetTalentSkill (other,NPC_TALENT_PICKPOCKET) == TRUE)
&& (self.aivar[AIV_PlayerHasPickedMyPocket] == FALSE)
&& (other.attribute[ATR_DEXTERITY] >= (TheftDex - Theftdiff))
&& (NpcObsessedByDMT == FALSE)
{
if (Npc_IsInState (self, ZS_Talk))
{
if (TheftDex <= 20)
{
TheftDexGlob = 10; //"Kinderspiel" klappt immer
}
else
{
TheftDexGlob = TheftDex;
};
TheftGoldGlob = TheftGold;
};
return TRUE;
};
};
func void B_Beklauen ()
{
if (other.attribute[ATR_DEXTERITY] >= TheftDexGlob)
{
B_GiveInvItems (self, other, ItMi_Gold, TheftGoldGlob);
self.aivar[AIV_PlayerHasPickedMyPocket] = TRUE;
B_GiveThiefXP();//B_GivePlayerXP (XP_Ambient);
Snd_Play ("Geldbeutel");
}
else
{
B_ResetThiefLevel();
AI_StopProcessInfos (self);
B_Attack (self, other, AR_Theft, 1); //reagiert trotz IGNORE_Theft mit NEWS
};
};
Mógłbyś mi to wytłumaczyć? Niewiele z tego rozumiem.
INSTANCE DIA_Coragon_PICKPOCKET (C_INFO)
{
npc = VLK_420_Coragon;
nr = 900;
condition = DIA_Coragon_PICKPOCKET_Condition;
information = DIA_Coragon_PICKPOCKET_Info;
permanent = TRUE;
description = Pickpocket_40;
};
FUNC INT DIA_Coragon_PICKPOCKET_Condition()
{
C_Beklauen (40, 45);
};
FUNC VOID DIA_Coragon_PICKPOCKET_Info()
{
Info_ClearChoices (DIA_Coragon_PICKPOCKET);
Info_AddChoice (DIA_Coragon_PICKPOCKET, DIALOG_BACK ,DIA_Coragon_PICKPOCKET_BACK);
Info_AddChoice (DIA_Coragon_PICKPOCKET, DIALOG_PICKPOCKET ,DIA_Coragon_PICKPOCKET_DoIt);
};
func void DIA_Coragon_PICKPOCKET_DoIt()
{
B_Beklauen ();
Info_ClearChoices (DIA_Coragon_PICKPOCKET);
};
func void DIA_Coragon_PICKPOCKET_BACK()
{
Info_ClearChoices (DIA_Coragon_PICKPOCKET);
};