World of Gothic Archiv > Editing
Npc
Seite 1 von 1  1 
17.04.2002, 18:37 #1
Althais
Beiträge: 31
Npc
ich habe hier wirklich probleme meinen erstellten npc mit tagesablauf und allem drum und dran in die welt einzubauen. das hier habe ich bisher ... und ich denke soweit stimmt alles:

MyNPC.d
// ******************* Artim, der Assassine *******************

instance STT_555_Artim (Npc_Default)

//-------- primary data --------
name = "Artim";
guild = GIL_STT;
npctype = NPCTYPE_MAIN;
level = 30;
voice = 8;
id = 555;
flags = NPC_FLAG_IMMORTAL;

// ----- attributes --------
attribute[ATR_STRENGTH] = 60;
attribute[ATR_DEXTERITY] = 80;
attribute[ATR_MANA_MAX] = 0;
attribute[ATR_MANA] = 0;
attribute[ATR_HITPOINTS_MAX]= 200;
attribute[ATR_HITPOINTS] = 200;

//-------- visuals --------
Mdl_SetVisual (self, "humans.mds");

Mdl_ApplyOverlayMds (self, "Humans_Relaxed.mds");

Mdl_SetVisualBody (self, "hum_body_naked0", 0, 1, "Hum_Head_Thief", 51, 2, STT_ARMOR_A);

B_Scale (self);

Mdl_SetModelFatness (self, 0);

//-------- talents --------
Npc_SetTalentSkill (self, NPC_TALENT_1H,2);
Npc_SetTalentSkill (self, NPC_TALENT_SNEAK, 1);

//-------- inventory --------
EquipItem (self, STT_ARMOR_A);
EquipItem (self, ItMw_1H_Sword_Bastard_05);

//--------senses-------------

senses = SENSE_SEE;
senses_range = 2000;

//------------- ai -------------
fight_tactic = FAI_HUMAN_MASTER;

daily_routine = Rtn_start_500;
};

func void Rtn_Start_500 ()
{
TA_StandAround (0,00,13,00, "OCR_HUT_25_SIT244");
TA_StandAround (13,00,0,00, "OCR_HUT_25_SIT244");
};

Startup.d
Wld_InsertNpc (STT_500_Artim,"OC1");



was ich von dem kerl will, ist dass er einfach erst mal nur 24h an einer stelle (OCR_HUT_25_SIT244, das ist im kaputten turm im al)) rumsteht, dafür würde ich den TA_Standaround hernehmen. ausserdem soll er noch ansprechbar sein und selbst erkennen, ob ich mich ihm nähere.

das tutorial gibt dazu dieses teil aus:

func void ZS_GuntherWait ()
{
PrintDebugNpc (PD_TA_FRAME, "ZS_GuntherWait");
// Debugausgaben, die man sich im Spy anzeigen lassen kann

Npc_PercEnable(self, PERC_ASSESSPLAYER, B_AssessSC);
// führt unter anderem dazu, dass der Nsc bei Annäherung des Spielers
// kontrolliert ob er eine Info hat, die ihm zum Ansprechen des Spielers
// veranlasst (Info wird später erstellt)
Npc_PercEnable(self, PERC_ASSESSTALK, B_AssessTalk);
// macht den Nsc ansprechbar, damit der Spieler auch den Auftrag beenden kann

AI_StandUp (self);
AI_SetWalkmode (self, NPC_WALK); // Walkmode für den Zustand, in diesem Fall gehen
AI_GotoWP (self, self.wp); // Gehe zum Tagesablaufstart
AI_AlignToWP (self); // Ausrichten am WP (Pfeilrichtung im Spacer)
};

func void ZS_GuntherWait_Loop ()
{
PrintDebugNpc (PD_TA_LOOP, "ZS_GuntherWait_Loop"); // s.o.
AI_GotoWP (self, self.wp); // Gehe zum Tagesablaufstart
AI_Wait (self, 100); // 100 Sekunden warten, bis die Wp gewechselt wird
AI_GotoWP (self, Npc_GetNearestWP (Self));
// Anderen WP in der Nähe suchen, damit er nicht dahin pinkelt wo er steht

AI_PlayAni(self, "T_PEE");
AI_Wait (self, 100); // 100 Sekunden warten, bis die Loop beendet wird
};

func void ZS_GuntherWait_End ()
{
PrintDebugNpc (PD_TA_FRAME,"ZS_GuntherWait_End"); // s.o.
};


allerdings will ich das ja alles garnicht ... also wie muss das script aussehen, damit artim tut was ich will?


PS: ICQ 107121815 ;)
17.04.2002, 19:40 #2
Althais
Beiträge: 31

kann mir denn keiner helfen? ist echt sch*** wenn man hier an dem script sitzt und absolut nicht weiss warum es nicht geht. :(
17.04.2002, 20:58 #3
GülleMüller
Beiträge: 472

Nun ja, was genau ist das Problem?
"Funzt nich" kann nunmal alles sein ...
Aber um mal Info zu geben:

1.: Falls du die Startup.d vom original nimmst ändere besser die ID (555 ist belegt, siehe VLK_555_Buddler.d). Soweit ich weiß, geht alles von 941 bis 999, dann wirds unübersichtlich...
Also es gibt nen 1000,1001,1002 dann hab ich erst wieder 1212,...
Komisch halt :)

2.: Warum baust du den "STT_500_Artim" ein, wenn du vorher den "STT_555_Artim" definiert hast ? :)

Das sind die einzigen Fehler, die ich gefunden habe, außerdem würde ich "TA_StandAround (0,00,13,00, "OCR_HUT_25_SIT244");" in
TA_StandAround (00,00,13,00, "OCR_HUT_25_SIT244");" umbaun. Ist (glaub ich) zwar kein Scriptingfehler, sieht dafür aba bessa aus...

ps:Will dich net runtermachen (wegen 2.) sondern is halt ne geile Formulierung... :D
18.04.2002, 13:49 #4
avatarr
Beiträge: 134
Lösung
Hättest Du auf mich gehört und im zSpy nachgesehen, wären Dir Fehlermeldungen betreffs Nichtvorhandensein von Rüstung und Schwert des NPC aufgefallen ;)

Ich hab den NPC in der startup mit Wld_InsertNpc (STT_500_Artim, "OCR_OUTSIDE_HUT_25"); problemlos einfügen können.



========[FALSCH]========

Mdl_SetVisualBody (self, "hum_body_naked0", 0, 1, "Hum_Head_Thief", 51, 2, STT_ARMOR_A);

//-------- inventory --------
EquipItem (self, STT_ARMOR_A);
EquipItem (self, ItMw_1H_Sword_Bastard_05);

========[RICHTIG]========

Mdl_SetVisualBody (self, "hum_body_naked0", 0, 1, "Hum_Head_Thief", 51, 2, STT_ARMOR_M);

//-------- inventory --------
EquipItem (self, STT_ARMOR_M);
EquipItem (self, ItMw_1H_Sword_Bastard_04);

=====

achso: Du mußt das spiel NEU starten, damit er eingefügt wird und processphysicalfirst anmachen.
18.04.2002, 14:14 #5
Althais
Beiträge: 31

@all

die items wurden von mir gemacht ... anscheinend erscheint der npc nicht, wenn er solche items equippt haben soll ...
18.04.2002, 14:22 #6
Sezer
Beiträge: 988

Hast du die Items auch schon mal ohne den NPC getestet?
18.04.2002, 15:03 #7
Althais
Beiträge: 31

ja, sie funktionieren. beim hero kann ich sie per create und equip hernehmen, auch per console kann ich sie einfügen.
18.04.2002, 15:36 #8
Malek
Beiträge: 6.225
Re: Lösung
quote:
Zitat von avatarr
Hättest Du auf mich gehört und im zSpy nachgesehen, wären Dir Fehlermeldungen betreffs Nichtvorhandensein von Rüstung und Schwert des NPC aufgefallen ;)

Ich hab den NPC in der startup mit Wld_InsertNpc (STT_500_Artim, "OCR_OUTSIDE_HUT_25"); problemlos einfügen können.



========[FALSCH]========

Mdl_SetVisualBody (self, "hum_body_naked0", 0, 1, "Hum_Head_Thief", 51, 2, STT_ARMOR_A);

//-------- inventory --------
EquipItem (self, STT_ARMOR_A);
EquipItem (self, ItMw_1H_Sword_Bastard_05);

========[RICHTIG]========

Mdl_SetVisualBody (self, "hum_body_naked0", 0, 1, "Hum_Head_Thief", 51, 2, STT_ARMOR_M);

//-------- inventory --------
EquipItem (self, STT_ARMOR_M);
EquipItem (self, ItMw_1H_Sword_Bastard_04);

=====



Nee nee.. auch DAS ist falsch:
EquipItem (self, STT_ARMOR_M);
Die Rüstung wird in den Visuals definiert, und nicht bei den Items!
19.04.2002, 11:24 #9
avatarr
Beiträge: 134

...recht haste.....

(und nen besseren Avatar haste auch...)
Seite 1 von 1  1