Dialoge und der wait Befehl

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Taddels
Komplettlösungsnutzer
Komplettlösungsnutzer
Beiträge: 15
Registriert: 21.03.2008, 20:53

Dialoge und der wait Befehl

Beitrag von Taddels »

Huhu
ich habe derzeit ein AGS Problem zu dem ich hier oder im offiziellem AGS Forum bisher keine Lösung finden konnte.
Wahrscheinlich ist es zu simple, aber logisch nachvollziehbar ist der Fehler nicht.

Und zwar benutze ich die Dialog Funktion, möchte aber die Charaktere zwischen den Dialogen bewegen oder anders interagieren lassen.
Als Beispiel habe ich es so gemacht:

Code: Alles auswählen

MoveCharacterBlocking(EGO,168, 110,0);
while (character[EGO].walking) Wait(1);

RunDialog(1);

RunDialog(2);

MoveCharacterBlocking(EGO,126, 119,0);
RunDialog(3);
Der EGO läuft in den raum herrein, spricht Dialog 1 und 2 und soll dann zur neuen Position laufen bevor Dialog 3 abgespielt wird. Nur leider macht der Charakter jetzt erst die ganzen Bewegungen und spricht erst dann die Dialoge ab.

Wenn ich hinter RunDialog(2); einen Wait Befehl mache ändert das auch nichts.
Habe schon geschaut ob es sowas wie while (RunDialog(2)) Wait(1); gibt, aber nichts gefunden.
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Re: Dialoge und der wait Befehl

Beitrag von KhrisMUC »

Die Befehle, die Du benutzt, sind alle veraltet.

Was mich interessieren würde: kann der Spieler in den Dialogen 1 u. 2 wirklich verschiedene Antworten auswählen?
Mein Verdacht ist nämlich, dass Du den Charakter nur ein paar Sätze sagen lassen willst.

Zu deinem Code: die while-Zeile ist überflüssig, da Blocking sowieso wartet, bis der Charakter am Ziel ist.

Dialoge werden immer erst am Ende der Funktion abgespielt, egal, was davor steht (siehe Handbuch).
Deswegen werden Deine Befehle in dieser Reihenfolge aufgerufen:

Code: Alles auswählen

MoveCharacterBlocking(EGO,168, 110,0);
MoveCharacterBlocking(EGO,126, 119,0);

RunDialog(1);
RunDialog(2);
RunDialog(3);
Falls Du ein paar Standard-Befehle innerhalb eines Dialogs aufrufen willst, geschieht das mit dem Dialog-Befehl "run-script X" (siehe Handbuch).

Wenn Du noch AGS Version 2.X benutzt, gibt es einen einfachen Trick, um Dialoge "mittendrin" auszuführen:
Du fügst dem Event einfach zwei RunScript-actions hinzu und schreibst alle Befehle, die nach dem Dialog aufgerufen werden sollen, in die zweite Funktion.
Use gopher repellent on funny little man
Taddels
Komplettlösungsnutzer
Komplettlösungsnutzer
Beiträge: 15
Registriert: 21.03.2008, 20:53

Re: Dialoge und der wait Befehl

Beitrag von Taddels »

Ah vielen dank, ich habe es jetzt über die run script x funktion gelöst.

Code: Alles auswählen

function dialog_request (int param) 
{
   if (param == 1) {
MoveCharacterBlocking(EGO,126, 119,0);
}
}
Taddels
Komplettlösungsnutzer
Komplettlösungsnutzer
Beiträge: 15
Registriert: 21.03.2008, 20:53

Re: Dialoge und der wait Befehl

Beitrag von Taddels »

Beim designen der Dialoge habe ich noch ein Problem bei dem ich derzeit nicht weiter komme.

Ist es möglich den gesprochenen Text überkopf da zu stellen?
Habe hier und im offiziellen Forum gesucht, aber leider nichts gefunden. An Scriptbefehlen habe ich nur eine Option gefunden die das Komplette Bild umdreht.
Ich hoffe trotzdem das es dafür einen script Befehl gibt und ich nicht extra einen neuen Font erstellen muss.
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Re: Dialoge und der wait Befehl

Beitrag von KhrisMUC »

Wenn ich Dich richtig verstehe, musst Du nur in den General settings den SpeechStyle auf LucasArtsStyle setzen.
Use gopher repellent on funny little man
Taddels
Komplettlösungsnutzer
Komplettlösungsnutzer
Beiträge: 15
Registriert: 21.03.2008, 20:53

Re: Dialoge und der wait Befehl

Beitrag von Taddels »

Ich benutze sowieso den LucasArtsStyle.
Aber was ich möchte ist den gesprochenen Text als optischen Gang auf den Kopf stellen, halt ähnlich wie die FlipScreen(1); Funktion.
Ja in 2.72.
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Re: Dialoge und der wait Befehl

Beitrag von KhrisMUC »

Achso, bei "überkopf" dachte ich an "über Kopf", nicht "auf dem Kopf".

Das ist schon möglich, erfordert aber ein bisschen Arbeit (es gibt keine eingebaute Funktion).
Du müsstest den Text mit RawPrint auf den Screen schreiben, als DynamicSprite ausschneiden, den Background wieder herstellen, das DynamicSprite spiegeln, die Position berechnen und es anzeigen.
Use gopher repellent on funny little man
Antworten