World of Gothic Archiv
> Editing Npc |
|
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: 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...) |
||
|