Maniac Mansion Mania Forum

MMM-Werkzeugkiste => Technik => Newbies => Thema gestartet von: Bernard13 am 25. Oktober 2007, 21:08:30

Titel: Hilfe für Bernard13
Beitrag von: Bernard13 am 25. Oktober 2007, 21:08:30
Kann mir irgendjemand sagen wie ich eine in einer
GlobalInt gespeicherte Zahl auf dem im Spiel als Text
ausgeben kann?

Bernard13
Titel: Re: Hilfe für Bernard13
Beitrag von: Timer am 25. Oktober 2007, 21:41:31
Zum Beispiel so:

player.Say ("%d ist die Zahl.", GetGlobalInt (2));
Ich hoffe, dass das deine Frage beantwortet. ;)
Titel: Re: Hilfe für Bernard13
Beitrag von: Bernard13 am 26. Oktober 2007, 16:10:03
Kann ich das auch so ausgeben ,dass es kein
Charakter sagt, also dass nur eine reine Textmeldung erscheint?
Titel: Re: Hilfe für Bernard13
Beitrag von: Bernard13 am 26. Oktober 2007, 16:17:14
Und eine dumme Fragen hab ich noch.

Wie kann ich folgenden Term als script schreiben?:

GlobalInt (29) * 10 + x
Titel: Re: Hilfe für Bernard13
Beitrag von: KhrisMUC am 26. Oktober 2007, 16:24:47
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));
Titel: Re: Hilfe für Bernard13
Beitrag von: Bernard13 am 28. Oktober 2007, 14:05:08
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
Titel: Re: Hilfe für Bernard13
Beitrag von: KhrisMUC am 28. Oktober 2007, 17:03:47
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.
Titel: Re: Hilfe für Bernard13
Beitrag von: Bernard13 am 29. Oktober 2007, 11:20:33
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?
Titel: Re: Hilfe für Bernard13
Beitrag von: Bòógieman am 29. Oktober 2007, 13:00:44
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  ;)
Titel: Re: Hilfe für Bernard13
Beitrag von: KhrisMUC am 29. Oktober 2007, 14:30:05
Reicht nicht. Wie sieht dein Code bisher aus?
Soll die Telefonnummer nicht schon während des Wählens sichtbar sein?
Titel: Re: Hilfe für Bernard13
Beitrag von: Bernard13 am 01. Dezember 2007, 09:19:27
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
Titel: Re: Hilfe für Bernard13
Beitrag von: KhrisMUC am 01. Dezember 2007, 16:47:19
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? ;)
Titel: Re: Hilfe für Bernard13
Beitrag von: NsMn am 17. Februar 2008, 14:44:16
Welches Toturial?Ist das ein deutsches?Wo finde ich das??
Titel: Re: Hilfe für Bernard13
Beitrag von: Cone Arex am 17. Februar 2008, 20:30:47
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.
Titel: Re: Hilfe für Bernard13
Beitrag von: NsMn am 19. Februar 2008, 16:19:13
Ich meine das Toturial für das eingabefeld von dem BERnard13 sprach(oder eher schrieb ;))
Titel: Re: Hilfe für Bernard13
Beitrag von: KhrisMUC am 21. Februar 2008, 19:25:12
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/