Text soll immer oben im Screen stehen
-
- Süßwasserpirat
- Beiträge: 258
- Registriert: 22.09.2002, 21:28
- Kontaktdaten:
AGS - Help - Help Contents (F1) - ASCII code table
27 Escape
So ein Zufall aber auch, dann brauchst du ja gar nichts ändern
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.
27 Escape
So ein Zufall aber auch, dann brauchst du ja gar nichts ändern

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.
-
- Süßwasserpirat
- Beiträge: 258
- Registriert: 22.09.2002, 21:28
- Kontaktdaten:
Tja, man lernt doch immer wieder was dazu.
Eben habe ich die WaitMouseKey-Funktion in der Hilfe entdeckt. Die scheint genau für diesen Fall geschaffen zu sein:
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.

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, "");
}
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.