"Hauptmenü"

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Da liest man einfach mal die Hilfedatei und findet dort den Befehl

Code: Alles auswählen

Character.ChangeRoom(int room_number, optional int x, optional int y)
Ahaaaaaaa! Koordinaten!
Jetzt ist es nur noch ein kleiner Schritt zu der Erkenntnis, dass man die aktuellen Koordinaten (player.x, player.y) beim Drücken der Esc-Taste speichert und den Charakter später mit

Code: Alles auswählen

player.ChangeRoom(player.PreviousRoom, x, y);
wieder genau dort hin schickt.
Benutzeravatar
TheRock
Rätselmeister
Rätselmeister
Beiträge: 2136
Registriert: 21.05.2006, 19:13
Wohnort: Berlin
Kontaktdaten:

Beitrag von TheRock »

Wie speichere ich die Position des Spielers?
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7308
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Beitrag von Fightmeyer »

Du könnets das so machen, wie Khrismuc es geschildert hat. Dazu deklarierst Du einfach zwei integer-Variablen und weißt denen dann die entsprechenden Koordinaten des Mauszeigers zu. Oder Du sparst Dir das und machst einfach einen zweiten Char, der die verkleinerte Version Deines Spielers ist.
Du hast Deinen einen Char zum spielen, der im Hauptmenuraum unsichtbar ist und einen zweiten, der für die Navigation im Hauptmenu verantwortlich ist.
Dann bleiben die Koordinaten beim Raumwechsel automatisch erhalten.

(Ich hoffe, ich hab jetzt ncihts falsches geschrieben, aber ich glaube, das müßte so hinhauen ... khrismuc???)
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Ja, so könnte man es auch machen, ist vielleicht sogar praktischer.

Mit Variablen geht es so:
global script

Code: Alles auswählen

int px;  // globale Variablen zum Speichern der Position
int py;
export px, py;

...

function on_key_press(int keycode) {
  ...
  if (keycode==27 && player.Room!=Raum mit Menü) { // Esc
    px=player.x;
    py=player.y;
    player.ChangeRoom(Raum mit Menü, ?, ?);
  }
  ...
}
script header:

Code: Alles auswählen

import int px;
import int py;
Und dann wie gesagt beim Betreten der Weiter-Region:

Code: Alles auswählen

player.ChangeRoom(player.PreviousRoom, px, py);
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7308
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Beitrag von Fightmeyer »

Wobei man dann allerdings noch das Problem hat, daß er mit hoher Wahrscheinlichkeit in eine andere Richtung guckt, als vorher, bedingt durch das Rumlaufen des MINI-Char im Menu.
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Dann speichert man halt noch player.Loop.
Benutzeravatar
TheRock
Rätselmeister
Rätselmeister
Beiträge: 2136
Registriert: 21.05.2006, 19:13
Wohnort: Berlin
Kontaktdaten:

Beitrag von TheRock »

Es ging viel einfacher, indem man zwei GlobalInts mit player.x / y deklariert hat und beim prevroom diese Variablen eisetzte!
( Und das ganz ohne HilfeDatei^^)

Aber das hat khrismuc doch gemeint im ersten Post, oder?
Kruttan
Adventure-Gott
Adventure-Gott
Beiträge: 4009
Registriert: 29.12.2001, 15:46
Wohnort: Hameln/Göttingen
Kontaktdaten:

Beitrag von Kruttan »

Zum Laden eines Spielstandes:

RestoreGameDialog(); funzt zumindest bei dem MMM-Starterpack nicht (hier erscheint die graue Standard-AGS-Box)...

Wenn man das aber über GuiOn(6) macht, erscheint zwar das richitge GUI, aber es sind keine Spielstände vorhanden (und sofern man nach mit dem Pfeil unten scrollen will, fliegt man raus)...

wie lässt sich das umgehen? (am besten 2.6 kompatible Lösung...)
>>Laverne, wie bist du nach oben gekommen?<<
>>Ich bin oben? Ups.<<
Antworten