Autor Thema: Dialoge...ich packs nicht!  (Gelesen 3060 mal)

Champ

  • volljähriger Tentakel
  • *****
  • Beiträge: 501
  • Geschlecht: Männlich
  • Ohne Geschmacksverstärker!
    • Profil anzeigen
Dialoge...ich packs nicht!
« am: 06. September 2014, 20:49:50 »
Was für andere ein leichtes ist,ist für mich eine Meisterprüfung.
Ich habe (wohl nicht) überall gesucht und konnte nicht herausfinden,wie man einen Dialog erstellt.
Hier das Beispiel,Ed soll jemanden um einen gefallen bitten (sagen wir einfach mal Bernard),nachdem er sich selbst an dieser Sache versucht hat. (Sagen wir hier mal,Ed wollte eine Maschiene bedienen,aber war nicht schlau genug dafür,welches eine neue Dialog Option bei Bernard aktivierte)

Dazu würde ich gerne wissen:
-Wie eine Dialog Option eine weitere freischaltet
-Wie man mit einer Option einen weiteren Dialogoptionenzweig öffnet
-Wie man eine Dialog Option nach einmaligem benutzen sperrt

Ich weiß,einfachste AGS Frage der letzten 10 Jahre,aber deswegen poste ich ja auch im Newbie Forum.
Für den Halloween Streich wird Benard bezahlen!

Cone Arex

  • Mod
  • alter Tentakel
  • **
  • Beiträge: 2249
  • Geschlecht: Männlich
  • Skandal-Entwickler und Idiot
    • Profil anzeigen
    • Conequest
Re: Dialoge...ich packs nicht!
« Antwort #1 am: 06. September 2014, 22:06:37 »
Bei der Option "Show" das Häkchen wegmachen. Aktiviert wird dann vom Skript heraus mit:
[ags]Dialogname.SetOptionState(NummerDerZuAktivierendenOption, eOptionOn);[/ags]

Zitat
-Wie eine Dialog Option eine weitere freischaltet
Im Dialogskript mit
[ags]option-on Nummer[/ags]
Gilt aber nur im Dialogskript. Wenn du einem Room Script oder im Global Script bist, musst du wieder stattdessen wieder SetOptionState verwenden.

Zitat
Wie man mit einer Option einen weiteren Dialogoptionenzweig öffnet
Im Dialogskript
[ags]run-script Nummer[/ags]
Im Global Script sucht du nach der Funktion dialog_request und machst dann eine if-Abfrage rein:
[ags]if (param == Nummer)
{
dAndererDialog.Start();
}[/ags]
Gleiche Nummer wie im Dialogskript verwenden.

Zitat
-Wie man eine Dialog Option nach einmaligem benutzen sperrt
Wie oben, nur halt dann option-off statt option-on.


Folge mir auf Twitter und itch.io

Champ

  • volljähriger Tentakel
  • *****
  • Beiträge: 501
  • Geschlecht: Männlich
  • Ohne Geschmacksverstärker!
    • Profil anzeigen
Re: Dialoge...ich packs nicht!
« Antwort #2 am: 07. September 2014, 01:09:05 »
Zitat
Aktiviert wird dann vom Skript heraus mit
Aber es gibt so viele...welches Skript?

Zitat
Dialogskript
Das was?

Zitat
Room Script,Global Script
Äh...

Ich möchte nicht unhöflich oder sowas erscheinen,aber bei diesen ganzen Worten komme ich mir so...verloren vor...
Ok...fangen wir mal kleiner an,ich weiß nichtmal,wie man einen Dialog startet,oder wie der Befehl dazu heißt.
(und ich nutze AGS 2.72,hat einen bestimmten Grund)
Für den Halloween Streich wird Benard bezahlen!

Cone Arex

  • Mod
  • alter Tentakel
  • **
  • Beiträge: 2249
  • Geschlecht: Männlich
  • Skandal-Entwickler und Idiot
    • Profil anzeigen
    • Conequest
Re: Dialoge...ich packs nicht!
« Antwort #3 am: 07. September 2014, 11:43:45 »
Ich nehme jetzt als Beispiel das Bernard Starterpack für 2.72.

Einen Dialog startest du mit Dialogname.Start(). Dialogname ist dabei der Name, den im Feld Script Name eingegeben hast:

In diesem Beispiel wäre der korrekte Befehl also:
dBritney.Start();

"Show" sagt aus, ob die Option auswählbar ist, oder nicht. Wenn der Dialog jetzt beginnen würde, würden die beiden anderen Optionen nicht mehr angezeigt. (Und afaik wird die erste Option dann automatisch aufgeführt.)

Das Dialogskript ist das Skript, das sich öffnet wenn du bei den Dialogoptionen auf "Edit Script" klickt, also das hier:

Beim durchlesen sieht du denke ich, wie der Hase in diesem Skript läuft. option-off etc. erklären sich jetzt wahrscheinlich von alleine. Wichtig ist hier, dass die normalen Befehle wie player.Say nicht funktionieren. Dafür gibt es run-script Nummer. Diese verweist auf die Funktionen dialog_request(int param) im Global Script:

run-script 1 ruft also dialog_request(1) auf und führt den Block if (param == 1) aus. Hier funktioniert dann wieder alles normal. Hier kannst du dann auch einen Dialog aufrufen, wie z.B. ein dGreen. (dGreen.Start();)

Um eine Dialogoption in einem anderen Skript freizuschalten, z.B. im Raumskript wenn man einen Hotspot angesehen hat, nimmst du wie schon gesagt:
[ags]Dialogname.SetOptionState(NummerDerZuAktivierendenOption, eOptionOn);[/ags]
Oder in diesem konkreten Beispiel mit Britney:
[ags]dBritney.SetOptionState(2, eOptionOn);[/ags]
Aktiviert die zweite Option ("Kannst du unter dem ganzen Make-Up eigentlich atmen?").

Ich hoffe dass das diesmal verständlicher war.


Folge mir auf Twitter und itch.io

Champ

  • volljähriger Tentakel
  • *****
  • Beiträge: 501
  • Geschlecht: Männlich
  • Ohne Geschmacksverstärker!
    • Profil anzeigen
Re: Dialoge...ich packs nicht!
« Antwort #4 am: 07. September 2014, 15:07:51 »
Alles,bis auf den GlobalScript Teil habe ich verstanden,ich weiß einfach nicht was ich da eingeben soll.
Ich habe es mit "RunScript 2" versucht,habe am Global Skript rumgespielt,aber entweder kommt "unexpected (Zeichen)" oder " 'dialog_request' is already defined".
Für den Halloween Streich wird Benard bezahlen!

Cone Arex

  • Mod
  • alter Tentakel
  • **
  • Beiträge: 2249
  • Geschlecht: Männlich
  • Skandal-Entwickler und Idiot
    • Profil anzeigen
    • Conequest
Re: Dialoge...ich packs nicht!
« Antwort #5 am: 07. September 2014, 15:11:52 »
An der dialog_request-Funktion sollst du ja auch nicht rumspielen, sondern einen zusätzlichen Block darin einfügen. Also:
[ags]
function dialog_request(int param)
{
if (param == 1)
{
// Wird ausgeführt, wenn du run-script 1 aufrufst.
}
else if (param == 2)
{
// Wird ausgeführt, wenn du run-script 2 aufrufst.
}
}[/ags]

Das du das nur tun musst, wenn du im Dialog Dinge machen willst, wie Charaktere irgendwo hinlaufen lassen, Objekte einschalten etc. oder dergleichen ist aber schon klar?
« Letzte Änderung: 07. September 2014, 15:15:50 von ConeRX »


Folge mir auf Twitter und itch.io

Champ

  • volljähriger Tentakel
  • *****
  • Beiträge: 501
  • Geschlecht: Männlich
  • Ohne Geschmacksverstärker!
    • Profil anzeigen
Re: Dialoge...ich packs nicht!
« Antwort #6 am: 07. September 2014, 17:04:51 »
Danke,du hast mir sehr geholfen!
Für den Halloween Streich wird Benard bezahlen!

Cone Arex

  • Mod
  • alter Tentakel
  • **
  • Beiträge: 2249
  • Geschlecht: Männlich
  • Skandal-Entwickler und Idiot
    • Profil anzeigen
    • Conequest
Re: Dialoge...ich packs nicht!
« Antwort #7 am: 07. September 2014, 17:07:22 »
Kein Problem.


Folge mir auf Twitter und itch.io