PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Funktionen hintereinander abarbeiten



Lubo
29.01.2006, 20:24
Kann mir jemand erklären, warum die Anweisungen in Funktionen nicht wie in C++ ganz einfach hintereinander abgearbeitet werden? Ich will, dass ein NPC z.B. mit AI_GotoWP erst beginnt, wenn der Dialog abgeschlossen ist! Es soll einfach Stück für Stück die Funktion abgearbeitet werden, ich habe nämlich noch mehr Probleme damit! Wie kann man das erreichen?

Sektenspinner
29.01.2006, 21:26
Die Befehle werden alle der Reihe nach ausgeführt, ausnahmslos, auch wenn es manchmal anders scheinen mag.

Allerdings muss man unterscheiden zwischen zwei Typen von Funktionen:

1.) Gewöhnliche Funktionen:
PrintScreen, B_GivePlayerXP, LOG_CreateTopic, NPC_ClearAIQueue IntToFloat sind Funktionen, deren Wirkung noch vor dem nächsten Frame in Kraft tritt.

2.) AI-Funktionen
Die Befehle werden sofort in die AI_Queue des entsprechenden NPCs geschrieben und sind damit vorerst abgehakt. Dazu zählen u.a: AI_Output, AI_GotoWP, AI_PrintScreen, AI_StartState, AI_PlayAni
Ein NPC erledigt nun alle Befehle in seiner AI_Queue der Reihe nach, und zwar in der Reihenfolge, wie er sie erhalten hat.

@Topic: Ich verstehe dein Konkretes Problem nicht wirklich.

HunterDarkness
29.01.2006, 21:28
er meint das während man mit dem npc labert er sich schon zu dem waypoint begibt. denk ich zumindest

Sektenspinner
29.01.2006, 21:31
Ging in Gothic auch:

Auszug aus Diegos Dialog:

AI_Output (self ,other,"DIA_DiegoNW_KnowWhereEnemy_Yes_11_02"); //Warte einen Augenblick, ich bin sofort fertig.
AI_SetWalkmode (self, NPC_WALK);
AI_GotoWP (self,"NW_CITY_UPTOWN_HUT_01_01");
CreateInvItems (self,ItAR_Diego,1);
AI_EquipArmor (self,ItAr_Diego);
AI_Wait (self ,1);
AI_GotoWP (self,self.wp);Falls allerdings der Held etwas sagt und direkt danach der NPC weglaufen soll müsste man noch ein AI_Wait (self, 2); o.ä. einbauen. (oder dem NPC einen sehr kurzen Dialog geben, damit er aufjeden Fall die richtige Zeit wartet.

Lubo
29.01.2006, 22:54
An AI_Wait hatte ich auch schon gedacht, werde ich gleich mal ausprobieren. Das mit den zwei Arten von Funktionen, lässt sich das nicht irgendwie, ohne Änderungen an der Engine vorzunehmen :D, umgehen?

Ich meine dass das Ganze wirklich der Reihe nach ausgeführt wird und nicht die AI-Befehle ins Queue kommen oder so (geht wahrscheinlich ja sowieso ncith :D)?

Sorry dass ich mich undeutlich ausgedrückt hatte und schonmal danke für die Hilfe.


EDIT: Zum Beispiel wenn erst EIN NPC was sagen soll, und dann ein anderer wohin gehen soll, wird das gleichzeitig gemacht! Das soll schön der Reihe nach ablaufen!