World of Gothic Archiv > Editing
Held in den Normalzustand setzen
Seite 1 von 1  1 
10.07.2003, 21:46 #1
Cool Moe Di
Beiträge: 120
Held in den Normalzustand setzen
Hi,

also ich habe beim Scripten vollgendes Problem: Wenn ich z.B. den Helden in einer Funktion mit

AI_Output (self, self, "DIALOG_15_00"); //Ich führe einen Monolog

sprechen lasse, funktioniert das wunderbar. Beim zweiten Mal weigert er sich dann aber, erneut zu sprechen. Und jetzt kommt mein Problem: Wenn ich jetzt den Helden mit Hilfe des Befehls

AI_StandUp (hero);

wieder in den Normalzustand setzte, kann ich den Helden zwar wieder Monologe führen lassen, aber dafür ist er für kurze Zeit unkontrollierbar, d.h. er bleibt in seinem Zustand kurz hängen und der Spieler hat keine Einflussmöglichkeit. Rennt der Held also gerade auf einen Abhang zu, so rennt er einfach hinein, ohne das man ihn aufhalten kann.

Und nun zu meiner Frage: Gibt es eine Alternative zu AI_StandUp? Oder gibt es einen Befehl, mit dem ich dem Spieler sofort die Kontrolle zurück geben kann?

ciao
Moe
10.07.2003, 22:13 #2
Highpower
Beiträge: 193

Wieso "self,self" soll dein Held Selbstgespräche führen?

Und wieso AI_StandUp? Sitzt dein Held?

Sonst wär dein Skript nähmlich voller Fehler.

Schick doch bitte ne ausführlichere Beschreibung davon was du machen willst. Sonst kann zumindest ich dir wenig helfen. :(
10.07.2003, 22:25 #3
Auron_X
Beiträge: 929

naja, self,self weil er nen Monolog (Selbstgespräch) führt... aber ich denke er wollte das Standup verwenden um den Helden immer wieder aus der (wahrscheinlich) fehlgeschlagenen Animation (er weiß wohl net wie er sich selbst anschauen soll) herrauszuholen:

code\:

FUNC VOID AI_StandUp (VAR C_NPC self) {};
// - Ist der Nsc in einem Animatinsstate, wird die passende Rücktransition abgespielt.
// - Benutzt der NSC gerade ein MOBSI, poppt er ins stehen.



Tja, aber so recht zu helfen weiß ich dir auch net... aber ich denke B_Say könnte bestimmt ne Notlösung für nen kleineren Monolog sein... obwohl ich mir jetzt net sicher bin ob das so einfach zu handhaben ist...
11.07.2003, 14:47 #4
Maharreshi
Beiträge: 82

Dialog beenden und den Spieler wieder steuerbar machen geht doch normalerweise mit

AI_StopProcessInfos(self),

oder?
11.07.2003, 17:33 #5
Cool Moe Di
Beiträge: 120

@Highpower: Der Held soll Selbstgespräche führen, um dem Spieler ein wenig auf die Sprünge zu helfen (nur hat man dazu nicht immer einen HilfsNpc parat) und um am Anfang eine kleine Einführung zu geben (aber das löse ich zur Zeit mit nem rumstehenden NPC).
AI_StandUp ist bisher die einzige Funktion, die ich bisher gefunden habe, die den Helden in den Normalzustand zurücksetzt. Aber auch wenn man den Helden nachdem er in der Wildnis geschlafen hat, wieder aufstehen lässt, so ist er mit AI_StandUp kurz nicht kontrollierbar (aber anders kann er nicht überall von alleine aufstehen)...was bei einem Monsterangriff fatal enden kann, aber irgendwie muss man ja das campen bestrafen...
Also kurz und knapp: Ich suche eine Möglichkeit, die den Helden schnell in den Normalzustand zurückversetzt.

@Auron_X: Danke, ich werde das B_Say ausprobieren. Wobei ja alles außer weitere Selbstgespräche funktioniert.

@Maharreshi: Das klappt leider nicht, wenn man keinen "richtigen" Dialog führt, sondern den Helden nur sprechen lassen will. Hab ich nämlich als erstes ausprobiert.
11.07.2003, 19:17 #6
Highpower
Beiträge: 193

Warum kann ein Spieler nicht überall wieder aufstehen?
Mit der Steuerung kann man doch immer Aufstehen. Aus Betten steht man doch auch auf und eiert nicht 5 Minuten in der Gegend rum.
Hast du was produziert daß dein Player immer und überall schlafen kann wie bei Morrowind?

Ich hab die Skripten dazu mal teilweise gewälzt aber noch nix gefunden das hilfreich wäre.

Und ich kanns nur wiederholen: Wenn man sich ein Bett sucht und schläft dann kann man auch immer aufstehen. Genauso ists mit den Pfeifen und Stühlen. Ich wüßte nicht warum man nicht aufstehen können sollte aber vielleicht steh ich auch übelst auf dem Schlauch und nerv nur... :(
11.07.2003, 21:03 #7
Auron_X
Beiträge: 929

Ne, aber das spiel "startet" nach dem schlafen schon aber der Held reagiert halt erst nach ca. ner Sekunde....
das gäbe in der Wildnis Probleme....

Vielleicht kann dir ja nen anderer mehr helfen...


CyA
12.07.2003, 18:08 #8
Cool Moe Di
Beiträge: 120

Also der Spieler kann in unserem Mod Diccuric einen Schlafsack bekommmen, mit dem er in der Wildnis übernachten kann. Wenn sich der Spieler aber auf eine schräge Fläche legt, passiert es manchmal, dass man nicht mehr aufstehen kann (ohne AI_StandUp). Da das Spiel aber zu leicht wird, wenn man überall die Energie wieder damit auffüllen kann, habe ich es eingebaut, dass man von Tieren überfallen werden kann...und wenn diese dann angreifen und der Held sich noch nicht wehren kann, ist das natürlich blöd...
18.07.2003, 13:55 #9
dark-base
Beiträge: 26

Ich glaube diese Funktion ist die Lösung deines Problem:

// B_FullStop
// ==========
// Unterbricht jegliche Animation des NSCs. Hier wurde früher
// AI_Standup() verwendet. Dieser Befehl ist in einigen
// Situationen jedoch zu träge
// und wurde durch AI_StandUpQuick() ersetzt
//////////////////////////////////////////////////////////////////////

func void B_FullStop(var C_NPC npc)
{
PrintDebugNpc (PD_ZS_DETAIL, "B_FullStop");

Npc_ClearAIQueue (npc);
AI_StandUpQuick (npc);
};

Du kannst für dein Problem entweder diese Funktion benutzen oder AI_StandUpQuick(). Du findest die Funktion unter work/data/scripst/content/AI/AI_Intern und dort B_Functions.d
19.07.2003, 01:40 #10
Cool Moe Di
Beiträge: 120

@dark-base: Danke! Ich war zwar dank Arne B. schon auf den richtigen Weg gekommen, aber ich habs verpennt, das hier zu posten. Also die Lösung geht mit AI_StandUpQuick und/oder AI_OutputSVM_Overlay, je nachdem, was man machen will. Dagegen führt B_FullStop bei mir dazu, dass ich das Menü nicht mehr aufrufen kann...
Was mir aufgefallen ist, ist dass Funktionen mit B am Anfang beim Hero ziemlich gerne Probs machen (z.B. Menü nicht mehr aufrufbar, nichts passiert), dagegen sind AI Funktionen relativ harmlos, da der hero (bei mir) höchstens nicht mehr sprechen kann...
19.07.2003, 10:15 #11
dark-base
Beiträge: 26

Ich hätte nicht gedacht ,dass die Funktion B_Fullstop solche Probleme machen kann, schön zu wissen. Aber auch, dass es jetzt klappt.

PS: Ich bin Arne B. :)
Seite 1 von 1  1