Autor Thema: Script wird nicht in Reihenfolge abgespielt.  (Gelesen 3083 mal)

MiepyNoel

  • kleiner Tentakelsaugknopf
  • **
  • Beiträge: 42
  • Geschlecht: Männlich
  • Maniac, Ich. Mansion, Mein Haus, Mania, Ich leb da
    • Profil anzeigen
Script wird nicht in Reihenfolge abgespielt.
« am: 08. März 2013, 21:02:57 »
Das ist das Script:
[ags]  StartCutscene(eSkipESCOnly);
  player.Walk(220, 120, eNoBlock, eWalkableAreas);
  Wait(50);
  player.FaceDirection(eDirUp);
  Wait(5);
  dColtelli.Start();
  Wait(50);
  dColtelli2.Start();
  Wait(50);
  player.FaceDirection(eDirDown);
  player.Say("Das kann doch nicht sein...");
  cColtelli.Say("Wie gesagt; DOCH!");[/ags]
Was hab ich falsch gemacht?

Bòógieman

  • International anerkannter Superheld
  • Globaler Moderator
  • alter Tentakel
  • *****
  • Beiträge: 2654
  • Geschlecht: Männlich
  • Grün Tentakel = Running Sushi!
    • Profil anzeigen
Re: Script wird nicht in Reihenfolge abgespielt.
« Antwort #1 am: 09. März 2013, 11:18:29 »
1. es gibt kein EndCutscene
2. wenn ich mich recht erinnere, funktionieren dialoge nicht so ganz in einer cutscene, da diese benutzereingaben erwarten
ich glaube die werden dann erst nach der cutscene gestartet  :cl
Schlachtaman Vibrations, UHYEAH!!!
_________________________________

>>>> Ende der Kommunikation <<<<

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 988
    • Profil anzeigen
Re: Script wird nicht in Reihenfolge abgespielt.
« Antwort #2 am: 11. März 2013, 01:00:36 »
Um mal die Hilfedatei zu zitieren:
Zitat
NOTE: The conversation will not start immediately; instead, it will be run when the current script function finishes executing.

Gibt es in den Dialogen Auswahlmöglichkeiten? Oder benutzt Du die nur, um viel Text sprechen zu lassen (da es sich ja anscheinend um eine Cutscene handelt)?

Grundsätzlich kann man durchaus Skriptbefehle nach einem Dialog ausführen; die einfachste Möglichkeit ist, sie direkt in den Dialog zu schreiben (das geht, wenn man die Skriptbefehle einrückt).

Das hier:
[ags]player.Walk(220, 120, eNoBlock, eWalkableAreas);
  Wait(50);[/ags]
kann vermutlich durch dieses ersetzt werden:
[ags]player.Walk(220, 120, eBlock);[/ags]

MiepyNoel

  • kleiner Tentakelsaugknopf
  • **
  • Beiträge: 42
  • Geschlecht: Männlich
  • Maniac, Ich. Mansion, Mein Haus, Mania, Ich leb da
    • Profil anzeigen
Re: Script wird nicht in Reihenfolge abgespielt.
« Antwort #3 am: 20. März 2013, 20:28:27 »
Ich habe dieses Script zur Seite gelegt und habe wieder den Fehler.
Bsp.:
StartCutscene(eSkipESCOrRightButton);
cChara.Say("blabla");
dDialog1.Start();
cChara.Say("blabla"); //das da nach dem dDialog1. Wie?

Wie stoppe ich den die Cutscene dann das der Dialog mit Auswähl-Möglichkeiten anfangen kann und die Cutscene danach weiter geht?

Bòógieman

  • International anerkannter Superheld
  • Globaler Moderator
  • alter Tentakel
  • *****
  • Beiträge: 2654
  • Geschlecht: Männlich
  • Grün Tentakel = Running Sushi!
    • Profil anzeigen
Re: Script wird nicht in Reihenfolge abgespielt.
« Antwort #4 am: 20. März 2013, 20:34:41 »
mach zwei cutscenes draus

StartCutscene(eSkipESCOrRightButton);
cChara.Say("blabla");
EndCutscene();
dDialog1.Start();
StartCutscene(eSkipESCOrRightButton);
cChara.Say("blabla");
EndCutscene();
« Letzte Änderung: 20. März 2013, 21:42:42 von Bòógieman »
Schlachtaman Vibrations, UHYEAH!!!
_________________________________

>>>> Ende der Kommunikation <<<<

MiepyNoel

  • kleiner Tentakelsaugknopf
  • **
  • Beiträge: 42
  • Geschlecht: Männlich
  • Maniac, Ich. Mansion, Mein Haus, Mania, Ich leb da
    • Profil anzeigen
Re: Script wird nicht in Reihenfolge abgespielt.
« Antwort #5 am: 20. März 2013, 21:07:44 »
funktioniert nicht.
Es spielt immer noch den Dialog am End

Leider ein Spoiler zu einem neuen Spiel :/
Komplettes Skript:
Spoiler (hover to show)

Bòógieman

  • International anerkannter Superheld
  • Globaler Moderator
  • alter Tentakel
  • *****
  • Beiträge: 2654
  • Geschlecht: Männlich
  • Grün Tentakel = Running Sushi!
    • Profil anzeigen
Re: Script wird nicht in Reihenfolge abgespielt.
« Antwort #6 am: 20. März 2013, 21:41:08 »
Zitat von: AGS Hilfe
Start (dialog)
(Formerly known as global function RunDialog, which is now obsolete)

Dialog.Start()

Starts a conversation from the specified topic.
NOTE: The conversation will not start immediately; instead, it will be run when the current script function finishes executing.

If you use this command from within the dialog_request function, it will specify that the game should return to this new topic when the script finishes.

Example:

dMerchant.Start();

will start the conversation topic named dMerchant.

somit kannst du das so nicht machen
alles was nach dDialog1.Start() kommt muss also in eine andere script function
im dDialog1 kannst du
run-script 1 (siehe AGS-hilfe)
ausführen um einen weiteres script in
dialog_request (im global script)
auszuführen
dort kannst du param auf 1 überprüfen und dein restliches script einfügen

bei neueren AGS-versionen steht auch das von KhrisMUC bereits erwähnte direkt im dialog skripten zur verfügung
Grundsätzlich kann man durchaus Skriptbefehle nach einem Dialog ausführen; die einfachste Möglichkeit ist, sie direkt in den Dialog zu schreiben (das geht, wenn man die Skriptbefehle einrückt).

schau dir einfach mal die AGS-hilfe dazu an, da werden sie geholfen  ;)
Schlachtaman Vibrations, UHYEAH!!!
_________________________________

>>>> Ende der Kommunikation <<<<

Kiwa

  • volljähriger Tentakel
  • *****
  • Beiträge: 779
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Script wird nicht in Reihenfolge abgespielt.
« Antwort #7 am: 03. April 2013, 03:00:51 »
Also das mit dem Scriptbefehle ausführen in Dialogen funktioniert zwar aber es werden keine Objekte erkannt. Wenn man z.B. will das direkt nach dem Dialog eine Person z.B. eine Vase aus dem Raum mitnimmt dann kann der Befehl oVase.Visible = false nicht im Dialog ausgeführt werden (auch wenn er eingerückt ist).

AGS meldet dann oVase undefined token. AGS kennt im Dialog (und auch im Global Script) die Objekte nicht. run-Script 1 funktioniert auch nicht. AGS kennt den run Befehl nicht. Und wenn AGS dann trotzdem ins Global Script eine Funktion ausführen würde, so ist dort oVase immer noch unbekannt.
 
Die Frage ist nun, wie man sowas machen kann? In der AGS Hilfe habe ich dazu nichts gefunden. Dort habe ich nur Beispiele ohne Objekte gefunden.
Das Leben ist ein Adventure. Aber ohne Komplettlösung.

Für fast alles gibt es eine logische Erklärung. Für alles andere ein Placebo.

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 988
    • Profil anzeigen
Re: Script wird nicht in Reihenfolge abgespielt.
« Antwort #8 am: 03. April 2013, 15:29:45 »
Da Dialogskripte im globalen Kontext ausgeführt werden, kann sich AGS nicht darauf verlassen, dass gerade der richtige Raum geladen ist.

Du kannst aber den globalen object-Array nehmen:
[ags]  if (player.Room == 4) object[0].Visible = false;[/ags]

Kiwa

  • volljähriger Tentakel
  • *****
  • Beiträge: 779
  • Geschlecht: Männlich
    • Profil anzeigen
Re: Script wird nicht in Reihenfolge abgespielt.
« Antwort #9 am: 03. April 2013, 15:54:10 »
Das funktioniert, DANKE!

Hier noch ein Hinweis von mir:

[ags]if (player.Room == 4) object[0].Visible = false;[/ags]

Die Zahl in eckigen Klammern ist die Objekt-ID. Einfach das Objekt im Editor anklicken und dann steht unten rechts im Punkt "Entwürfe" die ID (blass gedruckt und leicht zu übersehen).
Das Leben ist ein Adventure. Aber ohne Komplettlösung.

Für fast alles gibt es eine logische Erklärung. Für alles andere ein Placebo.