World of Gothic Archiv > Editing
NPC will sich nicht wegbewegen...
Seite 1 von 1  1 
08.10.2003, 19:10 #1
Makador
Beiträge: 431
NPC will sich nicht wegbewegen...
Ich wollte einen NPC einbaun, der mit dem Hero zusammen zu einem anderen Waypoint rennt. Die Skripts habe ich mir bei Gorn abgeguckt, aber irgendwie will er trotzdem nichts tun.

In der NPC.d steht folgendes:
code\:

func void Trollquest ()
{
TA_FollowPC (0,00,13,00, "Location_12_14");
TA_FollowPC (13,00,0,00, "Location_12_14");
};



Und am Ende des Dialoges hab ich folgendes eingefügt:
code\:

var C_NPC christian; christian = Hlp_GetNpc(Kj_2602_Christian);
Npc_ExchangeRoutine (Kj_2602_Christian, "Trollquest");
christian.aivar[AIV_PARTYMEMBER] = TRUE;
AI_Output(other,self,"DIA_Christian_Troll_06");//Lass uns losgehen!
AI_StopProcessInfos (self);

09.10.2003, 07:03 #2
Makador
Beiträge: 431

Hat den niemand eine Idee? :(
09.10.2003, 10:26 #3
Maharreshi
Beiträge: 82

Hm...

Versuch doch mal, ob es was bringt, wenn du den Namen Funktion "Trollquest" in diese Form bringst:

Rtn_ [Weil das ja eine Routine ist]

Trollquest [Name der Routine]

_2602 [ID des NPCs],

also "Rtn_Trollquest_2602".

Die Gothic-Engine ist (glaube ich) so angelegt, dass sie Funktionen nur als Routine eines NPCs erkennt, wenn sie in dieser Form benannt ist. Ansonsten ist die mit dem Befehl
"Npc_ExchangeRoutine(Kj_2602_Christian, "Trollquest");
aufgerufene Routine einfach nicht vorhanden und wird dementsprechend auch nicht gefunden.



Ach so, eine Frage habe ich noch...

Welchem NPC gehört eigentlich der Dialog?
09.10.2003, 11:02 #4
Makador
Beiträge: 431

Einem selbsterstelltem NPC ;) (Kj_2602_Christian)

Hm ich teste es mal, aber bei Gorn in der pcfighter.d stand auch nicht immer Rtn_ davor oder die id drin.
09.10.2003, 11:11 #5
Makador
Beiträge: 431

Nö ändert nix *verzweifel*
09.10.2003, 11:47 #6
Maharreshi
Beiträge: 82

Hast du ne andere PC_Fighter.d als ich???

Bei mir beginnt JEDE Routinenfunktion mit "Rtn_" und hört mit "_3" bzw. "_5" (für Gorn in der FM) auf...


-----------------------------------------
Wenn der Dialog dem NPC gehört, dem die Routine zugewiesen werden soll...

Versuch mal zusätzlich das (Die Funktion wie du sie hast ein bisschen verändert):

AI_Output(other,self,"DIA_Christian_Troll_06");//Lass uns losgehen!
self.aivar[AIV_PARTYMEMBER] = TRUE;
AI_StopProcessInfos (self);
Npc_ExchangeRoutine(self, "Trollquest");

Wenn's dann auch noch nicht funzt, wird's schwierig...
09.10.2003, 11:59 #7
Makador
Beiträge: 431

Jo mit den Sachen in der Pcfighter hab ich mich vertan, ich dachte es wäre anders... ich probier jetzt mal deinen neuen Vorschlag aus.
09.10.2003, 12:03 #8
Makador
Beiträge: 431

Das geht auch nicht... hm seh gerade was interessantes im Dialog von Gorn:

quote:
self.aivar[AIV_PARTYMEMBER] = TRUE;
AI_StopProcessInfos(self);
Npc_ExchangeRoutine(self, "RuinAbyss");



Hier wird eine Funktion aufgrufen, die nirgendwo in der NPC Datei vorhanden ist.
09.10.2003, 12:06 #9
NicoDE
Beiträge: 1.398
Re: NPC will sich nicht wegbewegen...
quote:
Zitat von Makador
[...] func void Trollquest() [...]
Wie Maharreshi schon schreib, muß sie Rtn_Trollquest_<npc.id> heißen.
quote:
Zitat von Makador
[...] Npc_ExchangeRoutine(Kj_2602_Christian, "Trollquest"); [...]
Npc_ExchangeRoutine() erwartet als ersten Parameter eine C_Npc-Variable, keine Instanzen-ID.

Zudem ist Hlp_GetNpc() nur sinnvoll, solange es nur einen Christian gibt. Ansonsten würde der erstbeste anfangen dem Spieler hinterherzulaufen (der Spieler geht sicher davon aus, daß der angesprochene mitgeht...).
Da in einem Dialog der NPC immer self und der Spieler immer other ist, bietet sich folgendes an...
code\:
//...
AI_Output(other, self, "DIA_Christian_Troll_06"); //Lass uns losgehen!
AI_StopProcessInfos(self);

Npc_ExchangeRoutine(self, "Trollquest");
self.aivar[AIV_PARTYMEMBER] = TRUE;

ps:
quote:
Zitat von Makador
[...] Hier wird eine Funktion aufgrufen, die nirgendwo in der NPC Datei vorhanden ist. [...]
Sie kann sich überall befinden (der Übersichtlichkeit halber sollten sie im NPC-Skript zu finden sein).


Gruß Nico
09.10.2003, 12:11 #10
Maharreshi
Beiträge: 82

quote:
Hier wird eine Funktion aufgrufen, die nirgendwo in der NPC Datei vorhanden ist.



Welche denn?
09.10.2003, 12:12 #11
Makador
Beiträge: 431

Ok danke geht nun. Hab den Fehler am Ende sogar selber gefunden:

Auch wenn die Funktion Rtn_Trollquest_2602 heißt darf man bei dem NPC Exchange Route nur dass hier schreiben.

Npc_ExchangeRoutine(self, "Trollquest");

Endlich kanns weiter gehen :)
09.10.2003, 12:19 #12
Maharreshi
Beiträge: 82

Na dann viel Spass weiterhin!;)
Seite 1 von 1  1