Text soll immer oben im Screen stehen

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Sharalamude

Beitrag von Sharalamude »

und wenn man mit der maus überspringen soll ?!
a-v-o
Süßwasserpirat
Süßwasserpirat
Beiträge: 258
Registriert: 22.09.2002, 21:28
Kontaktdaten:

Beitrag von a-v-o »

AGS - Help - Help Contents (F1) - ASCII code table
27 Escape

So ein Zufall aber auch, dann brauchst du ja gar nichts ändern :D

Abbrechen mit Maus:
Das folgende Script funktioniert im Normalfall.

function MyDisplaySpeech (int charid, string message)
{
StartCutscene (5);
SetCharacterView (charid, character [charid].talkview + 1);
AnimateCharacter (charid, character [charid].loop, 3, 1);
SetLabelColor (STATUSLINE, 0, character [charid].talkcolor);
SetLabelText (STATUSLINE, 0, message);
int waittime = strlen (message) * 10;
while (waittime > 0)
{
Wait (1);
waittime--;
}
ReleaseCharacterView (charid);
SetLabelText (STATUSLINE, 0, "");
EndCutscene ();
}

Ausnahme:
In Scriptbereichen, die selbst die Befehle StartCutscene/EndCutscene verwenden (bspw. Intros), kann diese Funktion nicht verwendet werden. Für diesen Fall einfach eine Kopie dieser Funktion mit einem neuen Namen versehen und die beiden Cutscene-Zeilen entfernen.

Hinweis:
Die bisherige Tastaturabfrage mit IsKeyPressed ist in diesem Script nicht nötig.
a-v-o
Süßwasserpirat
Süßwasserpirat
Beiträge: 258
Registriert: 22.09.2002, 21:28
Kontaktdaten:

Beitrag von a-v-o »

Tja, man lernt doch immer wieder was dazu. :D
Eben habe ich die WaitMouseKey-Funktion in der Hilfe entdeckt. Die scheint genau für diesen Fall geschaffen zu sein:

Code: Alles auswählen

function MyDisplaySpeech (int charid, string message) 
{ 
  SetCharacterView (charid, character [charid].talkview + 1); 
  AnimateCharacter (charid, character [charid].loop, 3, 1); 
  SetLabelColor (STATUSLINE, 0, character [charid].talkcolor); 
  SetLabelText (STATUSLINE, 0, message); 
  WaitMouseKey (strlen (message) * 10); 
  ReleaseCharacterView (charid); 
  SetLabelText (STATUSLINE, 0, ""); 
}
Hinter WaitMouseKey schreibst du deine Formel für die Wartezeit.

Im Nachhinein weiss ich eh nicht, warum ich nicht ein einfaches
Wait (strlen (message) * 10);
sondern diese unnötige Schleife verwendet habe.

Die obige Funktion sollte nun auch Cutscene-sicher sein.
Antworten