Endlosschleifen und Handlungsketten in AGS 3.0

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Benutzeravatar
Außenseiter
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 58
Registriert: 14.10.2007, 20:04

Endlosschleifen und Handlungsketten in AGS 3.0

Beitrag von Außenseiter »

Hallo. Ich dachte eigentlich ich hätte den Code jetzt einigermaßen gemeistert, aber da hab ich mich wohl getäuscht.

Hier die Problemstellung:
Ein Objekt soll sich im Hintergrund auf einem festgelegten Pfad durch den Raum bewegen. Zur Veranschaulichung: Ihr erinnert euch an diese Welt der Magneten bei Sam und Max?
So in etwa soll das aussehen, nur dass der Gegenstand nicht an einer Stelle schwebt sondern sich hin- und herbewegt. Aber auch generell wäre es mal ganz gut zu wissen wie sowas geht, da die Hintergrundanimationsfähigkeit nicht nur sehr beschränkt ist sondern auch die Hotspots sich bei so einer Aktion ja nicht verschieben.

Ich habe dafür den Code Object.Move(verschiedener kleinkram); gefunden.
Problem:
1. Für eine Endlosschleife hab ich keinen Befehl gefunden da unter Loops Ansichten verstanden werden und die Repeatedly_execute(_always) nur für das globale Script ist.
2. Wenn ich eine Reihenfolge von Bewegungen eingebe ignoriert das Objekt die Reihenfolge und springt direkt zum letzten Punkt. Doof. Ein "Then"-Befehl wäre praktisch, aber ka wie ich der Hilfe finden soll (versucht hab ich es aber natürlich).

Bisher hab ich das ganze so "gelöst":

Code: Alles auswählen

function room_AfterFadeIn()
{
  rosatyr.StopMoving();
if (rosatyr.Moving == 0)
 {
  rosatyr.Move(160, 100, 5, eNoBlock, eAnywhere); 
  rosatyr.Move(26, 164, 10, eNoBlock, eAnywhere);
  rosatyr.Move(150, 220, 15, eNoBlock, eAnywhere);
  rosatyr.Move(253, 174, 5, eNoBlock, eAnywhere);
}
}
Den "rosatyr.StopMoving();" könnt ichauch weglassen, habs aber zur Sicherheit mal rinngehauen.

Probleme siehe oben. D.h. selbst wenn ich das zum Laufen bekomme dass er die Punkte einzeln abklappert hätte ich immer noch das Problem, dass er das ganze nur einmal macht und dann erst wieder wenn ich den Raum das nächste Mal betrete.
Ich verzweifle derzeit an:
- Eigene GUI zum Laden und Speichern erschaffen

Grund zur Freude:
Hab die Dialogsprache verstanden und kann jetzt lauter lustige Extras einbauen
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Re: Endlosschleifen und Handlungsketten in AGS 3.0

Beitrag von KhrisMUC »

1. Zugriff auf Objekt Nr. 3 in Raum 5:

Code: Alles auswählen

// global script

function repeatedy_execute() {

  ...

  if (player.Room == 5) {
    object[3].Befehl(...);
    ...
  }
}
Ist aber bei einem spezifischen Objekt nicht nötig, dafür gibt es ja die room rep_ex. (Zu finden in den Room events.)

2. "Then" gibt es nicht. Wenn Du nicht-blockende Moves verwendest, wird nicht die Reihenfolge ignoriert, sondern die Move-Befehle alle vom jeweils folgenden direkt aufgehoben.

In den room events die rep_ex erstellen, dort drinnen dann:

Code: Alles auswählen

  Object*o = rosatyr;
  if (!o.Moving) {
    if (o.X == 253) o.Move(160, 100, 5);
    if (o.X == 160) o.Move(26, 164, 10);
    if (o.X == 26) o.Move(150, 220, 15);
    if (o.X == 150) o.Move(253, 174, 5);
  }
(eNoBlock und eAnywhere sind die Grundeinstellung.)

Nicht getestet! Eventuell verändert sich o.X nicht schnell genug, dann bleibt der Code in der ersten .Move-Zeile "hängen" und das Objekt bewegt sich überhaupt nicht. Dann bitte nochmal melden :)
Use gopher repellent on funny little man
Benutzeravatar
Außenseiter
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 58
Registriert: 14.10.2007, 20:04

Re: Endlosschleifen und Handlungsketten in AGS 3.0

Beitrag von Außenseiter »

Oh man. Ich hab grad echt stundenlang die Hilfedatei durchsucht und... aber lassen wir das.

Also ich hab jetzt den Befehlsblock von mir nach dem "OnRoomLoad_AfterFadeIn" (oder so) dringelassen und danach bei der rep-ex deinen Code eingefügt. Hat zum Ergebnis dass sich das Objekt allerdings nur einmal bewegt und dann stehen bleibt.
Ich verzweifle derzeit an:
- Eigene GUI zum Laden und Speichern erschaffen

Grund zur Freude:
Hab die Dialogsprache verstanden und kann jetzt lauter lustige Extras einbauen
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Re: Endlosschleifen und Handlungsketten in AGS 3.0

Beitrag von KhrisMUC »

Den code in AfterFadeIn kannst Du getrost löschen.

Hab das mal getestet; aus irgendeinem Grund bewegt sich das Objekt beim dritten Move nur bis X=145.
Ich hab dann 155 als Ziel-X eingetragen und sofort lief es einwandfrei.

Sieht fast nach einem Bug aus...
Use gopher repellent on funny little man
Benutzeravatar
Außenseiter
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 58
Registriert: 14.10.2007, 20:04

Re: Endlosschleifen und Handlungsketten in AGS 3.0

Beitrag von Außenseiter »

HM....

Bild



Also ich hab noch ein paar andere Sachen probiert. Eigentlich nur Rep_ex und dann eben Objekt.move und if Objekt.X == usw.
Hat aber auch nix gebracht.

Aber ohne wirken die Räume halt sehr leblos find ich, wenn alles nur still steht. Und wenn ich das über ne Animation löse hab ich dann ein riiiiiiiieeeeeesengroßes Objekt im Raum stehen das man überall anklicken kann auch wenn man es an der stelle gerade nicht sieht.
Ich verzweifle derzeit an:
- Eigene GUI zum Laden und Speichern erschaffen

Grund zur Freude:
Hab die Dialogsprache verstanden und kann jetzt lauter lustige Extras einbauen
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Re: Endlosschleifen und Handlungsketten in AGS 3.0

Beitrag von KhrisMUC »

KhrisMUC hat geschrieben:[...] und sofort lief es einwandfrei.
Use gopher repellent on funny little man
Antworten