World of Gothic Archiv > Editing
NPC erscheint nicht
Seite 1 von 1  1 
18.03.2004, 15:43 #1
König Rhobar II
Beiträge: 639
NPC erscheint nicht
Ich habe einen neuen NPC, sammt TA gemacht, und einen Dialog für ihn gescriptet. Nur leider ist der NPC nicht da, wenn ich das Spiel starte.
Der Tagesablauf ist in TA.d eingetragen und der NPC in startup.d.
Ich habe ein kleines Testlevel mit Waypoint gebaut, was auch einwandfrei funktioniert, nur der NPC ist nicht da.
Hab ich irgendwas falsch gemacht, oder vergessen?
Oder liegt es daran, dass ich nicht die normale World.zen verwende?
18.03.2004, 16:25 #2
HornOx
Beiträge: 1.458

Sowas sollte in startup.d stehn:
quote:
FUNC VOID STARTUP_DATEINAME_DEINER_WELT_OHNE_ENDUNG ()
{
Wld_InsertNpc (Instanzname_deines_NPCs ,"EIN_WP");
};
FUNC VOID INIT_DATEINAME_DEINER_WELT_OHNE_ENDUNG ()
{
B_InitMonsterAttitudes ();
B_InitGuildAttitudes ();
};
Ansonsten kannst du den NPC testweise mal per "insert" herbeicheaten und schauen ob er brav zu seinem WP läuft.
18.03.2004, 17:26 #3
König Rhobar II
Beiträge: 639

Ich hatte die zweite Hälfte davon nicht klappt aber immernoch nicht.
Ich kann den NPC zwar hercheaten, aber der Dialog funktioniert auch nicht. Er spricht mich an, aber keine Untertitel erscheinen, dann kann ich ihn ansprechen und hab auch eine Dialogoption, aber es kommt wieder nichts.
18.03.2004, 18:19 #4
Black Daemon
Beiträge: 218

quote:
ansprechen und hab auch eine Dialogoption

Dann werde die Ou`s nicht abgedatet sein. Musste im Spacer machen.
quote:
Tagesablauf ist in TA.d

Hast du einen neuen Zustand erstellt oder wash ahst du eingetragen?
quote:
Ich kann den NPC zwar hercheaten,

Das heist, dass der NPC selbst wohl ok ist. Es wird dann wohl an einem Falschen Wp im TA liegen. Dann wird er zwar insertet, ist aber durch die Vorrausbrechnung nicht da.
18.03.2004, 18:20 #5
HornOx
Beiträge: 1.458

quote:
Ich hatte die zweite Hälfte davon nicht
wenn du die wegläßt greifen dich feinliche NPCs nicht an.
quote:
klappt aber immernoch nicht.
Sagt zSpy irgendwas beim parsen der Skripte oder starten der welt? Poste mal die entsprechenden Skriptteile
quote:
Ich kann den NPC zwar hercheaten, aber der Dialog funktioniert auch nicht. Er spricht mich an, aber keine Untertitel erscheinen, dann kann ich ihn ansprechen und hab auch eine Dialogoption, aber es kommt wieder nichts.
Hast du dein Script per Spacer geparst und die Outputunits neu erzeugt?
19.03.2004, 13:14 #6
König Rhobar II
Beiträge: 639

Ich hab die Outputunits geupdatet, hat sich aber nichts geändert.
zSpy sagt gar nichts.
Den Tagesablauf habe ich aus dem Scripttutorial kopiert, und ein paar Kleinigkeiten geändert:
code\:
func void ZS_BalinWait ()
{
PrintDebugNpc (PD_TA_FRAME, "ZS_BalinWait");
// 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_BalinWait_Loop ()
{
PrintDebugNpc (PD_TA_LOOP, "ZS_BalinWait_Loop"); // s.o.
AI_GotoWP (self, self.wp); // Gehe zum Tagesablaufstart
AI_PlayAni(self, "t_pray_random");
AI_Wait (self, 100); // 100 Sekunden warten, bis die Loop beendet wird
};

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



In TA.d steht:
code\:
func void TA_BalinWait (var int start_h, var int start_m, var int stop_h,
var int stop_m, VAR string waypoint)
{TA_Min (self, start_h,start_m, stop_h, stop_m, ZS_BalinWait, waypoint);};


in startup.d:
code\:
func VOID STARTUP_BKloster2 ()
{
Wld_InsertNpc (Kdf_2001_Balin,"Waypoint_test_01");
};
func VOID INIT_BKloster2 ()
{
B_InitMonsterAttitudes ();
B_InitGuildAttitudes ();
};


und im Script des NPC:
code\:
func void Rtn_Start_2001 ()
{
TA_BalinWait (0,00,13,00, "Waypoint_test_01");
TA_BalinWait (13,00,0,00, "Waypoint_test_01");

};
19.03.2004, 17:40 #7
Black Daemon
Beiträge: 218

quote:

FUNC VOID STARTUP_WORLD ()
{
Startup_Sub_Newcamp ();
Startup_Sub_Oldcamp ();
Startup_Sub_Psicamp ();
Startup_Sub_Demontower ();
Startup_Sub_Freeminecamp ();
Startup_Sub_Surface ();
STARTUP_BKloster2 ();

//die folgende Zeile gilt nur, bis die INIT_...-Funktionen von Ulf unterstützt werden.
INIT_WORLD ();
PlayVideo ("INTRO.BIK");
};


Das hier ist die eigentlich Startup Funktion, die auch den Namen der Welt beinhaltet. Hier werden die ganzen Sub Funktionen gestartet und dort muss deine auch eingetragen werden. HAb das oben mal gemacht.


quote:

func VOID INIT_BKloster2 ()
{
B_InitMonsterAttitudes ();
B_InitGuildAttitudes ();
};


Da du ja scheinbar nur etwas in Gothic veränderst kannst du das weglassen, das es eh schon einmal ausgeführt wird.
20.03.2004, 12:52 #8
König Rhobar II
Beiträge: 639

Jetzt geht gar nix mehr. Weder Gothic noch Spacer, nichts funktioniert mehr, nur noch Fehlermeldungen.

P.S. Das mit dem Dialog hat sich erledigt, der lief gestern.

edit: Ok, läuft wieder. hab starup.d durch die unveränderte ersetzt.
Der NPC ist allerdings immernoch nicht da
22.03.2004, 15:02 #9
König Rhobar II
Beiträge: 639

Mir ist aufgefallen, dass der NPC wenn ich ihn reincheate sofort in den walkmode wechselt und sich in Pfeilrichtung seines Waypoints ausrichtet(er geht aber nicht hin).
Also muss der Ta zumindest zum Teil funktionieren.

Was muss ich denn jetzt genau in starup.d reinschreiben, damit der NPC auch von Anfang an da ist? (Hat bisher noch nicht geklappt)
Und was kann ich machen, damit der NPC auch das macht, was er soll? (AI_PlayAni(self, "t_pray_random");)
22.03.2004, 15:10 #10
Neely
Beiträge: 133

Hast du mal probiert eine vorgefertigte TA zu benutzen? Dann siehst du immerhin ob deine selbstgeschriebene TA nicht funktioniert oder ob das Problem woanders liegt.
22.03.2004, 17:05 #11
König Rhobar II
Beiträge: 639

ich habs auch schon mit anderen TAs probiert und es ist immer das selbe. Er wechselt in den walkmode, geht NICHT zu seinem Waypoint, richtet sich aber trotzdem danach aus. Dann passiert gar nichts.

edit: TA_PracticeSword funktioniert, aber der Typ will einfach nicht zu seinem Waypoint
22.03.2004, 17:37 #12
JonathanSalznik
Beiträge: 22

Hast du überprüft, ob dein Waynet zusammenhängend ist? Also ob es vom jedem Wegpunkt zu jedem anderen Wegpunkt einen Pfad gibt?

Wenn einzelne Wegpunkte keine Verbindungen haben oder das Waynet in nicht miteinander verbundenen Komponenten zerfällt, finden die NSC unter Umständen den Weg zum Ziel-WP nicht mehr und bleiben einfach stehen.

Die Wegpunkte müssen auch so dicht über die gesamte Welt verteilt sein, dass der NSC immer einen WP in seiner unmittelbaren Umgebung hat.
22.03.2004, 18:40 #13
Black Daemon
Beiträge: 218

Also denke du hast immernoch das Problem, dass der Npc nicht automatisch spawnt und du ihn deshalb per cheat einfügst. Also bei mir hat der aber bis jetzt, wenn ich ihn per cheat eingefügt habe auch nie seine wp aufgesucht, daher glaube ich, dass das ganz normal ist.
Jetzt ist die Frage, ob der fehler in deiner Insertfunktion liegt, oder ob er sie gar nicht ausführt. Kannst es ja mal mit z.b. nen scavenger probieren oder las dem hero nen item geben. Noch nen Tipp, ich würde den Waypoint groß schreiben, daran lags bei mir auch mal obwohl das eigentlich komisch ist.
Seite 1 von 1  1