Kann mir irgendjemand sagen wie ich eine in einer
GlobalInt gespeicherte Zahl auf dem im Spiel als Text
ausgeben kann?
Bernard13
Zum Beispiel so:
player.Say ("%d ist die Zahl.", GetGlobalInt (2));
Ich hoffe, dass das deine Frage beantwortet. ;)
Kann ich das auch so ausgeben ,dass es kein
Charakter sagt, also dass nur eine reine Textmeldung erscheint?
Und eine dumme Fragen hab ich noch.
Wie kann ich folgenden Term als script schreiben?:
GlobalInt (29) * 10 + x
Bei General settings gibt es eine Einstellung "always display text as speech".
Wenn da ein Haken drin ist, werden alle Display-Befehle vom Hauptcharakter gesprochen. Mach einfach den Haken raus.
Der Term kann direkt so ins Skript.
Display("%d", GlobalInt(29)*10+x);
Übrigens: nicht alle Befehle für Strings können das so verarbeiten.
Wenn Du z.B. den Namen eines InventarItems ändern willst, geht das nicht.
iBall.Name="%d", GetGlobalInt(29);
ergibt logischerweise einen parse error.
In diesem Fall musst Du den Befehl
String.Format verwenden:
iBall.Name=String.Format("%d", GetGlobalInt(29));
So funktioniert das leider nicht.
Ich brauche einen einzelnen Befehl für:
GlobalInt (29) *10
und einen einzelnen Befehl für:
GlobalInt (29) +x
Danke für die Antwort
Bernard13
Doch, das funktioniert.
Es gibt nicht direkt einen Befehl, sondern Du schreibst den Term einfach statt einer Zahl ins Skript.
Entscheidend ist halt, was Du mit dem Ergebnis der Rechnung machen willst.
Angenommen, Du willst es in GlobalInt Nr. 30 speichern:
SetGlobalInt(30, GetGlobalInt(29)*10+x);
Das x muss natürlich eine vorhandene Variable sein, sonst gibts ne Fehlermeldung.
Oder Du speicherst das Ergebnis in y:
int y;
y=GetGlobalInt(29)*10+x;
Es würde helfen, wenn ich wüsste, was genau Du vorhast.
Ich will eine Telefontastatur erzeugen.
Ich hab alle Tasten als einen Hotspot angamalt.
Wie in deinem Toturial.
Nun speichert x schon immer die richtige Zahl.
Jetzt will ich die ganze gewählte Telefonnummer
in einer GlobalInt speichern und dann als Textmeldung
ausgeben.
Dazu wollte ich folgendes machen:
GlobalInt (29) *10 +x
und dann irgendwie ausgeben.
Reicht dir das?
für deine zwecke eignet sich eine globale string-variable besser
einfach den string mit einem leerstring "" initialisieren und bei den tasten dann die zahl als zeichen hinten an den string anhängen (ich glaub die funktion heisst string.Append oder so)
bei der integer-rechnerei hast du außerdem ein problem, wenn als erste nummer eine 0 gewählt wird ;)
Reicht nicht. Wie sieht dein Code bisher aus?
Soll die Telefonnummer nicht schon während des Wählens sichtbar sein?
Hi,
ich hab wieder mal ne Frage. In fast allen Epi's ist doch ein Abspann enthalten, der von oben nach unten durchläuft. Wie erstell ich so was?
Und noch ne Frage: Wie funktioniert der Befehl AnimateObjekt gednau???
Danke für eure Antworten.
Tschü Bernard13
Abspann:
Es gibt mehrere Möglichkeiten, Text auf den Bildschirm zu bringen: Overlays, Labels, RawPrint, Objekte.
Eine ganz simple Methode wäre, einen Raum mit 320x1000 zu machen, den kompletten Abspann im Grafikprogramm draufzutexten und dann den Raum durchscrollen zu lassen.
Die andere Methode:
-Jede Textzeile bekommt eine y-Koordinate (das geht mit arrays) von z.B. 200-900
-eine Schleife zieht bei jedem Durchgang von allen y-Koordinaten 1 ab, prüft, ob die Koordinate zwischen 0 und 200 liegt und wenn ja, zeigt den Text an der Koordinate zentriert an.
#define ZEILEN 20
int texty[ZEILEN];
String text[ZEILEN];
function Abspann() {
texty[0]=100; text[0]="Maniac Mansion Mania Episode X: bla bla";
texty[1]=150; text[1]="von Bernard13";
texty[2]=200; text[2]="...";
...
int c, x, y;
while(texty[ZEILEN-1]>-12) { // letzte Zeile vom Bildschirm verschwunden?
RawDrawSetColorRGB(1, 1, 1); // schwarz
RawDrawRectangle(0, 0, 319, 199); // Bildschirm löschen
c=0;
while(c<ZEILEN) { // alle Zeilen durchzählen
texty[c]--; // Koordinate verkleinern
y=texty[c];
if (y>-12 && y<200) { // Zeile sichtbar?
x=160-GetTextWidth(text[c], 1);
RawDrawSetColorRGB(255, 255, 255); // weiß
RawPrint(x, y, text[c]); // Zeile ausgeben
}
c++;
}
Wait(1);
}
}
Aus dem Gedächtnis geschrieben, also ungetestet. Wenn ein Befehl nicht erkannt wird, bitte erst die Hilfedatei bemühen, OK? ;)
Welches Toturial?Ist das ein deutsches?Wo finde ich das??
Wenn du die Hilfedatei meinst: Nein, die ist auf Englisch(liegt übrigens im AGS-Verzeichnis).
Es gibt zwar eine deutsche Übersetzung, aber die ist:
1. Nicht Vollständig.
2. Auf dem Stand von AGS 2.7.
Ich meine das Toturial für das eingabefeld von dem BERnard13 sprach(oder eher schrieb ;))
Bei meinen Tutorial wird erklärt, wie man mit AGS eine Charakterauswahl wie die am Anfang von Maniac Mansion macht.
Das Tutorial findest Du hier:
http://home.arcor.de/choala/chartut/